SQLFetchScroll -从可滚动游标访存

SQLFetchScroll() 根据请求的方向定位光标,然后检索任何绑定的列。

SQLFetchScroll() 可用于将数据直接接收到您使用 SQLBindCol()指定的变量中,或者可以通过调用 SQLGetData()在访存后单独接收列。 如果在绑定列时指示了转换,那么在调用 SQLFetchScroll() 时也会执行数据转换。

语法

SQLRETURN SQLFetchScroll (SQLHSTMT    hstmt,
                          SQLSMALLINT fOrient,
                          SQLINTEGER  fOffset);

函数自变量

表 1. SQLFetchScroll 自变量
数据类型 自变量 使用 描述
SQLHSTMT hstmt 输入 语句句柄。
SQLSMALLINT fOrient 输入 访存方向。 请参阅 表 2 以获取可能的值。
SQLINTEGER fOffset 输入 相对定位的行偏移量。

用法

仅当 hstmt 上最近处理的语句是 SELECT 时,才能调用 SQLFetchScroll()

SQLFetchScroll() 类似于 SQLFetch(),除了 fOrient 参数在检索任何数据之前放置光标。 游标必须是 SQLFetchScroll() 的可滚动游标,才能使用 SQL_FETCH_NEXT 以外的任何方向。

使用此函数从 SQL 过程结果集中检索行时,仅支持 SQL_FETCH_NEXT 方向。

SQLFetchScroll() 支持数组访存,这是 SQLExtendedFetch()提供的数组访存支持的替代方法。 请参阅 SQLExtendedFetch() 主题以获取有关数组访存的详细信息。

RowCountPtrRowStatusArray 参数 SQLExtendedFetch() 中返回的信息由 SQLFetchScroll() 处理,具体如下:
  • RowCountPtrSQLFetchScroll() 返回 SQL_ATTR_ROWS_FETCHED_PTR 语句属性指向的缓冲区中获取的记录数。
  • RowStatusArraySQLFetchScroll() 返回 SQL_ATTR_ROW_STATUS_PTR 语句属性指向的缓冲区中每一行的状态数组。
表 2。 语句属性
fOrient 描述
SQL_FETCH_ABSOLUTE 移至 fOffset 参数指定的结果集行。
sql_fetch_first 移至结果集的第一行。
SQL_FETCH_LAST 移至结果集的最后一行。
SQL_FETCH_NEXT 移至当前光标位置之后的行。
SQL_FETCH_PRIOR 移至当前光标位置之前的行。
SQL_FETCH_RELATIVE 如果 fOffset 为:
  • 肯定,将光标前进到该行数。
  • 负数,备份该行数的游标。
  • 零,不移动光标。

返回码

  • SQL_SUCCESS
  • sql_success_with_info
  • SQL_ERROR
  • sql_invalid_handle
  • sql_noo_data_found

诊断

表 3. SQLFetchScroll SQLSTATEs
SQLSTATE 描述 说明
01004 数据已截断 针对一个或多个列返回的数据将被截断。 字符串值向右截断。 (如果未发生错误,那么将返回 SQL_SUCCESS_WITH_INFO。)
HY001 内存分配失败 驱动程序无法分配支持功能处理或完成所需的内存。
HY009 参数值无效 方向无效。
HY010 函数顺序错误 指定的 hstmt 未处于已处理状态。 在不首先调用 SQLExecute 或 SQLExecDirect的情况下调用该函数。
HY013 * 内存管理问题 驱动程序无法访问支持处理或完成功能所需的内存。
HY021 内部描述符无效 无法寻址或分配内部描述符,或者它包含无效的值。

引用