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