Функция SQLCompleteAsync

Соответствие
Введенная версия: соответствие стандартам ODBC 3.8: отсутствует

Сводка
SQLCompleteAsync можно использовать для определения завершения асинхронной функции с помощью обработки на основе уведомления или опросов. Для получения дополнительной информации об асинхронных операциях см. раздел «Асинхронное исполнение».

SQLCompleteAsync реализован только в ODBC Driver Manager.

В режиме асинхронной обработки на основе уведомлений SQLCompleteAsync должен быть вызван после того, как менеджер драйверов поднимает объект событий, используемый для уведомления. SQLCompleteAsync завершает асинхронную обработку, а асинхронная функция генерирует возвратный код.

В режиме асинхронной обработки на основе опросов SQLCompleteAsync является альтернативой вызову исходной асинхронной функции без необходимости указывать аргументы в исходном вызове асинхронной функции. SQLCompleteAsync можно использовать независимо от того, включена ли библиотека курсоров ODBC.

Syntax

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

Arguments

HandleType
[Ввод] Тип ручки, на которой следует выполнять асинхронную обработку. Допустимые значения — это SQL_HANDLE_DBC или SQL_HANDLE_STMT.

Дескриптор
[Ввод] Ручка для выполнения асинхронной обработки. Если Handle не является действительным дескриптором типа, указанного в HandleType, SQLCompleteAsync возвращает SQL_INVALID_HANDLE.

Если Handle не является действительным дескриптором типа, указанного в HandleType, SQLCompleteAsync возвращает SQL_INVALID_HANDLE.

AsyncRetCodePtr
[Выход] Указатель на буфер, который будет содержать код возврата асинхронного API. Если AsyncRetCodePtr равно NULL, SQLCompleteAsync возвращает SQL_ERROR.

Returns

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 вызывается неправильно. SQLCompleteAsync не будет публиковать диагностические записи в этом случае. Возможные коды возврата:

  • SQL_INVALID_HANDLE: Дескриптор, указанный HandleType и Handle , не является действительным.

  • SQL_ERROR: AsyncRetCodePtr — это NULL или асинхронная обработка не включена на дескрипте.

  • SQL_NO_DATA: В режиме уведомления асинхронная операция не выполняется или менеджер драйверов не уведомляет приложение. В режиме опросов асинхронная операция не выполняется.

Comments

В режиме асинхронной обработки на основе опросов AsyncRetCodePtr может быть SQL_STILL_EXECUTING, когда SQLCompleteAsync возвращает SQL_SUCCESS. Приложение должно продолжать опросы до тех пор, пока AsyncRetCodePtr не будет SQL_STILL_EXECUTING. В режиме асинхронной обработки на основе уведомлений AsyncRetCodePtr никогда не будет SQL_STILL_EXECUTING.