Функция SQLCompleteAsync
Соответствия
Представлена версия: соответствие стандартам ODBC 3.8: нет
Сводка
SQLCompleteAsync можно использовать для определения завершения асинхронной функции с помощью обработки на основе уведомлений или опроса. Дополнительные сведения об асинхронных операциях см. в разделе "Асинхронное выполнение".
SQLCompleteAsync реализуется только в диспетчере драйверов ODBC.
В режиме асинхронной обработки на основе уведомлений sqlCompleteAsync необходимо вызвать после вызова диспетчера драйверов объекта события, используемого для уведомления. SQLCompleteAsync завершает асинхронную обработку, а асинхронная функция создаст код возврата.
В режиме асинхронной обработки на основе опроса SQLCompleteAsync является альтернативой вызову исходной асинхронной функции без необходимости указывать аргументы в исходном асинхронном вызове функции. SQLCompleteAsync можно использовать независимо от того, включена ли библиотека курсоров ODBC.
Синтаксис
SQLRETURN SQLCompleteAsync(
SQLSMALLINT HandleType,
SQLHANDLE Handle,
RETCODE * AsyncRetCodePtr);
Аргументы
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.
Возвраты
SQL_SUCCESS, SQL_ERROR, SQL_NO_DATA или SQL_INVALID_HANDLE.
Диагностика
Если SQLCompleteAsync возвращает SQL_SUCCESS, приложение должно получить возвращаемый код асинхронной функции из буфера, на который указывает AsyncRetCodePtr. Связанный SQLSTATE, если таковой есть, можно получить путем вызова SQLGetDiagRec с обработчиком SQL_HANDLE_STMT и дескриптором инструкции или дескриптором дескриптора SQL_HANDLE_DBC и дескриптором соединения. Эти диагностические записи связаны с асинхронной функцией, а не этой функцией SQLCompleteAsync .
SQLCompleteAsync возвращает код, отличный от SQL_SUCCESS, чтобы указать, что SQLCompleteAsync не вызывается правильно. SQLCompleteAsync не будет публиковать диагностические записи в этом случае. Возможные коды возврата:
SQL_INVALID_HANDLE. Дескриптор, указанный HandleType и Handle, не является допустимым дескриптором .
SQL_ERROR. AsyncRetCodePtr имеет значение NULL или асинхронная обработка не включена в дескриптор.
SQL_NO_DATA. В режиме уведомлений асинхронная операция не выполняется или диспетчер драйверов уведомил приложение. В режиме опроса асинхронная операция не выполняется.
Комментарии
В режиме асинхронной обработки на основе опроса AsyncRetCodePtr может быть SQL_STILL_EXECUTING, когда SQLCompleteAsync возвращает SQL_SUCCESS. Приложение должно продолжать опрос до тех пор, пока AsyncRetCodePtr не SQL_STILL_EXECUTING. В режиме асинхронной обработки на основе уведомлений AsyncRetCodePtr никогда не будет SQL_STILL_EXECUTING.