|
类型: 1.普通游标 只有NEXT操作 2.滚动游标 有多种操作 1.普通游标- DECLARE @username varchar(20),@UserId varchar(100)
- DECLARE cursor_name CURSOR FOR --定义游标
- SELECT TOP 10 UserId,UserName FROM UserInfo
- ORDER BY UserId DESC
- OPEN cursor_name --打开游标
- FETCH NEXT FROM cursor_name INTO @UserId,@username --抓取下一行游标数据
- WHILE @@FETCH_STATUS = 0
- BEGIN
- PRINT '用户ID:'+@UserId+' '+'用户名:'+@username
- FETCH NEXT FROM cursor_name INTO @UserId,@username
- END
- CLOSE cursor_name --关闭游标
- DEALLOCATE cursor_name --释放游标
复制代码 结果:- 用户ID:zhizhi 用户名:邓鸿芝
- 用户ID:yuyu 用户名:魏雨
- 用户ID:yujie 用户名:李玉杰
- 用户ID:yuanyuan 用户名:王梦缘
- 用户ID:YOUYOU 用户名:lisi
- 用户ID:yiyiren 用户名:任毅
- 用户ID:yanbo 用户名:王艳波
- 用户ID:xuxu 用户名:陈佳绪
- 用户ID:xiangxiang 用户名:李庆祥
- 用户ID:wenwen 用户名:魏文文
复制代码 2.滚动游标- --带SCROLL选项的游标
- SET NOCOUNT ON
- DECLARE C SCROLL CURSOR FOR --SCORLL 后,有了更多的游标操作(滚动游标)
- SELECT TOP 10 UserId,UserName FROM UserInfo
- ORDER BY UserId DESC
- OPEN C
- FETCH LAST FROM C --最后一行的数据,并将当前行为指定行
- FETCH ABSOLUTE 4 FROM C --从第一行开始的第4行数据,并将当前行为指定行 这里的n可正可负,n>0 往下翻,n<0 往上翻
- FETCH RELATIVE 3 FROM C --相对于当前行的后3行数据,并将当前行为指定行 这里的n可正可负
- FETCH RELATIVE -2 FROM C --相对于当前行的前2行数据,并将当前行为指定行
- FETCH PRIOR FROM C ----相对于当前行的前1行数据
- FETCH FIRST FROM C --刚开始第一行的数据,并将当前行为指定行
- FETCH NEXT FROM C --相对于当前行的后1行数据
- CLOSE C
- DEALLOCATE C
复制代码 具体FETCH用法:- FETCH
- [ [ NEXT | PRIOR | FIRST | LAST
- | ABSOLUTE { n | @nvar }
- | RELATIVE { n | @nvar }
- ]
- FROM
- ]
- { { [ GLOBAL ] cursor_name } | @cursor_variable_name }
- [ INTO @variable_name [ ,...n ] ]
复制代码
|
|