Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.