Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle SQL Connect per logica

L'ultima condizione non si applica ai tuoi dati, ma è molto importante evitare la ricorsione infinita.

Per illustrare questo punto, considera cosa accadrebbe se aggiungessi un'altra riga alla tabella:

E40 E40

Se inizi con E40 invece di E90 , Oracle girerebbe in una ricorsione infinita senza EMP_ID != MANAGER_ID condizione, perché E40 si ricollegherebbe a E40 .

Nota che un approccio migliore per scrivere questa query consiste nell'usare NOCYCLE opzione invece di codificare in un controllo esplicito:

SELECT *
FROM Temp
    START WITH EMP_ID = 'E90'
    CONNECT BY NOCYCLE PRIOR EMP_ID = MANAGER_ID
ORDER BY EMP_ID