Oracle中的PRAGMA AUTONOMOUS_TRANSACTION详解 1. 解释什么是Oracle中的PRAGMA AUTONOMOUS_TRANSACTION Oracle中的PRAGMA AUTONOMOUS_TRANSACTION是一个编译器指令,用于将一个PL/SQL块或例程(如过程、函数)标记为自治事务。自治事务是一个独立于其调用者(父事务)的事务,它可以独立地提交或回滚自己的更改,而不会影响到父事...
---示例三 create or replace function f_get_operation(starttime date, endtime date) return t_operation_table --返回表 pipelined as --管道函数 pragma autonomous_transaction; --自治事务 v_recode t_operation; --行类型 begin --事务性临时表插入数据 insert into operation_table select distinct o.p...
希望在select语句中使用自己定义的函数,并且这个函数除了返回特定的值之外,还执行update,insert,delete等操作。 对数据库有写操作(update,insert,delete,crate,alert,commit)的函数是无法简单的用SQL来调用的。 用 自治事务pragma autonomous_transaction 注意需要在增删改操作后加入commit...
2. 如果AT试图访问被MT控制的资源,可能有deadlock发生. 3. Package 不能被声明为AT,只有package所拥有的function和procedure 才能声明为AT 4. AT程序必须以commit 或rollback结尾,否则会产生Oracle错误ORA-06519: active autonomous transaction detected and rolled back 在程序开发时,如果充分运用AUTONOMOUS TRANSACTION...
语法 在语句声明部分 declare ,加⼊下列语句即可 pragma autonomous_transaction ; 1.1事务图⽰ 2⽰例:错误⽇志 基础数据准备: --创建学⽣信息表 create table scott .stu_info ( id number (10) constraint pk_sut_info_id primary key, name varchar2 (30), sex varchar2 (2) ); --创建⽇...
pragma AUTONOMOUS_TRANSACTION; begin ... 重新运行(注意打开serveroutput) local: # of rows is 0 -> 子程序local中无法可以’看到’主匿名块中的uncommitted记录 (因为它是独立的) main: # of rows is 2 -> 主匿名块可以’看到’2条记录,但只有一条是被commited. ...
编译描述符PRAGMA AUTONOMOUS_TRANSACTION使得自治块在自己的事务里运行,所以内部的提交语句不会影响调用方的事务。 Autonomous transactions are commonly used by error logging routines, where the error messages must be preserved, regardless of the the commit/rollback status of the transaction. For example, ...
1、采用自治事务pragma autonomous_transaction解决。 下面给出一个使用自治事务解决ORA-04091错误的示例: CREATE OR REPLACE TRIGGER SCOTT.TRG_UPDATE_EMP AFTER UPDATE ON SCOTT.EMP FOR EACH ROW DECLARE V_NUM NUMBER; BEGIN SELECT COUNT(1) INTO V_NUM FROM SCOTT.EMP T WHERE DEPTNO = :NEW.DEPTNO; ...
被我们当前事务插入的2行数据被回滚了,而被自治事务插入的数据继续存在。编译描述符 PRAGMA AUTONOMOUS_TRANSACTION 使得自治块在自己的事务里运行,所以内部的提交语句不会影响调用方的事务。 Autonomous transactions are commonly used by error logging routines, where the error messages must be preserved, regardless...
自主事务处理(pragma autonomous_transaction包括在过程的声明部分) 不依赖于主事务的 处理状态或最终配置 自主事务处理提交或回退时,不影响主事务处理的结果 自主事务处理一旦提交,该自主事务处理结果的变化对于其他事务处理时可见的。 自主事务处理可以启动其他自主事务处理。