--通过普通SQL语句实现
select lpad('+',level,' ')||ename from emp
connect by prior empno=mgr
start with mgr is null;
--通过递归函数实现
create or replace function getorg(enm varchar2,lev number) return number
as
cursor c1 is select * from emp where mgr = (select
empno from emp where ename = enm);
c1rec c1%rowtype;
v1 number;
begin
dbms_output.put_line(lpad('+',2*lev,' ')||enm);
for c1rec in c1 loop
v1:=getorg(c1rec.ename,lev+1);
end loop;
return 0;
end;
--调用
方法一:
declare
n number;
begin
n := getorg('KING',1);
end;
方法二:
select getorg('KING',1) from dual;