对于任何给定行,其父级和子级均由 CONNECT BY 子句确定。CONNECT BY 子句必须由使用等号 (=) 进行比较的两个表达式组成。此外,这两个表达式之一必须前面带有关键字 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 子句确定要作为根节点的行;即,这些行是要应用前面描述的算法的初始父节点。这将在下一节中进一步说明。