SYS_CONNECT_BY_PATH是一個函數,它在分層查詢中用於檢索在當前節點和根節點之間出現的指定列的值。
函數的特徵為:
SYS_CONNECT_BY_PATH (column, delimiter)該函數採用兩個參數:
- column 是位於分層查詢中指定的表中且調用該函數的列的名稱。
- delimiter 是 varchar 值,用於分隔指定列中的每個條目。
以下樣本返回員工名稱及其經理的列表;如果經理有上級經理,則該名稱會附加到結果中:
polardb=# 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)在結果集中:
- level 列顯示該查詢返回的層級數。
- ename 列顯示員工名稱。
- managers 列包含經理的層次列表。
PolarDB PostgreSQL版(相容Oracle)的 SYS_CONNECT_BY_PATH 實現不支援:
- 在 CONNECT_BY_PATH 內部使用 SYS_CONNECT_BY_PATH。
- 在 SYS_CONNECT_BY_PATH 內部使用 SYS_CONNECT_BY_PATH。