Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Dziwne zachowanie Oracle - cross join w rekurencyjnym CTE działa z przecinkiem, ale nie z klauzulą ​​cross join

Korzystając z pierwszego zapytania rekurencyjnego, otrzymasz 5 rekordów, gdy spróbujesz połączyć krzyżowo na wyniku rekurencyjnym, za każdym razem, gdy iteruje dane, dla każdej iteracji zgodnie z wartością 5, wartości są zapętlone względem siebie, co daje ORA-32044: cycle detected while executing recursive WITH query błąd. Zamiast tego musisz przekreślić sprzężenie po stronie rekurencyjnego wyniku, jak poniżej,

with r (x) as (
  select 1 as x from dual
  union all
select x + 1 from r,dual where x < 5
)
select * from r
cross join r; 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nadawanie uprawnień użytkownikom na innym schemacie

  2. Oracle - Aktualizuj wiersze o wartości minimalnej w grupie kolumny z innej tabeli

  3. LIMIT ZBIORÓW ZBIORCZYCH w WYKONAJ NATYCHMIAST

  4. Nowe funkcje bazy danych Oracle 20c

  5. Migracja danych między różnymi DBMS