簡體   English   中英

遞歸 CTE 在 Oracle SQL 上給出“第 1/16 行錯誤:ORA-00905:缺少關鍵字”錯誤

[英]Recursive CTE gives "Error at line 1/16: ORA-00905: missing keyword" error on Oracle SQL

    WITH RECURSIVE cte (n) AS
(
  SELECT 1
  UNION ALL
  SELECT n + 1 FROM cte WHERE n < 5
)
SELECT * FROM cte;

我從 Oracle 文檔中復制了上述代碼。 當我在 MySQL 中運行它時,它運行良好,但是當我在 Oracle 的 Apex 研討會中運行它時,我收到錯誤消息“第 1/16 行錯誤:ORA-00905:缺少關鍵字”。 奇怪的是 Oracle 文檔中的示例不起作用。 知道問題是什么嗎?

在查詢中使用RECURSIVE在語法上是無效的。 無論您使用哪個文檔,它都不是 Oracle 數據庫; 你想要這個文檔

此外, SELECT 1無效,因為您的SELECT沒有FROM子句; 它應該是SELECT 1 FROM DUAL

固定代碼應該是:

WITH cte (n) AS
(
  SELECT 1 FROM DUAL
  UNION ALL
  SELECT n + 1 FROM cte WHERE n < 5
)
SELECT * FROM cte;

哪個輸出:

ñ
1
2
3
4
5

小提琴

在 oralce 中,您不能使用 SELECT 1,這僅在 Mysql 中允許

正如援助 ORACLE rdms 不是 Mysql RDMS

select * from V$VERSION;
橫幅 BANNER_FULL BANNER_LEGACY CON_ID
Oracle Database 21c Express Edition Release 21.0.0.0.0 - 生產 Oracle Database 21c Express Edition Release 21.0.0.0.0 - 生產
版本 21.3.0.0.0
Oracle Database 21c Express Edition Release 21.0.0.0.0 - 生產 0
    WITH  cte (n) AS
(
  SELECT 1 FROm DUAL
  UNION ALL
  SELECT n + 1 FROM cte WHERE n < 5
)
SELECT * FROM cte;
ñ
1
2
3
4
5

小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM