事务与游标编程.ppt_第1页
事务与游标编程.ppt_第2页
事务与游标编程.ppt_第3页
事务与游标编程.ppt_第4页
事务与游标编程.ppt_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10讲 事务与游标编程,问题,问题 在银行等重要交易中,要使一组SQL语句同时执行或撤消,如何做? 要对查询结果进行一行行的操作,如何做到?,事务概述,事务是作为单个逻辑工作单元执行的一系列操作。 思考:事务和批处理的区别? 事务的属性(ACID) 原子性:原子工作单元 一致性:保证数据的一致性 隔离性:并发事务之间所做的修改要隔离 并发操作:几个用户程序同时读写一个数据的情况 持久性:对系统的影响要持久,简单事务编程,格式: BEGIN TRANSACTION COMMIT TRANSACTION ROLLBACK TRANSACTION 【问题】简单的事务提交和回滚 说明:如果没有明确给出BEGIN TRANSACTION语句,则SQL Server是将每个SQL语句都当成一个事务进行执行,事务的嵌套,嵌套事务只有在提交了最外层的事务后,数据才执行永久修改 嵌套事务时,ROLLBACK语句只能将所有内层事务回滚到最外层的BEGIN TRANSACTION语句,封锁,利用封锁技术可以有效地保证数据的一致性 封锁粒度:可以锁定在行、列、表、数据库等不同的单元上 SQL Server具有自动和强制封锁的功能,锁模式,锁模式: 共享锁(Share Lock) 排他锁(Exclusive Lock) 更新锁(Update Lock) 各种锁模式的兼容性:,死锁,当两个事务trans1和trans2在下列的状态时,将产生死锁: Trans1:存取数据项X和Y Trans2:存取数据项Y和X 【说明】如果事务Trans1封锁了数据项X,事务Trans2封锁了数据项Y,则Trans1等待Trans2释放Y上的锁,Trans2等待Trans1释放X上的锁。因此,Trans1和Trans2都无限地等待对方打开锁住的数据项,则产生死锁。,死锁(续),【死锁示例】 说明: SQL Server能自动发现并解除死锁 避免死锁的措施:P.237,游标引例,以前:使用SELECT语句对表格进行查询,返回的结果集包括所有满足条件的行。 思考:如果要求每次只显示表格(例如上面的Course表)中的一行,该如何处理?这在将T-SQL嵌入到其他高级语言(如C、VC、Delphi等)的编程中经常用到。,游标概述,可以将游标看作一种特殊的指针,它可以指向与它相关联的结果集中的任意一行,以便对当前位置的行进行处理。 游标提供了对一个结果集进行逐行处理的能力: 在结果集中定位特定行 从结果集的当前位置检索行 支持对结果集中当前位置的行进行数据处理(修改/删除),使用游标的步骤,声明游标 打开游标 处理数据(读取/修改/删除)可以和其他T-SQL语句配合灵活使用 关闭游标(与打开游标配对) 删除游标(与声明游标配对,此时释放分配给游标的所有资源) 【问题】游标基本使用的例子,相关语法格式,声明游标 DECLARE cursor_name CURSOR FORWORD_ONLY|SCROLL FOR select_statements 打开游标 OPEN cursor_name 使用游标 FETCH NEXT|PRIOR|FIRST|LAST FROM cursor Into variable_name 关闭游标 CLOSE cursor_name 删除游标 DEALLOCATION cursor_name,练习1,声明一个名为CrsStudent的游标,使其与“00电子商务班”的所有学生信息(学号、姓名)相关联,并逐行显示前三条学生信息,如果遍历整个结果集?,使用fetch_status: 该全局变量/配置函数返回被最后FETCH语句执行的游标的状态,返回类型为int: 0:FETCH语句成功 1:FETCH语句失败或此行不在结果集中 2:被提取的行不存在,练习2,使用游标遍历Course表,输出报名人数最多的课程的信息(课程编码、课程名称、报名人数),练习3,建立一个存储过程,利用游标求cour

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论