一般情况下,我们使用select这些查询语句的时候,都是针对的一行记录而言。
如果要在查询分析器中对多行记录(即记录集)进行读取操作。则需要使用到游标或While等循环
游标的类型:
1、静态游标(不检测数据行的变化)
2、动态游标(反映所有数据行的改变)
3、仅向前游标(不支持滚动)
4、键集游标(能反映修改,但不能准确反映插入、删除)
游标使用顺序:
1、定义游标
2、打开游标
3、使用游标
4、关闭游标
Transact-SQL:
declare 游标名 cursor [LOCAL | GLOBAL] [FORWARD_ONLY | SCROLL ] [STATIC | KEYSET | DYNAMIC ] [READ_ONLY | SCROLL_LOCKS]
for select语句 [for update [of 列名[,列名]]]
注:LOCAL 局部游标 GLOBAL 全局游标
FORWARD_ONLY 仅向前 SCROLL 滚动
STATIC 静态 KEYSET 键集 DYNAMIC 动态
READ_ONLY 只读 SCROLL_LOCKS 锁定游标当前行
获取游标的数据
FETCH [ [ NEXT | PRIOR | FIRST | LAST |
ABSOLUTE { n | @nvar | RELATIVE { n | @nvar }]
FROM ] 游标名 [ into 变量]
注:
NEXT 下一行 PRIOR 上一行 FIRST 第一行
LAST 最后一行 ABSOLUTE n 第n行
RELATIVE n 当前位置开始的第n行
into 变量 把当前行的各字段赋值给变量
游标状态变量:
@@fetch_status 游标状态
0 成功 -1 失败 -2 丢失
@@cursor_rows 游标中结果集中的行数
n 行数 -1 游标是动态的 0 空集游标
操作游标的当前行:
current of 游标名