To wygląda trochę śmiesznie, ale naprawdę Oracle 11g pozwala na takie zapytanie do uruchomieniaDlaczego Oracle pozwala na posiadanie kilku podkwerend z tą samą aliasową nazwą w klauzuli WITH?
with
a as (select 1 from dual),
a as (select 2 from dual)
select *
from a;
Zwraca wynik pierwszego podzapytania (czyli 1).
Po prostu nie mogę sobie wyobrazić sytuacji, w której taka funkcja mogłaby być przydatna. W moim przypadku spowodowało to raczej problem, gdy zapomniałem zmienić nazwę podkwerendy po skopiowaniu/wklejeniu, a ogólne zapytanie zwróciło błędne/nieoczekiwane wyniki. Na szczęście zapytanie było dość proste, a powód został natychmiast wykryty.
W każdym razie, spodziewałbym się, że Oracle wyrzuci i będzie wyjątek w takim przypadku.
Moje pytanie brzmi, czy takie zachowanie jest cechą czy błędem? Jeśli funkcja, gdzie może być przydatna?
Dzięki.
BTW, SQLite nie pozwala na uruchamianie podobnych zapytań i zgłasza wyjątek "zduplikowanej nazwy tabeli WITh". Nie próbowałem jeszcze żadnych innych silników db.
Postgres też tego nie akceptuje. –
Założę się, że to błąd - z pewnością możesz zgłosić problem w witrynie My Oracle Support. –
Powielane w 12.1.0.2. –