Oracle中獨立事務的學習

2021-08-31 23:20:21 字數 1116 閱讀 9444

1:

建立儲存過程emp_p2,查詢id為0的雇員的資訊,並回滾事務

create or replace procedure emp_p2 as

a   varchar2(50);

begin

select e.name into a from employees e where e.id='0';

dbms_output.put_line('p2:' || a);

rollback;

end emp_p2;

建立儲存過程emp_p1,更新id為0的雇員資訊

create or replace procedure emp_p1 as

b varchar2(50);

begin

update employees e set e.name='白貓警長' where e.id='0';

emp_p2();

select e.name into b from employees e where e.id='0';

dbms_output.put_line('p1: ' || b);

end emp_p1;

執行儲存過程emp_p1,

begin

emp_p1();

end;

執行結果:

p2: 白貓警長

p1: 黑貓警長

說明在emp_p2儲存過程中的rollback影響了emp_p1儲存過程

2:為了使emp_p2中的儲存過程不影響到emp_p1儲存過程,我們可以把emp_p2設定為自主的儲存過程

create or replace procedure emp_p2 as

a  varchar2(50);

pragma  autonomous_transaction;

begin

select e.name into a from employees e where e.id='0';

dbms_output.put_line('p2:' || a);

rollback;

end emp_p2;

再呼叫儲存過程emp_p1,輸出結果為:

p2: 黑貓警長

p1: 白貓警長

Oracle中事務的認識

事務 事務 transaction 是對資料庫的若干操作組成的乙個執行單元。這些操作要麼全部執行,要麼都取消,從而保證了資料庫滿足一致性的要求 通常,事務是有一組sql語句組成,包括查詢語句和 dml 資料操縱語句 data manipulationlanguage 語句。當然,事務也可以是乙個sq...

oracle中的事務隔離級別

印象中oracle是支援4種標準的隔離級別的,但是今天在測試中,發現oracle只支援讀提交和序列化2個隔離級別,汗!sql alter session set isolation level read uncommitted alter session set isolation level re...

Oracle中的事務隔離級別

在oracle中,讀取操作不會阻礙更新操作,更新操作也不會阻礙讀取操作,這樣在oracle中的各種隔離級別下,讀取操作都不會等待更新事務結束,更新操作也不會因為另乙個事務中的讀取操作而發生等待,這也是oracle事務處理的乙個優勢所在。oracle支援read committed和serializa...