Функция SQLCloseCursor

Соответствие
Введенная версия: Соответствие стандартам ODBC 3.0: ISO 92

Сводка
SQLCloseCursor закрывает открытый курсор на выписке и отбрасывает ожидающие результаты.

Syntax

  
SQLRETURN SQLCloseCursor(  
     SQLHSTMT     StatementHandle);  

Arguments

ОператорHandle
[Входные данные] Дескриптор инструкции.

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR или SQL_INVALID_HANDLE.

Diagnostics

Когда SQLCloseCursor возвращает SQL_ERROR или SQL_SUCCESS_WITH_INFO, связанное значение SQLSTATE можно получить, вызвав SQLGetDiagRec с помощью HandleType SQL_HANDLE_STMT и HandleHandleStatementHandle. В следующей таблице перечислены значения SQLSTATE, которые обычно возвращает SQLCloseCursor , и каждое из них объясняется в контексте этой функции; обозначение «(DM)» предшествует описаниям SQLSTATE, возвращаемым менеджером драйверов. Возвращаемый код, связанный с каждым значением SQLSTATE, SQL_ERROR, если не указано иное.

SQLSTATE Error Description
01000 Общее предупреждение Информационное сообщение для конкретного драйвера. (Функция возвращает SQL_SUCCESS_WITH_INFO.)
24000 Недопустимое состояние курсора Курсор на StatementHandle не был открыт. (Это возвращается только ODBC 3. Драйвер X .)
HY000 Общая ошибка Произошла ошибка, для которой не было определенного SQLSTATE и для которого не было определено значение SQLSTATE для конкретной реализации. Сообщение об ошибке, возвращаемое SQLGetDiagRec в буфере *MessageText , описывает ошибку и ее причину.
HY001 Ошибка выделения памяти Драйверу не удалось выделить память, необходимую для поддержки выполнения или завершения функции.
HY010 Ошибка последовательности функций (DM) Асинхронно выполняющаяся функция вызывалась для дескриптора соединения, связанного с StatementHandle , и она всё ещё выполнялась, когда эта функция была вызвана.

(DM) асинхронно выполняющаяся функция была вызвана для StatementHandle и по-прежнему выполнялась при вызове этой функции.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations или SQLSetPos были вызваны для ОператораHandle и возвращены SQL_NEED_DATA. Эта функция была вызвана до отправки данных для всех параметров выполнения или столбцов.
HY013 Ошибка управления памятью Не удалось обработать вызов функции, так как к базовым объектам памяти не удалось получить доступ, возможно, из-за низкой памяти.
HY117 Подключение приостановлено из-за неизвестного состояния транзакции. Разрешены только функции отключения и только для чтения. (DM) Дополнительные сведения о приостановленном состоянии см. в статье SQLEndTran Function.
HYT01 Время ожидания для подключения истекло Срок ожидания подключения истек до того, как источник данных ответил на запрос. Период времени ожидания подключения задается через SQLSetConnectAttr SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Драйвер не поддерживает эту функцию (DM) Драйвер, связанный с StatementHandle , не поддерживает функцию.

Comments

SQLCloseCursor возвращает SQLSTATE 24000 (состояние курсора недействительно), если курсор открыт. Вызов SQLCloseCursor эквивалентен вызову SQLFreeStmt с опцией SQL_CLOSE, за исключением того, что SQLFreeStmt с SQL_CLOSE не влияет на приложение, если курсор открыт на операторе, тогда как SQLCloseCursor возвращает SQLSTATE 24000 (состояние курсора недействительно).

Замечание

Если ODBC 3. x приложение, работающее с ODBC 2. Драйвер xвызывает SQLCloseCursor , когда курсор открыт, SQLSTATE 24000 (состояние недействительного курсора) не возвращается, потому что менеджер драйверов отображает SQLCloseCursor в SQLFreeStmt с SQL_CLOSE.

Для получения дополнительной информации см. раздел «Закрытие курсора».

Пример кода

См. SQLBrowseConnect Function и SQLConnect Function.

Сведения о Смотри
Отмена обработки инструкций Функция SQLCancel
Освобождение ручки Функция SQLFreeHandle
Обработка нескольких наборов результатов Функция SQLMoreResults