我现在有一个存储过程,我将数据集已经取出,放在了一个游标里,想批量插入一个表里,该怎么做,可否给个例子。

解决方案 »

  1.   

    没有必要用过程,显式游标insert into table_B (id,name) select id,name from table_A;
      

  2.   

    假设你的游标cursor1中包含记录集有两项(a,b),你想插入表table2(a,b)中
    可以这样写:
    ....
    begin
    for cc in cursor1 loop ----cc可以随便起名字
    insert into table2(a,b) values(cc.a,cc.b);
    end loop;
    commit;
    end;
      

  3.   

    一句SQL就可以搞定啊。。
    为什么要用过程,游标?
      

  4.   

    呵呵,批量插入的话Pro*C/C++可以做到 insert for 100 into ...
    pl/sql里没有批量操作(因为不需要) 可以直接用1楼的SQL或2楼的游标操作都可以,根据需要。
    批量操作是为了减少客户端和服务端之间的网络通信,因为网络通信通信的时间可能要比数据库操作的时间大一个数量级!想象一下,当客户端请求fetch一条记录发给服务端,然后服务端接到请求,fetch一条记录,再传给客户端,这么逐条进行,多浪费时间!批量操作的话,直接告诉服务端我要fetch一批记录(最多100条),服务端取完记录会一起发给客户端,这样节省时间!pl/sql作为在服务端运行的代码,就不需要批量操作了!
      

  5.   

    既然打算批量处理,就不要使用游标.
    insert into a select ....