最後の条件はデータには適用されませんが、無限の再帰を回避することが非常に重要です。
この点を説明するために、テーブルに別の行を追加するとどうなるかを考えてみましょう。
E40 E40
E40
で開始する場合 E90
の代わりに 、Oracleは、EMP_ID != MANAGER_ID
なしで無限再帰にスピンします。 E40
であるため、条件 E40
に接続し直します 。
このクエリを作成するためのより良いアプローチは、NOCYCLE
を使用することであることに注意してください。 明示的なチェックでコーディングする代わりにオプション:
SELECT *
FROM Temp
START WITH EMP_ID = 'E90'
CONNECT BY NOCYCLE PRIOR EMP_ID = MANAGER_ID
ORDER BY EMP_ID