Dmi*_*kov 15 sql oracle common-table-expression
它看起来有点滑稽,但Oracle 11g确实允许这样的查询运行
with
a as (select 1 from dual),
a as (select 2 from dual)
select *
from a;
Run Code Online (Sandbox Code Playgroud)
它返回第一个子查询的结果(即1).
我无法想象这种特征可能有用的情况.在我的情况下,当我忘记在复制/粘贴它后重命名子查询并且整个查询返回错误/意外结果时,它会引起问题.幸运的是,查询非常简单,并且立即检测到了原因.
无论如何,我希望Oracle在这种情况下抛出异常.
所以,我的问题是这样的行为是特征还是错误?如果功能,它可能有用吗?
谢谢.
顺便说一句,SQLite不允许类似的查询运行并抛出'重复的WITh表名'异常.还没试过任何其他数据库引擎.