存储过程

允我心安 提交于 2019-12-28 19:51:29

/*关联父级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;

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!