第10章游标及事务.pptVIP

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第10章 游标及事务 第10章 游标及事务 1 游标 游标的概念 为了对数据表集合中的每一行实现有针对性的操作, 引入“游标”.游标提供了一种在服务器端按行处理表中数据的机制。 游标具有类似C语言指针一样的结构,通过游标的引导可以识别数据表内指定的行,从而可以有选择的按行操作. 即游标包括两部分:查询结果集--由selelct返回,游标位置--通过查询结果集指向表中某一行的指针。 利用游标可以表中数据进行针对性的修改或删除 游标主要用在存储过程、触发器和T-sql的脚本中 对游标的操作有: 声明游标, 打开游标, 关闭游标, 释放游标, 按游标取数, 按游标修改记录等 游标类型: 游标结果集存储在tempdb库中 静态游标:总是按照打开时的原样显示结果集,当有用户修改表数据时,就不能反应表中的现状,所以不能通过 游标修改数据,只能读数据。 动态游标:动态游标每次读取时反映表中最新的所有更改,即当滚动游标时,所有用户的更改均通过游标可见。 键集游标:将结果集所有行的键值都存储在tempdb库中,当移动游标时,通过键值读取数据行的全部数据列,因此,这种游标可以反映对基表的非键值字段的 全部更新。不能用于对键值的修改或插入,资源消耗介于动态与静态之间。该表必须有主键。 forward_only 只进。不支持滚动,仅支持next。只支持从头到尾的顺序提取数据,在行提取之后所作的更改对游标不可见。 Scroll 滚动 。支持:next、prior、first、last、absolute、relative 例:将学生表中学号,姓名,年龄提取出来,按年龄升序排列,并将查询结果添加到一个名为“TXS”的表中,同时为每条记录加入“1,2,3…”序号. USE CJGL GO CREATE TABLE TXS(序号 int, 学号 char(8), 姓名 char(8), 出生日期 DATETIME) GO DECLARE @I int DECLARE @XH char(8), @XM char(8), @出生日期 DATETIME DECLARE Mycursor SCROLL CURSOR FOR SELECT 学号,姓名,出生日期 FROM XS ORDER BY 出生日期 --定义游标 OPEN Mycursor --打开游标 FETCH FIRST FROM Mycursor INTO @XH, @XM, @出生日期 --从结果集中取出第一行,送给三个变量 SET @I=1 WHILE @@FETCH_STATUS=0 --判断是否到了学生表的尾部 BEGIN INSERT INTO TXS(序号,学号,姓名,出生日期 ) VALUES (@I,@XH,@XM,@出生日期 ) FETCH NEXT FROM Mycursor INTO @XH, @XM, @出生日期 SET @I=@I+1 END CLOSE Mycursor --关闭游标 DEALLOCATE Mycursor --释放游标 GO SELECT * FROM TXS DROP TXS GO 游标操作 1.声明游标SQL-92标准 Declare 游标名 [insensitive][scroll ] cursor For select 语句 [For [read only | update [of 列1[,…n] ] ] 没有使用SCROLL定义游标, 只能用NEXT取数 2.按游标取数 Fetch [next | prior | first | last | absolute{n | @nvar}| relative {n | @nvar} ] From] { { [ GLOBAL ] cursor_name } | @cursor_variable_name } [Into @局部变量1 [,…n] ] USE 教学管理 GO DECLARE @Myage int DECLARE Mycur1 CURSOR FOR SELECT 年龄 FROM 学生 FOR UPDATE OF 年龄 OPEN Mycur1 FETCH NEXT FROM Mycur1 INTO @Myage WHILE @@FETCH_STATUS=0 BEGIN IF @Myage20 DELETE FROM 学生 WHERE CURRENT OF Mycur1 1。声明游标两种格式 1.2 声明游标(1) 1.2 声明游标(2) 1.3 打开游标 1.4 数据处理(1) 提取数据 语法格式: fetch?[[next|prior|first|last | absolute n |relati

文档评论(0)

junjun37473 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档