Funkce SQLCompleteAsync

Soulad
Představená verze: ODBC 3.8 Shoda standardů: Žádná

Summary
SQLCompleteAsync lze použít k určení, kdy je asynchronní funkce dokončena, pomocí zpracování založeného na notifikacích nebo dotazování. Pro více informací o asynchronních operacích viz Asynchronous Execution.

SQLCompleteAsync je implementován pouze ve Správci ovladačů ODBC.

V asynchronním režimu zpracování založeném na notifikacích je nutné SQLCompleteAsync volat poté, co Driver Manager vyvolá objekt události použitý pro oznámení. SQLCompleteAsync dokončuje asynchronní zpracování a asynchronní funkce vygeneruje návratový kód.

V asynchronním režimu zpracování založeném na pollingu je SQLCompleteAsync alternativou k volání původní asynchronní funkce, aniž by bylo nutné specifikovat argumenty v původním asynchronním volání. SQLCompleteAsync lze používat bez ohledu na to, zda je knihovna kurzorů ODBC povolena.

Syntax

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

Arguments

HandleType
[Vstup] Typ rukojeti, na které se provádí asynchronní zpracování. Platné hodnoty jsou SQL_HANDLE_DBC nebo SQL_HANDLE_STMT.

Ukazatel
[Vstup] Rukojeť pro dokončení asynchronního zpracování. Pokud Handle není platný handle typu specifikovaného HandleType, SQLCompleteAsync vrátí SQL_INVALID_HANDLE.

Pokud Handle není platný handle typu specifikovaného HandleType, SQLCompleteAsync vrátí SQL_INVALID_HANDLE.

AsyncRetCodePtr
[Výstup] Ukazatel na buffer, který bude obsahovat return code asynchronního API. Pokud je AsyncRetCodePtr NULL, SQLCompleteAsync vrátí SQL_ERROR.

Returns

SQL_SUCCESS, SQL_ERROR, SQL_NO_DATA nebo SQL_INVALID_HANDLE.

Diagnostika

Pokud SQLCompleteAsync vrací SQL_SUCCESS, aplikace by měla získat zpětný kód asynchronní funkce z bufferu, na který ukazuje AsyncRetCodePtr. Související SQLSTATE, pokud existuje, lze získat voláním SQLGetDiagRec pomocí HandleType SQL_HANDLE_STMT a příkazové rukojeti, nebo HandleType SQL_HANDLE_DBC a connection handle. Tyto diagnostické záznamy jsou spojeny s asynchronní funkcí, nikoli s touto funkcí SQLCompleteAsync .

SQLCompleteAsync vrací kód jiný než SQL_SUCCESS, který indikuje, že SQLCompleteAsync není správně volán. SQLCompleteAsync v tomto případě nezveřejní žádný diagnostický záznam. Možné zpětné kódy jsou:

  • SQL_INVALID_HANDLE: Handle označený HandleType a Handle není platný.

  • SQL_ERROR: AsyncRetCodePtr je NULL nebo asynchronní zpracování není na handle povoleno.

  • SQL_NO_DATA: V režimu oznámení neprobíhá asynchronní operace nebo Driver Manager aplikaci neupozornil. V režimu dotazování neprobíhá asynchronní operace.

Comments

V asynchronním režimu zpracování založeném na pollingu může být AsyncRetCodePtr SQL_STILL_EXECUTING, když SQLCompleteAsync vrací SQL_SUCCESS. Aplikace by měla pokračovat v dotazování, dokud AsyncRetCodePtr nebude SQL_STILL_EXECUTING. V asynchronním režimu zpracování založeném na notifikacích nebude AsyncRetCodePtr nikdy SQL_STILL_EXECUTING.