SQLSetPos(游标库)

重要

Windows 的未来版本中将移除此功能。 避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。 Microsoft 建议使用驱动程序的游标功能。

本主题讨论在游标库中 使用 SQLSetPos 函数。 有关 SQLSetPos 的一般信息,请参阅 SQLSetPos 函数

游标库仅支持 SQLSetPos 中的 Operation 参数的SQL_POSITION操作。 它仅支持 LockType 参数的SQL_LOCK_NO_CHANGE值。

如果驱动程序不支持批量操作,则当调用 SQLSetPosRowNumber 等于 0 时,游标库将返回 SQLSTATE HYC00 (驱动程序不支持) 。 不建议使用此驱动程序行为。

游标库不支持调用 SQLSetPos 时SQL_UPDATE和SQL_DELETE操作。 游标库通过创建具有 WHERE 子句的搜索更新或删除语句来实现定位更新或删除 SQL 语句,该子句枚举存储在每个绑定列的缓存中的值。 有关详细信息,请参阅 处理定位的 Update 和 Delete 语句

如果驱动程序不支持静态游标,则使用游标库的应用程序应仅在由 SQLExtendedFetchSQLFetchScroll 提取的行集上调用 SQLSetPos,而不是由 SQLFetch 调用。 游标库通过在驱动程序中重复调用行集大小为 1) 的 SQLFetch (来实现 SQLExtendedFetchSQLFetchScroll 游标库将调用传递给 SQLFetch,另一方面,传递到驱动程序。 如果在驱动程序不支持静态游标时对 SQLFetch 提取的多行行集调用 SQLSetPos,则调用将失败,因为 SQLSetPos 不适用于仅向前游标。 即使应用程序已成功调用 SQLSetStmtAttr 将SQL_ATTR_CURSOR_TYPE设置为 SQL_CURSOR_STATIC,也会发生这种情况,即使驱动程序不支持静态游标,游标库也会支持该参数。