SQLCloseCursor, funkcja

Zgodność
Wprowadzona wersja: Zgodność z normami ODBC 3.0: ISO 92

Podsumowanie
SQLCloseCursor zamyka kursor, który został otwarty na wyrażeniu, i odrzuca oczekujące wyniki.

Syntax

  
SQLRETURN SQLCloseCursor(  
     SQLHSTMT     StatementHandle);  

Arguments

StatementHandle
[Dane wejściowe] Uchwyt instrukcji.

Zwroty

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR lub SQL_INVALID_HANDLE.

Diagnostyka

Gdy SQLCloseCursor zwraca SQL_ERROR lub SQL_SUCCESS_WITH_INFO, można uzyskać powiązaną wartość SQLSTATE, wywołując SQLGetDiagRec z HandleType SQL_HANDLE_STMT oraz HandleStatementHandle. Poniższa tabela przedstawia wartości SQLSTATE najczęściej zwracane przez SQLCloseCursor i wyjaśnia każdą z nich w kontekście tej funkcji; notacja "(DM)" poprzedza opisy stanów SQL zwracanych przez Menedżera Sterowników. Kod zwracany skojarzony z każdą wartością SQLSTATE jest SQL_ERROR, chyba że określono inaczej.

SQLSTATE Error Description
01000 Ostrzeżenie ogólne Komunikat informacyjny specyficzny dla sterownika. (Funkcja zwraca SQL_SUCCESS_WITH_INFO).
24000 Nieprawidłowy stan kursora Na StatementHandle nie było otwartego kursora. (Zwraca się tylko przez ODBC 3. x driver.)
HY000 Błąd ogólny Wystąpił błąd, dla którego nie było określonego stanu SQLSTATE i dla którego nie zdefiniowano parametru SQLSTATE specyficznego dla implementacji. Komunikat o błędzie zwrócony przez element SQLGetDiagRec w buforze *MessageText opisuje błąd i jego przyczynę.
HY001 Błąd alokacji pamięci Sterownik nie może przydzielić pamięci wymaganej do obsługi wykonywania lub ukończenia funkcji.
HY010 Błąd sekwencji funkcji (DM) Funkcja wykonująca się asynchronicznie została wywołana dla uchwytu połączenia powiązanego z CommandHandle i nadal działała, gdy ta funkcja została wywołana.

(DM) Funkcja wykonująca asynchronicznie została wywołana dla CommandHandle i nadal działała, gdy ta funkcja została wywołana.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations lub SQLSetPos został wywołany dla instrukcjiHandle i zwrócił SQL_NEED_DATA. Ta funkcja została wywołana przed wysłaniem danych dla wszystkich parametrów wykonywania danych lub kolumn.
HY013 Błąd zarządzania pamięcią Nie można przetworzyć wywołania funkcji, ponieważ nie można uzyskać dostępu do bazowych obiektów pamięci, prawdopodobnie z powodu niskich warunków pamięci.
HY117 Połączenie jest zawieszone z powodu nieznanego stanu transakcji. Dozwolone są tylko funkcje rozłączania i tylko do odczytu. (DM) Aby uzyskać więcej informacji na temat stanu wstrzymania, zobacz SQLEndTran, funkcja.
HYT01 Upłynął limit czasu połączenia Okres przekroczenia limitu czasu połączenia wygasł, zanim źródło danych odpowiedziało na żądanie. Limit czasu połączenia jest ustawiany za pomocą parametru SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Sterownik nie obsługuje tej funkcji (DM) Sterownik skojarzony z instrukcją StatementHandle nie obsługuje funkcji.

Comments

SQLCloseCursor zwraca SQLSTATE 24000 (Nieprawidłowy stan kursora), jeśli żaden kursor nie jest otwarty. Wywołanie SQLCloseCursor jest równoważne wywołaniu SQLFreeStmt z opcją SQL_CLOSE, z tą różnicą, że SQLFreeStmt z SQL_CLOSE nie wpływa na aplikację, jeśli na instrukcji nie ma otwartego kursora, podczas gdy SQLCloseCursor zwraca SQLSTATE 24000 (Nieprawidłowy stan kursora).

Note

Jeśli ODBC 3. x aplikacja pracująca z ODBC 2. x sterownik wywołuje SQLCloseCursor , gdy żaden kursor nie jest otwarty, SQLSTATE 24000 (Nieprawidłowy stan kursora) nie jest zwracany, ponieważ Driver Manager mapuje SQLCloseCursor na SQLFreeStmt z SQL_CLOSE.

Więcej informacji można znaleźć w artykule Zamknięcie kursora.

Przykład kodu

Zobacz funkcje SQLBrowseConnect oraz funkcje SQLConnect.

Aby uzyskać informacje o Zobacz
Anulowanie przetwarzania instrukcji SQLCancel, funkcja
Uwalnianie uchwytu Funkcja SQLFreeHandle
Przetwarzanie wielu zestawów wyników Funkcja SQLMoreResults