上次在处理ORA-30004错误时,接触到一个新的函数SYS_CONNECT_BY_PATH 。下面对该函数进行了简单的学习、熟悉。
网上摘录(原文地址:http://www.cnblogs.com/shulmblogs/archive/2011/09/29/2195236.html)如下:
Oracle函数sys_connect_by_path
详解:
语法:
Oracle函数:sys_connect_by_path 主要用于树查询(层次查询) 以及 多列转行。
上次应用就是树查询:可以把一个父节点下的所有子节点通过某个字符进行区分,然后连接在一个列中显示。
其语法一般为:
select ... sys_connect_by_path(column_name,'connect_symbol')
from table
start with ...
connect by ... prior
理解:
对于数据库来说,根节点并不一定是在数据库中设计的顶级节点,而是start with开始的地方。sys_connect_by_path函数就是从start with开始的地方开始遍历,并记下其遍历到的节点,start with开始的地方被视为根节点,将遍历到的路径根据函数中的分隔符,组成一个新的字符串。sys_connect_by_path函数用connect by来寻找下一条记录,直到迭代找不到相应记录为止。概念与递归类似,connect
by指定递归(连接)条件,如果条件不满足则递归结束。