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

投稿日:

なんでエラーになるものをマージしてるんだ?

と、怒られました。

一瞬、理解が出来ず・・・

で、エラーを再現してもらう・・・と。

あっさり発生。

早く修正しろって突っ返されました。

頭には「?」しか浮かばない

それもそのはず、自分の環境で同一の処理を実行してもエラーにならないんですもの・・・

少なくとも、自分の環境で実行時にエラーになるようなものは、マージしません。

デバッグで処理を追ってみるものの、エラーになるような箇所は見当たらず。

~そんなこんなで1時間過ぎた頃・・・~

「ORA-00918で落ちてるから、SQLを確認しろや」と。

エラーの内容を頼りに、SQLを精査したらダブっている箇所を発見。

select 
   head.name as name
   , body.name as name
   , body.address as address
from
   header head
   left join detail body
     on body.id = head.id
        :
        :
        :
   left join detail body
     on body.id = head.id

こんな感じで、同じ別名を使用したJOIN句が2箇所存在してました。

自分の環境では、やはりエラーにならない

先にも書いたけど、自分の環境ではエラーにならず、正常にデータ取得できるし・・・

実行されるSQLだけを取得し直して実行してみても、問題なし。

まぁ、釈然としないまま修正をしたわけです。

ただ、調べていたら、過去に似たような状況がバグであったみたいです。

[Oracle] 「ORA-00918: 列の定義が未確定です。」になるはずが...
https://ameblo.jp/archive-redo-blog/entry-10033356733.html

この記事自体が2005年で、10年以上前であることと、そもそもOracleのバージョンが異なることには注意。

実際、私が使用しているバージョンははOracle 11gなので。

まぁ、こんな事もあるってことで。







-ORACLE, 開発メモ
-,

関連記事

[ORACLE]ORA-01950: 表領域’USERS’に対する権限がありません。のエラー対処法

  Oracle 12c R2(R1でも同様のエラーが発生)で ORA-01950: 表領域’USERS’に対する権限がありません のエラーが発生しました。 状況とし …

no image

OracleでLISTAGG関数を使ったら、世界が変わった話。

11gR2からGROUP_CONCAT(複数行をまとめて1列に)が可能に http://d.hatena.ne.jp/kkz_tech/20150311/1426048592 日本の中心付近で仕様変更 …

ORACLEでCASE文を使用した時にORA-00932のエラーが出る

割と悩んだ・・・ 原因は、CASE文で使用している項目のデータ型が異なるのが原因みたいだけど、正直、ぴんと来てない現実w select case name when ‘A’ then ‘あ’ when …

WindowsのコマンドプロンプトでUnicodeを扱おうとして挫折した。

WindowsのコマンドプロンプトでUnicodeのファイル名を扱うためのバッチファイルをどうたらこうたら。 http://daily-misc.blogspot.jp/2014/12/windows …

ORACLEでTO_CHARを使用し、カンマ区切りデータを出力する

帳票出力を行うPGで困った。 数値形式のデータのため、カンマ区切りで表示したいんだけど、テンプレートの制約のせいで上手く行かなくて時の解決方法。 帳票のテンプレートとなるファイルのセルは文字列形式。 …


カテゴリー