Skip to content

字母大小寫

ORA-00904 Invalid Identifier - Oracle Database Object Name Recognition Examples

如何解決ORA-00904 無效的 ID

  • by
ORA-00904 ORA-00904表示您在語句中使用了不匹配的欄位名或不正確的語法。通常,錯誤不僅發生在SELECT或INSERT中,還發生在UPDATE,DELETE,CREATE TABLE,ALTER TABLE和PL/SQL塊中。 大多數使用者不會相信錯誤,但事實上SQL解析器從未犯過任何錯誤。在這篇文章中,您可能會看到一些關於ORA-00904的錯誤模式,其中一個可能與您的情況相符。由於大多數使用者錯誤是由區分大小寫的問題引起的,因此我們必須首先解釋鬆散形式和精確形式之間的差異。 通常,Oracle會將大多數識別字排除在密碼之外,並將其視為不區分大小寫的識別字。但是在ORA-00904無效識別字的情況下應該注意一些特殊用法。 不僅ORA-00904,ORA-00903和ORA-00911也與物件識別碼的無效使用有關。更具體地說,ORA-00903警告用戶無效的表名,並引發ORA-00911來定位非法字元 鬆散形式與精確形式 根據Oracle資料庫物件名稱和限定詞,有兩種有效的命名形式來創建資料庫物件。一個是非引用識別字,另一個是帶引號的識別字。為了避免ORA-00904,您必須知道兩種命名形式之間的明顯差異。 非引用識別字(鬆散形式) 它們沒有標點符號或任何其他特殊處理。只要它們基本上是等效的字串,我們就可以在SQL語句中不區分大小地靈活使用它們。所以我通常在這篇文章中將其稱為鬆散形式。實際上,非引用識別字都被認為是上層識別字。這個概念將幫助您更好地瞭解ORA-00904。 帶引號的識別字(精確形式) 它們以雙引號("")開頭和結尾。您可以將幾乎所有字元放在雙引號中,包括空格和保留字。這種識別字應該與最初定義的完全一致。所以我通常在這篇文章中將其稱為精確形式。據我所知,這是ORA-00904的主要來源。 稍後,我們還將討論有關ORA-00904的更多問題,以區分引用的和未引用的識別字。 ORA-00904的錯誤模式 在大多數情況下,濫用欄位名是ORA-00904的主要來源,其餘的是語法錯誤。在這篇文章中,我們將在以下部分討論ORA-00904的幾種錯誤模式。 SELECT或INSERT中的ORA-00904 WHERE,ORDER BY或GROUP BY中的ORA-00904 CREATE TABLE中的ORA-00904 ALTER TABLE中的ORA-00904 PL/SQL中的ORA-00904… Read More »如何解決ORA-00904 無效的 ID