SQL游标

SQL游标

  1. 基本概念
    游标是:
    一种方法,获取一组数据,一次单独与一个数据进行交互
    游标非常占用资源,只能在别无选择的情况下使用

一种数据访问机制,它允许用户访问单独的数据行。使结果集的内容可用于其它T_SQL语句。在查看或处理结果集中向前或向后浏览数据的功能。
用户可以对每一行进行单独的处理,从而降低系统开销和潜在的阻隔情况,用户也可以使用这些数据生成的SQL代码并立即执行或输出。
类似与C语言中的指针,它可以指向结果集中的任意位置,当要对结果集进行逐条单独处理时,必须声明一个指向该结果集中的游标变量。
来源链接

分类:

  • 静态游标,游标打开时结果集建立在tempdb中,原样显示结果集,在滚动期很少能检测到变化,能存储整个游标,但消耗资源很少
  • 动态游标,滚动期反映所有更改,结果集中的行数据值,顺序和成员每次在提取时都会改变,所有用户增删改语句均可见。使用tempdb程度最低,但消耗资源更多
  • 只进游标,不支持滚动,只能从头到尾顺序提取,对所有用户提交并对数据产生影响的增删改语句可见
  • 键集驱动游标,检测到大部分变化,比动态消耗更少资源
  1. 基本操作
  • 声明
DECLARE cursor_name CURSOR 
FOR select_statement
FOR [ READ_ONLY |UPDATE [ OF column_name [,...n] ] 
  • 打开
OPEN [ 全局游标 ] 游标名 | 游标变量名;
  • 读取游标数据
    打开游标之后,用FETCH命令可以读取游标中的某一行数据
FETCH 
[ [ NEXT | PRIOR | FIRST | LAST 

         | ABSOLUTE { n | @nvar }

         | RELATIVE { n | @nvar }
    ]
FROM
]
{ { [GLOBAL ]  游标名 } | @cursor_variable_name}
[ INTO @variable_name [ ,...n ] ]
  • 关闭游标
 CLOSE [ GLOBAL ] 游标名 | 游标变量名
  • 释放游标

游标操作的结果集空间虽然被释放了,但是游标本身也会占用一定的计算集资源,所以使用完游标之后,为了收回被游标占用的资源,应该将游标释放。释放游标使用DEALLOCATE语句,语法格式如下:

DEALLOCATE [GLOBAL] cursor_name | 游标变量的名称
//游标变量不会被释放,除非超过使用该游标的存储过程和触发器范围
  1. 系统过程查看游标
  • sp_cursor_list,报告当前为链接打开的服务器游标属性
  • sp_describe_cursor,报告服务器游标的属性

它们都有各自的语法格式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值