JetGetRecordPosition 函数
适用于: Windows |Windows Server
JetGetRecordPosition 函数
JetGetRecordPosition 函数以JET_RECPOS结构的形式返回当前索引中当前记录的小数部分位置。 此结构根据当前记录之前的索引条目的近似数目和索引中的大致总条目数来描述小数位置。
JET_ERR JET_API JetGetRecordPosition(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__out JET_RECPOS* precpos,
__in unsigned long cbRecpos
);
parameters
sesid
用于此调用的会话。
tableid
要用于此调用的游标。
precpos
用于获取当前记录在当前索引中的位置的分数的说明。
cbRecpos
在 precpos 上分配的内存大小。
返回值
此函数返回具有以下返回代码之一 的JET_ERR 数据类型。 有关可能的 ESE 错误的详细信息,请参阅 可扩展存储引擎错误 和 错误处理参数。
返回代码 |
说明 |
---|---|
JET_errSuccess |
操作已成功完成。 |
JET_errNotInitialized |
无法完成操作,因为尚未初始化与会话关联的实例。 |
JET_errClientRequestToStopJetService |
操作无法完成,因为调用 JetStopService 后,与会话关联的实例上的所有活动都已停止。 |
JET_errInstanceUnavailable |
此操作无法完成,因为与会话关联的实例遇到严重错误。 为了保护该数据的完整性,必须撤销对所有数据的访问。 Windows 2000: Windows 2000 操作系统不会返回此错误。 |
JET_errInvalidParameter |
precpos 处分配的内存大小不够大。 |
JET_errNoCurrentRecord |
光标当前不在记录上,无法返回位置。 |
JET_errRestoreInProgress |
无法完成该操作,因为正在对与会话关联的实例执行还原操作。 |
JET_errSessionSharingViolation |
同一会话不能同时用于多个线程。 Windows 2000: Windows 2000 操作系统不会返回此错误。 |
JET_errTermInProgress |
操作无法完成,因为正在关闭与会话关联的实例。 |
成功后,索引中当前记录之前的大致索引条目数将在 precpos-centriesLT> 中返回。 1 以 precpos-centriesInRange> 返回。 索引中的大致条目数以 precpos-centriesTotal> 返回。
失败时,不会对 precpos 中分配的内存进行更改。
备注
当表上持续发生更新时,此操作将返回不同的数据。 值更改并不总是符合基于更新知识的预期,因为这些值是基于索引的物理属性的近似值。 事务隔离不适用于 JetGetRecordPosition 中的位置,因为这些值依赖于非事务隔离索引的物理属性。
JET_RECPOS 不应用于描述表中的记录或将记录重新定位到靠近现有记录的位置。 相反,应检索现有记录的书签,然后使用书签重新定位同一记录。
要求
要求 | 值 |
---|---|
客户端 |
需要 Windows Vista、Windows XP 或 Windows 2000 专业版。 |
服务器 |
需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。 |
标头 |
在 Esent.h 中声明。 |
Library |
使用 ESENT.lib。 |
DLL |
需要ESENT.dll。 |
另请参阅
JET_COLUMNID
JET_ERR
JET_SESID
JET_TABLEID
JET_RECPOS
JET_SETINFO
JetGotoPosition
JetStopService