网站大量收购独家精品文档,联系QQ:2885784924

数据库中游标使用.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档