JetDupCursor 函数

适用于:Windows |Windows服务器

JetDupCursor 函数

JetDupCursor 函数复制一个打开的游标,并向重复的游标返回句柄。 如果复制的游标是只读游标,则重复的游标也是只读游标。 与构造搜索键或更新记录相关的任何状态都不会复制到重复的游标中。 此外,原始游标的位置不会复制到重复的游标中。 重复的游标始终在聚集索引上打开,并且其位置始终位于表的第一行上。

    JET_ERR JET_API JetDupCursor(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __out         JET_TABLEID* ptableid,
      __in          JET_GRBIT grbit
    );

参数

sesid

用于此调用的会话。

tableid

要用于此调用的游标。

ptableid

指向 tableid 的指针。

grbit

保留供将来使用。

返回值

此函数使用以下返回代码之一返回 JET_ERR 数据类型。 有关可能的 ESE 错误的详细信息,请参阅可扩展存储引擎错误错误处理参数

返回代码

说明

JET_errSuccess

操作已成功完成。

JET_errClientRequestToStopJetService

无法完成该操作,因为由于调用 JetStopService,与会话关联的实例上的所有活动已停止。

JET_errInstanceUnavailable

无法完成该操作,因为与会话关联的实例遇到了一个致命错误,要求撤销对所有数据的访问权限以保护该数据的完整性。 此错误仅由 Windows XP 和更高版本返回。

JET_errNotInitialized

无法完成该操作,因为尚未初始化与会话关联的实例。

JET_errOutOfCursors

不存在可用的游标资源。

JET_errRestoreInProgress

无法完成操作,因为与会话关联的实例上正在进行还原操作。

JET_errSessionSharingViolation

同一会话不能同时用于多个线程。 此错误仅由 Windows XP 和更高版本返回。

JET_errTermInProgress

无法完成该操作,因为与会话关联的实例正在关闭。

成功后, ptableid 设置为重复的游标。

失败时,不会做出任何更改。 tableid 的状态不变。

注解

复制的游标没有复制整个游标状态。 重复游标(包括当前索引)的位置通常不同于给定游标。 重复的游标始终在聚集索引和表中的第一行上返回。 如果表为空,则重复的游标不在任何行上。

使用 JetDupCursor 打开的表通常应该使用 JetCloseTable 关闭。 当在事务中调用 JetDupCursor 并且使用 JetRollback) 回滚事务 (时,会发生此规则的例外。 回滚事务时,游标会自动关闭。 在这种情况下,使用 JetCloseTable 关闭表是错误的。

可同时打开的表数直接受 JET_paramMaxOpenTables影响。 有关详细信息,请参阅 系统参数

要求

要求

客户端

需要 Windows Vista、Windows XP 或 Windows 2000 Professional。

Server

需要Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。

标头

在 Esent.h 中声明。

Library

使用 ESENT.lib。

DLL

需要ESENT.dll。

另请参阅

JET_GRBIT
JET_SESID
JET_TABLEID
JetCloseTable
JetRollback
JetStopService
系统参数