现有2张表,表A,表B,表A有2个字段A.uid和A.puid构成父子级关系,表B是表A的子表,关联字段为A.id,和A表的uid相关联,现在A表新增2个字段,A.cnum和A.pnum,用来替换构成原父子级关系的两个字段,B表新增A.num字段,替换关联字段,现求一存储过程嵌套游标把3个新增字段的值替换成自己定义的值,如A.cnum以1001开始 

解决方案 »

  1.   

    自己结贴
    create or replace procedure updatepment   
    is
       cursor exp_cur is select * from expequipment m;
     v_exp expequipment%rowtype;
    begin
        open exp_cur;
    loop
        fetch exp_cur into v_exp;
        if(v_exp.parentguid='<ROOT>')
        then
               update expequipment m set parentnum='' where m.expequipmentid=v_exp.expequipmentid;
            
        else
                 update expequipment m set parentnum=(select eqptnum from expequipment m 
                 where m.equipmentguid=v_exp.parentguid) where m.expequipmentid=v_exp.expequipmentid;
                
         
           end if;  
        exit when exp_cur%notfound;
       declare
              cursor parm_cur is select * from expeqptparam p where p.equipmentguid=v_exp.equipmentguid;
              v_parm expeqptparam%rowtype;
       begin
            open parm_cur;
       loop 
            fetch parm_cur into v_parm;
            exit when parm_cur%notfound;
            
             update expeqptparam p set p.eqptnum=v_exp.eqptnum 
             where p.equipmentguid=v_exp.equipmentguid;   end loop;
       close parm_cur;
       commit;
       end;
    end loop;
    close exp_cur;
    end updatepment;