ORACLE機能 ORAエラー

[ORAエラー] ORA-00918: 列の定義が未確定です。

投稿日:2018年9月22日 更新日:

以下のように表示されます。

(日本語)
ORA-00918: 列の定義が未確定です。
(英語)
ORA-00918: column ambiguously defined

発生パターン

このエラーは以下のような場合に発生します。

  • select句に指定したカラム名が一意に認識できない。
  • where句で指定したカラム名が一意に認識できない。
    (複数のテーブルに同じカラム名が存在する場合、カラム名だけ指定するとどちらのカラムか判断できないためエラーとなります。)
エラー例1
SQL> SELECT id FROM tbl01 INNER JOIN tbl02 2 ON tbl01.id = tbl02.id 3 / SELECT id FROM tbl01 INNER JOIN tbl02 * 行1でエラーが発生しました。: ORA-00918: 列の定義が未確定です。

SELECT句に指定しているidが tbl01のidか、tbl02のidか分からないためエラーとなっています。「tbl01.id」のようにすればエラーは解消します。

エラー例2
SQL> SELECT * FROM tbl01 INNER JOIN tbl02 2 ON tbl01.id = tbl02.id 3 WHERE id = 'XX' 4 / WHERE id = 'XX' * 行3でエラーが発生しました。: ORA-00918: 列の定義が未確定です。

この場合、where句に指定したidが tbl01のidかtbl02のidか判断が付きません。
 3行目を「WHERE tbl01.id = 'XX'」のようにすればエラーは解消します。

対処法

  • エラー対象のカラム名にテーブル名も指定する。
    (例)
     × id
     〇 tbl01.id

スポンサーリンク

スポンサーリンク

-ORACLE機能, ORAエラー

執筆者:



comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

スポンサーリンク