指定された行の場合、その親ノードとその子ノードは、CONNECT BY 句によって決定されます。 CONNECT BY 句は、等号 (=) 演算子と比較して、2 つの式で構成する必要があります。 これら 2 つの式のいずれかは、PRIOR キーワードの前に置く必要があります。

指定された行の子ノードを確認するには、次の手順を実行します。

  1. 指定された行の parent_expr を評価します。
  2. table_expression の評価の結果として得られた他の行で child_expr を評価します。
  3. parent_expr = child_expr の場合、この行は指定された親行の子ノードです。
  4. table_expression の残りのすべての行に対してこのプロセスを繰り返します。 手順 3 の方程式を満たすすべての行は、指定された親行の子ノードです。
評価プロセスは、table_expression によって返されるすべての行で、行が子ノードであるかどうかをチェックします。 WHERE 句が table_expression で使用されます。

このプロセスを繰り返すことにより、前の手順で見つかった各子ノードを親と見なし、ノードの反転ツリーを構築することができます。 子ノードの最後のセットに子ノードがない場合、プロセスは完了します。 これらのノードはリーフノードです。

CONNECT BY 句を含む SELECT 文には、START WITH 句が含まれます。 START WITH 句は、ルートノードである行を決定します。 たとえば、行は、前述のアルゴリズムが使用される最初の親ノードです。 詳細については、次のページをご参照ください。