- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HYPERLINK /zijinguang/archive/2007/12/17/1003281.html 数据库中游标的使用
1. 为何使用游标:
?
???????? 使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式。用SQL语言从数据库中检索数据后,结果放在内存的一块区域中,且结果往往是一个含有多个记录的集合。游标机制允许用户在SQL server内逐行地访问这些记录,按照用户自己的意愿来显示和处理这些记录。
?
2. 如何使用游标:
?
???? 一般地,使用游标都遵循下列的常规步骤:
?
????? (1)? 声明游标。把游标与T-SQL语句的结果集联系起来。????? (2)? 打开游标。????? (3)? 使用游标操作数据。????? (4)? 关闭游标。
?
2.1. 声明游标
?
DECLARE CURSOR语句SQL-92标准语法格式:
?
?
DECLARE 游标名 [ INSENSITIVE ] [ SCROLL ] CURSOR
?
FOR? sql-statement
?
Eg:
?
Declare MycrsrVar? Cursor
?
FOR Select *? FROM tbMyData
?
2.2? 打开游标
?
OPEN MycrsrVar
?
当游标被打开时,行指针将指向该游标集第1行之前,如果要读取游标集中的第1行数据,必须移动行指针使其指向第1行。就本例而言,可以使用下列操作读取第1行数据:
?
???? FETCH FIRST from E1cursor
?
???? 或 FETCH NEXT from E1cursor
?
?
2.3????? 使用游标操作数据???
?
下面的示例用@@FETCH_STATUS控制在一个WHILE循环中的游标活动
?
/* 使用游标读取数据的操作如下。*/
?
DECLARE E1cursor cursor????? /* 声明游标,默认为FORWARD_ONLY游标 */
?
FOR SELECT * FROM c_example
?
OPEN E1cursor??????????????? /* 打开游标 */
?
FETCH NEXT from E1cursor???? /* 读取第1行数据*/
?
WHILE @@FETCH_STATUS = 0???? /* 用WHILE循环控制游标活动 */
?
BEGIN
?
????????? FETCH NEXT from E1cursor?? /* 在循环体内将读取其余行数据 */
?
END
?
CLOSE E1cursor?????????????? /* 关闭游标 */
?
DEALLOCATE E1cursor????????? /* 删除游标 */
?
2.4???? 关闭游标
?
???? 使用CLOSE语句关闭游标
?
CLOSE { { [ GLOBAL ] 游标名 } | 游标变量名 }
?
?
使用DEALLOCATE语句删除游标,其语法格式如下:
?
DEALLOCATE { { [ GLOBAL ] 游标名 } | @游标变量名
?
?
3.? FETCH操作的简明语法如下:
?
???
?
FETCH
?
?????????? [ NEXT | PRIOR | FIRST | LAST]
?
FROM
?
{ 游标名? | @游标变量名 } [ INTO @变量名 [,…] ]
?
?
参数说明:
?
NEXT?? 取下一行的数据,并把下一行作为当前行(递增)。由于打开游标后,行指针是指向该游标第1行之前,所以第一次执行FETCH NEXT操作将取得游标集中的第1行数据。NEXT为默认的游标提取选项。
?
INTO @变量名[,…]? 把提取操作的列数据放到局部变量中。列表中的各个变量从左到右与游标结果集中的相应列相关联。各变量的数据类型必须与相应的结果列的数据类型匹配或是结果列数据类型所支持的隐性转换。变量的数目必须与游标选择列表中的列的数目一致。
?
--------------------------------------------------------------------------------------------------------------------------------
?
每执行一个FETCH操作之后,通常都要查看一下全局变量@@FETCH_STATUS中的状态值,以此判断FETCH操作是否成功。该变量有三种状态值:
?
?? 0? 表示成功执行FETCH语句。
?
? -1? 表示FE
您可能关注的文档
- 康乃馨母本生产补水操作管理.doc
- 廖师傅“毛氏红烧肉”.doc
- 库区学校教育改革与发展中问题与措施.doc
- 履带拖拉机相比轮式拖拉机在农田作业等方面主要优势.doc
- 年度绿化养护管理计划和方案.doc
- 年度检查验收小班调查表填写和说明.doc
- 年会流程和会场布置.doc
- 尿激酶制取与检验.doc
- 平安保险送单员.doc
- 平板和冷风速冻机区别.doc
- 金融产品2024年投资策略报告:积极适应市场风格,行为金融+机器学习新发现.pdf
- 交运物流2024年度投资策略:转型十字路,峰回路又转(2023120317).pdf
- 建材行业2024年投资策略报告:板块持续磨底,重点关注需求侧复苏.pdf
- 宏观2024年投资策略报告:复苏之路.pdf
- 光储氢2024年投资策略报告:复苏在春季,需求的非线性增长曙光初现.pdf
- 公用环保2024年投资策略报告:电改持续推进,火电盈利稳定性有望进一步提升.pdf
- 房地产2024年投资策略报告:聚焦三大工程,静待需求修复.pdf
- 保险2024年投资策略报告:资产负债匹配穿越利率周期.pdf
- 政策研究2024年宏观政策与经济形势展望:共识与分歧.pdf
- 有色金属行业2024年投资策略报告:新旧需求共振&工业原料受限,构筑有色大海星辰.pdf
文档评论(0)