处理PL/SQL错误:捕获异常,不把它

处理PL/SQL错误:捕获异常,不把它

问题描述:

我有引发此异常处理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

出去!好奇 - 为什么你想忽略那个错误?这没有任何意义 - 如果你的程序不会引发错误,那么其他的事情肯定会中断,因为会话不再存在。 –

或者:

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;