La dernière condition ne s'applique pas à vos données, mais il est très important d'éviter une récursivité infinie.
Pour illustrer ce point, imaginez ce qui se passerait si vous ajoutiez une autre ligne à votre tableau :
E40 E40
Si vous commencez par E40
au lieu de E90
, Oracle tournerait dans une récursivité infinie sans EMP_ID != MANAGER_ID
condition, car E40
se reconnecterait à E40
.
Notez qu'une meilleure approche pour écrire cette requête consiste à utiliser NOCYCLE
option au lieu de coder dans une vérification explicite :
SELECT *
FROM Temp
START WITH EMP_ID = 'E90'
CONNECT BY NOCYCLE PRIOR EMP_ID = MANAGER_ID
ORDER BY EMP_ID