Erfahren Sie, wie Sie mit Ausnahmen in PL / SQL umgehen



Dieser Artikel ist eine umfassende Anleitung zur Durchführung der Ausnahmebehandlung in PL / SQL, in der die verschiedenen Arten von Ausnahmen in PL / SQL erläutert werden.

Wenn Sie ein Programmierer sind, sind Sie möglicherweise mit dem Konzept der Ausnahmebehandlung vertraut, das ein wesentlicher Bestandteil von jedem ist . Da Fehler unvermeidlich sind und selbst die klügsten von uns beim Schreiben von Code Fehler machen können, müssen wir mit dem Umgang damit vertraut sein. In diesem Artikel lernen wir insbesondere die Ausnahmebehandlung in PL / SQL kennen.

Behandlung von SQL-Ausnahmen in PL / SQL-EdurekaNachfolgend sind die in diesem Artikel behandelten Themen aufgeführt:





Was ist eine Ausnahme?

Jeder ungewöhnliche Zustand oder jedes abnormale Ereignis, das den normalen Ablauf unserer Programmanweisungen zur Laufzeit oder in einfachen Worten eine Ausnahme unterbricht, ist ein Fehler.

Syntax der Ausnahmebehandlung in PL / SQL

DECLARE BEGIN EXCEPTION WENN Ausnahme1 DANN Ausnahme1-Handling-Anweisungen WENN Ausnahme2 DANN Ausnahme2-Handling-Anweisungen WENN Ausnahme3 DANN Ausnahme3-Handling-Anweisungen ........ WENN andere DANN Ausnahme3-Handling-Anweisungen ENDE

Hier können wir so viele Ausnahmen auflisten, wie wir behandeln möchten. Die Standardausnahme wird mit 'WENN andere DANN' behandelt.



Beispiel für die Ausnahmebehandlung in PL / SQL

Das folgende Programm zeigt den Namen und die Adresse eines Schülers an, dessen Ausweis angegeben ist. Da sich in unserer Datenbank kein Student mit dem ID-Wert 8 befindet, löst das Programm die Laufzeitausnahme NO_DATA_FOUND aus, die im EXCEPTION-Block erfasst wird.

DECLARE s_id studentS.id% type: = 8 s_name studentS.Name% type s_loc studentS.loc% type BEGIN SELECT name, loation INTO s_name, s_loc FROM student WHERE id = s_id DBMS_OUTPUT.PUT_LINE ('Name:' || s_name) DBMS_OUTPUT .PUT_LINE ('Location:' || s_loc) AUSNAHME, WENN no_data_found THEN dbms_output.put_line ('Kein solcher Student!') WENN andere THEN dbms_output.put_line ('Ups, Fehler!') END

Ausgabe

Kein solcher Student! PL / SQL-Prozedur erfolgreich abgeschlossen.

Hier können wir so viele Ausnahmen auflisten, wie wir behandeln möchten. Die Standardausnahme wird mit ' WENN andere DANN '

Was ist die Funktion in SQL

Arten von Ausnahmen in PL / SQL

  • System definiert
  • Benutzer trotzt

Weiter in diesem Artikel zur Ausnahmebehandlung in PL / SQL Lassen Sie uns diese beiden Typen im Detail diskutieren.



System definiert

Diese Ausnahmen werden vom Oracle-Server implizit definiert und verwaltet und hauptsächlich im Oracle-Standardpaket definiert. Immer wenn eine Ausnahme innerhalb des Programms auftritt, stimmt der Oracle-Server mit der entsprechenden Ausnahme aus den verfügbaren Ausnahmen im Oracle-Standardpaket überein und identifiziert diese. Grundsätzlich sind diese Ausnahmen in vordefiniert PL / SQL was angehoben wird WENN eine bestimmte Datenbankregel verletzt wird .

Das Systemdefinierte Ausnahmen sind weiter in zwei Kategorien unterteilt:

  • Benannte Systemausnahmen
  • Unbenannte Systemausnahmen

Benannte Systemausnahmen

Die genannten PL / SQL-Ausnahmen sind im Standardpaket von PL / SQL benannt Daher muss der Entwickler die PL / SQL-Ausnahmen nicht in seinem Code definieren. PL / SQL bietet viele vordefinierte benannte Ausnahmen, die ausgeführt werden, wenn eine Datenbankregel von einem Programm verletzt wird. In der folgenden Tabelle sind einige der wichtigen vordefinierten Ausnahmen & Minus aufgeführt

