Funzione SQLCompleteAsync
Conformità
Versione introdotta: Conformità agli standard ODBC 3.8: Nessuno
Riepilogo
SQLCompleteAsync può essere usato per determinare quando una funzione asincrona viene completata usando l'elaborazione basata su notifica o polling. Per altre informazioni sulle operazioni asincrone, vedere Esecuzione asincrona.
SQLCompleteAsync viene implementato solo in Gestione driver ODBC.
In modalità di elaborazione asincrona basata su notifica, è necessario chiamare SQLCompleteAsync dopo che Gestione driver genera l'oggetto evento usato per la notifica. SQLCompleteAsync completa l'elaborazione asincrona e la funzione asincrona genererà un codice restituito.
In modalità di elaborazione asincrona basata sul polling, SQLCompleteAsync è un'alternativa alla chiamata alla funzione asincrona originale, senza dover specificare gli argomenti nella chiamata di funzione asincrona originale. SQLCompleteAsync può essere usato indipendentemente dal fatto che la libreria di cursori ODBC sia abilitata.
Sintassi
SQLRETURN SQLCompleteAsync(
SQLSMALLINT HandleType,
SQLHANDLE Handle,
RETCODE * AsyncRetCodePtr);
Argomenti
HandleType
[Input] Tipo dell'handle in cui completare l'elaborazione asincrona. I valori validi sono SQL_HANDLE_DBC o SQL_HANDLE_STMT.
Handle
[Input] Handle in cui completare l'elaborazione asincrona. Se Handle non è un handle valido del tipo specificato da HandleType, SQLCompleteAsync restituisce SQL_INVALID_HANDLE.
Se Handle non è un handle valido del tipo specificato da HandleType, SQLCompleteAsync restituisce SQL_INVALID_HANDLE.
AsyncRetCodePtr
[Output] Puntatore a un buffer che conterrà il codice restituito dell'API asincrona. Se AsyncRetCodePtr è NULL, SQLCompleteAsync restituisce SQL_ERROR.
Resi
SQL_SUCCESS, SQL_ERROR, SQL_NO_DATA o SQL_INVALID_HANDLE.
Diagnostica
Se SQLCompleteAsync restituisce SQL_SUCCESS, un'applicazione deve ottenere il codice restituito della funzione asincrona dal buffer a cui punta AsyncRetCodePtr. L'oggetto SQLSTATE associato, se presente, può essere ottenuto chiamando SQLGetDiagRec con handleType di SQL_HANDLE_STMT e un handle di istruzione o handle HandleType di SQL_HANDLE_DBC e un handle di connessione. Tali record di diagnostica sono associati alla funzione asincrona, non a questa funzione SQLCompleteAsync .
SQLCompleteAsync restituisce un codice diverso da SQL_SUCCESS per indicare che SQLCompleteAsync non viene chiamato correttamente. IN questo caso SQLCompleteAsync non inserirà alcun record di diagnostica. I codici restituiti possibili sono:
SQL_INVALID_HANDLE: l'handle indicato da HandleType e Handle non è un handle valido.
SQL_ERROR: AsyncRetCodePtr è NULL o l'elaborazione asincrona non è abilitata nell'handle.
SQL_NO_DATA: in modalità di notifica, un'operazione asincrona non è in corso o Gestione driver non ha informato l'applicazione. In modalità di polling, un'operazione asincrona non è in corso.
Commenti
In modalità di elaborazione asincrona basata sul polling, AsyncRetCodePtr potrebbe essere SQL_STILL_EXECUTING quando SQLCompleteAsync restituisce SQL_SUCCESS. L'applicazione deve continuare a eseguire il polling finché AsyncRetCodePtr non è SQL_STILL_EXECUTING. In modalità di elaborazione asincrona basata su notifica, AsyncRetCodePtr non verrà mai SQL_STILL_EXECUTING.