一、基本使用
start with ... connect by prior SQL语法格式:
SELECT column
FROM table_name
START WITH column=value
CONNECT BY PRIOR 父主键=子外键
示例:
create table XT_RESOURCE
(
RESOURCE_DM VARCHAR2(20) not null, --资源代码
RESOURCE_NAME VARCHAR2(60), --资源名称
RESOURCE_URL VARCHAR2(300), --资源URL地址
RESOURCE_TYPE VARCHAR2(1), --资源类型
RESOURCE_DM_SJ VARCHAR2(20), --上级资源代码
RESOURCE_CX NUMBER(4), --次序
RESOURCE_MS VARCHAR2(120), --资源描述
YXBZ VARCHAR2(1) --有效标志
)
RESOURCE_DM为主键,RESOURCE_DM_SJ为父节点,RESOURCE_CX是排序字段,NAME是节点名称
不带排序示例:
SELECT D.* FROM XT_RESOURCE D
START WITH D.RESOURCE_DM_SJ=0
CONNECT BY PRIOR D.RESOURCE_DM=D.RESOURCE_DM_SJ
带排序示例:
SELECT D.*, LEVEL FROM XT_RESOURCE D
START WITH D.RESOURCE_DM_SJ=0
CONNECT BY PRIOR D.RESOURCE_DM=D.RESOURCE_DM_SJ ORDER SIBLINGS BY RESOURCE_CX
注:在 Oracle 中,ORDER SIBLINGS BY 定义返回时同一父亲下各个兄弟之间的顺序