数据库课程详细教程 第10章.ppt

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库课程详细教程 第10章

10.2 游标的创建与使用 10.2.1、游标的概念 SELECT语句是对数据表的整行(记录)整列(字段)数据进行操作的,其结果是若干行若干列的“结果集”—也是一张“表格”,而不是针对某个特定的数据项进行操作。 在我们实际需要中,尤其在应用程序中,并不能把“表格”作为一个整体进行处理,通常使用数组表示同种类型的某一“列”数据,使用结构体或记录类表示多个不同类型的某一“行”数据,使用结构体或记录数组可以表示一张表。 我们如何把数据表中的某一行、某一列的一个数据项从一个完整的表中提取出来呢? 我们可以通过定义游标实现这一功能。游标的主要用途就是在T-SQL脚本程序、存储过程、触发器中对SELECT语句返回的结果集进行逐行逐字段处理,把一个完整的数据表按行分开,一行一行的逐一提取记录,并从这一记录行中逐一提取各项数据。 游标与变量类似,必须先定义后使用。 游标的使用过程:定义声明游标 → 打开游标 → 从游标中提取记录并分离数据 → 关闭游标 →释放游标。 10.2.2、用DECLARE语句定义游标 1、基于SQL-92标准的DECLARE语句 DECLARE 游标名 [ INSENSITIVE ] [ SCROLL ] CURSOR FOR SELECT语句 [FOR{ READ ONLY | UPDATA [ OF 字段名[ , …n] ] } ] 说明: lINSENSITIVE定义游标时自动在系统tempdb数据库中创建一个临时表存储游标使用的数据,在游标使用过程中基表数据改变不影响游标的数据,但该游标的数据不允许修改。省略该项表示游标直接从基表中取得数据,即游标使用的数据将随基表数据的变化而动态变化。 lSCROLL表示该游标可以在FETCH语句中任意指定数据的提取方式,省略该项表示该游标仅支持NEXT顺序提取方式。 lSELECT指定该游标使用的结果集,不允许使用COMPUTE或INTO子句。 lREAD ONLY表示只读,该游标中的数据不允许修改,即不允许在UPDATE或DELETE语句中引用该游标。 lUPDATA [OF 字段名[ , …n] ] 表示在该游标内可以更新基本表的指定字段,省略字段名列表表示可以更新所有字段。 10.2.2、用DECLARE语句定义游标 2、SQL Server 2005 T-SQL中的扩展DECLARE语句 DECLARE 游标名 CURSOR [ FORWARD_ONLY|SCROLL] [ STATIC|KEYSET|DYNAMIC|FAST_FORWARD ] [ READ_ONLY|OPTIMISTIC ] [ TYPE_WARNING ] FOR SELECT语句 [ FOR UPDATE [ OF 字段名 [ , … n ] ] ] 说明: ?FORWARD_ONLY指定该游标为顺序结果集,只能用NEXT向后方式顺序提取记录。 ?SCROLL指定该游标为滚动结果集,可以使用向前、向后、定位方式提取记录。 STATIC与INSENSITIVE 含义相同,在系统tempdb数据库中创建临时表存储游标使用的数据,即游标不会随基本表内容而变化,同时也无法通过游标来更新基本表。 10.2.2、用DECLARE语句定义游标 KEYSET 指定游标中列的顺序是固定的,并且在tempdb内建立一个KEYSET表,基本表数据修改时能反映到游标中。如果基本表添加符合游标的新记录时该游标无法读取(但其他语句使用WHERE CURRENT OF子句可对游标中新添加的记录数据进行修改)。如果游标中的一行被删除掉,则用游标提取时@@FETCH_STATUS的返回值为-2。 DYNAMIC 指定游标中的数据将随基本表而变化,但需要大量的游标资源。 FAST_FORWARD指定FORWARD_ONLY而且READ_ONLY类型游标。使用FAST_FORWARD参数则不能同时使用FORWARD_ONLY、SCROLL、OPTIMISTIC或FOR UPDATE参数。 OPTIMISTIC指明若游标中的数据已发生变化,则对游标数据进行更新或删除时可能会导致失败。 ?TYPE_WARNING 指定若游标中的数据类型被修改成其他类型时,给客户端发送警告。 10.2.2、用DECLARE语句定义游标 若省略FORWARD_ONLY|SCROLL则不使用STATIC、KEYSET和DYNAMIC时默认为FORWARD_ONLY游标,使用STATIC、KEYSET或DYNAMIC之一则默认为SCROLL游标。 若省略READ_ONL

文档评论(0)

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

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

1亿VIP精品文档

相关文档