如果设置了 SQL_ATTR_ROWS_FETCHED_PTR 语句属性,则它指定一个缓冲区,该缓冲区返回调用 SQLFetch 或 SQLFetchScroll 提取的行数,以及错误行。 调用 SQLBulkOperations 或 SQLSetPos 后,缓冲区包含函数执行的批量操作影响的行数。(此数字是状态不是SQL_ROW_NO_ROWS的所有行的计数。) 如果已设置 SQL_ATTR_ROW_STATUS_PTR 语句属性,SQLFetch 或 SQLFetchScroll 将返回行状态数组,该数组提供每个返回行的状态。 这些字段指向的两个缓冲区都由应用程序分配,并由驱动程序填充。 应用程序必须确保这些指针在游标关闭之前保持有效。
行状态数组中的条目是否成功提取每一行、是否自上次提取以来已更新、添加或删除,以及提取行时是否出错。 如果SQLFetch或SQLFetchScroll在检索多行行集的一行时遇到错误,或者SQLBulkOperations的Operation参数为SQL_FETCH_BY_BOOKMARK时,在执行批量提取时遇到错误,则会将行状态数组中的相应值设置为SQL_ROW_ERROR,继续提取行,并返回SQL_SUCCESS_WITH_INFO。 有关错误处理和行状态数组的详细信息,请参阅 SQLFetch 和 SQLFetchScroll 函数说明。