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 指向的缓冲区获取异步函数的返回代码。 可以通过调用 SQLGetDiagRec 来获取关联的 SQLSTATE(如果有),该 SQLGetDiagRec 的 HandleType 为 SQL_HANDLE_STMT,语句句柄或 handleType 为 SQL_HANDLE_DBC 和连接句柄。 这些诊断记录与异步函数(而不是此 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 。