Функция 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.

См. также

Асинхронное выполнение (метод опроса)