第九章 事务与游标.ppt

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

示例 要求将studentcourse数据库中学生表S的某个学号由J0403修改为J4444。 由于学号同时出现在学生表S及成绩表SC中,所有两个表中的学号要么都修改,要么都不修改,不能只修改一个表中的数据。保证可将两个UPDATE语句定义为一个事物,保证数据的一致性。语句如下: USE studentcourse BEGIN TRAN S --开始一个事务 UPDATE S SET 学号= J4444 WHERE 学号= J0403 UPDATE SC SET 学号= J4444 WHERE 学号= J0403 COMMIT TRAN stud_transaction --提交事务 游标及其使用 通常情况下,执行查询得到的是一个记录的集合。有时用户需要对这些数据集合中的每一记录分别进行操作。要在数据库服务器端实现该功能,就要用到游标。 存放查询结果的区域及其相应的数据结构称为游标(Cursor),为了逐个取出该区域中的记录,需要一个指示器,指示已取记录的位置,每取一个记录,指示器向前推进一个位置 游标提供了一种在服务器内部处理结果集的方法,它可以识别一个数据集内部指定的行,从而可以有选择地按行采取操作 。 使用游标的基本步骤 声明游标 打开游标 从游标中反复提取行,进行相应操作 关闭游标 当不再使用游标时,释放游标 2.使用Transact-SQL 扩展语法声明游标 Select_Statement:是定义游标结果集的SELECT 查询语句,不允许使用 COMPUTE、COMPUTE BY和 INTO子句。 指定游标作用域的参数 local:定义游标为局部游标,游标作用域仅限在其所在的批处理、存储过程或触发器中。当建立游标的批处理、存储过程或触发器执行结束后,游标被自动释放。 global:定义游标为全局游标,其作用域是整个用户的连接时间,包括从用户登录SQL SERVER服务器到脱离SQL SERVER服务器的时间段。 如果 local和 global都没有指定,则由数据库选项default to local cursor 控制由 DECLARE CURSOR 语句使用的LOCAL和 GLOBAL的默认值。 DECLARE GoodScorecur CURSOR LOCAL FOR SELECT * FROM SC WHERE 成绩=90 GO(批处理结束) 将上列改为定义全局游标 DECLARE GoodScorecur CURSOR GLOBAL FOR SELECT * FROM SC WHERE 成绩=90 GO 指定游标方向的参数 FORWARD_ONLY:声明游标为只向前型游标,只能从第一行依次滚动到最后一行, NEXT 是唯一支持的取数选项。 指定游标类型的参数 STATIC :声明游标为静态游标,游标数据存放在Tempdb数据库一个临时表中,对游标的所有数据请求都从该临时表中得到应答;因此,对该游标进行提取操作返回的数据不能实时反映基表所做的修改,不能通过该游标对基表数据进行更新 KEYSET:声明游标为键值驱动游标。将对游标数据中每个记录行的进行唯一标识的主键集合内置在 tempdb 内一个称为 keyset 的表中。 指定游标类型的参数 使用KEYSET游标: 其他用户对基表中的非键值所做的更改,在游标中是可视的。 其他用户插入的新行在游标中是不可视的。 其他用户从游标外更新键值后,含有新键值的行不可视,对含有旧键值的行的提取操作将返回 @@FETCH_STATUS 值 -2(说明该行不存在) 指定游标类型的参数 DYNAMIC:声明游标为动态游标,游标数据存放在基表中,游标能实时的反映外界对基表所做的修改。 FAST_FORWARD:声明一个优化了的快速只向前型只读型游标。 FAST_FORWARD和FORWARD_ONLY 互斥,两者任选一种 指定游标访问属性的参数 SCROLL_LOCKS:声明此游标为滚动锁游标。指明在与游标相关的基表数据上加锁。当将行读入游标时, SQL Server会锁定这些行,外界不能直接修改基表中的这些数据行。 OPTIMISTIC:声明此游标为乐观控制游标。当将行读入游标时 SQL Server 不锁定行。如果行被读入游标后被更新,则通过游标进行的定位更新或定位删除不成功 如果还指定了 FAST_FORWARD,则不能指定 SCROLL_LOCKS 或OPTIMISTIC。 指定游标是否更新的参数 READ ONLY :声明此游标为只读游标,不允许通过它对基表数据进行更新。 FOR UPDATE [ OF 列名

文档评论(0)

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

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

1亿VIP精品文档

相关文档