SQLFetchScroll -从可滚动游标访存
SQLFetchScroll() 根据请求的方向定位光标,然后检索任何绑定的列。
SQLFetchScroll() 可用于将数据直接接收到您使用 SQLBindCol()指定的变量中,或者可以通过调用 SQLGetData()在访存后单独接收列。 如果在绑定列时指示了转换,那么在调用 SQLFetchScroll() 时也会执行数据转换。
语法
SQLRETURN SQLFetchScroll (SQLHSTMT hstmt,
SQLSMALLINT fOrient,
SQLINTEGER fOffset); 函数自变量
| 数据类型 | 自变量 | 使用 | 描述 |
|---|---|---|---|
| SQLHSTMT | hstmt | 输入 | 语句句柄。 |
| SQLSMALLINT | fOrient | 输入 | 访存方向。 请参阅 表 2 以获取可能的值。 |
| SQLINTEGER | fOffset | 输入 | 相对定位的行偏移量。 |
用法
仅当 hstmt 上最近处理的语句是 SELECT 时,才能调用 SQLFetchScroll() 。
SQLFetchScroll() 类似于 SQLFetch(),除了 fOrient 参数在检索任何数据之前放置光标。 游标必须是 SQLFetchScroll() 的可滚动游标,才能使用 SQL_FETCH_NEXT 以外的任何方向。
使用此函数从 SQL 过程结果集中检索行时,仅支持 SQL_FETCH_NEXT 方向。
SQLFetchScroll() 支持数组访存,这是 SQLExtendedFetch()提供的数组访存支持的替代方法。 请参阅 SQLExtendedFetch() 主题以获取有关数组访存的详细信息。
RowCountPtr 和 RowStatusArray 参数
SQLExtendedFetch() 中返回的信息由 SQLFetchScroll() 处理,具体如下:- RowCountPtr:
SQLFetchScroll()返回 SQL_ATTR_ROWS_FETCHED_PTR 语句属性指向的缓冲区中获取的记录数。 - RowStatusArray:
SQLFetchScroll()返回 SQL_ATTR_ROW_STATUS_PTR 语句属性指向的缓冲区中每一行的状态数组。
| 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
诊断
| SQLSTATE | 描述 | 说明 |
|---|---|---|
| 01004 | 数据已截断 | 针对一个或多个列返回的数据将被截断。 字符串值向右截断。 (如果未发生错误,那么将返回 SQL_SUCCESS_WITH_INFO。) |
| HY001 | 内存分配失败 | 驱动程序无法分配支持功能处理或完成所需的内存。 |
| HY009 | 参数值无效 | 方向无效。 |
| HY010 | 函数顺序错误 | 指定的 hstmt 未处于已处理状态。 在不首先调用 SQLExecute 或 SQLExecDirect的情况下调用该函数。 |
| HY013 * | 内存管理问题 | 驱动程序无法访问支持处理或完成功能所需的内存。 |
| HY021 | 内部描述符无效 | 无法寻址或分配内部描述符,或者它包含无效的值。 |