Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » SQL-Dialekte und Kompatibilität » SQL-Dialekte

 

Fehlerbehandlung in Transact-SQL-Prozeduren

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