ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 利用bluk collect into循环

利用bluk collect into循环

原创 Linux操作系统 作者:raining_word 时间:2012-02-12 17:58:30 0 删除 编辑
declare
  cursor c1 is
    select t.TABLE_NAME from dba_tables t where t.OWNER = 'GHSJ_JCSJ';
  v_table dba_tables%rowtype;
  type v_table_name is table of dba_tables.TABLE_NAME%type;
  v_name v_table_name := v_table_name();
  cursor c2 is
    select t2.disp_name, t2.id
      from PUB_DAMAIN_VALUE t2
     where t2.domain_type_id = '200080';
  v_PUB_DAMAIN_VALUE PUB_DAMAIN_VALUE%rowtype;
  type v_id_name is table of PUB_DAMAIN_VALUE.id%type;
  v_id v_id_name := v_id_name();
  type v_disp_name_name is table of PUB_DAMAIN_VALUE.disp_name%type;
  v_disp_name  v_disp_name_name := v_disp_name_name();
  t_table_name varchar2(50);
  v_str varchar2(200);
 
  tag integer := 1;
begin
  open c1;
  open c2;
  fetch c1 bulk collect
    into v_name;
  for i in 1 .. v_name.count loop
    t_table_name:=v_name(i);
   /*
   fetch c2 bulk collect
      into v_id, v_disp_name;
    */
    tag := 1;
   loop
     
      exit when c2%notfound;
     v_id.extend;
     v_disp_name.extend;
     fetch c2 into v_id(tag), v_disp_name(tag);
     tag := tag + 1;
   end loop; 
     dbms_output.put_line(v_id.count);  
     
    for j in 1 .. v_id.count loop    
    v_str:= 'update '||t_table_name||' set sj_type= '||v_id(j) ||  ' where sj_type='||v_disp_name(j);
      dbms_output.put_line(v_str);
     execute immediate(v_str); 
     commit;
    end loop;
    
  end loop;
  close c1;
  close c2;
end

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22067506/viewspace-716092/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-07-08

  • 博文量
    1
  • 访问量
    3892