玉祥平台客服-15087858732

标题: SQL中游标的使用 [打印本页]

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

  14. CLOSE C
  15. DEALLOCATE C
复制代码
具体FETCH用法:
  1. FETCH   
  2.           [ [ NEXT | PRIOR | FIRST | LAST   
  3.                     | ABSOLUTE { n | @nvar }   
  4.                     | RELATIVE { n | @nvar }   
  5.                ]   
  6.                FROM   
  7.           ]   
  8. { { [ GLOBAL ] cursor_name } | @cursor_variable_name }   
  9. [ INTO @variable_name [ ,...n ] ]
复制代码



作者: fteair    时间: 2020-3-3 17:44

作者: fteair    时间: 2020-3-3 17:45

作者: fteair    时间: 2020-3-4 17:52

作者: fteair    时间: 2020-3-4 17:53

作者: fteair    时间: 2020-3-8 17:28

作者: fteair    时间: 2020-3-8 17:28





欢迎光临 玉祥平台客服-15087858732 (http://bbs.delit.cn/) Powered by Discuz! X3.2