1、什么情况下使用游标?
答:当查询的结果是一个集合(很多元组),就必须用游标逐一读取,相当于一个指针,可以在SQL语句中依次遍历某个select的结果集的每行记录每个字段,游标是可以从结果集中每次提取一条记录的机制,因为很多程序不具备操作一个集合的能力。
2、游标格式:
declare @变量1 变量1类型,@变量2 变量2类型,...,@变量n 变量n类型;
declare 游标名称 cursor for
select 字段名1,字段名2,...,字段名n
from [数据库名].表名
where条件
[排序];
open 游标名称;
fetch next from 游标名称 into @变量1,@变量2,...,@变量n;
while @@fetch_status=0
begin
sql语句
end
close 游标名称;
deallocate 游标名称;
3、变量:
@@CURSOR_ROWS:整型变量,表示在当前连接中打开的游标中的行数量;
@@FETHC_STATUS:标记变量,表示当前游标指针的状态。
4、游标示例:
declare @cursor cursor --创建游标
set @cursor=cursor
for
select _id,_name from users --设定游标欲操作的数据集
open @cursor --打开游标
fetch next from @cursor into @_id,@_name --移动游标指向到第一条数据,提取第一条数据存放在变量中
while(@@fetch_status=0) --如果上一次操作成功则继续循环
begin
print @_name --操作提出的数据
fetch next from @cursor into @_id,@_name --继续提下一行
end
close @cursor --关闭游标
deallocate @curso --删除游标