Sometimes the exception returns something like: "ORA-06502: PL/SQL: numeric or value error: character string buffer too small".
It's not so readable since it doesn't report neither the table, the column and the value it tried to write.
it would be useful to get the current procedure name at the moment the Exception happened or is catched.
How can I obtain that?
You can use the USER_PROCEDURES view as it contains the package name in the OBJECT_NAME column and procedure within it in the PROCEDURE_NAME column for records having OBJECT_TYPE = 'PACKAGE' .
Go to VIEW menu, click on find DB objects option. In the find db object pane put the name of the package and select the DB. Both, the spec and body will appear, double click to open.
Oracle Database PL/SQL Packages and Types Reference for information about the many product-specific packages that Oracle Database supplies.
You probably want DBMS_UTILITY.FORMAT_ERROR_BACKTRACE
function
SQL> ed Wrote file afiedt.buf 1 create or replace procedure p1 2 is 3 begin 4 raise_application_error( -20001, 'Error 1', true ); 5* end; SQL> / Procedure created. SQL> create or replace procedure p2 2 as 3 begin 4 null; 5 p1; 6 end; 7 / Procedure created. SQL> begin 2 p2; 3 exception 4 when others then 5 dbms_output.put_line( dbms_utility.format_error_backtrace ); 6 end; 7 / ORA-06512: at "SCOTT.P1", line 4 ORA-06512: at "SCOTT.P2", line 5 ORA-06512: at line 2 PL/SQL procedure successfully completed.
Or try DBMS_UTILITY.FORMAT_CALL_STACK
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With