Ausnahme Oracle-Fehler SQLCODE Beschreibung
ACCESS_INTO_NULL06530-6530Es wird ausgelöst, wenn einem Nullobjekt automatisch ein Wert zugewiesen wird.
CASE_NOT_FOUND06592-6592Es wird ausgelöst, wenn keine der Auswahlmöglichkeiten in der WHEN-Klausel von a CASE-Anweisung ausgewählt ist und es keine ELSE-Klausel gibt.
COLLECTION_IS_NULL06531-6531Es wird ausgelöst, wenn ein Programm versucht, andere Erfassungsmethoden als EXISTS auf eine nicht initialisierte verschachtelte Tabelle oder ein nicht initialisiertes Varray anzuwenden, oder wenn das Programm versucht, den Elementen einer nicht initialisierten verschachtelten Tabelle oder Varray Werte zuzuweisen.
DUP_VAL_ON_INDEX00001-einEs wird ausgelöst, wenn versucht wird, doppelte Werte in einer Spalte mit einem eindeutigen Index zu speichern.
INVALID_CURSOR01001-1001Es wird ausgelöst, wenn versucht wird, eine Cursoroperation auszuführen, die nicht zulässig ist, z. B. das Schließen eines ungeöffneten Cursors.
UNGÜLTIGE NUMMER01722-1722Es wird ausgelöst, wenn die Konvertierung einer Zeichenfolge in eine Zahl fehlschlägt, da die Zeichenfolge keine gültige Zahl darstellt.
LOGIN_DENIED01017-1017Es wird ausgelöst, wenn ein Programm versucht, sich mit einem ungültigen Benutzernamen oder Kennwort bei der Datenbank anzumelden.
KEINE DATEN GEFUNDEN01403+100Es wird ausgelöst, wenn eine SELECT INTO-Anweisung keine Zeilen zurückgibt.
NOT_LOGGED_ON01012-1012Es wird ausgelöst, wenn ein Datenbankaufruf ausgegeben wird, ohne mit der Datenbank verbunden zu sein.
PROGRAM_ERROR06501-6501Es wird ausgelöst, wenn PL / SQL ein internes Problem hat.
ROWTYPE_MISMATCH06504-6504Es wird ausgelöst, wenn ein Cursor einen Wert in einer Variablen mit inkompatiblem Datentyp abruft.
SELF_IS_NULL30625-30625Es wird ausgelöst, wenn eine Mitgliedsmethode aufgerufen wird, die Instanz des Objekttyps jedoch nicht initialisiert wurde.
STORAGE_ERROR06500-6500Es wird ausgelöst, wenn PL / SQL nicht genügend Speicher hat oder der Speicher beschädigt wurde.
TOO_MANY_ROWS01422-1422Es wird ausgelöst, wenn eine SELECT INTO-Anweisung mehr als eine Zeile zurückgibt.
VALUE_ERROR06502-6502Es wird ausgelöst, wenn ein Arithmetik-, Konvertierungs-, Kürzungs- oder Größenbeschränkungsfehler auftritt.
ZERO_DIVIDE014761476Es wird ausgelöst, wenn versucht wird, eine Zahl durch Null zu teilen.

Beispiel

VERFAHREN ERSTELLEN ODER ERSETZEN add_new_student (student _id_in IN NUMBER, student _name_in IN VARCHAR2) BEGINNEN EINFÜGEN IN student (student _id, student _name) VALUES (student _id_in, student _name_in) AUSNAHME BEI ​​DUP_VAL_ON_INDEX ) WENN ANDERE DANN erhöhen_application_error (-20002, 'Ein Fehler ist aufgetreten.') ENDE

Lassen Sie uns in diesem Artikel zur Ausnahmebehandlung in PL / SQL verstehen, was unbenannte Systemausnahmen sind.

Unbenannte Systemausnahmen

Die Systemausnahmen, für die Oracle keinen Namen hat, werden als unbenannte Systemausnahmen bezeichnet. Diese Ausnahmen treten nicht häufig auf und werden mit einem Code und einer zugehörigen Nachricht geschrieben.

Grundsätzlich gibt es zwei Möglichkeiten, um unbenannte Systemausnahmen zu behandeln:

1. Verwenden des Ausnahmebehandlers WHEN OTHERS

2. Verknüpfen Sie den Ausnahmecode mit einem Namen und verwenden Sie ihn als benannte Ausnahme.

Einige Schritte für unbenannte Systemausnahmen sind:

  • Erhöhen Sie sie implizit.
  • Falls sie dann nicht in 'WENN Andere' behandelt werden, müssen sie explizit behandelt werden.
  • Um die Ausnahme explizit zu behandeln, können sie mit Pragma EXCEPTION_INIT deklariert und durch Verweisen auf den benutzerdefinierten Ausnahmennamen im Ausnahmeabschnitt behandelt werden.

Ein Beispiel für die Behandlung unbenannter Ausnahmen mit Pragma EXCEPTION_INIT finden Sie weiter unten in diesem Artikel. Lassen Sie uns in diesem Artikel zur Ausnahmebehandlung in PL / SQL die benutzerdefinierten Ausnahmen verstehen.

