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

SQL Anywhere 12.0.1 (Deutsch) » SQL Anywhere Server - Programmierung » ODBC-Unterstützung

 

Fehlerbehandlung in ODBC

Fehler in ODBC werden mit dem Rückgabewert jedes einzelnen ODBC-Funktionsaufrufs und entweder mit der Funktion SQLError oder der Funktion SQLGetDiagRec gemeldet. Die Funktion SQLError wurde in ODBC-Versionen bis Version 3 (ausschließlich Version 3) verwendet. Ab Version 3 wird die Funktion SQLError nicht mehr weiter entwickelt und durch die Funktion SQLGetDiagRec ersetzt.

Jede ODBC-Funktion gibt ein SQLRETURN zurück, das einen der folgenden Statuscodes annehmen kann:

Statuscode Beschreibung
SQL_SUCCESS Kein Fehler.
SQL_SUCCESS_WITH_INFO

Die Funktion wurde vollständig ausgeführt, aber ein Aufruf von SQLError zeigt eine Warnung an.

Der häufigste Grund für diesen Status ist, dass ein Wert zurückgegeben wurde, der für den von der Anwendung zur Verfügung gestellten Puffer zu lang ist.

SQL_ERROR Die Funktion wurde wegen eines Fehlers nicht vollständig ausgeführt. Sie können SQLError ausführen, um mehr Informationen über das Problem zu erhalten.
SQL_INVALID_HANDLE

Ein ungültiger Umgebungs-, Verbindungs- oder Statement-Handle wurden als Argument übergeben.

Dies passiert häufig, wenn ein Handle benutzt wird, nachdem es freigegeben wurde, oder falls das Handle ein Null-Zeiger ist.

SQL_NO_DATA_FOUND

Keine Hinweise verfügbar.

Der häufigste Grund für diesen Staus ist, dass - beim Abrufen von einem Cursor - keine weiteren Zeilen mehr in dem Cursor waren.

SQL_NEED_DATA

Für einen Parameter werden Daten benötigt.

Dies ist eine erweiterte Funktion, die in der Hilfedatei unter SQLParamData und SQLPutData beschrieben wird.

Mit jeder Umgebung, jeder Verbindung und jedem Statement-Handle können ein oder mehrere Fehler oder Warnungen verbunden sein. Jeder Aufruf von SQLError oder SQLGetDiagRec gibt Hinweise für einen Fehler zurück und entfernt die Hinweise über diesen Fehler. Falls Sie SQLError oder SQLGetDiagRec nicht aufrufen, um alle Fehlermeldungen zu entfernen, werden die Fehlermeldungen beim nächsten Funktionsaufruf entfernt, der das gleiche Handle als Parameter übergibt.

Jeder Aufruf von SQLError kann drei Handles für Umgebung, Verbindung und Anweisung übergeben. Der erste Aufruf benutzt SQL_NULL_HSTMT, um den mit einer Verbindung zusammenhängenden Fehler zu erhalten. Auf die gleiche Weise gibt ein Aufruf mit SQL_NULL_DBC und SQL_NULL_HSTMT alle mit dem Umgebungshandle zusammenhängenden Fehler zurück.

Jeder Aufruf von SQLGetDiagRec kann entweder ein Umgebungs-, Verbindungs- oder Anweisungshandle übergeben. Der erste Aufruf benutzt SQL_HANDLE_DBC, um den mit einer Verbindung zusammenhängenden Fehler zurückzugeben. Der zweite Aufruf benutzt SQL_HANDLE_STMT, um den mit der soeben ausgeführten Anweisung zusammenhängenden Fehler zurückzugeben.

SQLError und SQLGetDiagRec geben SQL_SUCCESS zurück, falls ein Fehler zu melden ist (nicht SQL_ERROR), und SQL_NO_DATA_FOUND, falls keine weiteren Fehler zu melden sind.

 Beispiel 1
 Beispiel 2