Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle SQL Connect par logique

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