Det sista villkoret gäller inte för din data, men det är mycket viktigt att undvika oändlig rekursion.
För att illustrera detta, fundera på vad som skulle hända om du lade till ytterligare en rad i tabellen:
E40 E40
Om du börjar med E40
istället för E90
, Oracle skulle snurra till en oändlig rekursion utan EMP_ID != MANAGER_ID
skick, eftersom E40
skulle ansluta tillbaka till E40
.
Observera att ett bättre sätt att skriva den här frågan är att använda NOCYCLE
alternativet istället för att koda i en explicit check:
SELECT *
FROM Temp
START WITH EMP_ID = 'E90'
CONNECT BY NOCYCLE PRIOR EMP_ID = MANAGER_ID
ORDER BY EMP_ID