カーソル(cursor,游标)の使用

原理:游标就是把数据按照指定要求提取出相应的数据集,然后逐条进行数据处理。

      1.1游标的概念
       游标(Cursor)它使用户可逐行访问由SQL Server返回的结果集。使用游标(cursor)的一个主要的
因就是把集合操作转换成单个记录处理方式。用SQL语言从数据库中检索数据后,结果放在内存的一块区
 
域中,且结果往往是一个含有多个记录的集合。游标机制允许用户在SQL server内逐行地访问这些记录,
 
按照用户自己的意愿来显示和处理这些记录。
 
       1.2 游标的优点
 
      从游标定义可以得到游标的如下优点,这些优点使游标在实际应用中发挥了重要作用:

        1)允许程序对由查询语句select返回的行集合中的每一行执行相同或不同的操作,而不是对整
 
个行集合执行同一个操作。

        2)提供对基于游标位置的表中的行进行删除和更新的能力。

        3)游标实际上作为面向集合的数据库管理系统(RDBMS)和面向行的程序设计之间的桥梁,使
 
这两种处理方式通过游标沟通起来。
 
       1.3 游标的使用
 
 讲了这个多游标的优点,现在我们就亲自来揭开游标的神秘的面纱。
 
 使用游标的顺序: 声名游标、打开游标、读取数据、关闭游标、删除游标。
 
       1.3.1声明游标
       最简单游标声明:DECLARE <游标名>CURSOR FOR<SELECT语句>;
 
       其中select语句可以是简单查询,也可以是复杂的接连查询和嵌套查询

 
       1.3.2 打开游标
 
       非常简单,我们就打开刚才我们声明的游标mycursor
 
       OPEN mycursor      
 
       1.3.3读取数据
 
        FETCH [ NEXT | PRIOR | FIRST | LAST] FROM { 游标名  | @游标变量名 } [ INTO @变量名
 
[,…] ]
        参数说明:
 
        NEXT   取下一行的数据,并把下一行作为当前行(递增)。由于打开游标后,行指针是指向该
 
游标第1行之前,所以第一次执行FETCH NEXT操作将取得游标集中的第1行数据。NEXT为默认的游标提取
 
选项。 
        INTO @变量名[,…]  把提取操作的列数据放到局部变量中。

        列表中的各个变量从左到右与游标结果集中的相应列相关联。

        各变量的数据类型必须与相应的结果列的数据类型匹配或是结果列数据类型所支持的隐性转
 
换。变量的数目必须与游标选择列表中的列的数目一致。     
  
        1.3.4关闭游标
 
        CLOSE mycursor    
          
        1.3.5删除游标 
 
        DEALLOCATE mycursor  
 
----------------------------------------------------------------------------------------------
-----------给出具体的例子: -----------------------------------------------------------
declare @id int   --定义变量来保存值
declare mycur3 cursor for   --为所获得的数据集指定游标
select id from dbo.TbExam01
open mycur3  --打开游标
fetch next from mycur3 into @id  --开始抓第一条数据
while (@@fetch_status = 0)  --如果数据集里一直有数据
begin
select name from dbo.TbExam02 where
id=@id  
fetch next from mycur3 into @id
end
close mycur3
deallocate mycur3
 
 
 
 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值