Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comportement étrange d'Oracle - la jointure croisée dans le CTE récursif fonctionne avec une virgule mais pas avec la clause de jointure croisée

En utilisant la première requête récursive, vous obtiendrez 5 enregistrements, lorsque vous essayez de faire une jointure croisée sur le résultat récursif, chaque fois qu'il itère les données, pour chaque itération selon la valeur 5, les valeurs sont bouclées les unes contre les autres, ce qui donne, ORA-32044: cycle detected while executing recursive WITH query Erreur. Au lieu de cela, vous devez croiser le résultat récursif comme ci-dessous,

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;