首页 > 技术文章 > 游标的使用

zjm1999 2018-12-24 22:06 原文

一.游标概述

明确:执行select语句可进行查询并返回满足条件的所有记录,这一完整的记录称为结果集

游标:能将结果集作为一个单元来有效地处理,对结果集中的部分记录进行处理,不但允许定位在结果集的特定记录上,还可以从结果集的当前位置检索若干条记录,并支持对结果集中当前记录进行数据修改;可视作一种指针,用于指向处理结果集中任意位置的数据

 

操作表单:

执行SQL语句:

 1 --游标的使用
 2 --声明游标
 3 declare 客户_cursor cursor for
 4 select 姓名,年龄 --游标定位的结果集
 5 from  客户信息表
 6 --打开游标
 7 open 客户_cursor
 8 --提取数据
 9 fetch next from 客户_cursor
10 --判断fetch是否成功
11 while @@FETCH_STATUS=0 --提取状态
12 begin
13      --提取下一行
14      fetch next from 客户_cursor
15 end
16 --关闭游标
17 close 客户_cursor
18 --释放游标
19 deallocate 客户_cursor

 温馨小提示:依照上面  声明游标(定位查询结果集)-->打开游标(open会创建临时表存放索引键集,临时表存放在Tempdb数据库中)-->提取数据(成功打开游标后就可以使用fetch语句从该游标中提取特定的记录)-->关闭游标(close关闭该游标,释放当前的结果集并解除定位于该游标的记录行上的游标锁定,但关闭后,游标的数据结构仍然存储在系统中)-->释放游标(so,为了将游标占用的资源全部归还给系统,使用deallocate删除游标引用,释放数据结构)

 


二.游标应用

操作表单:

SQL语句操作:

 1 declare @kh varchar(20),@consume money
 2 --游标定位
 3 declare 修改金额_cursor cursor for
 4 select 客户编号,消费总金额 from 总消费表 where 客户编号='01'
 5 --打开游标
 6 open 修改金额_cursor
 7 --提取结果集
 8 fetch next from 修改金额_cursor into @kh,@consume
 9 --打印修改前
10 print '修改前: '+@kh+'客户消费金额为: '+convert(varchar,@consume);
11 --修改
12 update 总消费表 set 消费总金额=消费总金额+100
13 where current of 修改金额_cursor
14 --关闭游标
15 close 修改金额_cursor
16 --重新打开游标
17 open 修改金额_cursor
18 --提取结果
19 fetch next from 修改金额_cursor into @kh,@consume
20 print '修改后: '+@kh+'客户消费金额为: '+convert(varchar,@consume);
21 --关闭游标
22 close 修改金额_cursor
23 --释放游标
24 deallocate 修改金额_cursor

温馨小提示:多练习,小哥哥已经不行了,回去再战嘤glish,冲鸭!

 

推荐阅读