Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle SQL Connect nach Logik

Die letzte Bedingung gilt nicht für Ihre Daten, aber es ist sehr wichtig, unendliche Rekursion zu vermeiden.

Um diesen Punkt zu veranschaulichen, stellen Sie sich vor, was passieren würde, wenn Sie Ihrer Tabelle eine weitere Zeile hinzufügen würden:

E40 E40

Wenn Sie mit E40 beginnen statt E90 , würde Oracle ohne EMP_ID != MANAGER_ID in eine unendliche Rekursion geraten Bedingung, weil E40 würde zurück zu E40 verbinden .

Beachten Sie, dass ein besserer Ansatz zum Schreiben dieser Abfrage darin besteht, NOCYCLE zu verwenden Option statt Codierung in einer expliziten Prüfung:

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