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.
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 in der inneren zusammengesetzten Anweisung ein anderer Fehler auftritt als die nicht gefundene Spalte, führt die Ausnahmeroutine die RESIGNAL-Anweisung 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 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |