Jag har stött på det här mönstret efter mycket forskning, huvudbank och tandgnissling:
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
funktionen verkar ge felkoden och meddelandet, och DBMS_UTILITY.FORMAT_ERROR_BACKTRACE
verkar ge en ärlig till godhet stack-spårning, komplett med radnummer och lagrade procedurnamn i Oracle 10g åtminstone.
Jag är inte säker på om dessa funktioner är tillgängliga i Oracle 9i. Jag kunde inte hitta mycket information om den här typen av saker ens för Oracle 10g, så jag tänkte att jag åtminstone skulle posta det här svaret eftersom 9i är ganska gammal (och så den 10g för den delen).