Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Comportamento estranho do Oracle - junção cruzada em CTE recursiva funciona com vírgula, mas não com cláusula de junção cruzada


Usando a primeira consulta recursiva, você obterá 5 registros, quando tentar fazer a junção cruzada no resultado recursivo, cada vez que iterar os dados, para cada iteração de acordo com o valor 5, os valores serão repetidos entre si resultando em, ORA-32044: cycle detected while executing recursive WITH query erro. Em vez disso, você deve cruzar o lado do resultado recursivo como abaixo,
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;