Иногда исключение возвращает что-то вроде:« ORA-06502: PL / SQL: числовая ошибка или ошибка значения: буфер символьной строки слишком мал ».
Он не очень удобен для чтения, поскольку не сообщает ни таблицу, ни столбец, ни значение, которое он пытался записать.
было бы полезно получить текущее имя процедуры в данный момент Исключение произошло или обнаружено.
Как я могу это получить?
Я использую комбинацию DBMS_UTILITY.FORMAT_ERROR_STACK и DBMS_UTILITY.FORMAT_ERROR_BACKTRACE . (Улучшение ответа Джастина Кейва)
when others then
Dbms_Output.put_line ( DBMS_UTILITY.FORMAT_ERROR_STACK() );
Dbms_Output.put_line ( DBMS_UTILITY.FORMAT_ERROR_BACKTRACE() );
Это дает ошибку в первой строке и стек в следующих строках: (вывод из примера, приведенного Джастином Кейвом)
ORA-20001: Error 1
ORA-06512: at "SCOTT.X1", line 4
ORA-06512: at "SCOTT.X2", line 5
ORA-06512: at line 2