--当一个子程序调用另外一个子程序时,事务提交或回滚都将影响两个子程序
--为防止一个子程序的事务影响其他子程序,可以将这个子程序标记为自主事务处理
--这样自主事务成为一个独立的事务处理,不影响其他子程序的事务
--pragma autonomous_transaction 用于标记子程序为自主事务处理
--自主事务过程
create or replace procedure proc_tran1
as
v_sal emp.sal%type;
pragma autonomous_transaction;--指定为自主事务
begin
select sal into v_sal from emp where empno=7788;
dbms_output.put_line('proc_tran1中显示7788的薪水:'||v_sal);
rollback; --回滚事务
end;
--主事务过程
create or replace procedure proc_tran2
as
v_sal emp.sal%type;
begin
update emp set sal=6666 where empno=7788;-- 修改7788薪水
proc_tran1();--调用自主事务过程
commit;
select sal into v_sal from emp where empno=7788;
dbms_output.put_line('proc_tran2中显示7788的薪水:'||v_sal);
end;
Oracle自主事务处理
最新推荐文章于 2024-01-02 07:29:06 发布