1.建立2张测试表
create table test1(a number,b varchar2(50));
create table test2(a number,b varchar2(50));
2.
--外层存储过程,在里面做回滚
create or replace procedure self_test1
as
-- pragma autonomous_transaction;
i integer;
begin
for i in 1..100 loop
insert into test1 values(i,'monica'||i);
self_test2(i);
end loop;
rollback;
end;
/
--内层存储过程,做提交操作
create or replace procedure self_test2(i in integer)
as
pragma autonomous_transaction;--表示是自治事务
j integer;
begin
for j in 1..10 loop
insert into test2 values(j,'i is '||i);
commit;
end loop;
end;
/
执行外层存储过程test1,察看2张表内的数据,如下:
可以看出,自治事务的确实现了内层事务的隔离
pragma.jpg
pragma2.jpg
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7353848/viewspace-719457/
,如需转载,请注明出处,否则将追究法律责任。