Hinweise zum Umgang mit SQL-Ausnahmen

Beim Versuch, die Quelle eines SQL-Fehler zu bestimmen, und SQLSTATE zeigt eine Ausnahmebedingung durch einen anderen Wert als Halte 00000, 00001, oder 00002, Sie können die Situation in einer der folgenden Arten behandelt werden sollen:

  • Rück Kontrolle auf das Mutter Prozedur, die die Unterprozedur aufgerufen, die die Ausnahme ausgelöst.

  • Benutze einen WANN Klausel auf eine Ausnahmebehandlungsroutine zu verzweigen oder eine andere Aktion durchführen.

  • Behandeln Sie die Ausnahme an Ort und Stelle mit einem Verbindung SQL-Anweisung. Eine Verbindung SQL-Anweisung besteht aus einem oder mehreren einfachen SQL-Anweisungen, die zwischen START und ENDE Schlüsselwörter.

Das Folgende ist ein Beispiel für eine Verbindung-Anweisung Exception-Handler:

BEGINDECLARE ValueOutOfRange AUSNAHME FÜR SQLSTATE'73003 '-EINFÜGE IN FOODS (Kalorien) VALUES (: cal) -Signals ValueOutOfRange -Nachricht' Prozess eine neue Kalorien value.'EXCEPTIONWHEN ValueOutOfRange THENMESSAGE 'Umgang mit der Kalorien-Bereichsfehler "-Wenn ANDERE THENRESIGNAL -END

Mit einem oder mehreren ERKLÄREN Anweisungen können Sie Namen zu bestimmten geben SQLSTATE Werte, die Sie vermuten, können auftreten. Das EINFÜGEN Erklärung ist die, die eine Ausnahme auftreten könnte verursachen. Wenn der Wert von : cal übersteigt den Maximalwert für ein SMALLINT Datenelement, SQLSTATE ist eingestellt auf # 147-73003 # 148-. Das SIGNAL Aussage signalisiert eine Ausnahmebedingung. Er löscht den oberen Diagnosebereich.

Er setzt die RETURNED_SQLSTATE Feld der Bereich Diagnostik der SQLSTATE für den genannten Ausnahme. Wenn keine Ausnahme aufgetreten ist, repräsentiert die Reihe von Aussagen durch die MESSAGE "Prozess neuen Kalorienwert ' Anweisung ausgeführt wird. Wenn jedoch eine Ausnahme aufgetreten ist, wird diese Folge von Anweisungen übersprungen und der AUSNAHME Anweisung ausgeführt wird.

Wenn die Ausnahme war ein ValueOutOfRange Ausnahme, dann eine Reihe von Anweisungen durch die dargestellte MESSAGE 'Umgang mit der Kalorien-Bereichsfehler " Anweisung ausgeführt wird. Das RESIGNAL Anweisung ausgeführt wird, wenn die Ausnahme nicht um eine ValueOutOfRange Ausnahme.

RESIGNAL lediglich übergibt die Kontrolle der Ausführung an den anrufenden Eltern Verfahren. Dieses Verfahren kann zusätzliche Fehlerbehandlung Code müssen mit Ausnahmen anders als der Erwartungswert-out-of-Range-Fehler umgehen.

Menü