Oracle函數sys_connect_by_path用法


sys_connect_by_path函數是為了配合遞歸查詢的函數,遞歸查詢可以參考我之前的博客:https://blog.csdn.net/u014427391/article/details/84996259, 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函數時,不能將分隔符作為列值的一部分

原因是當使用SYS_CONNECT_BY_PATH 函數時,不能將分隔符作為字段值的一部分

假如這樣的sql,ename里面有@這個字符,就會報錯,方法是修改sql換個字符,或者改數據

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM