Der Programmcode nach einer Anweisung, die einen Fehler verursacht, wird nur ausgeführt, wenn in die Prozedurdefinition eine Klausel ON EXCEPTION RESUME einprogrammiert ist.
Sie können verschachtelte zusammengesetzte Anweisungen verwenden, um mehr Kontrolle über Anweisungen zu erhalten, die nach einem Fehler ausgeführt oder nicht ausgeführt werden.
Das folgende Beispiel zeigt, wie verschachtelte zusammengesetzte Anweisungen für die Ablaufsteuerung verwendet werden können. Die Prozedur basiert auf jener, die als ein Beispiel in Standard-Fehlerbehandlung in Prozeduren und Triggern verwendet wurde.
DROP PROCEDURE OuterProc; DROP PROCEDURE InnerProc; CREATE PROCEDURE InnerProc() BEGIN BEGIN DECLARE column_not_found EXCEPTION FOR SQLSTATE VALUE '52003'; MESSAGE 'Hello from InnerProc' TO CLIENT; SIGNAL column_not_found; MESSAGE 'Line following SIGNAL' TO CLIENT EXCEPTION WHEN column_not_found THEN MESSAGE 'Column not found handling' TO CLIENT; WHEN OTHERS THEN RESIGNAL; END; MESSAGE 'Outer compound statement' TO CLIENT; END; CALL InnerProc(); |
Die Registerkarte Meldungen von Interactive SQL zeigt Folgendes an:
Hello from InnerProc Column not found handling Outer compound statement |
Nach der Anweisung SIGNAL, die den Fehler verursacht, geht die Kontrolle auf die Ausnahmeroutine für die zusammengesetzte
Anweisung über, und die Meldung Verarbeitung der Ausnahmebedingung
wird ausgegeben. Die Kontrolle wird dann wieder an die äußere zusammengesetzte Anweisung zurückgegeben, und die Meldung Outer compound statement
wird ausgegeben.
Wenn ein anderer Fehler als Column not found
(Spalte nicht gefunden) in der inneren zusammengesetzten Anweisung gefunden wird, führt die Ausnahmeroutine die Anweisung
RESIGNAL aus. Die Anweisung RESIGNAL übergibt die Kontrolle direkt zurück an die aufrufende Umgebung, und der Rest der äußeren
zusammengesetzten Anweisung wird nicht ausgeführt.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |