-- 部门表createtable department (
code VARCHAR2(10)notnull,
name VARCHAR2(50),
pcode VARCHAR2(10),
mgrname VARCHAR2(50));-- 造数据insertinto department values('ROOT','顶级部门',null,'顶级BOSS');insertinto department values('A','A部门','ROOT','A老大');insertinto department values('A01','A01部门','A','A01老大');insertinto department values('A02','A02部门','A','A02老大');insertinto department values('B','B部门','ROOT','B老大');insertinto department values('B01','B01部门','B','B01老大');insertinto department values('B02','B02部门','B','B02老大');insertinto department values('A021','A02部门','A02','A021老大');
递归查询某个部门(ROOT)的所有子级部门
select t.*from department t startwith t.code='ROOT'connectby prior t.code = t.pcode;
递归查询某个部门(A)的所有子级部门
select t.*from department t startwith t.code='A'connectby prior t.code = t.pcode;
递归查询某个部门(B02)的所有上级部门
select t.*from department t startwith t.code='B02'connectby t.code = prior t.pcode ;
递归查询某个部门(A021)的所有上级部门
select t.*from department t startwith t.code='A021'connectby t.code = prior t.pcode ;