gpt4 book ai didi

sql - Oracle 12c 文档,了解 SQL 的更改/新特性

转载 作者:行者123 更新时间:2023-12-04 14:26:48 25 4
gpt4 key购买 nike

我刚刚发现 Oracle 12c 支持将查询关联到多个深度级别,而 11g 和以前的版本不支持该查询。

select
*
from
tab1 a
where
not exists
(select
*
from
(select
*
from
tab2 b
where a.X = b.X))

但是我在 Oracle 网站上找不到这个文档。 Oracle 12c 中是否添加了任何其他此类隐藏的 SQL 功能?是否在某处记录了 12c 中对 SQL 的所有此类更改?

最佳答案

为了解释这一点,我们需要深入了解一下历史。

在 Oracle 10g R1 中也可以使用超过 1 个级别的相关子查询,并且在那些日子里它被正确记录(https://docs.oracle.com/cd/B14117_01/server.101/b10759/queries007.htm)......

Oracle performs a correlated subquery when a nested subquery references a column from a table referred to a parent statement any number of levels above the subquery.



...但它不能正常工作。 :)

因此,从 Oracle 10g R2 开始,此功能被禁用并且文档已更改。

此外(如果您有访问权限)您可以看到 错误 15990897:使用 ORA-904 的第二级子查询中使用的相关变量的查询失败 在 Metalink 上( 已在产品版本 12.1.0.1.0 中修复)。我不确定为什么它被认为是一个错误,因为它根据文档(10g R2、11g R1、11g R2)工作,但事实就是这样。

因此,功能在 10.1 之后和 12.1 之前被禁用,但即使是 12.2 的文档( https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/Using-Subqueries.html )说

Oracle performs a correlated subquery when a nested subquery references a column from a table referred to a parent statement one level above the subquery.



长话短说,此功能在 12c R1 和 12c R2 中启用,但文档未修复,显然新功能指南中没有提及此改进。

附注。据我所知,标准 SQL 2003 只允许关联到一层深 - 欢迎大家检查( http://www.wiscorp.com/sql_2003_standard.zip )。
但无论如何,Oracle 在标准之上有很多改进。

关于sql - Oracle 12c 文档,了解 SQL 的更改/新特性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43918148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com