SQLCloseCursor 函数
一致性
引入的版本:ODBC 3.0 标准符合性:ISO 92
摘要
SQLCloseCursor 关闭已在语句上打开的游标,并放弃挂起的结果。
语法
SQLRETURN SQLCloseCursor(
SQLHSTMT StatementHandle);
参数
StatementHandle
[输入]语句句柄。
返回
SQL_SUCCESS、SQL_SUCCESS_WITH_INFO、SQL_ERROR 或 SQL_INVALID_HANDLE。
诊断
当 SQLCloseCursor 返回SQL_ERROR或SQL_SUCCESS_WITH_INFO时,可以通过调用 SQLGetDiagRec 来获取关联的 SQLSTATE 值,该 SQLGetDiagRec 的 HandleType 为 SQL_HANDLE_STMT 和 Handle of StatementHandle。 下表列出了 SQLCloseCursor 通常返回的 SQLSTATE 值,并说明了此函数上下文中的每个值:表示法“ (DM) ”位于驱动程序管理器返回的 SQLSTATEs 说明之前。 与每个 SQLSTATE 值关联的返回代码SQL_ERROR,除非另有说明。
SQLSTATE | 错误 | 说明 |
---|---|---|
01000 | 常规警告 | 特定于驱动程序的信息性消息。 (函数返回 SQL_SUCCESS_WITH_INFO.) |
24000 | 游标状态无效 | StatementHandle 上没有打开光标。 (它仅由 ODBC 3 返回。x driver.) |
HY000 | 常规错误 | 发生错误,其中没有特定的 SQLSTATE,并且没有定义特定于实现的 SQLSTATE。 *MessageText 缓冲区中 SQLGetDiagRec 返回的错误消息描述了错误及其原因。 |
HY001 | 内存分配错误 | 驱动程序无法分配支持执行或完成函数所需的内存。 |
HY010 | 函数序列错误 | (DM) 为与 StatementHandle 关联的连接句柄调用了异步执行的函数,并在调用此函数时仍在执行。 (DM) 为 StatementHandle 调用了异步执行的函数,并在调用此函数时仍在执行。 (DM) SQLExecute、 SQLExecDirect、 SQLBulkOperations 或 SQLSetPos 已为 StatementHandle 调用并返回SQL_NEED_DATA。 在为所有数据执行时参数或列发送数据之前调用了此函数。 |
HY013 | 内存管理错误 | 无法处理函数调用,因为无法访问基础内存对象,可能是因为内存不足。 |
HY117 | 由于未知的事务状态,连接已挂起。 仅允许断开连接和只读函数。 | (DM) 有关挂起状态的详细信息,请参阅 SQLEndTran 函数。 |
HYT01 | 超过连接超时时间 | 在数据源响应请求之前,连接超时期限已过期。 连接超时期限是通过 SQLSetConnectAttr SQL_ATTR_CONNECTION_TIMEOUT设置的。 |
IM001 | 驱动程序不支持此函数 | (DM) 与 StatementHandle 关联的驱动程序不支持 函数。 |
注释
SQLCloseCursor 返回 SQLSTATE 24000 (如果没有打开游标,) 游标状态无效。 调用 SQLCloseCursor 等效于使用 SQL_CLOSE 选项调用 SQLFreeStmt ,但如果语句上没有打开游标,则带有 SQL_CLOSE 的 SQLFreeStmt 对应用程序没有影响,而 SQLCloseCursor 返回 SQLSTATE 24000 (无效的游标状态) 。
注意
如果为 ODBC 3。使用 ODBC 2 的 x 应用程序。x 驱动程序在未打开游标时调用 SQLCloseCursor ,SQLSTATE 24000 (不返回无效游标状态) ,因为驱动程序管理器使用SQL_CLOSE将 SQLCloseCursor 映射到 SQLFreeStmt 。
有关详细信息,请参阅 关闭游标。
代码示例
请参阅 SQLBrowseConnect 函数 和 SQLConnect 函数。
相关函数
有关以下方面的信息 | 请参阅 |
---|---|
取消语句处理 | SQLCancel 函数 |
释放句柄 | SQLFreeHandle 函数 |
处理多个结果集 | SQLMoreResults 函数 |