Ik ben dit patroon tegengekomen na veel onderzoek, hoofd bonzen en tandengeknars:
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;
De DBMS_UTILITY.FORMAT_ERROR_STACK
functie lijkt de foutcode en het bericht te geven, en DBMS_UTILITY.FORMAT_ERROR_BACKTRACE
lijkt een eerlijk tot goed stapelspoor te geven, compleet met regelnummers en opgeslagen procedurenamen in tenminste Oracle 10g.
Ik weet niet zeker of die functies beschikbaar zijn in Oracle 9i. Ik kon niet veel informatie over dit soort dingen vinden, zelfs niet voor Oracle 10g, dus ik dacht dat ik dit antwoord op zijn minst zou posten omdat 9i vrij oud is (en dus 10g wat dat betreft).