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

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » SQL-Dialekte und Kompatibilität

 

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 an die aufrufende Umgebung werden SQLSTATE- und SQLCODE-Werte zurückgegeben.

Explizite Fehlerbehandlung kann mit der EXCEPTION-Anweisung in gespeicherte Watcom SQL-Prozeduren integriert werden, oder die Prozedur kann mit der EXCEPTION RESUME-Anweisung angewiesen werden, die Ausführung nach einem Fehler 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.


Prozeduren mit der RAISERROR-Anweisung
Transact-SQL-ähnliche Fehlerbehandlung im Watcom SQL-Dialekt