游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标充当指针的作用。尽管游标能遍历结果中的所有行,但他一次只指向一行。
概括来讲,SQL的游标是一种临时的数据库对象,即可以用来存放在数据库表中的数据行副本,也可以指向存储在数据库中的数据行的指针。游标提供了在逐行的基础上操作表中数据的方法。 游标的一个常见用途就是保存查询结果,以便以后使用。游标的结果集是由SELECT语句产生,如果处理过程需要重复使用一个记录集,那么创建一次游标而重复使用若干次,比重复查询数据库要快的多。
1.声明游标
打算到
declare my_cursor cursor for --my_cursor为游标的名称,随便起
select id,name from my_user --这是游标my_cursor的值,这里随便发挥看业务场景
打开游标
open my_cursor ----打开游标时,SELECT语句的查询结果就被传送到了游标工作区。
变 量
declare @id int --声明变量 ‘declare’为声明变量 ‘@name’为变量名称 后面为变量类型
declare @name varchar(50) --这里是两个变量用来接收游标的值
循环游标
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 --获取下一条数据并赋值给变量
关闭游标
end--关闭释放游标
close my_cursor
deallocate my_cursor
游标的提取
可以使用@@FETCH_STATUS全局变量判断数提取的状态。由于@@FETCH_STATUS对于在一个连接上的所有游标是全局性的,不管是对哪个游标,只要执行一次FETCH语句,系统都会对@@FETCH_STATUS赋一次值,以表明该FETCH语句的执行情况。
本文分享自 ellipse数据库技术 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!