首页 > 数据库 >sqlserver 游标的使用

sqlserver 游标的使用

时间:2023-05-26 11:12:38浏览次数:38  
标签:读取 记录 sqlserver 游标 cursor 使用 fetch name

@@SQL server 游标

 

游标
游标可以对一个select的结果集进行处理,或是不需要全部处理,就会返回一个对记录集进行处理之后的结果。
1、游标实际上是一种能从多条数据记录的结果集中每次提取一条记录的机制。游标可以完成:
# 允许定位到结果集中的特定行
# 从结果集的当前位置检索一行或多行数据
# 支持对结果集中当前位置的进行修改
由于游标是将记录集进行一条条的操作,所以这样给服务器增加负担,一般在操作复杂的结果集的情况下,才使用游标。SQL Server 2005有三种游标:T-SQL游标、API游标、客户端游标。

 2、游标的基本操作
      游标的基本操作有定义游标、打开游标、循环读取游标、关闭游标、删除游标。
 A、 定义游标

 

declare cursor_name --游标名称
cursor [local | global] --全局、局部
[forward only | scroll] --游标滚动方式
[read_only | scroll_locks | optimistic] --读取方式
for select_statements --查询语句
[for update | of column_name …] --修改字段

 参数:
 forward only | scroll:前一个参数,游标只能向后移动;后一个参数,游标可以随意移动
 read_only:只读游标
 scroll_locks:游标锁定,游标在读取时,数据库会将该记录锁定,以便游标完成对记录的操作
 optimistic:该参数不会锁定游标;此时,如果记录被读入游标后,对游标进行更新或删除不会超过

 B、 打开游标
      open cursor_name;
      游标打开后,可以使用全局变量@@cursor_rows显示读取记录条数

 C、 检索游标
      fetch cursor_name;
      检索方式如下:
         fetch first; 读取第一行
         fetch next; 读取下一行
         fetch prior; 读取上一行
         fetch last; 读取最后一行
         fetch absolute n; 读取某一行
            如果n为正整数,则读取第n条记录
            如果n为负数,则倒数提取第n条记录
            如果n为,则不读取任何记录
         fetch pelative n
            如果n为正整数,则读取上次读取记录之后第n条记录
            如果n为负数,则读取上次读取记录之前第n条记录
            如果n为,则读取上次读取的记录

 D、 关闭游标
      close cursor_name;

 E、 删除游标
      deallocate cursor_name;

 3、游标操作示例

–创建一个游标
declare cursor_stu cursor scroll for
select id, name, age from student;
–打开游标
open cursor_stu;
–存储读取的值
declare @id int,
@name nvarchar(20),
@age varchar(20);
–读取第一条记录
fetch first from cursor_stu into @id, @name, @age;
–循环读取游标记录
print ‘读取的数据如下:’;
–全局变量
while (@@fetch_status = 0)
begin
print ‘编号:’ + convert(char(5), @id) + ‘, 名称:’ + @name + ‘, 类型:’ + @age;
–继续读取下一条记录
fetch next from cursor_stu into @id, @name, @age;
end
–关闭游标
close area_cursor;

–删除游标
–deallocate area_cursor;
————————————————
版权声明:本文为CSDN博主「2b勿扰」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41181778/article/details/103758597

标签:读取,记录,sqlserver,游标,cursor,使用,fetch,name
From: https://www.cnblogs.com/wl-blog/p/17434196.html

相关文章

  • vue中离线使用阿里巴巴图标库iconfont
    1.打开iconfont阿里巴巴官网https://www.iconfont.cn2.新建项目(这样方便后期维护图标库) image.png3.把需要的图标添加到购物车 image.png4.打开购物车并选择添加至项目,然后确定 image.png5.这时候可以在项目中看到你选中的svg图标,这时候可以点击下载至本地 image.png6.打开下......
  • 使用resource读取properties文件,出现Cause: java.sql.SQLException: No suitable driv
    ###Errorqueryingdatabase.Cause:java.sql.SQLException:Nosuitabledriverfoundforhttp://maven.apache.org###Theerrormayexistincom/louis/dao/UserMapper.xml###Theerrormayinvolvecom.louis.dao.UserMapper.getUserList###Theerroroccurred......
  • 使用MASA Stack+.Net 从零开始搭建IoT平台 第四章 4.3 使用规则引擎实现告警通知
    目录前言方案实施流程安装Node-RED配置一个告警处理流程编写代码测试总结前言数据的挑战:物联网的发展带来了海量的数据。这些数据来源多样,格式不一,处理起来十分复杂。同时,物联网中的设备数量庞大,需要设备间进行高效的协同和管理,这也对数据处理提出了更高的要求。如何从这些复......
  • JAVA使用HTTP代码示例
    以下是使用Java发送HTTP请求的示例代码:```javaimportjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.net.HttpURLConnection;importjava.net.URL;publicclassHttpExample{publicstaticvoidmain(String[]args){try{//创建URL对象URLurl=newU......
  • 使用linux安装kafka
    以下是在Linux上安装Kafka的详细步骤:下载Kafka二进制文件在Kafka的官方网站(http://kafka.apache.org/downloads)上下载最新版本的Kafka二进制文件。解压缩下载的文件在终端中进入下载目录,使用以下命令解压缩下载的文件:tar-xzfkafka_<version>.tgz其中,<version>应替换为下载的Kaf......
  • python 函数基本使用(笔记整理)
    一、函数的概念1.什么是函数函数代表功能,也称“方法”,它是对数据与功能代码进行封装,实现了功能代码的复用简单来说:函数就是把你要写的代码固定成一块,需要使用这个功能的时候直接调用即可2.函数的分类python函数有四类,分别是:内置函数(builtinfunctions),标准库函数,第三方......
  • 【转载】Sqlserver存储过程中使用Select和Set给变量赋值
    @@sqlserverselect赋值  Sqlserver存储过程是时常使用到的一个数据库对象,在存储过程中会使用到Declare来定义存储过程变量,定义的存储过程变量可以通过Set或者Select等关键字方法来进行赋值操作,使用Set对存储过程变量赋值为直接赋值,使用Select则一般从数据表中查找出符合条......
  • 【转】SQL SERVER 游标
    @@SQLserver游标  游标(Cursor)是SQL Server的一种数据访问机制,它使得程序可以逐行处理数据,即允许用户访问单独的数据行,对每一行数据进行单独的处理。一,创建游标对象创建游标对象,注意不是游标变量,游标名称不需要带前导@:DECLAREcursor_nameCURSOR[LOCAL|GLO......
  • SqlServer中使用Select语句给变量赋值的时候需要注意的一个问题
    @@sqlserverselect赋值  我们知道在SqlServer中可以用Select语句给变量赋值,比如如下语句就为int类型的变量@id赋值1declare@idint=-1;23select@id=idfrom4(5select1asid6unionall7select2asid8unionall9select3asid10)a......
  • SqlServer select 赋值问题
    @@sqlserverselect赋值 --变量赋值正确,单个数据默认为变量declare@s1varchar(20)set@s1=(selectMAX(parked_id)fromparked)--变量赋值错误,多个数据默认为数据集declare@s2varchar(20)set@s2=(selectparked_idfromparked)————————————————版权......