In der Einführung in PL/SQL-Ausnahmen haben wir gelernt, dass es drei Möglichkeiten gibt, benutzerdefinierte Ausnahmen in Oracle Database zu deklarieren. In diesem Tutorial werden wir den ersten Weg untersuchen und lernen, wie man eine benutzerdefinierte Ausnahme mit einer Variablen des Datentyps Exception deklariert.
Das Deklarieren einer benutzerdefinierten Ausnahme unter Verwendung der Exception-Variablen ist ein dreistufiger Prozess. Diese drei Schritte sind –
- Deklarieren Sie eine Variable vom Ausnahmedatentyp – Diese Variable wird die gesamte Last auf sich nehmen.
- Ausnahme auslösen – Dies ist der Teil, in dem Sie dem Compiler die Bedingung mitteilen, die die Ausnahme auslösen wird.
- Ausnahme behandeln – Dies ist der letzte Abschnitt, in dem Sie angeben, was passieren wird, wenn der von Ihnen ausgelöste Fehler ausgelöst wird.
In diesem PL/SQL-Tutorial erkläre ich Ihnen jeden dieser drei Schritte anhand eines PL/SQL-Codes.
Zu Demonstrationszwecken werde ich einen Code schreiben, der überprüft, ob der Divisor bei der Divisionsoperation Null ist oder nicht. Wenn es Null ist, tritt ein Fehler auf und wird dem Benutzer angezeigt, andernfalls wird ein tatsächlicher Wert, der das Ergebnis der Divisionsarithmetik ist, auf dem Ausgabebildschirm zurückgegeben.
Schritt 1:Deklarieren Sie eine Variable vom Datentyp Ausnahme
Mit Ausnahmevariable meine ich eine Variable mit Ausnahmedatentyp. Wie jede andere PL/SQL-Variable können Sie eine Exception-Variable im Deklarationsabschnitt des anonymen sowie des benannten PL/SQL-Blocks deklarieren. Diese Ausnahmevariable fungiert dann als benutzerdefinierte Ausnahme für Ihren Code.
DECLARE var_dividend NUMBER := 24; var_divisor NUMBER := 0; var_result NUMBER; ex_DivZero EXCEPTION;
In diesem Deklarationsabschnitt haben wir 4 Variablen. Unter diesen 4 Variablen sind die ersten 3 normale Zahlen-Datentyp-Variablen und die 4, die ex_DivZero ist, ist die spezielle EXCEPTION-Datentyp-Variable. Diese Variable wird unsere benutzerdefinierte Ausnahme für dieses Programm.
Schritt 2:Ausnahme auslösen
Der nächste Schritt nach dem Deklarieren einer Exception-Variablen besteht darin, die Exception auszulösen. Um die Ausnahme in PL/SQL auszulösen, verwenden wir die Raise-Anweisung.
Die Raise-Anweisung ist eine spezielle Art von PL/SQL-Anweisung, die den normalen Ausführungsfluss des Codes ändert. Sobald der Compiler auf eine Raise-Bedingung trifft, übergibt er die Kontrolle an den Exception-Handler.
BEGIN IF var_divisor = 0 THEN RAISE ex_DivZero; END IF;
Hier wird die Raise-Bedingung von der IF-THEN-Bedingung begleitet. Damit können wir ungewollte Umschaltungen während des Kontrollflusses des Programms vermeiden. Mit der If-Bedingung stellen wir sicher, dass dieser Fehler nur auftritt, wenn der Divisor gleich 0 ist.
var_result := var_dividend/var_divisor; DBMS_OUTPUT.PUT_LINE('Result = ' ||var_result);
Nachdem Sie die Logik zum Auslösen des Fehlers geschrieben haben, können Sie Ihre anderen ausführbaren Anweisungen des Codes so schreiben, wie wir es hier getan haben. Nach der Raise-Anweisung führen wir die Arithmetik der Divisionsoperation durch und speichern das Ergebnis in der Variablen var_result und zeigen es mit der DBMS OUTPUT-Anweisung als Ausgabe zurück.
Schritt 3:Behandeln Sie die Ausnahme
Das ist der Hauptabschnitt des Codes. Hier schreiben wir die Logik für unsere benutzerdefinierte Ausnahme und teilen dem Compiler mit, was er tun soll, wenn dieser Fehler auftritt.
EXCEPTION WHEN ex_DivZero THEN DBMS_OUTPUT.PUT_LINE('Error Error - Your Divisor is Zero'); END; /
Hier haben wir den Ausnahmehandler für die Variable ex_DivZero. Im Ausnahmebehandlungsabschnitt haben wir eine DBMS OUTPUT-Anweisung, die angezeigt wird, wenn unser benutzerdefinierter Fehler ex_DivZero auftritt.
Lassen Sie uns nun all diese Codeblöcke zusammenfassen.
Fehler bei der Division durch Null mithilfe der benutzerdefinierten PL/SQL-Ausnahme in der Oracle-Datenbank
SET SERVEROUTPUT ON; DECLARE var_dividend NUMBER := 24; var_divisor NUMBER := 0; var_result NUMBER; ex_DivZero EXCEPTION; BEGIN IF var_divisor = 0 THEN RAISE ex_DivZero; END IF; var_result := var_dividend/var_divisor; DBMS_OUTPUT.PUT_LINE('Result = ' ||var_result); EXCEPTION WHEN ex_DivZero THEN DBMS_OUTPUT.PUT_LINE('Error Error - Your Divisor is Zero'); END; /
Bevor Sie dieses Programm ausführen, vergewissern Sie sich, dass Sie SERVEROUTPUT aktiviert haben, da Sie sonst das Ergebnis nicht sehen können.
Wie in Schritt 1 setzen wir den Wert des Divisors auf Null, was wiederum den benutzerdefinierten Fehler ex_DivZero auslöst, da Sie beim Kompilieren des obigen Codes die Zeichenfolge „Error Error – Your Divisor is Zero“ sehen, die gleiche, die wir angegeben haben in unserem Ausnahmehandler (Schritt 3).
Das ist das PL/SQL-Tutorial zum Deklarieren einer benutzerdefinierten Ausnahme mithilfe einer Variablen des Datentyps „Exception“. Ich hoffe, es hat Ihnen gefallen und Sie haben etwas Neues gelernt. Wenn ja, teilen Sie diesen Blog bitte in Ihren sozialen Medien und helfen Sie anderen beim Lernen zusammen mit mir und meinem Kanal. Vielen Dank und einen schönen Tag!