我按书上的例子写的,编译通不过
   sql_str := 'insert into test_table(test1,test2) values(:arg1,:arg2)';
   forall i in 1..5
      execute immediate sql_str
         using 2, 3;
总是提示execute这一行有问题
我用的是ORACLE8.1.7

解决方案 »

  1.   

    FOR i IN 1..50 LOOP
         ...
      END LOOP;
      

  2.   

    CREATE OR REPLACE PROCEDURE prc_test IS
       strSQL VARCHAR2(50);
    BEGIN
         dbms_output.put_line('test');
         FOR i in 1..5 LOOP
                strSQL := 'insert into mytest(allnumber,vTest)values(:ab,:bc)';
                EXECUTE IMMEDIATE strSQL USING 1,2;
         END LOOP;
    END prc_test;
      

  3.   

    对,斑竹主要就是For循环语法不对,楼上两位都给出了正确答案。我就不罗嗦了。
      

  4.   

    DML 语句在 FORALL 内不能使用
    如:
    declare
     str varchar2(100):='begin insert into aa values(:a,:b); end;';
    begin
    forall i in 1..2
    execute immediate str using 1,'1';
    end;ORA-06550: 第 5 行, 第 1 列: 
    PLS-00435: 没有 BULK In-BIND 的 DML 语句在 FORALL 内不能使用SQL> declare
      2   str varchar2(100):='begin insert into aa values(:a,:b); end;';
      3  begin
      4  for i in 1..2 loop
      5  execute immediate str using 1,'1';
      6  end loop;
      7  end;
      8  /PL/SQL procedure successfully completed所能楼主不要用forall,它只针对insert,update,delete语句有效
      

  5.   

    书上说可以在FORALL循环内使用EXECUTE IMMEDIATE
    静态的INSERT我知道怎么用
    楼上两位可能没明白我的意思,FORALL要比FOR循环的效率高很多
      

  6.   

    再顶一下,难道没人用过FORALL吗
      

  7.   

    学习,不错。for all的确是速度快些。