Oracleで「ORA-00918: 列の定義が不明瞭です 」のエラーの解決法と発生理由

投稿日:

発生したエラー

ORA-00918: 列の定義が不明瞭です

原因

原因は、同じ列名やテーブルの別名を使用していること。

解決方法

  1. Select句で羅列している列に同一の列名(別テーブル)があれば、as句を使って別名を定義
  2. Select句でas句で重複している列名があれば、修正
  3. From句でJOINしているテーブルの別名が重複していれば、修正

多分、この順番で見ていけば解決できる。

エラーが発生した理由

通常、デザイナとかクエリウィザードみたいなのを使ってSQLを作成する場合は、発生しないエラーかと。
重複する列名などは自動で数字を付与したりして、ダブらないようにしてくれてますし。

普段は、デザイナ経由でSQLを作成している自分がなぜこのエラーにぶち当たったのかというと、既存SQLの修正でした。

バージョン管理が影響していた

弊社では、SVNを使用したソースのバージョン管理をしています。
これがトリガーでした・・・

  • Ver1:自分が修正を行ったもの
  • Ver2:Ver1の修正を反映させたもの

エラーが発生したのは、Ver2でした。
Ver2にSQLなどを移植し、実行確認の際に「ORA-00918: 列の定義が不明瞭です 」のエラーが発生しました。

当然ながら、Ver1に対してテストを行い、エラーが発生しない状態まで保障しています。
その後、Ver2に修正を反映させるわけですが、反映させたSQL部分に別の人の修正が先に適用されていました。

不幸にも別の修正で自分が追加したテーブルが被る結果に・・・
社内ルールのせいで、使用する別名も同一。

で、エラーになりましたとさw

 
早い者勝ちかよ・・・







-ORACLE, 開発メモ
-

関連記事

[ORACLE]ORA-00918:列の定義が未確定です・・・のエラーにならなかった

なんでエラーになるものをマージしてるんだ? と、怒られました。 一瞬、理解が出来ず・・・ で、エラーを再現してもらう・・・と。 あっさり発生。 早く修正しろって突っ返されました。 頭には「?」しか浮か …

Oracleで「ORA-00906: 左カッコがありません。」のエラーが出た時の対処法

はい。 そろそろ、上司の無茶目な仕様変更にも折り合いをつけて行きたいSEっぽいことをやってる人です。 前にも書いたかもしれないけど、また、どハマリしたOracleのエラーについて。 エラーの内容が全て …

no image

[Xcode]C#とは違うエラーキャッチ方法

先日から、Swiftの勉強をしているわけですが、未だに仕事でメインで使っているC#との違いで戸惑うことがちらほらと。 repeat文なんて、VBやC#じゃ見ないよな。forやwhile文が対応してるけ …

「別のプログラムがこのフォルダーまたはファイルを開いているので、操作を完了できません。」と表示された場合の対処法:Windows7

今日は2017年秋期の情報処理試験でしたが、受験されたみなさまいかがでしたでしょうか? ろくすっぽどころか、参考書すら買ってない状態だけど、情報処理試験の午前だけは受けに行く(起きれたら)。 午前は択 …

MSCOMCTL.OCXの読み込みに失敗しましたエラーの対応方法

結論から言うと、マイクロソフトのページから、必要なものをDLして、適用しましょうって話。 OS:Windows7 Pro 64bit DLしたファイル:VisualBasic6-KB896559-v1 …


カテゴリー