第4章(笔记).ppt_第1页
第4章(笔记).ppt_第2页
第4章(笔记).ppt_第3页
第4章(笔记).ppt_第4页
第4章(笔记).ppt_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、在PL/SQL中更改和管理事务,项目经理:龙正波,本章大纲,PL/SQL中为什么要用SQL 在PL/SQL中使用DML 使用ForAll语句的批量DML PL/SQL中的数据库事务管理,PL/SQL中使用SQL,概述 单纯学习PL/SQL并没有实际作用 PL/SQL最终还是要执行各种SQL才能操作数据库 PL/SQL中究竟 如何执行各种SQL?,DML操作的游标属性,PL/SQL执行DML 增加、删除、修改:能够直接执行 查询:查询只能返回一条记录,并且必须将查询结果赋值给变量。 问题 如果在PL/SQL中执行返回多条记录的查询? 答案:在PL/SQL中使用游标。,select ename i

2、nto v_name from emp 为什么会错?,今天我们首先先学习游标的各种属性。,DML操作的游标属性,游标 当在PL/SQL块中执行DML(增删改查)时,Oracle会为其分配上下文区(Context Area),游标是指向上下文区的指针。 简单理解:游标就是指向所操作的记录的指针。 分类 隐式游标 对于数据库操纵语句和单行SELECT INTO语句来说,Oracle会为它们分配隐含游标。 显式游标 待续。,DML操作的游标属性,隐式游标 名称:SQL 属性:SQL%属性名 常见属性 SQL%FOUND:操作到数据 SQL%NOTFOUND:没有操作到数据 SQL%ROWCOUNT:

3、操作的记录数 常见方法 Returning:返回SQL执行以后的结果,DML操作的游标属性,实例 更新9号员工的工资为9000,不成功要给出提示信息。 分析:没有更新到数据,Oracle不认为是出错。 查询9号员工的工资,没找到要给出提示信息。 分析:没有查询到数据,Oracle认为是出错(抛出异常)。 提示 你还有其它方法来完成上面的任务吗? 提示:使用count(*)先找出9号员工的个数。,用ForAll语句批量执行DML,好处 背景:PL/SQL引擎最终要将其中的SQL传递给SQL引擎,这叫上下文转发。 使用ForAll语句可以让PL/SQL引擎一次将多条SQL转发给SQL引擎,从而减少

4、转发次数,提高系统性能。 类似:JDBC的“批处理”(addBatch,executeBatch) 案例 在INSERT语句上使用批量绑定 其它 在ForAll语句中完成多条更新和删除(详见教材),ForAll 索引 in 开始.结束 sql语句;,用ForAll语句批量执行DML,ForAll的游标属性 SQL%FOUND:操作到数据 SQL%NOTFOUND:没有操作到数据 SQL%ROWCOUNT:操作的记录数 SQL%BULK_ROWCOUNT: 返回批量执行时第i个元素所作用的行数 案例 使用BULK_ROWCOUNT,演示,事务概念,为什么要事务 因为有时业务要求,多个步骤必须同时

5、完成。 事务 事务就是一个完整的逻辑工作单元,由多个操作组成。所以操作要么全部成功,要么全部失败。 事务特点 ACID:原子性、一致性、隔离性、持久性 数据库事务 由多个SQL语句组成的一个逻辑工作单元,所有SQL都必须同时执行成功,只要其中一个执行失败,则所有执行过的SQL自动全部回滚。,事务控制,事务控制命令 COMMIT:提交 ROLLBACK:失败,事务控制,事务控制流程 开始事务 JDBC:transation.beginTransation Oracle:执行第一个SQL事务开始 执行sql 提交 JDBC:自动提交 提交以后:原来的数据状态永久性改变 DDL:不需要提交(自动提交

6、) 回滚 抛出异常时自动回滚 业务上手工回滚 回滚以后:修改的数据就永远丢失,锁,为什么要用锁 为了保护多个用户访问的共享资源 (如果资源没有共享,谈不上锁,多线程中的安全和同步) 现象:当不能查询或不能更新时,可能发生了死锁。 解决:在一个死循环中检查系统的锁,如果发生死锁对象,则直接kill!,事务隔离级别,分类 未提交读 财务将张三的工资由3K改为5K,未提交 张三查询:5K 读其它用户没有提交的数据,又称脏读。 提交读 财务将张三的工资由3K改为5K,未提交 张三查询:3K 财务提交 张三查询:5K 读其它用户提交的数据。,合理,Oracle支持,这也是默认支持的级别。,不合理,Oracle不支持,事务隔离级别,分类(续) 可重复读 财务将张三的工资由3K改为5K,未提交 张三查询:3K。 财务提交 张三查询:3K 两次读取的值相同,所以称为“可重复”。 串行读 财务将张三的工资由3K改为5K,未提交 张三查询

温馨提示

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

评论

0/150

提交评论