`
yangzhiyong77
  • 浏览: 963256 次
文章分类
社区版块
存档分类
最新评论

Oracle PL/SQL之自定义函数的读一致性

 
阅读更多

读一致性即确保查询的结果与发起查询的时刻的数据一致,不管在此查询期间其他事务有没有更改数据。

首先假设我们有如下函数用来根据部门id求该部门的总薪资:

然后我们开个session(s1),执行如下查询(q1):

在q1执行的过程中,我们又开个新的session(s2),执行更新命令并提交:

接着回到s1,看q1的执行结果:

我们发现sum(sal)和sum2(deptno)的结果不一致。

当我们将自定义函数应用于sql语句中,而该sql又需要执行很长时间,并且在这段时间中恰好又有其他dml会更改该sql中的某些表时,这种不一致就会体现出来。

关于如何避免这种不一致,可以使用SET TRANSACTION READ ONLY,详细内容可参看我下面的这篇文章:

Oracle PL/SQL之SET TRANSACTION READ ONLY(事务隔离性)

http://blog.csdn.net/t0nsha/archive/2011/06/24/6566517.aspx

分享到:
评论

相关推荐

    Oracle PL/SQL语言初级教程

    一致性和事务 67 建立和修改用户 69 权限和角色 72 8.Oracle数据库游标使用大全 76 其他DML语句 77 DML语句的结果 78 使用游标 79 从游标提取数据 81 记录变量 82 带参数的游标 83 游标FOR循环 84 在游标FOR循环中...

    PL/SQL 基础.doc

    PL/SQL 基础,一个不错的 PL/SQL 参考手册。内容预览: ---- 第一章 PL/SQL 简介 ---- 1. Oracle应用编辑方法概览 1) Pro*C/C++/... : C语言和数据库打交道的方法,比OCI更常用; 2) ODBC 3) OCI: C语言和...

    Oracle数据库SQL基本应用与介绍

    Oracle不仅可以通过基本的sql进行简单的数据操作,还可使用对标准sql进行了扩展的PL/SQL语言,可使用如IF…THEN…、WHILE、LOOP等同结构化程序语言一样的构造制作程序,还有制作函数、过程、触发器等也用PL/SQL语言...

    21天学通Oracle

    第19章 数据一致性与事务管理(教学视频:46分钟) 341 第20章 并发控制(教学视频:35分钟) 356 第21章 Oracle中的正则表达式(教学视频:29分钟) 369 第五篇 Oracle与编程语言综合使用实例 第22章 Oracle在...

    Oracle入门很简单[张朝明].part1

    本书共2部分,这是第1部分。 本书从初学者的角度出发,由浅入深、循序渐进地介绍...第4篇则重点讲述了oracle性能优化、一致性与事务管理、并发控制等内容;第5篇讲述了oracle在主流程序开发语言(java、c#)中的应用。

    Oracle入门很简单[张朝明].part2

    Oracle入门很简单[张朝明].part2.共2部分,这是第2部分。 本书从初学者的角度出发...第4篇则重点讲述了oracle性能优化、一致性与事务管理、并发控制等内容;第5篇讲述了oracle在主流程序开发语言(java、c#)中的应用。

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    14.4 多版本读一致性 390 14.5 事务控制语句 391 14.5.1 Commit(提交) 391 14.5.2 Savepoint(保存点) 391 14.5.3 Rollback(回滚) 391 14.5.4 Set Transaction(设置事务) 391 14.5.5 Set Constraints(设置约束...

    21天学会oracle

    21天学会oracle(电子教案) 第1章 Oracle安装配置.ppt ...第19章 数据一致性与事务管理.ppt 第20章 并发控制.ppt 第21章 Oracle中的正则表达式.ppt 第22章 Oracle在Java开发中的.ppt 第23章 Oracle在C.ppt

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

     事务控制语言(Transactional Control Language,TCL),用于维护数据的一致性,包括COMMIT(提交事务)、ROLLBACK(回滚事务)和SAVEPOINT(设置保存点)3条语句 二、 Oracle的数据类型 类型 参数 描述 字符类型...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第2/2部分)

    10.1 描述和使用SQL中的字符、数字和日期函数 348 10.1.1 定义函数 348 10.1.2 函数类型 348 10.1.3 使用大小写转换函数 349 10.1.4 使用字符操作函数 350 10.1.5 使用数字函数 353 10.1.6 使用日期 355 ...

    ORACLE之常用FAQ V1.0(整理)

    [Q]怎样设置事务一致性 4 [Q]怎么样利用游标更新数据 4 [Q]怎样自定义异常 4 [Q]十进制与十六进制的转换 4 [Q]怎么样抽取重复记录 5 [Q]怎么样设置自治事务 5 [Q]怎么样在过程中暂停指定时间 5 [Q]怎么样快速计算...

    ORACLE9i_优化设计与系统调整

    第一部分 ORACLE系统优化基本知识 23 第1章 ORACLE结构回顾 23 §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1...

    Oraclet中的触发器

    在ORACLE系统里,触发器类似过程和函数,都有声明,执行和异常处理过程的PL/SQL块,不过有一点不同的是,触发器是隐式调用的,并不能接收参数。 触发器优点 (1)触发器能够实施的检查和操作比主键和外键约束、...

    oracle chm帮助文件下载

    [Q]怎么样查询特殊字符,如通配符%与_ [Q]如何插入单引号到数据库表中 [Q]怎样设置事务一致性 [Q]怎么样利用光标更新数据 [Q]怎样自定义异常 [Q]十进制与十六进制的转换 [Q]能不能介绍SYS_CONTEXT的详细用法 [Q...

    Oracle9i的init.ora参数中文说明

    ), interpreted (然后 PL/SQL 模块将被编译为 PL/SQL 字节代码格式), debug (PL/SQL 模块将用探测调试符号来编译), non_debug。 默认值: " interpreted, non_debug " plsql_native_linker: 说明: 此参数指定链接...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第1/2部分)

    10.1 描述和使用SQL中的字符、数字和日期函数 348 10.1.1 定义函数 348 10.1.2 函数类型 348 10.1.3 使用大小写转换函数 349 10.1.4 使用字符操作函数 350 10.1.5 使用数字函数 353 10.1.6 使用日期 355 ...

    asp.net知识库

    Oracle中PL/SQL单行函数和组函数详解 mssql+oracle Oracle编程的编码规范及命名规则 Oracle数据库字典介绍 0RACLE的字段类型 事务 CMT DEMO(容器管理事务演示) 事务隔离性的一些基础知识 在组件之间实现事务和异步...

Global site tag (gtag.js) - Google Analytics