Benutzerdefinierte

Wie in allen anderen Programmiersprachen können Sie in Oracle auch die Implementierung Ihrer eigenen Ausnahmen deklarieren. Im Gegensatz zu vom System definierten Ausnahmen werden diese Ausnahmen explizit im PL / SQL-Block ausgelöst.

Schritte zum Deklarieren benutzerdefinierter Ausnahmen in der Oracle-Datenbank

Wir können benutzerdefinierte Ausnahmen in der Oracle-Datenbank auf drei Arten definieren:

  • Verwenden einer Variablen vom Typ EXCEPTION

Hier können wir eine benutzerdefinierte Ausnahme deklarieren, indem wir eine Variable von EXCEPTION deklarieren Datentyp in unserem Code und erhöhen Sie ihn explizit in unserem Programm mit der RAISE-Anweisung.

  • Verwenden der Funktion PRAGMA EXCEPTION_INIT

Wir können eine nicht vordefinierte Fehlernummer mit der Variablen des Datentyps EXCEPTION definieren

  • Verwenden der RAISE_APPLICATION_ERROR-Methode

Mit dieser Methode können wir eine benutzerdefinierte Ausnahme mit unserer eigenen benutzerdefinierten Fehlernummer und Meldung deklarieren.

Bis jetzt haben Sie vielleicht eine ungefähre Vorstellung davon, wie wir benutzerdefinierte Ausnahmen in PL / SQL auslösen können. In diesem Artikel erfahren Sie mehr über die oben genannten Methoden anhand von Beispielen zur Ausnahmebehandlung in PL / SQL.

Lassen Sie uns als Nächstes in diesem Artikel mit den Demonstrationen der benutzerdefinierten Ausnahmebehandlung fortfahren.

Demonstration benutzerdefinierter Ausnahmen

Lassen Sie uns in diesem Artikel über die Ausnahmebehandlung in PL / SQL verstehen, wie die Variable vom Typ EXCEPTION verwendet wird.

Verwenden einer Variablen vom Typ EXCEPTION

Das Deklarieren einer benutzerdefinierten Ausnahme ist in drei Teile unterteilt. Diese drei Teile sind:

  • Deklarieren Sie einen Datentyp mit variabler Ausnahme
  • Erhöhen Sie die Ausnahme
  • Behandeln Sie die Ausnahme

Schreiben wir einen Code, um die obigen Schritte im Detail zu demonstrieren.

DECLARE var_dividend NUMBER: = 10 var_divisor NUMBER: = 0 var_result NUMBER ex-DivZero EXCEPTION

Im obigen Deklarationsblock haben wir vier Variablen, von denen die ersten drei Datentypvariablen mit normaler Anzahl sind und die vierte, ex_DivZero, die Datendypvariable mit Ausnahme ist. Die vierte ist unsere benutzerdefinierte Ausnahme.

DECLARE var_dividend NUMBER: = 10 var_divisor NUMBER: = 0 var_result NUMBER ex-DivZero EXCEPTION

Der obige Ausführungsteil dieses anonymen Blocks wird nur wirksam, wenn der Divisor 0 ist. Wenn der Divisor wie in unserem Fall Null ist, wird der Fehler ausgelöst und die Steuerung des Programms überspringt alle nächsten Schritte und sucht nach passenden Ausnahmebehandlungsroutinen. Wenn es einen anderen findet, führt es die Aktion entsprechend aus, andernfalls wird entweder das Programm beendet oder es wird ein nicht behandelter systemdefinierter Fehler angezeigt.

informatica Tutorial für Anfänger pdf kostenloser Download
AUSNAHME BEI ​​ex_DivZero DANN DBMS_OUTPUT.PUT_LINE ('FEHLER, der Divisor kann nicht Null sein')

Dies ist der Ausnahmebehandler. Sobald der Benutzer den Divisor als 0 eingibt, wird die obige Nachrichtenzeichenfolge angezeigt.

Endgültiger Code:

DECLARE var_dividend NUMBER: = 10 var_divisor NUMBER: = 0 var_result NUMBER ex-DivZero AUSNAHME BEGINNEN WENN var_divisor = 0 DANN ERHÖHEN ex-DivZero ENDE WENN Var_result: = var_dividend / var_divisor DBMS_OUTPUT.PUT_Lin ' = 0 DANN RAISE ex-DivZero END IF Var_result: = var_dividend / var_divisor DBMS_OUTPUT.PUT_LINE ('Result =' || var_result) END

Lassen Sie uns in diesem Artikel zur Ausnahmebehandlung in PL / SQL die Verwendung der PRAGMA_EXCEPTION_INIT-Methode verstehen.

