Oracle Raise_Application_Error-Funktion

Oracle Raise Application Error Funktion



Bei der Entwicklung gibt es immer Raum für Fehler, egal ob es sich um einen Anwendungsfehler oder einen benutzerbezogenen Fehler handelt. Als Entwickler müssen Sie vorhersehen, wo ein Fehler auftreten kann, und im Voraus Maßnahmen ergreifen. Dieser allgemein als Fehlerbehandlung bekannte Prozess kann dafür sorgen, dass Ihre Anwendung auch dann reibungslos läuft, wenn ein Fehler auftritt, ohne vorzeitig beendet zu werden.

In diesem Artikel erfahren Sie etwas über eine der Fehlerbehandlungsprozeduren in der Oracle-Datenbank namens raise_application_error.

Oracle Raise_Application_Error-Prozedur

Der raise_application_error in Oracle ist eine gespeicherte Prozedur, mit der Sie die benutzerdefinierten Fehlermeldungen auslösen können.







Beim Arbeiten mit der Oracle-Datenbank ist Ihnen möglicherweise eine Fehlermeldung wie die folgende begegnet:



[ 42000 ] [ 904 ] ORA-00904: 'HALLO' : ungültige Kennzeichnung

Diese Art von Fehler wird als Datenbank-Engine-Fehler bezeichnet. Es wird in der Oracle-Datenbank definiert und ausgelöst, wenn ein bestimmter Fehler auftritt.



Mit der Prozedur raise_application_error ermöglicht uns Oracle, unsere benutzerdefinierten Nachrichten mit einem bestimmten Fehlercode und einer bestimmten Nachricht zu definieren.





Dies kann sehr nützlich sein, wenn ein bestimmter Fehler auftritt und Sie den Benutzer mit einer beschreibenden Fehlermeldung warnen möchten. Dies bedeutet, dass Sie die Fehlerausnahmen nicht ohne Aussage darüber, was passiert ist, behandelt haben.

Prozedursyntax und -parameter

Das folgende Code-Snippet legt die Syntax der Raise_application_error-Prozedur fest:



raise_application_error (
Fehlernummer,
Botschaft,
[ { WAHR | FALSCH } ]
) ;

Das Verfahren besteht aus drei Hauptparametern:

  1. Error_number – Dieser Parameter stellt einen bestimmten ganzzahligen Wert dar, der einem Fehlercode zugeordnet ist. Der Wert dieses Parameters reicht von -20000 bis -20999.
  2. Nachricht – Dies ist ein Zeichenfolgenwert, der die benutzerdefinierte Fehlermeldung angibt, die dem Benutzer angezeigt werden soll. Der Wert des Nachrichtenparameters hat eine Länge von bis zu 70 Byte.
  3. Keeperrorstack – Dieser Parameter ist ein boolescher Wert, der bestimmt, ob der Fehlerstapel beibehalten werden soll. Standardmäßig verwaltet die Prozedur den Fehlerstapel nicht.

HINWEIS: Das Beibehalten des Fehlerstapels bedeutet, dass der Fehler zu der Reihe vorheriger Fehler hinzugefügt wird. Wenn der Stapel nicht beibehalten wird, ersetzt die neue Fehlermeldung alle vorherigen Fehler.

Im Folgenden sind einige wesentliche Punkte aufgeführt, die für die Prozedur raise_application_error zu beachten sind:

  1. Die Datenbank-Engine hält die Ausführung des übergeordneten Blocks automatisch und sofort an, wenn sie auf die gespeicherte Prozedur raise_application_error stößt.
  2. Die Prozedur erzwingt ein Rollback für alle Operationen, die an den Parametern OUT und IN OUT vorgenommen wurden.
  3. Die Rollback-Funktion der Prozedur raise_application_error wirkt sich nicht auf die globalen Datenstrukturen wie Datenbankobjekte aus. Wenn Sie jedoch ein Rollback für solche Objekte durchführen möchten, müssen Sie die Rollback-Operation explizit aufrufen.

Beispiel für die Verwendung einer gespeicherten Raise_Application_Error-Prozedur

In diesem Beispiel demonstrieren wir, wie die Prozedur raise_application_error mit dem HR-Schema verwendet wird.

https://docs.oracle.com/cd/B13789_01/server.101/b10771/scripts003.htm

Betrachten Sie den folgenden bereitgestellten Quellcode:

Prozedur check_commission erstellen oder ersetzen (
emp_id-Nummer
)
ist
fname      MITARBEITER.FIRST_NAME % Typ ;
unter         MITARBEITER.EMAIL % Typ ;
sal        MITARBEITER.GEHALT % Typ ;
Provision MITARBEITER.KOMMISSION_PCT % Typ ;
Start
wählen FIRST_NAME, E-MAIL, GEHALT, COMMISSION_PCT
in fname, em, sal, provisions
von MITARBEITERN
wo EMPLOYEE_ID = emp_id;
wenn Provision ist null dann
raise_application_error ( - 20002 , 'Null Provisionsprozentsatz angetroffen!!' || emp_id ) ;
Ende wenn ;
Ausnahme
wenn andere dann
DBMS_OUTPUT.PUT_LINE ( 'SQLCODE: ' || SQLCODE ) ;
DBMS_OUTPUT.PUT_LINE ( 'SQLERRM: ' || SQLERRM ) ;
Ende;

Das vorherige Beispiel beginnt mit der Erstellung einer Prozedur, die eine Mitarbeiter-ID akzeptiert. Wir verwenden dann den Mitarbeiter, um die Werte von den Mitarbeitern auszuwählen. Schließlich verwenden wir eine IF-Anweisung, um zu prüfen, ob die Provision der empfangenen Zeile null ist. Wenn es wahr ist, lösen wir eine Ausnahme aus.

Wir können die Prozedur mit der Zielmitarbeiter-ID aufrufen:

check_commission aufrufen ( 100 ) ;

Ausgabe :

SQLCODE -438
SQLERRM: SQL0438N Von der Anwendung ausgelöster Fehler oder Warnung mit Diagnosetext: 'Nullprozentsatz der Provision gefunden:. SQLSTATE=UD030

Fazit

In diesem Lernprogramm haben Sie gelernt, wie Sie die gespeicherte Prozedur raise_application_error verwenden, um die benutzerdefinierten Fehlermeldungen auszulösen.