Função SQLCompleteAsync

Conformidade
Versão Introduzida: Conformidade com as Normas ODBC 3.8: Nenhuma

Summary
O SQLCompleteAsync pode ser usado para determinar quando uma função assíncrona está completa, utilizando processamento baseado em notificações ou sondagens. Para mais informações sobre operações assíncronas, veja Execução Assíncrona.

O SQLCompleteAsync é implementado apenas no ODBC Driver Manager.

No modo de processamento assíncrono baseado em notificações, o SQLCompleteAsync deve ser chamado depois de o Gestor de Drivers levantar o objeto de evento usado para notificação. SQLCompleteAsync completa o processamento assíncrono e a função assíncrona gera um código de retorno.

No modo de processamento assíncrono baseado em polling, o SQLCompleteAsync é uma alternativa à chamada da função assíncrona original, sem necessidade de especificar os argumentos na chamada original da função assíncrona. O SQLCompleteAsync pode ser usado independentemente de a Biblioteca de Cursores ODBC estar ativada.

Syntax

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

Arguments

HandleType
[Entrada] O tipo de alavanca para completar o processamento assíncrono. Os valores válidos são SQL_HANDLE_DBC ou SQL_HANDLE_STMT.

Manípulo
[Entrada] A alavanca para completar o processamento assíncrono. Se o Handle não for um handle válido do tipo especificado pelo HandleType, o SQLCompleteAsync devolve SQL_INVALID_HANDLE.

Se o Handle não for um handle válido do tipo especificado pelo HandleType, o SQLCompleteAsync devolve SQL_INVALID_HANDLE.

AsyncRetCodePtr
[Saída] Apontador para um buffer que conterá o código de retorno da API assíncrona. Se AsyncRetCodePtr for NULL, SQLCompleteAsync devolve SQL_ERROR.

Devoluções

SQL_SUCCESS, SQL_ERROR, SQL_NO_DATA ou SQL_INVALID_HANDLE.

Diagnósticos

Se o SQLCompleteAsync devolver SQL_SUCCESS, uma aplicação deve obter o código de retorno da função assíncrona do buffer apontado pelo AsyncRetCodePtr. O SQLSTATE associado, se existir, pode ser obtido chamando SQLGetDiagRec com um HandleType de SQL_HANDLE_STMT e um handle de instrução ou um HandleType de SQL_HANDLE_DBC e um handle de ligação. Esses registos de diagnóstico estão associados à função assíncrona, não a esta função SQLCompleteAssíncrona .

O SQLCompleteAsync devolve um código diferente de SQL_SUCCESS para indicar que o SQLCompleteAsync não é chamado corretamente. Neste caso, o SQLCompleteAsync não publicará qualquer registo de diagnóstico. Os possíveis códigos de retorno são:

  • SQL_INVALID_HANDLE: O handle indicado por HandleType e Handle não é um handle válido.

  • SQL_ERROR: O AsyncRetCodePtr é NULL ou o processamento assíncrono não está ativado no handle.

  • SQL_NO_DATA: Em modo de notificação, nenhuma operação assíncrona está em curso ou o Gestor de Drivers não notificou a aplicação. Em modo de sondagem, não está em curso uma operação assíncrona.

Comments

No modo de processamento assíncrono baseado em polling, o AsyncRetCodePtr pode ser SQL_STILL_EXECUTING quando o SQLCompleteAsync devolve SQL_SUCCESS. A aplicação deve continuar a fazer sondagens até que o AsyncRetCodePtr não seja SQL_STILL_EXECUTING. Em modo de processamento assíncrono baseado em notificações, o AsyncRetCodePtr nunca será SQL_STILL_EXECUTING.