適合 性
導入バージョン:ODBC 3.8 規格準拠:なし
Summary
SQLCompleteAsync は、通知またはポーリングベースの処理を用いて非同期関数が完了したかどうかを判別するために使用できます。 非同期操作の詳細については、 非同期実行を参照してください。
SQLCompleteAsync はODBCドライバーマネージャーでのみ実装されています。
通知ベースの非同期処理モードでは、ドライバマネージャーが通知に使われるイベントオブジェクトを呼び出した後に SQLCompleteAsync を呼び出さなければなりません。 SQLCompleteAsync は非同期処理を完了し、非同期関数はリターンコードを生成します。
ポーリングベースの非同期処理モードでは、 SQLCompleteAsync は元の非同期関数呼び出しの代替手段であり、元の非同期関数呼び出しで引数を指定する必要がありません。 SQLCompleteAsync は、ODBCカーソルライブラリが有効かどうかに関わらず使用できます。
構文
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。
Diagnostics
もし SQLCompleteAsync がSQL_SUCCESSを返すなら、アプリケーションは AsyncRetCodePtrが指すバッファから非同期関数の返却コードを取得すべきです。 関連するSQLSTATEは、 SQLGetDiagRec を呼び出して HandleType をSQL_HANDLE_STMTと文ハンドル、または HandleType をSQL_HANDLE_DBCと接続ハンドルで呼び出すことで取得できます。 これらの診断レコードは非同期関数に関連付けられており、この SQLCompleteAsync 関数とは関係ありません。
SQLCompleteAsyncは、SQL_SUCCESS以外のコードを返し、正しく呼び出されていないことを示します。 この場合、SQLCompleteAsyncは診断記録を投稿しません。 可能な返品コードは以下の通りです:
SQL_INVALID_HANDLE: HandleType と Handle で示されているハンドルは有効なハンドルではありません。
SQL_ERROR: AsyncRetCodePtr は NULL またはハンドルで非同期処理が有効になっていません。
SQL_NO_DATA:通知モードでは、非同期操作が進行中でない場合、またはドライバーマネージャーがアプリケーションに通知していない場合。 ポーリングモードでは非同期操作は進行中ではありません。
Comments
ポーリングベースの非同期処理モードでは、SQLCompleteAsyncがSQL_SUCCESSを返すとAsyncRetCodePtrがSQL_STILL_EXECUTINGされることがあります。 アプリケーションは AsyncRetCodePtr がSQL_STILL_EXECUTINGがなくなるまでポーリングを続けるべきです。 通知ベースの非同期処理モードでは、 AsyncRetCodePtr は決してSQL_STILL_EXECUTINGしません。