扫码关注官方订阅号
正文
0
高洛峰
发布时间:2016-12-14 11:34:15
1579人浏览过
来源于php中文网
原创
/*** 游标的使用 讲了这个多游标的优点,现在我们就亲自来揭开游标的神秘的面纱。 使用游标的顺序: 声名游标、打开游标、读取数据、关闭游标、删除游标。 1.3.1声明游标 最简单游标声明:DECLARE <游标名>CURSOR FOR; 其中select语句可以是简单查询,也可以是复杂的接连查询和嵌套查询 例子:[已表2 AddSalary为例子] Declare mycursor cursor for select * from AddSalary 这样我就对表AddSalary申明了一个游标mycursor 【高级备注】 DECLARE <游标名> [INSENSITIVE] [SCROLL] CURSORFOR 这里我说一下游标中级应用中的[INSENSITIVE]和[SCROLL] INSENSITIVE 表明MS SQL SERVER 会将游标定义所选取出来的数据记录存放在一临时表内(建立在tempdb 数据库下)。对该游标的读取操作皆由临时表来应答。因此,对基本表的修改并不影响游标提取的数据,即游标不会随着基本表内容的改变而改变,同时也无法通过游标来更新基本表。如果不使用该保留字,那么对基本表的更新、删除都会反映到游标中。 另外应该指出,当遇到以下情况发生时,游标将自动设定INSENSITIVE 选项。 a.在SELECT 语句中使用DISTINCT、 GROUP BY、 HAVING UNION 语句; b.使用OUTER JOIN; c.所选取的任意表没有索引; d.将实数值当作选取的列。 SCROLL 表明所有的提取操作(如FIRST、 LAST、 PRIOR、 NEXT、 RELATIVE、 ABSOLUTE)都可用。如果不使用该保留字,那么只能进行NEXT 提取操作。由此可见,SCROLL 极大地增加了提取数据的灵活性,可以随意读取结果集中的任一行数据记录,而不必关闭再 重开游标。 1.3.2 打开游标 非常简单,我们就打开刚才我们声明的游标mycursor OPEN mycursor 1.3.3读取数据 FETCH [ NEXT | PRIOR | FIRST | LAST] FROM { 游标名 | @游标变量名 } [ INTO @变量名 [,…] ] 参数说明: NEXT 取下一行的数据,并把下一行作为当前行(递增)。由于打开游标后,行指针是指向该游标第1行之前,所以第一次执行FETCH NEXT操作将取得游标集中的第1行数据。NEXT为默认的游标提取选项。 INTO @变量名[,…] 把提取操作的列数据放到局部变量中。列表中的各个变量从左到右与游标结果集中的相应列相关联。各变量的数据类型必须与相应的结果列的数据类型匹配或是结果列数据类型所支持的隐性转换。变量的数目必须与游标选择列表中的列的数目一致。 现在我们就取出mycursor游标的数据吧! 当游标被打开时,行指针将指向该游标集第1行之前,如果要读取游标集中的第1行数据,必须移动行指针使其指向第1行。就本例而言,可以使用下列操作读取第1行数据: Eg: Fetch next from mycursor 或则 Fetch first from mycursor 这样我就取出了游标里的数据,但是光光这样可不够,我们还需要将取出的数据赋给变量 --声明2个变量 declare @O_ID NVARCHAR(20) declare @A_Salary float --将取出的值传入刚才声明的2个变量 Fetch next from mycursor into @ O_ID,@ A_Salary 1.3.4关闭游标 CLOSE mycursor 1.3.5删除游标 DEALLOCATE mycursor 1.3.6 实例训练 **/ CREATE PROCEDURE PK_Test AS --声明2个变量 declare @O_ID nvarchar(20) declare @A_Salary float --声明一个游标mycursor,select语句中参数的个数必须要和从游标取出的变量名相同 declare mycursor cursor for select O_ID,A_Salary from AddSalary --打开游标 open mycursor --从游标里取出数据赋值到我们刚才声明的2个变量中 fetch next from mycursor into @O_ID,@A_Salary --判断游标的状态 -- 0 fetch语句成功 ---1 fetch语句失败或此行不在结果集中 ---2 被提取的行不存在 while (@@fetch_status=0) begin --显示出我们每次用游标取出的值 print '游标成功取出一条数据' print @O_ID print @A_Salary --用游标去取下一条记录 fetch next from mycursor into @O_ID,@A_Salary end --关闭游标 close mycursor --撤销游标 DEALLOCATE mycursor GO
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
实现一个 Java 版的 Redis
2018-05-30 13:56
Asp.net使用SignalR实现发送图片
2018-05-28 16:22
HTML5:使用Canvas实时处理Video
2018-05-28 17:58
最简单的微信小程序Demo
2018-05-30 10:20
Python构造自定义方法来美化字典结构输出
2018-05-29 10:33
html设置加粗、倾斜、下划线、删除线等字体效果示例介绍
2018-05-31 09:48
微信小程序:如何实现tabs选项卡效果示例
2018-05-29 15:01
微信小程序开发教程-App()和Page()函数概述
2018-05-28 16:19
python中pandas.DataFrame(创建、索引、增添与删除)的简单操作方法介绍
2018-05-29 15:23
详解python redis使用方法
2018-05-28 15:01
热门AI工具
幻方量化公司旗下的开源大模型平台
字节跳动自主研发的一系列大型语言模型
阿里巴巴推出的全能AI助手
腾讯混元平台推出的AI助手
文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。
基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿
一站式AI创作平台,免费AI图片和视频生成。
最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。
智谱清言 - 免费全能的AI助手
相关专题
本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。
2
2026.01.31
本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。
1
本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。
本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。
本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。
2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。
76
汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。
73
想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。
67
想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。
19
热门下载
相关下载
精品课程
共24课时 | 7.6万人学习
共0课时 | 0人学习
共19课时 | 5万人学习
共6课时 | 11.2万人学习
共79课时 | 151.8万人学习
共6课时 | 53.4万人学习
共4课时 | 22.4万人学习
共13课时 | 0.9万人学习
最新文章
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部