Oracle自主事务处理

--当一个子程序调用另外一个子程序时,事务提交或回滚都将影响两个子程序
--为防止一个子程序的事务影响其他子程序,可以将这个子程序标记为自主事务处理
--这样自主事务成为一个独立的事务处理,不影响其他子程序的事务
--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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值