天天看點

Oracle應用之sys_connect_by_path用法

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;      
Oracle應用之sys_connect_by_path用法

可能遇到的報錯,ORA-30004:使用SYS_CONNECT_BY_PATH函數時,不能将分隔符作為列值的一部分

select sys_connect_by_path(ename, '@')
  from emp
 start with ename = 'KING'
connect by prior empno = mgr;