sql >> Database >  >> RDS >> Oracle

Afhandeling van uitzonderingen in Procedure met geneste functies in pl/sql

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.




  1. explode() functie met behulp van GROUP SEPARATOR

  2. Hoe kom je achter de totale omvang van de gegevens in de MySQL-database?

  3. pgadmin4:er kan geen verbinding worden gemaakt met de postgresql-toepassingsserver.

  4. Verbinding maken met de PostgreSQL-database via SSH-tunneling in Python