Попаднах на този модел след много изследвания, блъскане по главата и скърцане със зъби:
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;
DBMS_UTILITY.FORMAT_ERROR_STACK
изглежда, че функцията дава кода и съобщението за грешка и DBMS_UTILITY.FORMAT_ERROR_BACKTRACE
изглежда дава честно проследяване на стека, пълно с номера на редове и имена на съхранени процедури поне в Oracle 10g.
Не съм сигурен дали тези функции са налични в Oracle 9i. Не можах да намеря много информация за подобни неща дори за Oracle 10g, така че реших да публикувам поне този отговор, тъй като 9i е доста стар (и затова е 10g).