--//*/cursor (sqlserver) 游标
/*
1.declare 游标名[scroll] cursor for select语句[for update [of列表名]]
定义一个游标,使之对应一个select语句
for update任选项,表示该游标可用于对当前行的修改与删除
2.open
打开一个游标,执行游标对应的查询,结果集合为该游标的活动集
open 游标名
3.fetch
在活动集中将游标移到特定的行,并取出该行数据放到相应的变量中
fetch [next | prior | first | last | current | relative n | absolute m] 游标名into [变量表]
4.close
关闭游标,释放活动集及其所占资源。需要再使用该游标时,执行open语句
close 游标名
5.deallocate
删除游标,以后不能再对该游标执行open语句
deallocate 游标名
6.@@FETCH_STATUS
返回被FETCH 语句执行的最后游标的状态.
0 fetch语句成功
-1 fetch语句失败
-2 被提取的行不存在
*/
--//语法如下
DECLARE cursor_name CURSOR FOR {select_sql |update_sql}
OPEN cursor_name
FETCH NEXT cursor_name INTO [params] --//将行数据复制到变量表中的变量中
WHILE @@FETCH_STATUS = 0 --//游标状态
BEGIN
--//sql 语句
FETCH NEXT cursor_name INTO [params]
END
CLOSE cursor_name --//关闭游标
DEALLOCATE cursor_name --//释放游标
--//其中游标的 FETCH 语句将影响 @@ROWCOUNT
--//*/end cursor