oracle父子结构转分级码结构

原创 Laughing  2019-08-09 21:19  阅读 10 次 评论 0 条
  1. --第一步增加列用于临时处理  
  2. ALTER TABLE GSPUSERDOMAIN ADD fid varchar2(36)  
  3. ALTER TABLE GSPUSERDOMAIN ADD pathtemp varchar2(36)  
  4.   
  5. --第二步插入父节点  
  6. insert into GSPUSERDOMAIN(id,code,name,PATH,LAYER,isdetail,fid,pathtemp)  
  7. select id,danweidh,mingcheng,ID,level,connect_by_isleaf,shangji,'' from JIGOU   
  8.   start with id in(select id from JIGOU where shangji IS NULL)  
  9.   connect by shangji=prior id order by shangji  
  10.   
  11. --第二步处理路径  
  12. declare  
  13.    vInit VARCHAR2(36):=0;  
  14. begin  
  15.   for i in 1..10 loop  
  16.    declare CURSOR  emp_cur IS  select * From GSPUSERDOMAIN  where LAYER=i FOR UPDATE;  
  17.     BEGIN    
  18.     FOR emp_row IN emp_cur  
  19.     LOOP  
  20.       select(case when max(pathtemp)is null then '0' else max(pathtemp) end)+1 into vInit From GSPUSERDOMAIN where nvl(trim(GSPUSERDOMAIN.fid),' ')=nvl(trim(emp_row.fid),' ');  
  21.       vInit:=LPAD(vInit,4,'0');  
  22.     UPDATE GSPUSERDOMAIN SET pathtemp=(select pathtemp from GSPUSERDOMAIN aa where aa.id=GSPUSERDOMAIN.fid)||vInit WHERE CURRENT OF emp_cur;  
  23.     END LOOP;  
  24.     end;  
  25.   end loop;  
  26. end;  
  27. --第三步骤修改path  
  28. UPDATE GSPUSERDOMAIN SET PATH = pathtemp  
  29. --最后一步,删除临时列  
  30. alter table GSPUSERDOMAIN drop column fid;  
  31. alter table GSPUSERDOMAIN drop column pathtemp;  

历史上的今天:

本文地址:https://www.lisen.me/oracle-parent-child-structure-to-hierarchical-code-structure.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!
NEXT:已经是最新一篇了

发表评论


表情