Oracle Raise_Application_error -Funktion

Oracle Raise_Application_error -Funktion
Wenn es um die Entwicklung geht, gibt es immer Platz für Fehler, unabhängig davon, 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 Vorgang kann allgemein als Fehlerbehandlung bezeichnet werden, und kann es Ihrer Anwendung ermöglichen, auch dann reibungslos auszuführen, selbst wenn ein Fehler auftritt, ohne vorzeitig zu enden.

In diesem Artikel erfahren Sie über eines der Fehlerbehandlungsverfahren in der Oracle-Datenbank mit dem Namen REIL RAUS_APPLICATION_ERROR.

Oracle Raise_Application_Error -Prozedur

Das Raise_Application_error in Oracle ist eine gespeicherte Prozedur, mit der Sie die benutzerdefinierten Fehlermeldungen anziehen können.

Bei der Arbeit mit der Oracle -Datenbank sind Sie möglicherweise auf eine Fehlermeldung gestoßen, wie z. B. die im Folgenden:

[42000] [904] ORA-00904: "Hi": Ungültige Kennung

Diese Art von Fehler wird als Datenbankmotor -Fehler bezeichnet. Es ist in der Oracle -Datenbank definiert und angesprochen, wenn ein bestimmter Fehler auftritt.

Mit der Prozedur raise_application_error ermöglicht Oracle unsere benutzerdefinierten Nachrichten mit einem bestimmten Fehlercode und einer meldung.

Dies kann sehr nützlich sein, wenn ein bestimmter Fehler auftritt und Sie den Benutzer mit einer deskriptiven Fehlermeldung aufmerksam machen möchten. Dies bedeutet, dass Sie die Fehlerausnahmen nicht ohne Anweisung darüber, was passiert ist.

Prozedursyntax und Parameter

Der folgende Code -Snippet legt die Syntax der Prozedur rasis_application_error fest:

raise_application_error (
Fehlernummer,
Nachricht,
[True | FALSCH]
);

Das Verfahren besteht aus drei Hauptparametern:

  1. ERROR_NUMBER - Dieser Parameter stellt einen bestimmten Ganzzahlwert dar, der einem Fehlercode zugeordnet wird. Der Wert dieses Parameters reicht von -20000 bis -20999.
  2. Meldung - Dies ist ein Zeichenfolgewert, der die benutzerdefinierte Fehlermeldung zum Anzeigen des Benutzer. Der Wert des Meldungsparameters hat eine Länge von bis zu 70 Bytes.
  3. KeepErrorStack - Dieser Parameter ist ein boolescher Wert, der feststellt, ob der Fehlerstapel erhalten bleiben sollte. Standardmäßig führt die Prozedur den Fehlerstapel nicht bei.

HINWEIS: Wenn Sie den Fehlerstapel erhalten. Wenn der Stapel nicht erhalten bleibt, ersetzt die neue Fehlermeldung alle vorherigen Fehler.

Im Folgenden finden Sie einige wesentliche Punkte für die Prozedur rasie_application_error:

  1. Die Datenbank -Engine wird die Ausführung des übergeordneten Blocks automatisch und sofort eingestellt.
  2. Das Verfahren erzwingt einen Rollback für alle Operationen,.
  3. Die RAUSE_Application_error -Prozedur -Rollback -Funktion wirkt sich nicht auf die globalen Datenstrukturen wie Datenbankobjekte aus. Wenn Sie jedoch solchen Objekten einen Rollback ausführen möchten, müssen Sie den Rollback -Vorgang ausdrücklich aufrufen.

Beispiel Raise_Application_error gespeicherte Prozedur Verwendung

In diesem Beispiel werden wir demonstrieren.

https: // docs.Orakel.com/cd/b13789_01/server.101/B10771/scripts003.htm

Betrachten Sie den folgenden Quellcode:

Erstellen oder Ersetzen von Prozeduren check_commission (
EMP_ID -Nummer
)
Ist
Fname Mitarbeiter.First_Name%Typ;
EM -Mitarbeiter.E -Mail%Typ;
SAL -Mitarbeiter.Gehalt%Typ;
Mitarbeiter in Auftrag geben.Provision_pct%Typ;
Start
Wählen Sie First_Name, E -Mail, Gehalt, commission_pct
in fname, em, sal, Kommission
von Mitarbeitern
wo Mitarbeiter_id = emp_id;
Wenn die Kommission null ist, dann
Raise_Application_Error (-20002, 'NULL-Provisionsprozentsatz!!'|| 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 dem Erstellen eines Verfahrens, das eine Mitarbeiter -ID akzeptiert. Wir verwenden dann den Mitarbeiter, um die Werte der Mitarbeiter auszuwählen. Schließlich verwenden wir eine IF -Erklärung, um zu überprüfen, ob die Kommission der empfangenen Reihe null ist. Wenn es wahr ist, stellen wir eine Ausnahme an.

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

Anruf check_commission (100);

Ausgang:

SQLCODE -438
SQLERRM: SQL0438N -Anwendung Erhöhter Fehler oder Warnung mit diagnostischem Text: "NULL -Provisionsprozentsatz:. Sqlstate = ud030

Abschluss

In diesem Tutorial haben Sie erfahren.