前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

游标

作者头像
ellipse
发布2019-08-16 17:17:34
6260
发布2019-08-16 17:17:34
举报

游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标充当指针的作用。尽管游标能遍历结果中的所有行,但他一次只指向一行。

概括来讲,SQL的游标是一种临时的数据库对象,即可以用来存放在数据库表中的数据行副本,也可以指向存储在数据库中的数据行的指针。游标提供了在逐行的基础上操作表中数据的方法。 游标的一个常见用途就是保存查询结果,以便以后使用。游标的结果集是由SELECT语句产生,如果处理过程需要重复使用一个记录集,那么创建一次游标而重复使用若干次,比重复查询数据库要快的多。

1.声明游标

打算到

代码语言:javascript
复制
declare my_cursor cursor for     --my_cursor为游标的名称,随便起
select id,name from my_user      --这是游标my_cursor的值,这里随便发挥看业务场景

打开游标

代码语言:javascript
复制
open my_cursor         ----打开游标时,SELECT语句的查询结果就被传送到了游标工作区。

变 量

代码语言:javascript
复制
declare   @id int               --声明变量  ‘declare’为声明变量 ‘@name’为变量名称 后面为变量类型
declare   @name varchar(50)     --这里是两个变量用来接收游标的值

循环游标

代码语言:javascript
复制
fetch next from my_cursor into @id,@name  --获取my_cursor的下一条数据,其中为两个字段分别赋值给@id,@name
while @@FETCH_STATUS=0 --假如检索到了数据继续执行
begin
print(@name) --print()打印变量 随便发挥
select * from my_user where id=@id --这里是具体业务了,随便发挥。我这是又执行了一次查询
fetch next from my_cursor into @id,@name --获取下一条数据并赋值给变量 

关闭游标

代码语言:javascript
复制
end--关闭释放游标
close my_cursor
deallocate my_cursor   

游标的提取

可以使用@@FETCH_STATUS全局变量判断数提取的状态。由于@@FETCH_STATUS对于在一个连接上的所有游标是全局性的,不管是对哪个游标,只要执行一次FETCH语句,系统都会对@@FETCH_STATUS赋一次值,以表明该FETCH语句的执行情况。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ellipse数据库技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档