SQL Server—游标

作者 : 攻城狮 发布时间: 2023-03-11 共294人阅读

1、游标的含义:游标是一个指针,可以定位到结果集中的某一行。

2、游标的分类:

(1)静态游标(Static):在操作游标的时候,数据发生变化,游标中数据不变。

(2)动态游标(Dynamic):在操作游标的时候,数据发生变化,游标中数据改变,默认值。

(3)键集驱动游标(KeySet):在操作游标的时候,被标识的列发生改变,游标中数据改变;其他列改变,游标中数据不变。

3、创建游标(创建游标用的是declare,不是create)

scroll:滚动游标。没有scroll,只进,也就是游标只能向下一行移动。

declare mycur cursor scroll
for select MemberAccount from Member

/*
declare:声明,创建
cursor:游标
mycur是自定义的游标名字
MemberAccount为创建的游标列字段
*/

4、打开游标

open mycur

5、提取某行数据

fetch first from mycur           --提取第一行
fetch last from mycur            --提取最后一行
fetch absolute 2 from mycur      --提取第二行
fetch relative 2 from mycur      --从当前行下移2行
fetch next from mycur            --下移一行
fetch prior from mycur           --上移一行

/*
fetch:[fetʃ] 提取 / 使高兴 / 取来 / 接来 / 吸引
absolute:['æbsəluːt] 完全的 / 绝对的 / 独立的 / 最终的
relative :['relətɪv] 相关的 / 比较的 / 成比例的
prior:['praɪər] 在先的 / 先前的 / 优先的
*/

6、关闭游标

close mycur

7、举例:提取游标数据存入变量,进行查询所有列信息

declare @acc varchar(20)
fetch absolute 2 from mycur into @acc
select * from Member where MemberAccount = @acc

/*
@acc为定义的变量
mycur是自定义的游标名字
MemberAccount为创建的游标列字段
*/

8、遍历游标

declare @acc varchar(20)
fetch absolute 1 from mycur into @acc
while @@fetch status = 0
    begin
        print '提取成功:' + @acc
        fetch next from mycur into @acc
    end

--@@fetch_status:0提取成功,-1失败,-2不存在
--注意:如果游标创建好的游标列内的数据被删除了,此时执行遍历游标是会被打断的,无法遍历全部数据。
需要先关闭游标,再打开游标,才能再次遍历游标全部数据。

9、利用游标进行数据的修改和删除

fetch absolute 2 from mycur
update Member set MemberPwd = '654321' where current of mycur

fetch absolute 2 from mycur
delete from Member where current of mycur

10、举例:创建指向某行多列(用户名,密码,昵称)的游标,循环显示多列数据

--先创建游标
declare mycur cursor scroll
for select MemberAccount,MemberPwd,MemberNickName from Member
--再打开游标
open mycur
--遍历游标,循环显示多列数据
declare @acc varchar(20)
declare @pwd varchar(20)
declare @nickname varchar(20)
fetch absolute 1 from mycur into @acc @pwd, @nickname
while @@fetch status = 0
    begin
        print '用户名:' + @acc + ',密码 :' + @pwd + ',昵称:' + @nickname
        fetch next from mycur into @acc,@pwd,@nickname
    end

 

1.本站所有资源收集于互联网和用户上传,如有侵权请联系客服删除;
2.本站不保证所提供下载资源的准确性、安全性和完整性,请自行测试;
3.资源仅供学习交流使用,版权归原作者所有,请在下载后24小时之内删除;
4.如用于商业或非法用途实属个人行为,与本站无关,一切后果由用户自负;
5.本站提供的源码、主题模板、插件等资源,都不包含技术服务,请大家谅解;
6.本站所设置的资源售价只是用于赞助,收取费用仅维持本站的日常运营所需;
7.如果您有好的源码或者教程,请至个人中心发布资源,将有积分奖励和额外收入;
8.本站默认解压密码:www.ittiantang.com,如有链接无法下载,请联系管理员处理。

IT天堂 » SQL Server—游标

常见问题FAQ

IT天堂的会员权益只能通过充值获得吗?
您可以通过签到功能获得积分,用积分兑换会员权益。
网站上的VIP资源只能通过充值购买吗?
您可以通过每日签到获得积分,使用积分直接购买VIP资源。

发表评论