- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 10 章 游标及事务
教学提示:游标(Cursor)是允许用户从查询结果的记录集中,逐条逐行地进行记录访问
的数据处理机制;事务(Transaction)是由对数据库的若干操作组成的一个单元,这些操作要
么都完成,要么都取消(如果在操作执行过程中不能完成其中任一操作) ,从而保证数据修
改的一致性,并且在系统出错时确保数据的可恢复性。
教学目标:通过本章的学习,读者应该掌握游标的概念及其操作、事务的概念及事务控制。
10.1 游 标
由 select 语句查询的结果是一个记录集,即由若干条记录组成的一个完整的单元。在
实际应用中常常需要从这种记录集中逐行逐条进行访问的处理机制。如:在统计某班某课
程学生成绩分布的查询结果集中,我们希望逐行访问记录,以便知道每个同学这门课的分
数是多少,据此判断成绩是优、良、中、及格还是不及格。使用游标便可解决这类问题。
10.1.1 游标的概念
1. 游标的定义
游标是允许用户能够从 select 语句查询的结果集中,逐条逐行地访问记录,可以按照
自己的意愿逐行地显示、修改或删除这些记录的数据访问处理机制。游标可以理解为数据
表记录逐行访问(移动当前记录和在当前记录上进行访问) 的位置指针。
2. 使用游标的步骤
(1) 声明游标:
declare 游标名 cursor for select 语句
(2) 打开游标:
open 游标名
(3) 处理数据:
① 移动到当前行并读取数据:
fetch 游标名 [into @变量名,...]
② 删除当前行数据:
delete from 表或视图名 where current of 游标名
③ 修改当前行数据:
update from 表或视图名
set 列名=表达式,...
where current of 游标名
·200 · SQL Server 数据库管理与开发教程与实训
(4) 关闭游标:
close 游标名
(5) 释放游标:
deallocate 游标名
3. 游标的类型
(1) Static(静态):当一个用户正在逐条访问查询结果时,如果其他人正使用同一个数据表修
改记录,那么该用户不会看到该修改。他所看到的数据记录是他运行open 语句时的记录内容。
(2) Dynamic(动态) :在接收到查询的结果之后,记录会不断地被更新,以便能够实时看
到别人对该记录所做的修改。这个游标是最灵活的,但是也需要较大的系统开销和资源。
(3) Forward Only(只进) :只能前进,从前向后一条一条移动记录指针来访问记录。
(4) Scroll(滚动) :允许向前、向后,一条或多条滚动记录指针来访问记录。
10.1.2 声明游标
Transact-SQL 扩展语法格式:
DECLARE 游标名 CURSOR
[LOCAL | GLOBAL]
[FORWARD_ONLY | SCROLL]
[STATIC | KEYSET | DYNAMIC | FAST_FORWARD]
[READ_ONLY | SCROLL_LOCKS | OPTIMISTIC]
FOR SELECT 语句
[FOR UPDATE [OF 列名 [,...N]]]
其中:
(1) 游标名:游标名称,游标命名必须符合标识符规则,不能超过 128 个字符。
(2) select 语句:用来定义游标结果集的标准 select 语句,且不允许使 compute、compute
by 、for browse 和 into 子句。
(3) local:指定该游标的作用域对在其中创建它的批处理、存储过程或触发器是局部的。
(4) global:指定该游标的作用域对连接是全局的。在由连接执行的任何存储过程或批
处理中,都可以引用该游标名称。该游标仅在连接断开时自动释放。
(5) forward_only:只
文档评论(0)