2017-10-11 84 views
0

我有引發此異常處理PL/SQL錯誤:捕獲異常,不把它

error_stack -> ORA-00030: El identificador de sesión del usuario no existe. 
error_backtrace -> ORA-06512: en "OF_OWNER.GET_INVOICES", línea 46 
call_stack -> ----- PL/SQL Call Stack ----- 
    object  line object 
    handle number name 
00000010DB020548  59 procedure OF_OWNER.GET_INVOICES 
000000112A537E58   2 anonymous block 

一個過程,但我不希望程序提出任何例外在這種情況下,我已經試過

... 
WHEN 'ORA-00030' THEN 
WHEN OTHERS 
... 

但我得到一個編譯錯誤

+1

試試這個\t'例外 WHEN OTHERS THEN IF SQLCODE = -00030THEN \t \t \t \t \t \t \t DBMS_OUTPUT.PUT_LINE( '有一個錯誤');' – Moudiz

+0

出去!好奇 - 爲什麼你想忽略那個錯誤?這沒有任何意義 - 如果你的程序不會引發錯誤,那麼其他的事情肯定會中斷,因爲會話不再存在。 –

回答

2

或者:

BEGIN 
    do something 
EXCEPTION WHEN OTHERS THEN 
    IF SQLCODE = -30 THEN 
    NULL; -- ignore this particular exception 
    ELSE 
    RAISE; -- but throw the others 
    END IF; 
END; 

或者:

DECLARE 
    ORA00030 EXCEPTION; -- or any other name you like instead of ORA00030 
    pragma EXCEPTION_INIT(ORA00030, -30); -- link your exception name to the code 
BEGIN 
    do something 
EXCEPTION WHEN ORA00030 THEN 
    NULL; -- ignore this particular exception 
END;