それは少しおかしいが、Oracle 11gは本当に、そのようなクエリがWITH句で同じalias_nameを持つ複数のサブクエリを使用できるのはなぜですか?
with
a as (select 1 from dual),
a as (select 2 from dual)
select *
from a;
を実行することができますこれは、最初のサブクエリ(すなわち、1)の結果を返します。
このような機能が役立つ可能性がある状況を想像することはできません。私の場合は、コピー/貼り付け後にサブクエリの名前を変更するのを忘れてしまい、全体的なクエリが間違った/予期しない結果を返すという問題が発生しました。幸いにも、クエリは非常に簡単で、理由はすぐに検出されました。
とにかく、私はオラクルがこのような場合に例外をスローすることを期待しています。
私の質問は、そのような動作が機能かバグかどうかです。 機能の場合は、どこに役立つのでしょうか?
ありがとうございました。
ところで、SQLiteでは、同様のクエリを実行することは許可されず、 'WIThテーブル名の重複'例外がスローされます。他のdbエンジンはまだ試していませんでした。
Postgresはこれを許可していません。 –
私はそれがバグだと思います。あなたは確かにMy Oracle Supportで問題を提起することができます。 –
12.1.0.2で再現されました。 –