なんでエラーになるものをマージしてるんだ?
と、怒られました。
一瞬、理解が出来ず・・・
で、エラーを再現してもらう・・・と。
あっさり発生。
早く修正しろって突っ返されました。
頭には「?」しか浮かばない
それもそのはず、自分の環境で同一の処理を実行してもエラーにならないんですもの・・・
少なくとも、自分の環境で実行時にエラーになるようなものは、マージしません。
デバッグで処理を追ってみるものの、エラーになるような箇所は見当たらず。
~そんなこんなで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なので。
まぁ、こんな事もあるってことで。