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, 開発メモ
-

関連記事

devenvを使って、プロジェクトをコマンドラインからビルドする方法[VisualStudio]

今日も今日とて休日出勤\(^o^)/   現在、C#をメイン言語として使用しています。 で、当然というか、開発の区切りだったり、テストするためにビルドというものをやります。 このビルド、プロ …

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

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

C#で発生するORA-01036:illegal variable name/numberのエラーの解決法

毎度毎度、原因の分かりづらいエラーにハマりますw 今回は、「ORA-01036:illegal variable name/number」。 日本語に直訳された内容だと「変数の名前/数が無効です」とな …

[ORACLE]Oracleに接続できない時に確認すること

Oracleを新しくインストールした時に、中々接続できなかったので、その時に確認しておくべき事項のまとめ。 少なくとも、これは先にやっておいた方がいいこととか。 前提条件 前提と書くとものものしいけど …

[ORACLE]oracleのログの場所(リスナーログ、アラートログ)

ぶっちゃけ、ログの場所なんて普段意識してないわwww 存在は知ってるものの、ぶっちゃけ、普段からそんな場所など意識していたことがない。 もちろん、何かあったときは、ファイル検索で見つけりゃいいや~と思 …


カテゴリー