gpt4 book ai didi

sql - ROWNUM 返回为 "invalid identifier"

转载 作者:行者123 更新时间:2023-12-01 05:49:03 28 4
gpt4 key购买 nike

我正在针对 oracle 数据库运行一个非常基本的选择(不确定版本)。

SELECT * FROM ACCOUNTING WHERE ID = 123456 ORDER BY DATE

我只想返回最近的记录。所以我试过...
SELECT ROWNUM, * FROM ACCOUNTING WHERE ID = 123456 ORDER BY DATE
SELECT * FROM ACCOUNTING WHERE ID = 123456 AND ROWNUM < 2 ORDER BY DATE

我每次都得到相同的结果......
Error Source: System.Data.OracleClient    
Error Message: ORA-00904: "ROWNUM" : invalid identifier

我看到和读到的一切都表明这应该有效。谁能看到我错过了什么?这可能是驱动程序的问题吗?我正在使用以下包...(Oracle ODAC 11.20.30 x64)

更新

感谢您的所有回复......对于我在努力简化场景时造成的任何困惑,我深表歉意。 ODAC 驱动程序实际上正在为我打破查询并对其进行格式化,所以我最初发布的不是 正是 正在运行的查询......这里是,特别是驱动程序吐出的导致错误的内容......
SELECT "ROWNUM", ID, SITE_ID, READING_DATE, SUBMITTED_DATE, DEPOSIT_DATE
FROM ACCOUNTING
WHERE (SITE_ID = 33730)
ORDER BY READING_DATE

而对于我的第二次尝试......
SELECT ID, SITE_ID, READING_DATE, SUBMITTED_DATE, DEPOSIT_DATE
FROM ACCOUNTING
WHERE (SITE_ID = 33730) AND ("ROWNUM" < 2)
ORDER BY READING_DATE

最佳答案

您的 实际查询可能正在使用 ROWNUM双引号内。否则,这个错误是不可能的。

虽然您的第一个查询是 ORA-00936: missing expression

select * from dual WHERE "ROWNUM" < =3;

Error report -
SQL Error: ORA-00904: "ROWNUM": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
ROWNUM是一个伪列,就像没有参数的函数一样......顺便说一句 "ROWNUM"使 oracle 在您的表中搜索这样的列..

带引号的标识符 when 是 Oracle 保留关键字,将超出其原始用途,并且表现为用户定义的列。

不确定如何停止查询构建器以这种方式解释。我认为这是一个 BUG .

关于sql - ROWNUM 返回为 "invalid identifier",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30758451/

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