我已经在2个不同的19c数据库上运行了以下查询。
select t.table_name, o.* from all_objects o
left join all_tables t
on o.object_name = t.table_name
left join all_tab_columns t
on o.object_name = t.table_name
where object_name = 'DUAL';
它在VERSION_FULL为19.16.0.0.0的19c数据库上运行良好,而在VERSION_FULL为19.18.0.0.0的19c数据库上运行失败
我确实理解查询有一个固有的问题,它对两个不同的表使用相同的别名。但是它在一个数据库上工作得很好,而在另一个上就不行了。
我的问题是这种行为的变化是由于版本升级?还是其他原因?
谢谢你,凯拉什
1条答案
按热度按时间bvjxkvbb1#
19.16中有一个bug,当你复制别名时,它并不总是能捕捉到一个不明确的列引用。但是19.18补丁集通过正确地抛出一个异常来修复这个问题,该异常要求我们消除歧义。这比Oracle为我们做出选择并得到错误的结果(导致错误的数据)要好得多。所以不要把这看作是一个问题,而是一个修复错误查询的机会。