度量快速开发平台-业界最好的全功能软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 97|回复: 6

[分享] SQL中游标的使用

[复制链接]

231

主题

2541

帖子

5807

积分

论坛元老

Rank: 8Rank: 8

积分
5807
发表于 2018-4-2 17:55:13 | 显示全部楼层 |阅读模式
类型:
  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 ] ]
复制代码


回复

使用道具 举报

231

主题

2541

帖子

5807

积分

论坛元老

Rank: 8Rank: 8

积分
5807
 楼主| 发表于 2018-4-3 17:44:20 | 显示全部楼层
回复 支持 反对

使用道具 举报

231

主题

2541

帖子

5807

积分

论坛元老

Rank: 8Rank: 8

积分
5807
 楼主| 发表于 2018-4-3 17:45:25 | 显示全部楼层
回复 支持 反对

使用道具 举报

231

主题

2541

帖子

5807

积分

论坛元老

Rank: 8Rank: 8

积分
5807
 楼主| 发表于 2018-4-4 17:52:39 | 显示全部楼层
回复 支持 反对

使用道具 举报

231

主题

2541

帖子

5807

积分

论坛元老

Rank: 8Rank: 8

积分
5807
 楼主| 发表于 2018-4-4 17:53:22 | 显示全部楼层
回复 支持 反对

使用道具 举报

231

主题

2541

帖子

5807

积分

论坛元老

Rank: 8Rank: 8

积分
5807
 楼主| 发表于 2018-4-8 17:28:37 | 显示全部楼层
回复 支持 反对

使用道具 举报

231

主题

2541

帖子

5807

积分

论坛元老

Rank: 8Rank: 8

积分
5807
 楼主| 发表于 2018-4-8 17:28:58 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2018-6-26 02:04 , Processed in 0.400261 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表