Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Seltsames Oracle-Verhalten - Cross Join in rekursivem CTE funktioniert mit Komma, aber nicht mit Cross Join-Klausel

Mit der ersten rekursiven Abfrage erhalten Sie 5 Datensätze, wenn Sie versuchen, das rekursive Ergebnis zu verknüpfen, jedes Mal, wenn es die Daten iteriert, werden die Werte für jede Iteration gemäß dem Wert 5 gegeneinander geschleift, was zu ORA-32044: cycle detected while executing recursive WITH query Error. Stattdessen müssen Sie das rekursive Ergebnis wie unten beschrieben über Kreuz verbinden,

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;