Databases Reference
In-Depth Information
liefern
keine Primzahl
ist Primzahl
PL/SQL erlaubt wie z. B. die Programmiersprachen C++ und Ja-
va die Behandlung von Ausnahmen, wobei eine engere
Verwandschaft zum C++-Ansatz besteht. Die Ausnahmebe-
handlung ist gerade für PL/SQL interessant, da sie die Reaktion
auf unerwünschte Ereignisse ermöglicht und weiterhin syste-
matisch auf die Ausnahme reagiert werden kann.
Die Möglichkeiten des Exception-Handling, wie die Ausnah-
mebehandlung üblicherweise genannt wird, soll an einem klei-
nen Beispiel verdeutlicht werden. Zunächst ist EXCEPTION ein
ganz normaler Datentyp, von dem Variablen angelegt werden
können. Eine Ausnahme wird durch den Befehl RAISE ausge-
löst. Bei einer Ausnahme wird der normale Ablauf des Proze-
dur- oder Funktionsblocks verlassen und in den eventuell vor-
handenen Teil des Blocks zur Ausnahmebehandlung gesprun-
gen. Falls die Ausnahme hier nicht bearbeitet wird, wird die
Prozedur oder Funktion verlassen und die Ausnahme zur Be-
handlung an die aufrufende Prozedur oder Funktion weiterge-
reicht. Falls es auf obersten Ebene keine Ausnahmebehandlung
gibt, bricht die gesamte Ausführung mit einer Fehlermeldung
ab. Es wird folgende, nicht ganz nette Funktion betrachtet.
PL/SQL-
Ausnahmebe-
handlung
CREATE OR REPLACE FUNCTION noHeinz(name VARCHAR)
RETURN VARCHAR
IS
heinz EXCEPTION;
BEGIN
IF name='Heinz'
THEN
RAISE heinz;
ELSE
RETURN name;
END IF;
END;
Die Funktion soll offensichtlich alle Heinz herausfiltern. Wei-
terhin kann die Funktion nicht auf Ausnahmen reagieren. Dies
zeigen die beiden folgenden Aufrufe, wobei wieder deutlich
wird, dass die Befehle unabhängig voneinander abgearbeitet
werden. Einzelne Fehler führen nicht dazu, dass das gesamte
Skript mit den Befehlen nicht ausgeführt wird.
SELECT noHeinz('Erwin') FROM DUAL;
SELECT noHeinz('Heinz') FROM DUAL;
256
Search WWH ::




Custom Search