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...