ITPub博客

首页 > 数据库 > Oracle > 员工部门全路径

员工部门全路径

原创 Oracle 作者:czxin788 时间:2016-06-15 09:03:58 0 删除 编辑

员工部门全路径
 需要:一张表为员工表,一张表为部门表,然后获取每位员工的部门全路径
create or replace  procedure bumenfullpath
   is 
  v_c_code             tb_v_pekemp.c_code%type;
  v_c_name_emp        tb_v_pekemp.c_name%type;
  v_c_dept_hid           tb_v_pekemp.c_dept_hid%type;
  v_c_name            tb_v_pekunit.c_name%type;
cursor c_emp  is select c_code,c_name,c_dept_hid from tb_v_pekemp order by c_code;
 begin
for i in  c_emp
loop
v_c_code:=i.c_code;
 v_c_dept_hid:=i.c_dept_hid;
 v_c_name_emp :=i.c_name;
--爬树,通过sys_connect_by_path函数来获取每位员工部门全路径;另外,又用了子查询,返回内容最长的哪行记录
select c_name into v_c_name
 from

(select *
from 
(
select c_name_max, c_name  from 
(
select max(length(c_name)) c_name_max, c_name 
from
(select c_oid,sys_connect_by_path(c_name,'/') c_name
from tb_v_pekunit
start with  c_oid=v_c_dept_hid
connect by prior c_supoid=c_oid) group by c_name 
) order by c_name_max desc
 )
where rownum=1);
 dbms_output.put_line(v_c_code||'==>'||v_c_name_emp||':'||v_c_name);
end loop;
  end;
 /


验证过程:
SQL> exec bumenfullpath;
0001==>陈x:/总裁办/职能部室/宏远控股集团有限公司
0002==>齐x:/总经理室/进口事业部/事业部、分子公司/宏远控股集团有限公司
0005==>赵xx:/总经理室/地产事业部/事业部、分子公司/宏远控股集团有限公司

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28916011/viewspace-2120172/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-06-03

  • 博文量
    233
  • 访问量
    858516