Oracle PL/SQL Grundkurs

Die Ausnahmebehandlung - SQLCODE und SQLERRM verwenden

Testen Sie unsere 1983 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
In diesem Video erklärt Ihnen der Trainer, wie Sie die Ursache einer Exception über die Variablen SQLCODE und SQLERRM ermitteln können.

Transkript

In diesem Video werde ich Ihnen eine erweiterte Möglichkeit zeigen, wie Sie Fehler abfangen und generisch erfahren, um welchen Fehler es sich genau handelt. Zunächst öffne ich jetzt wieder unsere Datei. edit kap02_bmi.sql (Stille) In der Datei werde ich jetzt einen anderen vordefinierten Fehler verursachen. Und zwar einen sogenannten VALUE_ERROR. Einen VALUE_ERROR könnte ich nun beispielsweise verursachen, indem ich als Körpergröße hier oben eine 1000 eingeben würde. Weil dieser Wert zu groß für die Variable groesse wäre, würde im Programm die Exception VALUE_ERROR verursacht werden. Allerdings hätten wir an dieser Stelle das Problem, dass wir den Fehler hier oben im Deklarationsabschnitt auslösen würden. Und weil die Exception nicht im Ausführungsabschnitt ausgelöst wird, würden wir sie nicht im Ausnahmebehandlungsabschnitt abfangen können. Deshalb werde ich jetzt dafür sorgen, dass die Exception VALUE_ERROR im Ausführungsabschnitt ausgelöst wird, indem ich das auslösende Schlüsselwort RAISE einsetze. Ich schreibe also hier drin das Schlüsselwort RAISE und dahinter die Exception VALUE_ERROR hinein. So wie wir im Ausnahmebehandlungsabschnitt die Ausnahme ZERO_DIVIDE abfangen, könnten wir nun auch die vordefinierte Exception VALUE_ERROR auf die gleiche Weise behandeln. Ich kopiere mal unseren Abfangmechanismus für die Ausnahme ZERO_DIVIDE. (Stille) Dann ändere ich den Namen der Ausnahme im zweiten Abfangmechanismus von ZERO_DIVIDE auf VALUE_ERROR. (Stille) Dahinter könnten wir dem Benutzer jetzt mitteilen, dass ein Wert ungültig ist. (tippt) Und wären dann hiermit fertig. Auf die gleiche Weise könnte ich nun auch noch alle anderen vordefinierten Exceptions hier untereinander aufführen. Eine etwas komfortablere Variante bietet PL/SQL über den Exception-Namen OTHERS an. Denn über diesen Exception-Namen können wir alle Ausnahmen abfangen, die wir vorab noch nicht behandelt haben. Um Ihnen dies vorzuführen, ändere ich den Namen der Ausnahme im zweiten Abfangmechanismus von VALUE_ERROR auf OTHERS ab. (tippt) Hierzu könnten wir dem Benutzer jetzt einfach nur mitteilen, dass uns der Fehler nicht bekannt ist. (tippt) Das Problem hierbei wäre aber, dass diese Fehlermeldung dem Benutzer den konkreten Fehler aber nicht verrät. Es gibt aber eine Möglichkeit, wie Sie den Grund des Ausnahmefehlers trotzdem herausfinden und dort ausgeben können. Denn selbstverständlich weiß die PL/SQL-Engine durchaus, um welchen Fehler es sich hier handelt, denn wir haben die Exception VALUE_ERROR ja über RAISE explizit hier oben ausgelöst. Aber selbst wenn unsere Exception zufällig durch den Benutzer ausgelöst worden wäre, wüsste die PL/SQL-Engine genau Bescheid. Dabei ist es so, dass sie bei jedem Auftauchen eines Fehlers einen bestimmten Fehlercode in die Variable sql code setzt. Statt dieser unkonkreten Meldung können wir deshalb Folgendes schreiben: (tippt) "Fehlercode:" Und dann einfach nur SQLCODE. (Stille) Wenn Sie schon länger mit der Oracle-Database arbeiten, werden Ihnen die von Oracle bereits vordefinierten ORA-Codes bekannt sein. Weil es sehr viele Ursachen für einen Fehler geben könnte, hat Oracle eine erstaunliche Menge an ORA-Codes festgelegt. Der VALUE_ERROR wird uns beispielsweise den Fehlercode -6502 ausgeben. Noch ausführlicher ist aber noch eine andere Alternative, bei der nicht nur der ORA-Code sondern auch eine Erläuterung zu dem Fehler ausgegeben wird. Bei dieser Variante lassen wir uns nicht den Wert der Variablen sql code sondern den Wert der Variablen sqlerrm ausgeben. (Stille) Also schreiben wir hier SQLERRM hinein. (Stille) Denn SQLERRM enthält sowohl den SQL-Code als auch eine kurze englische Erklärung zu dem Fehler. Dies werde ich Ihnen jetzt mal vorführen. Hierfür speichere ich die Datei wieder ab, schließe Notepad++ und starte unser Programm. (Stille) Jetzt gebe ich wieder eine Körpergröße ein. Und ein Gewicht. (Stille) Selbstverständlich wird dennoch der VALUE_ERROR ausgegeben. Und hier sehen Sie die Meldung: "numeric or value error". Und den zugehörigen SQL-Code, also den ORA-Code. In diesem Video habe ich Ihnen gezeigt, wie Sie eine Exception so abfangen, sodass Sie die Ursache der Ausnahme ganz generisch von der PL/SQL-Engine erhalten.

Oracle PL/SQL Grundkurs

Entdecken Sie grundlegende Programmstrukuren, Stored Procedures und Functions in PL/SQL und sehen Sie, wie Sie auf Daten zugreifen können.

3 Std. 58 min (32 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!