Den sidste betingelse gælder ikke for dine data, men det er meget vigtigt at undgå uendelig rekursion.
For at illustrere dette punkt, overvej, hvad der ville ske, hvis du tilføjede endnu en linje til din tabel:
E40 E40
Hvis du starter med E40
i stedet for E90
, ville Oracle spinde ind i en uendelig rekursion uden EMP_ID != MANAGER_ID
tilstand, fordi E40
ville oprette forbindelse tilbage til E40
.
Bemærk, at en bedre tilgang til at skrive denne forespørgsel er at bruge NOCYCLE
mulighed i stedet for at kode i en eksplicit check:
SELECT *
FROM Temp
START WITH EMP_ID = 'E90'
CONNECT BY NOCYCLE PRIOR EMP_ID = MANAGER_ID
ORDER BY EMP_ID