Función SQLCompleteAsync

Conformidad
Versión introducida: Cumplimiento de estándares ODBC 3.8: Ninguno

Resumen
SQLCompleteAsync se puede usar para determinar cuándo se completa una función asincrónica mediante el procesamiento basado en notificaciones o sondeos. Para obtener más información sobre las operaciones asincrónicas, vea Ejecución asincrónica.

SQLCompleteAsync solo se implementa en el Administrador de controladores ODBC.

En el modo de procesamiento asincrónico basado en notificaciones, se debe llamar a SQLCompleteAsync después de que el Administrador de controladores genere el objeto de evento usado para la notificación. SQLCompleteAsync completa el procesamiento asincrónico y la función asincrónica generará un código de retorno.

En el modo de procesamiento asincrónico basado en sondeo, SQLCompleteAsync es una alternativa a llamar a la función asincrónica original, sin necesidad de especificar los argumentos en la llamada de función asincrónica original. SQLCompleteAsync se puede usar independientemente de si la biblioteca de cursores ODBC está habilitada.

Sintaxis

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

Argumentos

HandleType
[Entrada] Tipo del identificador en el que se va a completar el procesamiento asincrónico. Los valores válidos son SQL_HANDLE_DBC o SQL_HANDLE_STMT.

Handle
[Entrada] Identificador en el que se va a completar el procesamiento asincrónico. Si Handle no es un identificador válido del tipo especificado por HandleType, SQLCompleteAsync devuelve SQL_INVALID_HANDLE.

Si Handle no es un identificador válido del tipo especificado por HandleType, SQLCompleteAsync devuelve SQL_INVALID_HANDLE.

AsyncRetCodePtr
[Salida] Puntero a un búfer que contendrá el código de retorno de la API asincrónica. Si AsyncRetCodePtr es NULL, SQLCompleteAsync devuelve SQL_ERROR.

Devoluciones

SQL_SUCCESS, SQL_ERROR, SQL_NO_DATA o SQL_INVALID_HANDLE.

Diagnóstico

Si SQLCompleteAsync devuelve SQL_SUCCESS, una aplicación debe obtener el código de retorno de la función asincrónica del búfer al que apunta AsyncRetCodePtr. El SQLSTATE asociado, si existe, se puede obtener mediante una llamada a SQLGetDiagRec con un HandleType de SQL_HANDLE_STMT y un identificador de instrucción o un handleType de SQL_HANDLE_DBC y un identificador de conexión. Estos registros de diagnóstico están asociados a la función asincrónica, no a esta función SQLCompleteAsync .

SQLCompleteAsync devuelve un código distinto de SQL_SUCCESS para indicar que SQLCompleteAsync no se llama correctamente. SQLCompleteAsync no publicará ningún registro de diagnóstico en este caso. Los códigos de retorno posibles son:

  • SQL_INVALID_HANDLE: el identificador indicado por HandleType y Handle no es un identificador válido.

  • SQL_ERROR: AsyncRetCodePtr es NULL o el procesamiento asincrónico no está habilitado en el identificador.

  • SQL_NO_DATA: en el modo de notificación, una operación asincrónica no está en curso o el Administrador de controladores no ha notificado a la aplicación. En el modo de sondeo, una operación asincrónica no está en curso.

Comentarios

En el modo de procesamiento asincrónico basado en sondeo, AsyncRetCodePtr puede ser SQL_STILL_EXECUTING cuando SQLCompleteAsync devuelve SQL_SUCCESS. La aplicación debe seguir sondeando hasta que AsyncRetCodePtr no sea SQL_STILL_EXECUTING. En el modo de procesamiento asincrónico basado en notificaciones, AsyncRetCodePtr nunca será SQL_STILL_EXECUTING.

Consulte también

Ejecución asincrónica (método de sondeo)