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 。