Oracle
 sql >> база данни >  >> RDS >> Oracle

Обработка на изключения в процедура с вложени функции в pl/sql

RAISE_APPLICATION_ERROR процедура има трети параметър, който контролира дали изключението замества текущия стек на изключения (поведението по подразбиране) или добавя към него.

Така че, ако го подадете TRUE ще покаже и двете съобщения; в повикването от вашата процедура:

...
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR (-20101, 'Problem in loading Affected Circle data',
  TRUE);
END;

ви дава резултата:

BEGIN
*
ERROR at line 1:
ORA-20101: Problem in loading Affected Circle data
ORA-06512: at "SRUSER.ADD_AFFECTEDCIRCLE", line 13
ORA-20102: Circle Code is wrong or not available
ORA-06512: at line 2

За да покажете само съобщенията, а не другата информация за стека, ще трябва да манипулирате стека. Тази статия засяга как да използвате format_error_backtrace за да извлечете информацията, която ви интересува, но за съжаление връзката към BT пакетът е мъртъв. Някои от същата основа се разглежда тук . По същество трябва да анализирате низа за изключение на редове и да показвате само онези, които започват с ORA-20% , мисля.

Но внимавайте със загубата на информация, която всъщност може да е жизненоважна. По-конкретно бих ви предложил да прихванете само конкретните грешки, които търсите, а не ДРУГИ - оставете това, за да можете да се справите с неочаквани грешки и да не скриете нещо важно.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да извадя всички числови последователности от низ с регулярен израз на Oracle?

  2. Създайте файл на Excel (.xlsx) с помощта на PL/SQL

  3. Как да добавя водеща нула в число в Oracle SQL заявка?

  4. Филтриране на регистрационни файлове за предупреждения в EM13c

  5. последователност от дати на оракул?