/*关联父级ID*/
declare
l_sql varchar2(200);
begin
for tt in(select a.orgid,substr(a.yab003,0,9) yab003
from TAORG_TEMP a
where/* a.porgid='100043' and a.orgid='100116' and*/ a.orglevel='5')
loop
l_sql:='update TAORG_TEMP t set t.porgid = :a where t.orgid != :b and substr(t.yab003,0,9) = :c';
execute immediate l_sql using tt.orgid,tt.orgid,tt.yab003;
commit;
end loop;
end;
/*设置树结构路径*/
declare
l_id_str varchar2(200);
l_name_str varchar2(500);
l_sql varchar2(500);
begin
for pp in (
select t.orgid from TAORG_TEMP t/* where t.orgid=1*/
)
loop
l_id_str:='';
l_name_str:='';
for tt in (
select t.orgid,t.orgname from TAORG_TEMP t START WITH t.orgid=pp.orgid
CONNECT BY PRIOR t.porgid=t.orgid
order by t.orglevel
)
loop
l_id_str:=l_id_str||tt.orgid||'/';
l_name_str:=l_name_str||tt.orgname||'/';
end loop;
l_id_str:=substr(l_id_str,0,length(l_id_str)-1);
l_name_str:=substr(l_name_str,0,length(l_name_str)-1);
l_sql:='update TAORG_TEMP ta set ta.orgidpath=:a,ta.orgnamepath=:b where ta.orgid=:c';
execute immediate l_sql using l_id_str,l_name_str,pp.orgid;
commit;
end loop;
end;
来源:https://www.cnblogs.com/lhc-wym/p/10771379.html