以下のように表示されます。
(日本語)
ORA-00904: XXX: 無効な識別子です
(英語)
ORA-00904: XXX: invalid identifier
XXXの箇所には、エラー対象箇所が表示されます。
発生パターン
このエラーは以下のような場合に発生します。
- SELECT文などで、存在しない列名を指定した
- UPDATE文に指定した値を「'」ではなく、「"」で囲んでいる
- WHERE句に指定した文字列を「'」ではなく、「"」で囲んでいる
(「"」は列タイトルを表す時に使用する記号です。) - 列にコメントを付ける時に存在しない列名を指定した
- エラー例1
- SQL> select * from m_test where code = "01"; select * from m_test where code = "01"; * 行1でエラーが発生しました。: ORA-00904: "01": 無効な識別子です。
"01" を '01' にすればOKです。
- エラー例2
- SQL> update m_test set col2 = "hoge" where col1 = 'foo'; update m_test set col2 = "hoge" where col1 = 'foo'; * 行1でエラーが発生しました。: ORA-00904: "hoge": 無効な識別子です。
"hoge" を 'hoge' にすればOKです。
- エラー例3
- SQL> comment on column TEST_TABLE.MEMO02 is 'メモ02'; comment on column TEST_TABLE.MEMO02 is 'メモ02'; * 行1でエラーが発生しました。: ORA-00904: "MEMO02": 無効な識別子です。
TEST_TABLEテーブルに"MEMO02"列が存在しない例です。
対処法
- 正しい列名を指定する
- 文字列リテラルは「"」(ダブルクォーテーション)ではなく、「'」(シングルクォーテーション)で囲う