Função SQLCompleteAsync

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

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

SQLCompleteAsync é implementado apenas no Gerenciador de Drivers ODBC.

No modo de processamento assíncrono baseado em notificações, o SQLCompleteAsync deve ser chamado após o Driver Manager levantar o objeto de evento usado para notificação. SQLCompleteAsync completa o processamento assíncrono e a função assíncrona gerará um código de retorno.

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

Sintaxe

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

Argumentos

HandleType
[Entrada] O tipo da alça na qual se deve completar o processamento assíncrono. Valores válidos são SQL_HANDLE_DBC ou SQL_HANDLE_STMT.

Manejar
[Entrada] A alça para completar o processamento assíncrono. Se o Handle não for um handle válido do tipo especificado pelo HandleType, o SQLCompleteAsync retorna SQL_INVALID_HANDLE.

Se o Handle não for um handle válido do tipo especificado pelo HandleType, o SQLCompleteAsync retorna 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 retorna SQL_ERROR.

Returns

SQL_SUCCESS, SQL_ERROR, SQL_NO_DATA ou SQL_INVALID_HANDLE.

Diagnostics

Se SQLCompleteAsync retornar 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 houver, 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 conexão. Esses registros diagnósticos estão associados à função assíncrona, não a essa função SQLCompleteAssíncrona .

SQLCompleteAsync retorna um código diferente de SQL_SUCCESS para indicar que SQLCompleteAsync não é chamado corretamente. O SQLCompleteAsync não publicará nenhum registro de diagnóstico nesse caso. Códigos de retorno possíveis são:

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

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

  • SQL_NO_DATA: No modo de notificação, uma operação assíncrona não está em andamento ou o Gerenciador de Drivers não notificou a aplicação. No modo de polling, uma operação assíncrona não está em andamento.

Comments

No modo de processamento assíncrono baseado em polling, o AsyncRetCodePtr pode ser SQL_STILL_EXECUTING quando o SQLCompleteAsync retorna SQL_SUCCESS. A aplicação deve continuar fazendo polling até que o AsyncRetCodePtr não esteja SQL_STILL_EXECUTING. No modo de processamento assíncrono baseado em notificações, o AsyncRetCodePtr nunca será SQL_STILL_EXECUTING.