Oracle
 sql >> Database >  >> RDS >> Oracle

Strano comportamento di Oracle:il cross join in CTE ricorsivo funziona con la virgola ma non con la clausola di cross join

Usando la prima query ricorsiva, otterrai 5 record, quando provi a eseguire il cross join sul risultato ricorsivo, ogni volta che itera i dati, per ogni iterazione in base al valore 5, i valori vengono ripetuti l'uno contro l'altro risultando, ORA-32044: cycle detected while executing recursive WITH query errore. Invece devi incrociare il risultato ricorsivo come di seguito,

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;