Oracle的递归查询语法,利用此语法,可以方便地实现递归的双向查询
一、测试准备
1、先假设有如下部门结构。
1
/
2
3
/
/|
4 5 6 7
8
2、然后建立测试表和数据。
drop table t_dept_temp;
create table t_dept_temp(
DEPT_ID
NUMBER(2)
NOT NULL, --部门ID
PARENT_ID
NUMBER(2)
,
--上级部门ID
DEPT_NAME VARCHAR2(10)
,
--部门名称
AMOUNT
NUMBER(3)
--人数
);
delete t_dept_temp;
insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values
(1,null,'1'
,2);
insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values
(2,1 ,'1-2'
,15);
insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values
(3,1 ,'1-3'
,8);
insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values
(4,2 ,'1-2-4',10);
insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values
(5,2 ,'1-2-5',9);
insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values
(6,3 ,'1-3-6',17);
insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values
(7,3 ,'1-3-7',5);
insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values
(8,3 ,'1-3-8',6);
commit;
SQL> select * from t_dept_temp;
DEPT_ID PARENT_ID DEPT_NAME AMOUNT
-------
---------
----------
------
1
1
2
2
1
1-2
15
3
1