傳回碼 ODBC
ODBC 中的每個函數都會傳回一個代碼,亦即其傳回碼,指出函數整體為成功或失敗。 程式邏輯通常會以傳回碼為基礎。
例如,下列程式碼會呼叫 SQLFetch 以擷取結果集中的資料列。 它會檢查函數的傳回碼,判斷是否已達到結果集結尾 (SQL_NO_DATA)、是否傳回任何警告資訊 (SQL_SUCCESS_WITH_INFO),或是否發生錯誤 (SQL_ERROR)。
SQLRETURN rc;
SQLHSTMT hstmt;
while ((rc=SQLFetch(hstmt)) != SQL_NO_DATA) {
if (rc == SQL_SUCCESS_WITH_INFO) {
// Call function to display warning information.
} else if (rc == SQL_ERROR) {
// Call function to display error information.
break;
}
// Process row.
}
傳回碼 SQL_INVALID_HANDLE 永遠會指出程式設計錯誤,而且絕不會在執行階段發生。 雖然 SQL_ERROR 可能會指出程式設計錯誤,其他所有傳回碼還是會提供執行階段資訊。
下表列出傳回碼的定義。
傳回碼 | Description |
---|---|
SQL_SUCCESS | 函數已順利完成。 應用程式會呼叫 SQLGetDiagField,以從標頭記錄擷取其他資訊。 |
SQL_SUCCESS_WITH_INFO | 函數已順利完成,但可能有非嚴重錯誤 (警告)。 應用程式會呼叫 SQLGetDiagRec 或 SQLGetDiagField 以擷取其他資訊。 |
SQL_ERROR | 函數失敗。 應用程式會呼叫 SQLGetDiagRec 或 SQLGetDiagField 以擷取其他資訊。 對函數來說,任何輸出引數內容皆屬未定義。 |
SQL_INVALID_HANDLE | 函數失敗,因為環境、連線、陳述式或描述項控制代碼無效。 這表示此處有程式設計錯誤。 無法從 SQLGetDiagRec 或 SQLGetDiagField 取得任何其他資訊。 只有當控制代碼是 Null 指標或錯誤類型時,才會傳回此代碼。例如針對引數傳遞陳述式控制代碼,但該引數需要連線控制代碼的情況。 |
SQL_NO_DATA | 沒有其他可用的資料。 應用程式會呼叫 SQLGetDiagRec 或 SQLGetDiagField 以擷取其他資訊。 可能會傳回一或多個驅動程式定義的狀態記錄,類別為 02xxx。 注意:在 ODBC 2.x 中,這個傳回碼名稱為 SQL_NO_DATA_FOUND。 |
SQL_NEED_DATA | 需要更多資料,例如在執行時間傳送參數資料或需要其他連線資訊時。 應用程式會呼叫 SQLGetDiagRec 或 SQLGetDiagField 以擷取其他資訊 (如果有的話)。 |
SQL_STILL_EXECUTING | 以非同步方式啟動的函數仍會繼續執行。 應用程式會呼叫 SQLGetDiagRec 或 SQLGetDiagField 以擷取其他資訊 (如果有的話)。 |