Poslední podmínka se nevztahuje na vaše data, ale je velmi důležité vyhnout se nekonečné rekurzi.
Pro ilustraci tohoto bodu zvažte, co by se stalo, kdybyste do tabulky přidali další řádek:
E40 E40
Pokud začnete s E40
místo E90
, Oracle by se otočil do nekonečné rekurze bez EMP_ID != MANAGER_ID
podmínku, protože E40
se připojí zpět k E40
.
Všimněte si, že lepší přístup k psaní tohoto dotazu je použít NOCYCLE
možnost namísto kódování v explicitní kontrole:
SELECT *
FROM Temp
START WITH EMP_ID = 'E90'
CONNECT BY NOCYCLE PRIOR EMP_ID = MANAGER_ID
ORDER BY EMP_ID