sql 游标循环遍历-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

sql 游标循环遍历

简介: 原文:sql 游标循环遍历   写存储过程的时候碰到一个需要对数据进行遍历循环操作的问题,最后通过游标解决了,感觉很适用、 1 declare @level varchar(100) 2 declare @uid varchar(100) 3 declare cur cursor--定义一个游标 4 read_only 5 for select egg_code.
原文:sql 游标循环遍历

  写存储过程的时候碰到一个需要对数据进行遍历循环操作的问题,最后通过游标解决了,感觉很适用、

 1 declare @level varchar(100)
 2 declare @uid varchar(100)
 3 declare cur cursor--定义一个游标
 4 read_only
 5 for select egg_code.user_id,egg_prize_level
 6 from egg_code inner join egg_prize on egg_prize.user_id=egg_code.user_id--为所获得的数据集指定游标
 7 
 8 open cur--打开游标
 9 fetch next from cur into @uid,@level--把提取操作的列数据放到局部变量中
10 while(@@fetch_status=0)--返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。
11 
12 begin
13 --print '等级:'+@level+'--------------用户ID:'+@uid
14 
15 update egg_code set prize_level=@level   where user_id=@uid--执行操作
16 
17 --提前下一位信息
18 fetch next from cur into @uid,@level
19 end
20 close cur--关闭游标
21 deallocate cur--删除游标
22 go

使用游标的顺序: 声名游标、打开游标、读取数据、关闭游标、删除游标。
由于 @@FETCH_STATUS 对于在一个连接上的所有游标是全局性的,要小心使用 @@FETCH_STATUS 。在执行一条 FETCH 语句后,必须在对另一游标执行另一 FETCH 语句前测试 @@FETCH_STATUS 。在任何提取操作出现在此连接上前,@@FETCH_STATUS 的值没有定义。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章