9.游标的使用

要解释的基本都在代码中进行了注释,直接附上代码。

--声明一个游标
declare s_cur1  cursor 
for select * from student 

--声明一个可滚动的只读游标(可提取指定游标的某一行)
declare s_cur scroll cursor 
for select * from student 
for read only

--打开游标
open s_cur

--查询游标的数据行数
select 's_cur行数'=@@cursor_rows

--关闭游标
close s_cur

--删除游标
deallocate s_cur

--获取下一个游标,第一个游标,最后一个游标
fetch next from s_cur
fetch first from s_cur
fetch last from s_cur

-------------------------提取返回结果的第三行数据放入变量中------------------------------
declare @sno varchar(50)
declare @sname varchar(50)
declare @ssex varchar(50)
declare @sage varchar(50)
declare @sdept varchar(50)

fetch absolute 3 from s_cur
into @sno,@sname,@ssex,@sage,@sdept
--select @sno,@sname,@ssex,@sage,@sdept
-------------------------提取返回结果的第三行数据放入变量中------------------------------


--当有insensitive选项,order by子句或scroll关键字时,游标默认为只读
declare s_cur5  cursor 
for select sno,sage from student

open s_cur5

--获取下一数据行的游标,并将数据行的年龄改为13
fetch next from s_cur5
update student set sage=13 where current of s_cur5

--删除游标s_cur5的当前数据行(游标对应表中的记录全删除)
delete student where current of s_cur5

close s_cur5
deallocate s_cur5
select * from student

原文地址:https://www.cnblogs.com/wangxueliang/p/9346476.html