日期:2014-05-17  浏览次数:20957 次

oracle中跨数据表空间调用存储过程事务控制
create or replace procedure admin.add()
as
begin
 user.add();
commit;
end;

请问这种情况下user.add()的事务是在user用户下控制的,还是说和admin.add()一起控制的? 求详解,小弟感激不尽;
Oracle 存储 事务

------解决方案--------------------
如果 user.add(); 里面有commit等事物,当然是user里面了。
如果没有,就是外面的admin下的commit
------解决方案--------------------
SQL> truncate table test;

表被截断。

SQL> create or replace procedure test1
  2  as
  3  begin
  4  insert into test select 1,'test1' from dual;
  5  commit;
  6  end;
  7  /

过程已创建。

SQL> create or replace procedure test2
  2  as
  3  begin
  4  insert into test select 2,'test2' from dual;
  5  test1;
  6  insert into test select 3,'test3' from dual;
  7  rollback;
  8  end;
  9  /

过程已创建。

SQL> select * from test;
未选定行

SQL> exec test2;

PL/SQL 过程已成功完成。

SQL> select * from test;

        ID NAME
---------- --------------------------------------------------
         2 test2
         1 test1