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