【Oracle】使用存储过程 遍历树 举例emp表的树状结构

版权声明:本文为博主原创文章,转载请申明原文出处。 https://blog.csdn.net/xuheng8600/article/details/85317660

使用存储过程求emp表的树状结构

求出每个员工的上级(经理)并输出

 

create or replace procedure p_emp(v_empno emp.empno%type,v_level binary_integer) is

  cursor c is

    select * from emp where mgr = v_empno;

  v_str varchar2(256) := '';

begin

  for i in 1..v_level loop

    v_str := v_str || '   ';

  end loop;

  for emp in c loop

    dbms_output.put_line(v_str || emp.ename);

    p_emp(emp.empno,v_level+1);--递归调用存储过程

  end loop;

end;

 

--求出没有经理的员工

declare

  v_emp emp%rowtype;

begin

  select * into v_emp from emp where mgr is null;

  dbms_output.put_line(v_emp.ename);

  p_emp(v_emp.empno, 1);

end;

 

--或者我们已经知道7839是没有上级的

 

begin

  p_emp(7839, 1);

end;

 

--输出

KING

   JONES

      SCOTT

         ADAMS

      FORD

         SMITH

   BLAKE

      ALLEN

      WARD

      MARTIN

      TURNER

      JAMES

   CLARK

      MILLER

https://www.cnblogs.com/hjwublog/p/5968097.html?utm_source=itdadao&utm_medium=referral

猜你喜欢

转载自blog.csdn.net/xuheng8600/article/details/85317660