Fehler und Warnungen werden unterschiedlich verarbeitet. Während die Standardvorgehensweise bei Fehlern darin besteht, einen Wert für die Variablen SQLSTATE und SQLCODE zu setzen sowie beim Auftritt eines Fehlers die Kontrolle an die aufrufende Umgebung zurückzugeben, besteht die Standardmaßnahme bei Warnungen darin, die Werte SQLSTATE und SQLCODE zu setzen, die Prozedur aber fortzusetzen.
Mit den folgenden Demo-Prozeduren wird die Standardverarbeitung von Warnungen gezeigt.
In diesem Fall generiert die SIGNAL-Anweisung eine Bedingung, die angibt, dass die Zeile nicht gefunden werden kann. Hier handelt es sich eher um eine Warnung als um einen Fehler.
DROP PROCEDURE OuterProc; DROP PROCEDURE InnerProc; CREATE PROCEDURE OuterProc() BEGIN MESSAGE 'Hello from OuterProc.' TO CLIENT; CALL InnerProc(); MESSAGE 'SQLSTATE set to ', SQLSTATE,' in OuterProc.' TO CLIENT; END; CREATE PROCEDURE InnerProc() BEGIN DECLARE row_not_found EXCEPTION FOR SQLSTATE '02000'; MESSAGE 'Hello from InnerProc.' TO CLIENT; SIGNAL row_not_found; MESSAGE 'SQLSTATE set to ', SQLSTATE, ' in InnerProc.' TO CLIENT; END; CALL OuterProc(); |
Die Registerkarte Meldungen von Interactive SQL zeigt Folgendes an:
Hello from OuterProc. Hello from InnerProc. SQLSTATE set to 02000 in InnerProc. SQLSTATE set to 00000 in OuterProc. |
Beide Prozeduren werden nach Ausgabe der Warnung fortgesetzt, wobei SQLSTATE von der Warnbedingung gesetzt wurde (02000).
Das Ausführen der zweiten MESSAGE-Anweisung in InnerProc setzt die Warnung zurück. Die erfolgreiche Ausführung einer SQL-Anweisung setzt SQLSTATE auf 00000 und SQLCODE auf 0 zurück. Wenn eine Prozedur den Fehlerstatus registrieren soll, muss sie die Zuordnung eines Werts sofort nach dem Ausführen der Anweisung vornehmen, die den Fehler oder die Warnung verursacht hat.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |