关闭

Oracle自主事务处理

标签: oracle
1266人阅读 评论(0) 收藏 举报
分类:
--当一个子程序调用另外一个子程序时,事务提交或回滚都将影响两个子程序
--为防止一个子程序的事务影响其他子程序,可以将这个子程序标记为自主事务处理
--这样自主事务成为一个独立的事务处理,不影响其他子程序的事务
--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;
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:12806次
    • 积分:381
    • 等级:
    • 排名:千里之外
    • 原创:30篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章存档
    最新评论