Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Ausnahmebehandlung in Prozeduren mit verschachtelten Funktionen in pl/sql

Der RAISE_APPLICATION_ERROR Verfahren hat einen dritten Parameter, der steuert, ob die Ausnahme den aktuellen Ausnahmestapel (das Standardverhalten) ersetzt oder zu ihm hinzufügt.

Wenn Sie es also TRUE übergeben es werden beide Meldungen angezeigt; im Aufruf aus Ihrer Prozedur:

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

gibt Ihnen die Ausgabe:

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

Um nur die Nachrichten und nicht die anderen Stack-Informationen anzuzeigen, müssten Sie den Stack manipulieren. Dieser Artikel berührt die Verwendung von format_error_backtrace um die Informationen zu extrahieren, die Sie interessieren, aber leider der Link zum BT Paket sind tot. Einige aus demselben Grund wird hier behandelt . Im Wesentlichen müssen Sie die Ausnahmezeichenfolge in Zeilen zerlegen und nur diejenigen anzeigen, die mit ORA-20% beginnen , denke ich.

Aber seien Sie vorsichtig, dass Sie keine Informationen verlieren, die tatsächlich lebenswichtig sein könnten. Insbesondere würde ich vorschlagen, dass Sie nur die spezifischen Fehler abfangen, nach denen Sie suchen, nicht OTHERS - Lassen Sie das in Ruhe, damit Sie mit unerwarteten Fehlern umgehen können und nichts Wichtiges verbergen.