Die standardmäßige Fehlerbehandlung bei Prozeduren ist in den Dialekten Watcom-SQL und Transact-SQL verschieden. Standardmäßig werden Prozeduren im Watcom-SQL-Dialekt beendet, wenn ein Fehler auftritt, und es werden der aufrufenden Umgebung SQLSTATE- und SQLCODE-Werte zurückgegeben.
Explizite Fehlerbehandlung kann mit der EXCEPTION-Anweisung in mit Watcom-SQL geschriebenen gespeicherte Prozeduren integriert werden, oder die Prozedur kann mit der EXCEPTION RESUME-Anweisung angewiesen werden, nach einem Fehler die Ausführung bei der nächsten Anweisung wieder aufzunehmen.
Wenn in einer Prozedur im Transact-SQL-Dialekt ein Fehler auftritt, dann wird die Ausführung bei der nächsten Anweisung fortgesetzt. Die globale Variable @@error enthält den Fehlerstatus der zuletzt ausgeführten Anweisung. Nachdem die Anweisung abgearbeitet worden ist, können Sie diese Variable überprüfen, um eine Rückgabe aus der Prozedur zu erzwingen. Beispielsweise verursacht die folgende Anweisung eine Beendigung, wenn ein Fehler auftritt.
IF @@error != 0 RETURN |
Wenn die Prozedur die Ausführung abschließt, gibt ein Rückgabewert den Erfolg oder den Misserfolg der Prozedur an. Dieser Rückgabestatus ist eine Ganzzahl, auf die wie folgt zugegriffen werden kann:
DECLARE @Status INT EXECUTE @Status = proc_sample IF @Status = 0 PRINT 'procedure succeeded' ELSE PRINT 'procedure failed' |
In der folgenden Tabelle werden die integrierten Prozedur-Rückgabewerte und ihre Bedeutungen beschrieben:
Wert | Definition | SQL Anywhere SQLSTATE |
---|---|---|
0 | Prozeduren, die ohne Fehler ausgeführt werden | |
-1 | Fehlendes Objekt | 42W33, 52W02, 52003, 52W07, 42W05 |
-2 | Datentypfehler | 53018 |
-3 | Prozess wurde als Deadlock-Opfer ausgewählt | 40001, 40W06 |
-4 | Berechtigungsfehler | 42501 |
-5 | Syntaxfehler | 42W04 |
-6 | Sonstige Benutzerfehler | |
-7 | Ressourcenfehler, wie z.B. Speichermangel | 08W26 |
-10 | Schwerwiegende interne Inkonsistenz | 40W01 |
-11 | Schwerwiegende interne Inkonsistenz | 40000 |
-13 | Datenbank ist beschädigt | WI004 |
-14 | Hardwarefehler | 08W17, 40W03, 40W04 |
Wenn ein SQL Anywhere SQLSTATE nicht anwendbar ist, wird der Standardwert -6 zurückgegeben.
Die RETURN-Anweisung kann verwendet werden, um andere Ganzzahlen als diese mit ihren eigenen benutzerdefinierten Bedeutungen zurückzugeben.
Anweisung RAISERROR in Prozeduren verwenden
Transact-SQL-ähnliche Fehlerbehandlung im Watcom-SQL-Dialekt
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |