SYS_CONNECT_BY_PATH は、階層クエリ内で機能する関数で、現在のノードとルートノード間にある指定の列の列値を取得します。 関数の定義は次のとおりです。

SYS_CONNECT_BY_PATH (column, delimiter)

関数には、パラメーターが 2 つあります。

  • column はテーブル内にある列の名前を指定します。 このテーブルは、関数を呼び出す階層クエリで指定されます。
  • delimiter は指定の列にある各エントリを区切る varchar 値を指定します。

次の例では、従業員とそのマネージャーの名前のリストを返しています。 マネージャーが上司に報告する場合、上司の名前が結果に追加されます。

edb=# SELECT level, ename , SYS_CONNECT_BY_PATH(ename, '/') managers
      FROM emp
      CONNECT BY PRIOR empno = mgr
      START WITH mgr IS NULL
      ORDER BY level, ename, managers;
 level | ename  |        managers
-------+--------+-------------------------
     1 | KING   | /KING
     2 | BLAKE  | /KING/BLAKE
     2 | CLARK  | /KING/CLARK
     2 | JONES  | /KING/JONES
     3 | ALLEN  | /KING/BLAKE/ALLEN
     3 | FORD   | /KING/JONES/FORD
     3 | JAMES  | /KING/BLAKE/JAMES
     3 | MARTIN | /KING/BLAKE/MARTIN
     3 | MILLER | /KING/CLARK/MILLER
     3 | SCOTT  | /KING/JONES/SCOTT
     3 | TURNER | /KING/BLAKE/TURNER
     3 | WARD   | /KING/BLAKE/WARD
     4 | ADAMS  | /KING/JONES/SCOTT/ADAMS
     4 | SMITH  | /KING/JONES/FORD/SMITH
(14 rows)

ここでは、

  • レベル列にはクエリが返すレベルの数が表示されます。
  • ename 列には従業員の名前が表示されます。
  • managers 列にはマネージャーの階層リストが表示されます。

PolarDB for Oracle のデータベースで使用する SYS_CONNECT_BY_PATH の実装は、次の使用をサポートしていません。

  • SYS_CONNECT_BY_PATH 内の CONNECT_BY_PATH
  • SYS_CONNECT_BY_PATH 内の SYS_CONNECT_BY_PATH