SQLCompleteAsync 函式

一致性
引進的版本:ODBC 3.8 標準合規性:無

摘要
SQLCompleteAsync 可用來判斷非同步函式何時使用通知或輪詢型處理完成。 如需非同步作業的詳細資訊,請參閱 非同步執行

SQLCompleteAsync 只會在 ODBC 驅動程式管理員中實作。

在以通知為基礎的非同步處理模式中, 必須在驅動程式管理員引發用於通知的事件物件之後呼叫 SQLCompleteAsync SQLCompleteAsync 會完成非同步處理,而非同步函式會產生傳回碼。

在輪詢型非同步處理模式中, SQLCompleteAsync 是呼叫原始非同步函式的替代方法,而不需要在原始非同步函式呼叫中指定引數。 不論是否啟用 ODBC 資料指標程式庫,都可以使用 SQLCompleteAsync

語法

  
SQLRETURN SQLCompleteAsync(  
      SQLSMALLINT HandleType,  
      SQLHANDLE   Handle,  
      RETCODE *   AsyncRetCodePtr);  

引數

HandleType
[輸入]要完成非同步處理之控制碼的類型。 有效值為SQL_HANDLE_DBC或SQL_HANDLE_STMT。

Handle
[輸入]要完成非同步處理的控制碼。 如果 Handle 不是 HandleType 指定型別的有效控制碼, SQLCompleteAsync 會傳回SQL_INVALID_HANDLE。

如果 Handle 不是 HandleType 指定型別的有效控制碼, SQLCompleteAsync 會傳回SQL_INVALID_HANDLE。

AsyncRetCodePtr
[輸出]將包含非同步 API 傳回碼之緩衝區的指標。 如果 AsyncRetCodePtr 為 Null, SQLCompleteAsync 會傳回SQL_ERROR。

傳回

SQL_SUCCESS、SQL_ERROR、SQL_NO_DATA或SQL_INVALID_HANDLE。

診斷

如果 SQLCompleteAsync 傳回SQL_SUCCESS,應用程式應該會從 AsyncRetCodePtr 指向 的緩衝區取得非同步函式的傳 回碼。 如果有任何關聯 SQLSTATE,可以使用 SQL_HANDLE_STMT 的 HandleType 和語句控制碼或 SQL_HANDLE_DBC 的 HandleType 和連接控制碼呼叫 SQLGetDiagRec 來取得 。 這些診斷記錄與非同步函式相關聯,而不是這個 SQLCompleteAsync 函式。

SQLCompleteAsync 會傳回SQL_SUCCESS以外的程式碼, 指出未正確呼叫 SQLCompleteAsync 在此案例中,SQLCompleteAsync 不會張貼任何診斷記錄。 可能的傳回碼如下:

  • SQL_INVALID_HANDLE:HandleType 和 Handle 所 指示的控制碼不是有效的控制碼

  • SQL_ERROR: AsyncRetCodePtr 為 Null,或未在控制碼上啟用非同步處理。

  • SQL_NO_DATA:在通知模式中,非同步作業未進行中,或驅動程式管理員尚未通知應用程式。 在輪詢模式中,非同步作業並未進行中。

註解

在輪詢型非同步處理模式中,當 SQLCompleteAsync 傳回SQL_SUCCESS時, 可能會SQL_STILL_EXECUTING AsyncRetCodePtr 應用程式應該持續輪詢,直到 AsyncRetCodePtr 未SQL_STILL_EXECUTING為止。 在以通知為基礎的非同步處理模式中, 永遠不會SQL_STILL_EXECUTING AsyncRetCodePtr

另請參閱

非同步執行 (輪詢方法)