sql >> Base de Datos >  >> RDS >> Oracle

Comportamiento extraño de Oracle:la unión cruzada en CTE recursivo funciona con coma pero no con la cláusula de unión cruzada

Usando la primera consulta recursiva, obtendrá 5 registros, cuando intente realizar una unión cruzada en el resultado recursivo, cada vez que itera los datos, para cada iteración de acuerdo con el valor 5, los valores se enlazan entre sí, lo que resulta en, ORA-32044: cycle detected while executing recursive WITH query error. En su lugar, debe unirse al lado del resultado recursivo como se muestra a continuación,

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;