员工部门全路径
需要:一张表为员工表,一张表为部门表,然后获取每位员工的部门全路径
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博客 ” ,链接:http://blog.itpub.net/28916011/viewspace-2120172/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28916011/viewspace-2120172/