要解释的基本都在代码中进行了注释,直接附上代码。
--声明一个游标
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