cursor : (游标)是处理数据的方法不只是数据缓存,允许用户对指定位置的数据进行操作。
游标的生命周期包含有五个阶段:声明游标、打开游标、读取游标数据、关闭游标、释放游标。
if (exists (select * from sys.objects where name='proc_cursor'))
drop procedure proc_cursor
--借助的是存储过程
create procedure proc_cursor
as
declare @Sno char(9)
declare @Sname char(20)
declare mycursor cursor for select Sno ,Sname from Student
open mycursor
fetch next from mycursor into @Sno, @Sname
while(@@FETCH_STATUS =0)
begin
print'ok!!'
print @Sno
print @Sname
print'**********'
fetch next from mycursor into @Sno, @Sname
end
close mycursor
deallocate mycursor
go
exec proc_cursor
也可以不借助存储过程
declare @Sno char(9)
declare @Sname char(20)
declare mycursor cursor for select Sno ,Sname from Student
open mycursor
fetch next from mycursor into @Sno, @Sname
while(@@FETCH_STATUS =0)
begin
print'ok!!'
print @Sno
print @Sname
print'**********'
fetch next from mycursor into @Sno, @Sname
end
close mycursor
deallocate mycursor
结果如下
总结:
虽然这个例子中的游标的代码较为简单,但是对于游标的认识应该还是在皮毛阶段,如果可以的话会尝试和主语言一起使用一下。
直接运行第二个例子结果与第一个是一样的。
参考文档: