Databases Reference
In-Depth Information
I:=I/I;
DBMS_OUTPUT.PUT_LINE('Nicht Erreicht');
EXCEPTION
WHEN ZERO_DIVIDE THEN
DBMS_OUTPUT.PUT_LINE(''||SQLCODE||'::'
||SQLERRM);
END;
DBMS_OUTPUT.PUT_LINE(''||SQLCODE||'::'
||SQLERRM);
RAISE_APPLICATION_ERROR(-20101,
'keine Lust mehr');
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(''||SQLCODE||'::'
||SQLERRM);
IF SQLCODE=-20101
THEN
DBMS_OUTPUT.PUT_LINE('stimmt nicht');
END IF;
END;
Zunächst wird durch 0 geteilt, so dass eine Systemausnahme
auftritt, die in der zum Block gehörenden Exception Section ge-
fangen wird. Das Programm wird dann nach diesem Block
fortgesetzt. Man sieht, dass man auf die globalen Systemvariab-
len SQLCODE und SQLERRM zugreifen kann, um die Nummer
und den Text der letzten Fehlermeldung einzusehen. Danach
wird der neue Mechanismus genutzt, um eine eigene Ausnah-
me mit der Nummer -20101 zu erzeugen, die dann in der zuge-
hörigen Exception Section gefangen wird. Diese Ausnahmen
kann man zur Behandlung dann über die Fehlernummer identi-
fizieren und so darauf reagieren. Die zu
EXECUTE exTest;
gehörige Ausgabe, evtl. in einem speziellen Fenster für Sys-
temmeldungen, sieht wie folgt aus.
-1476::ORA-01476: Divisor ist Null
0::ORA-0000: normal, successful completion
-20101::ORA-20101: keine Lust mehr
stimmt nicht
Dieser Abschnitt hat nur eine kompakte Einführung in zentrale
Sprachelemente von PL/SQL gegeben, die für die folgenden
Abschnitte benötigt werden. PL/SQL bietet noch weitere
Sprachfeatures, wie die Aufteilung von Prozeduren auf Module
und eine spezielle Art um Arrays zu deklarieren. Hierfür sind
die in Englisch verfassten und frei zugänglichen Oracle-
259
Search WWH ::




Custom Search