SQLCompleteAsync, funkcja

Zgodność
Wprowadzona wersja: ODBC 3.8 Zgodność ze standardami: brak

Podsumowanie
SQLCompleteAsync może być używany do określenia, kiedy funkcja asynchroniczna jest ukończona, korzystając z przetwarzania opartego na powiadomieniach lub odpytowaniu. Więcej informacji o operacjach asynchronicznych można znaleźć w artykule Asynchronous Execution.

SQLCompleteAsync jest zaimplementowany wyłącznie w Menedżerze Sterowników ODBC.

W trybie asynchronicznego przetwarzania opartym na powiadomieniach, SQLCompleteAsync musi być wywołany po tym, jak Driver Manager podniesie obiekt zdarzenia używany do powiadomień. SQLCompleteAsync kończy przetwarzanie asynchroniczne, a funkcja asynchroniczna generuje kod zwrotny.

W trybie przetwarzania asynchronicznego opartym na pollingu, SQLCompleteAsync jest alternatywą dla wywoływania oryginalnej funkcji asynchronicznej, bez konieczności określania argumentów w oryginalnym wywołaniu funkcji asynchronicznej. SQLCompleteAsync można używać niezależnie od tego, czy biblioteka kursorów ODBC jest włączona.

Syntax

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

Arguments

HandleType
[Input] Typ uchwytu, na którym wykonuje się przetwarzanie asynchroniczne. Wartościami ważnymi są SQL_HANDLE_DBC lub SQL_HANDLE_STMT.

Uchwyt
[Input] Uchwyt do wykonania asynchronicznego przetwarzania. Jeśli Handle nie jest poprawnym uchwytem typu określonego przez HandleType, SQLCompleteAsync zwraca SQL_INVALID_HANDLE.

Jeśli Handle nie jest poprawnym uchwytem typu określonego przez HandleType, SQLCompleteAsync zwraca SQL_INVALID_HANDLE.

AsyncRetCodePtr
[Wyjście] Wskaźnik do bufora, który będzie zawierał kod powrotny asynchronicznego API. Jeśli AsyncRetCodePtr jest NULL, SQLCompleteAsync zwraca SQL_ERROR.

Zwroty

SQL_SUCCESS, SQL_ERROR, SQL_NO_DATA lub SQL_INVALID_HANDLE.

Diagnostyka

Jeśli SQLCompleteAsync zwraca SQL_SUCCESS, aplikacja powinna otrzymać kod zwrotny funkcji asynchronicznej z bufora wskazanego przez AsyncRetCodePtr. Powiązany SQLSTATE, jeśli występuje, można uzyskać, wywołując SQLGetDiagRec za pomocą HandleType SQL_HANDLE_STMT i handle instrukcji lub HandleType SQL_HANDLE_DBC oraz uchwytu połączenia. Te rekordy diagnostyczne są powiązane z funkcją asynchroniczną, a nie z funkcją SQLCompleteAsync .

SQLCompleteAsync zwraca kod inny niż SQL_SUCCESS, wskazujący, że SQLCompleteAsync nie został poprawnie wywołany. SQLCompleteAsync nie publikuje w tym przypadku żadnego rekordu diagnostycznego. Możliwe kody zwrotne to:

  • SQL_INVALID_HANDLE: Uchwyt wskazany przez HandleType i Handle nie jest poprawnym handlem.

  • SQL_ERROR: AsyncRetCodePtr jest NULL lub przetwarzanie asynchroniczne nie jest włączone na uchwytie.

  • SQL_NO_DATA: W trybie powiadomień operacja asynchroniczna nie jest w toku lub Driver Manager nie powiadomił aplikacji. W trybie pollingu operacja asynchroniczna nie jest w toku.

Comments

W trybie asynchronicznego przetwarzania opartym na pollingu AsyncRetCodePtr może być SQL_STILL_EXECUTING, gdy SQLCompleteAsync zwraca SQL_SUCCESS. Aplikacja powinna kontynuować ankietę, dopóki AsyncRetCodePtr nie będzie SQL_STILL_EXECUTING. W trybie asynchronicznego przetwarzania opartym na powiadomieniach AsyncRetCodePtr nigdy nie zostanie SQL_STILL_EXECUTING.