标签:status class str next har 技术 date 打印 指针
一.游标概述
明确:执行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,冲鸭!
标签:status class str next har 技术 date 打印 指针
原文地址:https://www.cnblogs.com/zjm1999/p/10171271.html