gpt4 book ai didi

java - 获取OpenEdge数据库中的rowid从1到n

转载 作者:行者123 更新时间:2023-12-01 21:14:56 25 4
gpt4 key购买 nike

JDBC 驱动程序不支持 ROW_NUMBER 函数。从表中读取数据时如何获取从1到n的行id?

如果我有一个包含 2 列作为名字和姓氏的表,那么我会在 SQL Server 中运行类似“SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS rowid, * FROM tableName”的查询。这将为我提供从 1 到 n 的 rowid 以及结果集中的名字和姓氏的内容。

所以我会得到如下结果:

1, Felix, Cao

2, Jack, Chan

3, Nick, Ho

我想对 OpenEdge 数据库进行类似的查询,这样我就可以按照上面的顺序获取 rowid。

最佳答案

不,OpenEdge 数据库中没有与 ROW_NUMBER 等效的值。

http://knowledgebase.progress.com/articles/Article/Is-ORACLE-row-number-function-supported-in-OpenEdge

关于ROWID:

抛开关于将 ROWID 视为整数是否是个好主意的讨论......(您应该重新阅读链接的 kbase)

无法保证任何特定的 ROWID 值将永远存在,并且 ROWID 没有理由以零或一或任何其他值开头。

如果您认为 ROWID 和 RECID 有点相同,并且 RECID 是由 block # 和该 block 内的位置组成的整数,ROWID 0 仍然永远不会存在,因为存储区域的第一部分是控制数据——那里不存储任何行。

您可以使用 ROWID 或 RECID 的猜测(或通过枚举每个可能的值)来成功扫描表,但您必须准备好处理间隙。例如,当尝试从损坏的数据库恢复数据时,这可能很有用。但这不是人们通常会做的事情。

我认为您已经确定 ROWID 是您遇到的问题的解决方案,但真正的问题不是“如何获取 ROWID 0”。如果我不得不猜测,我会猜测您可能正在尝试分批获取 N 个结果集。在这种情况下,您应该看看这个:How to mimic SELECT ... LIMIT, OFFSET in OpenEdge SQL?

关于java - 获取OpenEdge数据库中的rowid从1到n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40384848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com