Ich bin nach viel Recherche, Headbanging und Zähneknirschen auf dieses Muster gestoßen:
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;
Der DBMS_UTILITY.FORMAT_ERROR_STACK
Die Funktion scheint den Fehlercode und die Meldung sowie DBMS_UTILITY.FORMAT_ERROR_BACKTRACE
anzugeben scheint einen ehrlichen Stack-Trace zu geben, komplett mit Zeilennummern und Namen gespeicherter Prozeduren zumindest in Oracle 10g.
Ich bin mir nicht sicher, ob diese Funktionen in Oracle 9i verfügbar sind. Ich konnte selbst für Oracle 10g nicht viele Informationen zu solchen Dingen finden, also dachte ich, ich würde zumindest diese Antwort posten, da 9i ziemlich alt ist (und daher 10g für diese Angelegenheit).