2014-12-31 66 views
0

許多發言中,我如何才能在同一個事務的許多聲明:在同一事務PLSQL

update .....;--s1 
update .....;--s2 
update .....;--s3 
COMMIT; 

如果發生在S2回滾S1的錯誤,如果發生在S3回滾S2和S1的錯誤;

+1

如果你正在使用'sqlplus'使用,必須使用'和'EXCEPTION'處理 – Exhausted

+0

匿名block''每當SQLERROR rollback'在腳本 –

+0

@a_horse_with_no_name不,我用蟾蜍爲Oracle –

回答

2

你可以做的異常處理是這樣的:

BEGIN 
    update .....;--s1 
    update .....;--s2 
    update .....;--s3 
    COMMIT; 
EXCEPTION 
    WHEN OTHERS THEN 
    ROLLBACK; 
END; 
+1

無效語法的開始。請參閱@sylvainleroux的答案。 – user272735

+0

@ user272735我修復了語法,我無法刪除答案,因爲它被接受。 – Donal

3

據我所知,在PL/SQL的語法正確異常的情況下回滾是:

begin 
    -- stmt1 
    -- stmt2 
    -- stmt3 
    commit; 
exception 
    when others then -- <-- 
    rollback; 
end; 

BTW沒有這樣在PL/SQL中作爲AUTOCOMMIT。這是一個SQL * Plus命令。

+1

儘管投票和OP已標記爲正確,但這仍是正確的答案。 – user272735