簡體   English   中英

Oracle 12c文檔,用於SQL的更改/新功能

[英]Oracle 12c documentation for changes / new features to SQL

我剛剛發現Oracle 12c支持將幾個級別的查詢關聯起來,這在11g和以前的版本中是不受支持的。

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

但我無法在Oracle網站上找到這個文檔。 是否有任何其他此類隱藏的SQL功能添加到Oracle 12c? 在12c中對SQL的所有這些更改是否記錄在某處?

為了解釋這一點,我們需要深入了解歷史。

能夠使用超過1級的相關子查詢的能力也在Oracle 10g R1中,並且已正確記錄( https://docs.oracle.com/cd/B14117_01/server.101/b10759/queries007.htm )天...

當嵌套子查詢從引用父語句的表引用子查詢上方任意數量級別的列時,Oracle會執行相關子查詢

......但它沒有正常工作。 :)

因此,從Oracle 10g R2開始,此功能已被禁用,文檔已更改。

另外(如果您有訪問權限),您可以在Metalink上看到錯誤15990897:使用ORA-904在2級級別的子故障中使用的相關變量查詢在產品版本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會執行相關子查詢。

簡而言之,此功能在12c R1和12c R2中啟用,但文檔並未修復,顯然在新功能指南中沒有提及此改進。

PS。 據我所知,標准SQL 2003只允許相關性達到一個級別 - 歡迎大家查看( http://www.wiscorp.com/sql_2003_standard.zip )。 但無論如何,Oracle在標准上有很多改進。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM