SQL Server基础教程 教学课件 作者 董翔英 等 第10章.pptVIP

SQL Server基础教程 教学课件 作者 董翔英 等 第10章.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据存放到指定的变量中。这些 变量必须和cursor声明中的 SELECT语句所选取的列一一对 应,且数据类型必须相同。 每次执行FETCH命令读取数据 后,FETCH语句的执行状态都会 保存在@@FETCH_STATUS此 全局变量中,如果需要可以检查 @@FETCH_STATUS的值以确 定数据读取是否成功。 @@FETCH_STATUS的值有以 下三种可能: (1)读取成功。 (2)-1 读取失败,游标所指位 置超过数据子集范围。 (3)-2 所读取的数据行已被删 除。   当FETCH语句读取范围超过 数据子集范围,cursor指向数据 子集的第一行之前或最后一行之 后,@@FETCH_STATUS值为- 1。打开cursor时,cursor指向 结果集第一行之前。   如果当第一次读取数据时执 行FETCH NEXT语句,将读取结 果集的第一行,当cursor指向最 后一行时执行FETCH NEXT语 句,将无值返回, @@FETCH_STATUS值为-1, cursor指向最后一行之后。   若此时执行FETCH PRIOR 语句,将返回最后一行。当 cursor指向第一行或当第一次读 取数据时,执行FETCH PRIOR 语句,将无值返回, @@FETCH_STATUS值为-1, cursor指向第一行之前。若此时 执行FETCH NEXT,返回第一行 数据。   如果是FORWARD_ONLY 或FAST_FORWARD游标,只 能使用NEXT关键字一行一行往 下读取,读到最后一条数据时也 无法回到第一条数据重头读取, 除非先关闭再重新打开游标。 这种游标常用在报表的处理上, 因为依据报表的打印特点,每条 数据读取一次即打印到报表上不 再需要回头读取。   如果是DYNAMIC SCROLL 游标,不能使用ABSOLUTE选 项。   如果是KEYSET、STATIC 或SCROLL游标,且没有指定 DYNAMIC、FORWARD_ONLY 或FAST_FORWARD关键字, FETCH命令中所有的选项都可使 用。 【例10-5】定义游标,然后打开 游标,测试游标内数据。 DECLARE xc_cur2 CURSOR KEYSET FOR SELECT 车牌号,出车单号,调度 号 FROM xc OPEN xc_cur2 FETCH NEXT FROM xc_cur2 执行结果如图10.4。   若第二次读取时,输入以下 语句 FETCH ABSOLUTE 4 FROM xc_cur2 执行结果如图10.5。 图10-5 第二次读取游标结果   若第三次读取时,输入以下 语句 FETCH LAST FROM xc_cur2 SELECT ‘FETCH执行状态 ’=@@FETCH_STATUS 执行结果如图10.6。 图10-6 第三次读取游标结果   若第四次读取时,输入以下 语句 FETCH NEXT xc_cur2 SELECT ‘FETCH执行状态 ’=@@FETCH_STATUS 执行结果如图10.7。 图10-7 第四次读取游标结果 四、通过游标修改数据   通过游标可以实现更及时和更 精确的定位更新。在某些时候,当 使用cursor读取某条数据后,可 能需要修改或删除该数据,如果此 时另外执行UPDATE或DELETE命 令,需要在WHERE子句中重新给 出行筛选条件,才能修改到该条数 据。如果有多个行满足 UPDATE 语句或DELETE语句中 WHERE 子句的条件,那么将导致无意识 的更新和删除。   为了避免这样的麻烦,可以在 cursor声明中加上FOR UPDATE 子句,这样就可以在UPDATE 或 DELETE命令中使用WHERE CURRENT OF 子句,直接修改 或删除当前cursor所指的行数 据,而不必重新给定选取条件。当 cursor声明中有INSENSITIVE选 项或STATIC选项,cursor内的数 据无法被修改,有时即使没有使用 INSENSITIVE选项,但在某些状 况下,INSENSITIVE特性仍然会 被启动,在这种情况下,该ursor 内的数据仍无法被修改。 【例10-6】定义游标,然后打开游 标,修改游标内数据。 DECLARE jsy_cur4 CURSOR GLOBAL SCROLL SCROLL_LOCKS FOR SELECT 驾照号, 姓名, 积分 FROM jsy 提取数据行。 select_statement为SELECT语 句,由该查询生成与cursor相关 联的结果集。SELECT语句中不 能使用COMPUTE、COMPUTE BY、FOR BROWSE 和INTO关 键字。如果在SE

您可能关注的文档

文档评论(0)

118压缩包课件库 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档