Wie in der Einführung zur PL/SQL-Ausnahmebehandlung besprochen, gibt es drei Möglichkeiten, benutzerdefinierte Ausnahmen zu deklarieren. Unter diesen drei Möglichkeiten haben wir bereits die ersten beiden Möglichkeiten kennengelernt, bei denen benutzerdefinierte Ausnahmen mit
deklariert werden- Erklärung erstellen und
- Raise_Application_Error-Prozedur
Der einzige Weg, der jetzt noch diskutiert werden muss, ist das Deklarieren von benutzerdefinierten Ausnahmen mit der PRAGMA EXCEPTION_INIT-Funktion in der Oracle-Datenbank.
Daher werden wir in diesem PL/SQL-Tutorial lernen, wie man eine benutzerdefinierte PL/SQL-Ausnahme in Oracle Database mit der PRAGMA EXCEPTION_INIT-Funktion deklariert.
Was ist PRAGMA EXCEPTION_INIT?
Pragma Exception_Init ist eine zweiteilige Anweisung, wobei der erste Teil aus dem Schlüsselwort PRAGMA besteht und der zweite Teil der Exception_Init-Aufruf ist.
PRAGMA-Schlüsselwort
Ein Pragma ist eine Compiler-Direktive, die angibt, dass die Statements gefolgt vom Schlüsselwort PRAGMA eine Compiler-Direktive ist, was bedeutet, dass die Anweisung zur Kompilierzeit und nicht zur Laufzeit verarbeitet wird.
PRAGMA Exception_Init
Exception_init hilft Ihnen dabei, einen Ausnahmenamen mit einer Oracle-Fehlernummer zu verknüpfen. Mit anderen Worten können wir sagen, dass Sie mit Exception_Init die Ausnahme benennen können.
Warum die Ausnahme benennen?
Ja, es gibt eine Möglichkeit, eine benutzerdefinierte Ausnahme ohne den Namen zu deklarieren, und zwar mithilfe der Raise_Exception_Error-Prozedur. Dies ist in der Tat ein einfacher und einfacher Weg, aber wie wir im letzten Tutorial gelernt haben, verwenden wir den Exception-Handler OTHERS, um Ausnahmen ohne Namen zu behandeln.
Stellen Sie sich nun vor, dass Sie in Ihrem Projekt mehrere Ausnahmen haben und das auch noch ohne Namen. Um all diese Ausnahmen zu behandeln, haben Sie einen einzigen Ausnahmehandler mit dem Namen OTHERS. In diesem Fall zeigt der Compiler beim Auftreten einer Ausnahmebedingung den vom OTHER-Handler erzeugten Fehlerstapel an.
Können Sie sich vorstellen, wie schwierig es sein wird, den Teil Ihres Projekts zu verfolgen, der den Fehler verursacht? Um diesen Teil zu verfolgen, müssen Sie jede Zeile Ihres Codes durchgehen. Das ist reine Zeitverschwendung.
Sie können all diese zeitraubenden Bemühungen sparen, indem Sie einfach die Ausnahme benennen. Auf diese Weise können Sie einen Ausnahmehandler speziell für den Namen Ihrer Ausnahme entwerfen, der leicht nachverfolgbar ist. Dies ist der Vorteil der Benennung der Ausnahme.
Syntax von Pragma Exception_Init.
PRAGMA EXCEPTION_INIT (exception_name, error_number);
Beispiel:Benutzerdefinierte Ausnahme mit Pragma Exception_Init deklarieren
DECLARE ex_age EXCEPTION; age NUMBER := 17; PRAGMA EXCEPTION_INIT(ex_age, -20008); BEGIN IF age<18 THEN RAISE_APPLICATION_ERROR(-20008, 'You should be 18 or above for the drinks!'); END IF; DBMS_OUTPUT.PUT_LINE('Sure! What would you like to have?'); EXCEPTION WHEN ex_age THEN DBMS_OUTPUT.PUT_LINE(SQLERRM); END; /
Ich habe dieses Beispiel in meinem Video-Tutorial auf meinem YouTube-Kanal ausführlich erklärt. Ich möchte Sie bitten, sich das Tutorial dort anzusehen.
Warum PRAGMA EXCEPTION_INIT mit RAISE_APPLICATION_ERROR verwenden?
Obwohl es nicht zwingend erforderlich ist, PRAGMA EXCEPTION_INIT mit der Prozedur RAISE_APPLICATION_ERROR zu verwenden, ist dies eher eine persönliche Präferenz als eine Programmierregel. Wenn Sie eine Fehlermeldung mit einer Fehlernummer wie die Standardmethode von Oracle zum Anzeigen eines Fehlers drucken möchten, ist es die beste Vorgehensweise, PRAGMA EXCEPTION_INIT mit der Prozedur RAISE_APPLICATION_ERROR zu verwenden.
Wenn Sie jedoch nur die Fehlermeldung und nicht die Fehlernummer drucken möchten, können Sie PRAGMAEXCEPTION_INIT mit der Anweisung RAISE verwenden.
Das ist das PL/SQL-Tutorial zum Deklarieren einer benutzerdefinierten Ausnahme in Oracle Database mit PRAGMA EXCEPTION_INIT. Ich hoffe, Sie haben etwas Neues gelernt. Wenn Sie dieses Tutorial informativ finden, teilen Sie es in Ihren sozialen Medien. Vielen Dank und einen schönen Tag!