SQLCloseCursor 函数

一致性
推出版本:ODBC 3.0 标准合规:ISO 92

总结
SQLCloseCursor 会关闭已打开的语句中的光标并丢弃待处理的结果。

Syntax

  
SQLRETURN SQLCloseCursor(  
     SQLHSTMT     StatementHandle);  

Arguments

StatementHandle
[输入]语句句柄。

Returns

SQL_SUCCESS、SQL_SUCCESS_WITH_INFO、SQL_ERROR 或SQL_INVALID_HANDLE。

诊断

SQLCloseCursor 返回 SQL_ERROR 或 SQL_SUCCESS_WITH_INFO 时,可以通过调用 SQLGetDiagRec 获得关联的 SQLSTATE 值,Handle 为 SQL_HANDLE_STMT,Handle 为 StatementHandle 下表列出 了SQLCloseCursor 通常返回的SQLSTATE值,并在该函数的上下文中逐一解释;“(DM)” 符号位于驱动程序管理器返回的 SQLSTATE 描述之前。 除非另有说明,否则与每个 SQLSTATE 值关联的返回代码SQL_ERROR。

SQLSTATE Error Description
01000 常规警告 特定于驱动程序的信息性消息。 (函数返回SQL_SUCCESS_WITH_INFO。)
24000 游标状态无效 StatementHandle 上没有打开任何光标。 (仅由ODBC 3回传。x 驱动。)
HY000 常规错误 发生错误:没有特定的 SQLSTATE,也没有定义特定于实现的 SQLSTATE。 *MessageText 缓冲区中 SQLGetDiagRec 返回的错误消息描述错误及其原因。
HY001 内存分配错误 驱动程序无法分配支持执行或完成函数所需的内存。
HY010 函数序列错误 (DM) 调用了一个异步执行函数,用于与 StatementHandle 关联的连接句柄,且在调用该函数时仍在执行。

(DM) 为 StatementHandle 调用异步执行函数,并在调用此函数时仍在执行。

(DM) 为 StatementHandle 调用了 SQLExecuteSQLExecDirectSQLBulkOperationsSQLSetPos,并返回了SQL_NEED_DATA。 在为所有数据执行参数或列发送数据之前调用此函数。
HY013 内存管理错误 无法处理函数调用,因为基础内存对象无法访问,可能是因为内存条件低。
HY117 连接因未知事务状态而挂起。 仅允许断开连接和只读函数。 (DM) 有关挂起状态的详细信息,请参阅 SQLEndTran 函数
HYT01 超过连接超时时间 在数据源响应请求之前,连接超时期限已过期。 连接超时期限通过 SQLSetConnectAttr 设置,SQL_ATTR_CONNECTION_TIMEOUT。
IM001 驱动程序不支持此函数 (DM) 与 StatementHandle 关联的驱动程序不支持该函数。

Comments

如果没有打开光标,SQLCloseCursor 返回 SQLSTATE 24000(光标状态无效)。 调用 SQLCloseCursor 等同于使用 SQL_CLOSE 选项调用 SQLFreeStmt ,不同的是,如果语句中没有打开光标, SQLFreeStmt SQL_CLOSE 对应用程序没有影响,而 SQLCloseCursor 返回的是 SQLSTATE 24000(光标状态无效)。

注释

如果是ODBC 3。x 应用与ODBC 2合作。x 驱动在未打开光标时调用 SQLCloseCursor,SQLSTATE 24000(无效光标状态)未返回,因为驱动程序管理器将 SQLCloseCursor 映射为 SQLFreeStmt SQL_CLOSE。

更多信息请参见 关闭光标

代码示例

参见 SQLBrowseConnect 函数SQLConnect 函数

有关以下内容的信息 请参阅
取消语句处理 SQLCancel 函数
释放手柄 SQLFreeHandle 函数
处理多个结果集 SQLMoreResults 函数