求一个分组循环存储过程的写法
假定执行单独的insert语句,数据量太大,需要对数据进行分组循环,
50万条commit一次,是不是必须要用游标循环,不用游标可以不可以,
可以的话应该怎么设置变量,怎么写循环?
我是因为工作的需要刚接触ORACLE,应该是刚接触程序这块,以前学硬件方面的,
很恼火,谢谢大家,请帮帮忙哈。

解决方案 »

  1.   

    我自己写过的一个例子,给你参考下.
    另补一句,兄弟你开个0分帖,是没多少人愿意回的啊,以后记得开点分.
    declare
    v_id b.id%type;
    v_name b.name%type;
    begin
    select min(id) into v_id from b;
    for i in 1..500000000 loop
    v_id := v_id + 1;
    v_name := 'name'||to_char(v_id);
    insert into b values(v_id,v_name);
    if
    mod(i,500000)=0 then commit;  ---------分段提交。
    end if;
    end loop;
    end;
      

  2.   

    declare
      v_id   b.id%type;
      v_name b.name%type;
    begin
      select min(id) into v_id from b;
      for i in 1 .. 500000000 loop
        v_id   := v_id + 1;
        v_name := 'name' || to_char(v_id);
        insert into b values (v_id, v_name);
        if mod(i, 500000) = 0 then
          commit; ---------分段提交。
        end if;
      end loop;
    end;
      

  3.   

    大量执行单独的insert语句?数据量大时考虑一下是否可以用imp、load。只能分段提交的话,sleepzzzzz的就不错。
      

  4.   

    为什么这里写" select min(id) into v_id from b;"?
    不是max(id)?
    看不懂