欢迎来到天天文库
浏览记录
ID:39618687
大小:928.60 KB
页数:51页
时间:2019-07-07
《《游标事务和锁》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、2021/7/261第8章游标、事务和锁22021/7/26第8章游标、事务和锁游标1事务2锁3本章小结432021/7/268.1游标8.1.1游标的定义及优点1.游标的定义游标能够部分读取返回结果集合中的数据行,并允许应用程序通过游标来定位修改表中数据。2.游标的优点允许定位在结果集的特定行。从结果集的当前位置检索一行或一部分行。支持对结果集中当前位置的行进行数据修改。为由其他用户对显示在结果集中的数据库数据所做的更改提供不同级别的可见性支持。提供脚本、存储过程和触发器中用于访问结果集中的数据的Transact-SQL语句。42021/
2、7/268.1.2游标的用法(1)声明游标(DECLARECURSOR)(2)打开游标(OPENCURSOR)(3)提取游标(FETCHCURSOR)(4)根据需要,对游标中当前位置的行执行修改操作(更新或删除)(5)关闭游标(CLOSECURSOR)(6)释放游标(DEALLOCATECURSOR)52021/7/261.声明游标(DECLARECURSOR)可以使用DECLARE语句声明或创建一个游标。语法格式如下:DECLAREcursor_nameCURSOR[LOCAL
3、GLOBAL][FORWARD_ONLY
4、SCROLL][STATIC
5、
6、KEYSET
7、DYNAMIC
8、FAST_FORWARD][READ_ONLY
9、SCROLL_LOCKS
10、OPTIMISTIC]FORselect_statement[FORUPDATE[OFcolumn_name[,...n]]][;]62021/7/262.打开游标(OPENCURSOR)可以使用OPEN语句打开声明过的游标。语法格式如下:OPENcursor_name其中,cursor_name是已声明过的并且没有打开的游标名称。72021/7/263.从打开的游标中提取数据(FETCHCURSOR)可以使用FETCH语句来提取数据。语法格式如
11、下:FETCH[[NEXT
12、PRIOR
13、FIRST
14、LAST
15、ABSOLUTEn
16、RELATIVEn]FROM]cursor_name[INTO@variable_name[,...n]]82021/7/264.关闭游标(CLOSECURSOR)当不再使用游标时,应及时调用CLOSE语句关闭游标,以便释放游标所占用的系统资源。在关闭游标时,SQLServer删除游标中的所有数据,并释放游标对数据库的所有锁定。所以,在游标关闭后,禁止提取游标数据,或通过游标进行定位修改或删除操作。但是,关闭游标并不改变游标的定义,应用程序可以再次执行OPEN语句打开游
17、标。可以使用CLOSE关闭游标。语法格式如下:CLOSEcursor_name其中,cursor_name是要被关闭的游标名。92021/7/265.释放(删除)游标(DEALLOCATECURSOR)由于关闭游标时并没有删除游标,因此,游标仍然占用着一定的系统资源。如果一个游标确定不再使用,将其关闭后,还需要使用DEALLOCATE语句来删除游标。语法格式如下:DEALLOCATEcursor_name其中,cursor_name是已声明的游标名称。102021/7/268.1.3使用游标修改数据在SQLServer中,UPDATE语句和DELET
18、E语句也支持游标操作,它们可以通过游标修改或删除游标基表中的当前数据行。这样,就可以通过游标更新和删除数据表中的数据。用于游标操作时,UPDATE语句的语法格式如下:UPDATEtable_nameSETcolumn_name=expressionWHERECURRENTOFcursor_name112021/7/268.2事务8.2.1什么是事务事务(transaction)是SQLServer中的单个逻辑工作单元,也是一个操作序列,它包含了一组数据库操作命令。一个事务内的所有语句被作为一个整体执行。在事务执行过程中,如果遇到错误,则可以回滚事务,
19、取消该事务所做的全部改变,从而保证数据库的一致性和完整性。因此,事务是一个不可分割的工作逻辑单元,一个事务中的语句要么全部正确执行,要么全部不起作用。事务作为一个逻辑工作单元必须具有四个属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。这四个属性简称ACID属性。122021/7/261.显示事务显示事务就是可以显式地定义事务的开始和结束的事务,这类事务又称为用户定义事务。(1)BEGINTRAN[SACTION][transaction_name
20、@tran_name
21、_variable]标记一个显式本地事务的起始点。(2)COMMITTRAN[SACTION][transa
此文档下载收益归作者所有