如果用sqlloader的话,可以用rows=500
eg:sqlldr user/password control =....... rows = 500

解决方案 »

  1.   

    declare
    v_count   number(3);
    begin
    v_count:=1;
    for rec in (select * from A) loop
    insert into B values();
    if v_count = 500 then
       commit;
       v_count:=1;
    end if;
    v_count:=v_count+1;
    end loop;
    commit;
    end;
      

  2.   

    我是这样写的:
    create or replace procedure insert_into_tmp(prm_appcode  out number,prm_message out varchar2) is
      
      cursor cur_ps_syrkdj 
      is
        select syrkbh,jmsfzh,xm,xzz,sfsbsq,tbr,tbsj,yzz1,yzz2,bm,xb,csrq,mz,jg,whcd,
               zy,fwcs,jucun,minzu,yzz3,ytbr
        from ps_syrkdj;  v_count number(3);
      
      rec_ps_syrkdj cur_ps_syrkdj%rowtype;
      
    begin
      v_count:=1
      for rec_ps_syrkdj in cur_ps_syrkdj 
      loop
           insert into demo_syrkdj(syrkbh,jmsfzh,xm,xzz,sfsbsq,tbr,tbsj,yzz1,yzz2,
                                  bm,xb,csrq,mz,jg,whcd,zy,fwcs,jucun,minzu,yzz3,
                                  ytbr,sj,flag)
               values (rec.syrkbh,rec.jmsfzh,rec.xm,rec.xzz,rec.sfsbsq,rec.tbr,   
                       rec.tbsj,rec.yzz1,rec.yzz2,rec.bm,rec.xb,rec.csrq,rec.mz,
                       rec.jg,rec.whcd,rec.zy,rec.fwcs,rec.jucun,rec.minzu,rec.yzz3,
                       rec.ytbr,sysdate,'1');
           if v_count = 500 then
              commit;
              v_count:=1;
           end if;
           v_count:=v_count+1;
       end loop;
       close cur_ps_syrkdj;
       commit;
    end insert_into_tmp;但编译时提示错误:Error: PLS-00103: 出现符号 "FOR"在需要下列之一时:
           *&=-+;</>atinmodnotrem
              <an exponent (**)><> or != or ~=>=<=<>andorlikebetween
              is nullis not||is dangling
           符号 ";" 被替换为 "FOR" 后继续。
    Line: 14
    Text: for rec_ps_syrkdj in cur_ps_syrkdj
      

  3.   

    create or replace procedure insert_into_tmp(prm_appcode  out number,prm_message out varchar2) is
      
      cursor cur_ps_syrkdj 
      is
        select syrkbh,jmsfzh,xm,xzz,sfsbsq,tbr,tbsj,yzz1,yzz2,bm,xb,csrq,mz,jg,whcd,
               zy,fwcs,jucun,minzu,yzz3,ytbr
        from ps_syrkdj;  v_count number(3);  
    begin
      v_count:=1
      for rec_ps_syrkdj in cur_ps_syrkdj   loop
           insert into demo_syrkdj(syrkbh,jmsfzh,xm,xzz,sfsbsq,tbr,tbsj,yzz1,yzz2,
                                  bm,xb,csrq,mz,jg,whcd,zy,fwcs,jucun,minzu,yzz3,
                                  ytbr,sj,flag)
               values (rec.syrkbh,rec.jmsfzh,rec.xm,rec.xzz,rec.sfsbsq,rec.tbr,   
                       rec.tbsj,rec.yzz1,rec.yzz2,rec.bm,rec.xb,rec.csrq,rec.mz,
                       rec.jg,rec.whcd,rec.zy,rec.fwcs,rec.jucun,rec.minzu,rec.yzz3,
                       rec.ytbr,sysdate,'1');
           if v_count = 500 then
              commit;
              v_count:=1;
           end if;
           v_count:=v_count+1;
       end loop;
       commit;
    end insert_into_tmp;