现在对事物的理解有些不够透彻
比如
存储过程A
和纯初过程B
A 和 B都没有提交的功能
A在执行的时候 调用B过程了那么 A过程 和 B过程 现在算是一个事物么如果A和B都有提交语句
那么他们之间的调用 是事物之间的调用么
比如
存储过程A
和纯初过程B
A 和 B都没有提交的功能
A在执行的时候 调用B过程了那么 A过程 和 B过程 现在算是一个事物么如果A和B都有提交语句
那么他们之间的调用 是事物之间的调用么
如
create or replace PTest(p number)
is
Pragma Autonomous_Transaction;
begin
...
commit;//这样只会提交本过程的事务
end;
1,
A 和 B都没有提交的功能
A在执行的时候 调用B过程了
A,B当然是一个事务。
2,
如果A和B都有提交语句
A在执行的时候 调用B过程了
A,B是两个事务。
2,
如果A和B都有提交语句
A在执行的时候 调用B过程了
A,B是两个事务。
那么 对于对二种情况oracle 是怎么分辨的呢
如果A和B都有提交语句 那么A在提交前调用了B 然后 A在提交 ORACLE 是怎么判断这样的情况的?
谢谢
SQL> set serveroutput on
SQL> create table test_table_2 (
2 id number(10.0), name varchar2(20));表已创建。SQL> select * from test_table_2;未选定行SQL> insert into test_table_2 values (1,'a');已创建 1 行。SQL> select * from test_table_2; ID NAME
---------- --------------------
1 aSQL> create or replace procedure ttest_1
2 is
3 begin
4 dbms_output.put_line('进入ttest_1');
5 insert into test_table_2 values (2,'b');
6 dbms_output.put_line('插入数据ttest_1');
7 commit;
8 dbms_output.put_line('commit 在 ttest_1');
9 end;
10 /过程已创建。SQL> exec ttest_1
进入ttest_1
插入数据ttest_1
commit 在 ttest_1PL/SQL 过程已成功完成。SQL> select * from test_table_2; ID NAME
---------- --------------------
1 a
2 bSQL> truncate table test_table_2;表被截断。SQL> select * from test_table_2;未选定行
SQL> create or replace procedure ttest_2
2 is
3 begin
4 dbms_output.put_line('进入ttest_2');
5 insert into test_table_2 values(5,'m');
6 dbms_output.put_line('插入数据ttest_2');
7 ttest_1;
8 dbms_output.put_line('调用过程ttest_1');
9 commit;
10 dbms_output.put_line('commit 在 ttest_2');
11 end;
12 /过程已创建。SQL> exec ttest_2
进入ttest_2
插入数据ttest_2
进入ttest_1
插入数据ttest_1
commit 在 ttest_1
调用过程ttest_1
commit 在 ttest_2PL/SQL 过程已成功完成。SQL> select * from test_table_2; ID NAME
---------- --------------------
5 m
2 bSQL>
楼主自己写个测试一下不就行了,看这个对你有帮助吗?