共用方式為


傳回碼 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 函數已順利完成,但可能有非嚴重錯誤 (警告)。 應用程式會呼叫 SQLGetDiagRecSQLGetDiagField 以擷取其他資訊。
SQL_ERROR 函數失敗。 應用程式會呼叫 SQLGetDiagRecSQLGetDiagField 以擷取其他資訊。 對函數來說,任何輸出引數內容皆屬未定義。
SQL_INVALID_HANDLE 函數失敗,因為環境、連線、陳述式或描述項控制代碼無效。 這表示此處有程式設計錯誤。 無法從 SQLGetDiagRecSQLGetDiagField 取得任何其他資訊。 只有當控制代碼是 Null 指標或錯誤類型時,才會傳回此代碼。例如針對引數傳遞陳述式控制代碼,但該引數需要連線控制代碼的情況。
SQL_NO_DATA 沒有其他可用的資料。 應用程式會呼叫 SQLGetDiagRecSQLGetDiagField 以擷取其他資訊。 可能會傳回一或多個驅動程式定義的狀態記錄,類別為 02xxx。 注意:在 ODBC 2.x 中,這個傳回碼名稱為 SQL_NO_DATA_FOUND。
SQL_NEED_DATA 需要更多資料,例如在執行時間傳送參數資料或需要其他連線資訊時。 應用程式會呼叫 SQLGetDiagRecSQLGetDiagField 以擷取其他資訊 (如果有的話)。
SQL_STILL_EXECUTING 以非同步方式啟動的函數仍會繼續執行。 應用程式會呼叫 SQLGetDiagRecSQLGetDiagField 以擷取其他資訊 (如果有的話)。