Aby to wyjaśnić, musimy trochę zanurzyć się w historii.
Możliwość wykorzystania skorelowane sub-zapytań z więcej niż 1 poziomie także w danych 10g R1 i był odpowiednio udokumentowane (https://docs.oracle.com/cd/B14117_01/server.101/b10759/queries007.htm) z powrotem tych dniach ...
Oracle wykonuje skorelowanej podkwerenda gdy zagnieżdżone podzapytanie odwołuje się do kolumny z tabeli odnoszącej się do nadrzędnej instrukcji dowolnej liczby liczby poziomów nad podzapytaniem.
... ale nie działała prawidłowo. :)
Zaczynając od Oracle 10g R2, ta funkcja została wyłączona, a dokumentacja uległa zmianie.
także (jeśli masz dostęp) widać Bug 15990897: frazę skorelowane zmienna użyta w 2 LEVEL podzapytanie nie powiedzie się z ORA-904 na Metalink (poprawione w wersji Produktu 12.1.0.1.0). Nie jestem pewien, dlaczego jest uważany za błąd, ponieważ działa zgodnie z dokumentacją (10g R2, 11g R1, 11g R2), ale tak właśnie jest.
więc funkcjonalność została wyłączona po 10,1 i przed 12.1 ale dokumentacją nawet do 12,2 (https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/Using-Subqueries.html) mówi
Oracle wykonuje podzapytanie skorelowane gdy zagnieżdżone podzapytanie odniesienia kolumna z tabeli, o której mowa w oświadczeniu dominującej jeden poziom nad podzapytaniem.
wyciąć długie opowiadanie, ta funkcja jest włączona w 12c i 12c R1 R2, ale dokumentacja nie jest stała i najwyraźniej nie wspominając już o tym poprawa nowych funkcji przewodnika.
PS. O ile pamiętam standardowy SQL 2003 pozwala na korelację tylko do jednego poziomu głębokości - każdy może sprawdzić (http://www.wiscorp.com/sql_2003_standard.zip). Jednak Oracle ma wiele ulepszeń ponad standard.
Każde wydanie zawiera "Przewodnik po nowych funkcjach": http://docs.oracle.com/database/121/NEWFT/toc.htm Nie mogę jednak znaleźć żadnego odniesienia pasującego do tej zmiany. –
@a_horse_with_no_name Tak, sprawdziłem te dokumenty również przed wysłaniem. Mam wrażenie, że jest to przypadek pominiętej dokumentacji firmy Oracle (tak ważnej funkcji, która zmienia SQL!). – toddlermenot
Nie chciałbym polegać na tej funkcji, gdybym był tobą; prawdopodobnie nie jest to zamierzone zachowanie (np. błąd). – Boneist