Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle SQL Connect por lógica


A última condição não se aplica aos seus dados, mas é muito importante evitar a recursão infinita.

Para ilustrar esse ponto, considere o que aconteceria se você adicionasse outra linha à sua tabela:
E40 E40

Se você começar com E40 em vez de E90 , o Oracle iria girar em uma recursão infinita sem EMP_ID != MANAGER_ID condição, porque E40 conectaria de volta ao E40 .

Observe que uma abordagem melhor para escrever esta consulta é usar NOCYCLE opção em vez de codificar em uma verificação explícita:
SELECT *
FROM Temp
    START WITH EMP_ID = 'E90'
    CONNECT BY NOCYCLE PRIOR EMP_ID = MANAGER_ID
ORDER BY EMP_ID