Mi sono imbattuto in questo schema dopo molte ricerche, sbattere la testa e digrignare i denti:
CREATE OR REPLACE PACKAGE BODY my_schema.package_name
IS
PROCEDURE foo
IS
BEGIN
-- Call stored procedures/functions that throw unhandled exceptions
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERROR! - '
|| DBMS_UTILITY.FORMAT_ERROR_STACK
|| DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
END foo;
END;
Il DBMS_UTILITY.FORMAT_ERROR_STACK
la funzione sembra fornire il codice di errore e il messaggio e DBMS_UTILITY.FORMAT_ERROR_BACKTRACE
sembra fornire una traccia dello stack onesta e buona, completa di numeri di riga e nomi di procedure memorizzate almeno in Oracle 10g.
Non sono sicuro che queste funzioni siano disponibili in Oracle 9i. Non sono riuscito a trovare molte informazioni su questo genere di cose nemmeno per Oracle 10g, quindi ho pensato di pubblicare almeno questa risposta poiché 9i è piuttosto vecchio (e quindi è 10g per quella materia).