De RAISE_APPLICATION_ERROR
procedure
heeft een derde parameter die bepaalt of de uitzondering de huidige uitzonderingsstapel vervangt (het standaardgedrag) of eraan toevoegt.
Dus als je het doorgeeft TRUE
het zal beide berichten tonen; in de oproep van uw procedure:
...
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR (-20101, 'Problem in loading Affected Circle data',
TRUE);
END;
geeft je de output:
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
Om alleen de berichten weer te geven en niet de andere stapelinformatie, moet u de stapel manipuleren. Dit artikel
gaat over het gebruik van format_error_backtrace
om de informatie te extraheren waarin u geïnteresseerd bent, maar helaas de link naar de BT
pakket zijn dood. Sommige van dezelfde grond wordt hier behandeld
. In wezen moet u de uitzonderingsreeks in regels ontleden en alleen die regels weergeven die beginnen met ORA-20%
, denk ik.
Maar wees voorzichtig met het verliezen van informatie die van vitaal belang kan zijn. Ik raad je in het bijzonder aan om alleen de specifieke fouten op te sporen waarnaar je op zoek bent, niet OTHERS
- laat dat met rust, zodat u onverwachte fouten kunt oplossen en iets belangrijks niet verbergt.