sys_connect_by_path函數是為了配合遞歸查詢的函數, sys_connect_by_path函數是将遞歸查到的資料加上特定的符号,看起來更明顯
connect by遞歸查詢配合sys_connect_by_path基本文法是:
select sys_connect_by_path([字段],[分隔符号]) from [表格] start with ... connect by prior id = pId
start with:表示以什麼為根節點,不加限制可以寫1=1,要以id為123的節點為根節點,就寫為start with id =123
connect by:connect by是必須的,start with有些情況是可以省略的,或者直接start with 1=1不加限制
prior:prior關鍵字可以放在等号的前面,也可以放在等号的後面,表示的意義是不一樣的,比如 prior id = pid,就表示pid就是這條記錄的根節點了
sys_connect_by_path第一個參數是形成樹形式的字段,第二個參數是父級和其子級分隔顯示用的分隔符!
然後給個例子,scott使用者登入
select sys_connect_by_path(ename, '>')
from emp
start with ename = 'KING'
connect by prior empno = mgr;
可能遇到的報錯,ORA-30004:使用SYS_CONNECT_BY_PATH函數時,不能将分隔符作為列值的一部分
select sys_connect_by_path(ename, '@')
from emp
start with ename = 'KING'
connect by prior empno = mgr;