SQL 第13章 游标及事务.ppt

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

2004-11-8 第13章 游标及事务 第13章 游标及事务 13.1 游标的定义及优点 13.2 游标的使用 13.3 使用游标修改数据 13.4 事务的使用 13.1 游标的定义及其优点 13.1.1 游标的概念 游标(Cursor)是一种处理数据的方法,为了查看或者处理结果集中的数据,游标提供了在结果集中向前或者向后浏览数据的能力。 13.1.2 使用游标的优点 1)允许程序对由查询语句SELECT返回的行集合中的每一行数据执行相同或不同的操作。 2)提供对基于游标位置的表中的行进行删除和更新的能力 3)游标实际上作为面向集合的数据库管理系统(RDBMS)和面向行的程序设计之间的桥梁,使这两种处理方式通过游标沟通起来。 13.2 游标的使用 13.2.1 使用游标的步骤 13.2.2 游标的定义及使用过程 1. 声明游标 声明游标的语法如下: DECLARE cursor_name [SCROLL] CURSOR FOR select_statement [FOR {READ ONLY|UPDATE[OF column_name_list]}] 其中: SCROLL:表示取游标时可以使用关键字NEXT、PRIOR、FIRST、LAST、ABSOLUTE、RELATIVE。 应该注意: ① 游标有且只有两种方式:FOR READ ONLY或FOR UPDATE。 ② 当游标方式指定为FOR READ ONLY时,游标涉及的表不能被修改。 ③ 当游标方式指定为FOR UPDATE时,可以删除或更新游标涉及的表中的行。通常,这也是缺省方式,即不指定游标方式时为FOR UPDATE方式。 ④ 声明游标的DECLARE CURSOR 语句必须是在该游标的任何OPEN语句之前。 2. 打开游标 打开游标的语法如下: OPEN cursor_name 其中: ? cursor_name是一个已声明的尚未打开的游标名。 注意: ① 当游标打开成功时,游标位置指向结果集的第一行之前。 ② 只能打开已经声明但尚未打开的游标。 3. 从打开的游标中提取行 从打开的游标中提取行的语法如下: FETCH [[NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE] FROM] cursor_name [INTO fetch_target_list] 其中: cursor_name:为一已声明并已打开的游标名字。 NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE:游标移动方向,缺省情况下是NEXT,即向下移动。 NEXT:取下一行数据。 PRIOR:取前一行数据。 FIRST:取第一行数据。 LAST:取最后一行数据。 ABSOLUTE:按绝对位置取数据。 RELATIVE:按相对位置取数据。 INTO fetch_target_list:指定存放被提取的列数据的目的变量清单。 有两个全局变量提供关于游标活动的信息: ① @@FETCH_STATUS 保存着最后FETCH语句执行后的状态信息,其值和含义如下: 0 :表示成功完成FETCH 语句。 -1:表示FETCH语句执行有错误,或者当前游标位置已在结果集中的最后一行,结果集中不再有数据。 -2:提取的行不存在。 ② @@rowcount 保存着自游标打开后的第一个FETCH语句,直到最近一次的FETCH语句为止,已从游标结果集中提取的行数。 4. 关闭游标 关闭游标的语法如下: CLOSE cursor_name 其中: cursor_name:是已被打开并将要被关闭的游标名字。 在如下情况下,SQL Server会自动地关闭已打开的游标: 当你退出这个SQL Server会话时 从声明游标的存储过程中返回时 5. 释放游标 释放( Deallocate)游标是指释放所有分配给此游标的资源,包括该游标的名字。 释放游标的语法是: DEALLOCATE CURSOR cursor_name 其中: cursor_name:将要被DEALLOCATE释放的游标名字。如果释放一个已打开但未被关闭的游标,SQL Server会自动先关闭这个游标,然后再释放它。 注意一下关闭游标与释放游标的区别: 关闭游标并不改变游标的定义,一个游标关闭后,不需要再次声明,就可以重新打开并使用它。 一个游标释放后,就释放了与该游标有关的一切资源,也包括游标的声明,游标释放后就不能再使用该游标了,如需再次使用游标,就必须重新定义。 【例13-1】定义一个游标,将教师表teacher中所有教师的教师姓名、教师职称显示出来。 USE jwgl GO DECLARE @teach_name VARCHAR(8),@teach_professi

文档评论(0)

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

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

1亿VIP精品文档

相关文档