Verwenden der Funktion PRAGMA EXCEPTION_INIT

In dem PRAGMA EXCEPTION_INIT-Funktion, ein Ausnahmename ist einer Oracle-Fehlernummer zugeordnet. Dieser Name kann beim Entwerfen des Ausnahmehandlers für den Fehler verwendet werden.Für große Projekte mit vielen benutzerdefinierten Fehlern ist PRAGMA EXCEPTION_INIT die nützlichste und geeignetste Methode.

Syntax:

PRAGMA EXCEPTION_INIT (Ausnahmenname, -Oracle_error_number)

Beispiel

DECLARE deadlock_detected EXCEPTION PRAGMA EXCEPTION_INIT (deadlock_detected, -60) BEGIN NULL - Eine Operation, die einen ORA-00060-Fehler verursacht. EXCEPTION WHEN deadlock_detected THEN NULL - Behandeln Sie den Fehler END

PRAGMA EXCEPTION_INIT weist den Compiler an, einen Ausnahmennamen mit einer Oracle-Fehlernummer zu verknüpfen, wie bereits erwähnt. Sie können auf jede interne Ausnahme mit Namen verweisen und einen bestimmten Handler dafür schreiben. Wenn Sie einen Fehlerstapel oder eine Folge von Fehlermeldungen sehen, ist die oberste diejenige, die abgefangen und behandelt werden kann.

Lassen Sie uns in diesem Artikel über die Ausnahmebehandlung in PL / SQL die Verwendung der RAISE_APPLICATION_ERROR-Methode verstehen.

Verwenden der RAISE_APPLICATION_ERROR-Methode

Es ist ein Verfahren, das in der Oracle-Software integriert ist. Mit diesem Verfahren können wir einer benutzerdefinierten Fehlermeldung eine Fehlernummer zuordnen. Durch Kombinieren der Fehlernummer und der benutzerdefinierten Fehlermeldung kann eine Fehlerzeichenfolge erstellt werden, die den Standardfehlerzeichenfolgen ähnelt, die von Oracle angezeigt werden, wenn ein Fehler auftritt. Die Prozedur RAISE_APPLICATION_ERROR befindet sich im Paket DBMS_STANDARD

Syntax

raise_application_error (error_number, message [, TRUE])

Beispiel

/ * Ein Trigger trg_emp_detail_chk wird erstellt. * / TRIGGER ERSTELLEN ODER ERSETZEN trg_emp_detail_chk / * Das Trigger-Timing wird in der Tabelle EMPLOYEES als BEFORE UPDATE deklariert. * / Vor UPDATE ON-Mitarbeitern DECLARE-Berechtigung_denied Tag der Systemzeit ist entweder Samstag oder Sonntag oder nicht. * / IF trim (TO_CHAR (sysdate, 'Day')) IN ('Saturday', 'Sunday') THEN raise_application_error (-20000, 'Sie sind nicht dazu berechtigt Änderungen an den Wochenenden !! ') / * Die Prozedur raise_application_error wird mit dem ersten Parameterwert -20000 und dem zweiten Parameter mit einem Standardtext aufgerufen, der besagt, dass der Benutzer nicht berechtigt ist, Änderungen an den Wochenenden vorzunehmen. * / END IF END

Damit sind wir am Ende dieses Artikels zum Thema „Ausnahmebehandlung in PL / SQL“ angelangt. Ich hoffe, dieses Thema wird gut verstanden und hat Ihnen geholfen. Versuchen Sie, Ihre eigenen Codes zu schreiben und die in diesem Artikel erläuterten Methoden zu verwenden.

Wenn Sie sich von Fachleuten für diese Technologie schulen lassen möchten, können Sie sich für ein strukturiertes Training von edureka entscheiden! Schau dir das an von Edureka, einem vertrauenswürdigen Online-Lernunternehmen mit einem Netzwerk von mehr als 250.000 zufriedenen Lernenden auf der ganzen Welt. Dieser Kurs schult Sie in den Kernkonzepten und fortgeschrittenen Tools und Techniken zum Verwalten von Daten und Verwalten der MySQL-Datenbank. Es umfasst praktische Informationen zu Konzepten wie MySQL Workbench, MySQL Server, Datenmodellierung, MySQL Connector, Datenbankdesign, MySQL-Befehlszeile, MySQL-Funktionen usw. Am Ende der Schulung können Sie Ihre eigene MySQL-Datenbank erstellen und verwalten und verwalten Daten.

Hast du eine Frage an uns? Bitte erwähnen Sie dies im Kommentarbereich dieses Artikels „Ausnahmebehandlung in PL / SQL“. Wir werden uns so schnell wie möglich bei Ihnen melden.