Freigeben über


SQLCompleteAsync-Funktion

Konformität
Version eingeführt: ODBC 3.8-Standardkonformität: Keine

Zusammenfassung
SQLCompleteAsync kann verwendet werden, um zu bestimmen, wann eine asynchrone Funktion über die benachrichtigungs- oder abfragebasierte Verarbeitung abgeschlossen ist. Weitere Informationen zu asynchronen Vorgängen finden Sie unter Asynchrone Ausführung.

SQLCompleteAsync wird nur im ODBC-Treiber-Manager implementiert.

Im benachrichtigungsbasierten asynchronen Verarbeitungsmodus muss SQLCompleteAsync aufgerufen werden, nachdem der Treiber-Manager das für die Benachrichtigung verwendete Ereignisobjekt ausgelöst hat. SQLCompleteAsync schließt die asynchrone Verarbeitung ab, und die asynchrone Funktion generiert einen Rückgabecode.

Beim Abfragen des asynchronen Verarbeitungsmodus ist SQLCompleteAsync eine Alternative zum Aufrufen der ursprünglichen asynchronen Funktion, ohne dass die Argumente im ursprünglichen asynchronen Funktionsaufruf angegeben werden müssen. SQLCompleteAsync kann unabhängig davon verwendet werden, ob die ODBC-Cursorbibliothek aktiviert ist.

Syntax

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

Argumente

HandleType
[Eingabe] Der Typ des Handles, für den die asynchrone Verarbeitung abgeschlossen werden soll. Gültige Werte sind SQL_HANDLE_DBC oder SQL_HANDLE_STMT.

Handle
[Eingabe] Der Handle, für den die asynchrone Verarbeitung abgeschlossen werden soll. Wenn Handle kein gültiges Handle des durch HandleType angegebenen Typs ist, gibt SQLCompleteAsync SQL_INVALID_HANDLE zurück.

Wenn Handle kein gültiges Handle des durch HandleType angegebenen Typs ist, gibt SQLCompleteAsync SQL_INVALID_HANDLE zurück.

AsyncRetCodePtr
[Ausgabe] Zeiger auf einen Puffer, der den Rückgabecode der asynchronen API enthält. Wenn AsyncRetCodePtr NULL ist, gibt SQLCompleteAsync SQL_ERROR zurück.

Gibt zurück

SQL_SUCCESS, SQL_ERROR, SQL_NO_DATA oder SQL_INVALID_HANDLE.

Diagnose

Wenn SQLCompleteAsync SQL_SUCCESS zurückgibt, sollte eine Anwendung den Rückgabecode der asynchronen Funktion aus dem Puffer abrufen, auf den AsyncRetCodePtr verweist. Der zugeordnete SQLSTATE kann, falls vorhanden, durch Aufrufen von SQLGetDiagRec mit einem HandleType von SQL_HANDLE_STMT und einem Anweisungshandle oder einem HandleType von SQL_HANDLE_DBC und einem Verbindungshandle abgerufen werden. Diese Diagnosedatensätze sind der asynchronen Funktion zugeordnet, nicht dieser SQLCompleteAsync-Funktion .

SQLCompleteAsync gibt einen anderen Code als SQL_SUCCESS zurück, um anzugeben, dass SQLCompleteAsync nicht ordnungsgemäß aufgerufen wird. SQLCompleteAsync poste in diesem Fall keinen Diagnosedatensatz. Mögliche Rückgabecodes sind:

  • SQL_INVALID_HANDLE: Das von HandleType und Handle angegebene Handle ist kein gültiges Handle.

  • SQL_ERROR: AsyncRetCodePtr ist NULL, oder die asynchrone Verarbeitung ist für das Handle nicht aktiviert.

  • SQL_NO_DATA: Im Benachrichtigungsmodus wird kein asynchroner Vorgang ausgeführt, oder der Treiber-Manager hat die Anwendung nicht benachrichtigt. Im Abrufmodus wird kein asynchroner Vorgang ausgeführt.

Kommentare

Im asynchronen Verarbeitungsmodus wird AsyncRetCodePtr möglicherweise SQL_STILL_EXECUTING, wenn SQLCompleteAsync SQL_SUCCESS zurückgibt. Die Anwendung sollte weiterhin abfragen, bis AsyncRetCodePtr nicht SQL_STILL_EXECUTING ist. Im benachrichtigungsbasierten asynchronen Verarbeitungsmodus wird AsyncRetCodePtr nie SQL_STILL_EXECUTING.

Weitere Informationen

Asynchrone Ausführung (Abfragemethode)