Saya menemukan pola ini setelah banyak penelitian, membenturkan kepala dan menggertakkan gigi:
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
fungsi tampaknya memberikan kode dan pesan kesalahan, dan DBMS_UTILITY.FORMAT_ERROR_BACKTRACE
tampaknya memberikan jejak tumpukan yang jujur, lengkap dengan nomor baris dan nama prosedur tersimpan di Oracle 10g setidaknya.
Saya tidak yakin apakah fungsi-fungsi itu tersedia di Oracle 9i. Saya tidak dapat menemukan banyak informasi tentang hal semacam ini bahkan untuk Oracle 10g, jadi saya pikir saya setidaknya akan memposting jawaban ini karena 9i sudah cukup tua (dan jadi 10g dalam hal ini).