Oracle如何计算在plsql块中插入的总行数

时间:2016-06-01 08:39:32

标签: sql oracle plsql

我想不计算我在数据库中插入的内容

以下查询返回一(1),但有两行确实更新了

begin 
   Insert into APPLICATIONS (ID,ALIAS,NAME,STATUS) 
        values (1000000386,'BB','Branch Budgets','I'));
   Insert into APPLICATIONS (ID,ALIAS,NAME,STATUS) 
        values (1000000257,'TIME','Timesheets','I'));
   dbms_output.put_line('No Of rows'||sql%Rowcount);
 end;

1 个答案:

答案 0 :(得分:8)

dbms_output.put_line('No Of rows'||sql%Rowcount);

这将为您提供 last 语句更新的总行数。因此,即使您以这种方式使用10个插入语句,也始终将1作为sql%rowcount

使用2个输出语句,每个语句在insert语句之后,或使用变量并添加更新的行数,然后最后显示它。

declare
    v_count integer;
    begin 
        v_count:=0;
       Insert into APPLICATIONS (ID,ALIAS,NAME,STATUS) 
            values (1000000386,'BB','Branch Budgets','I');
        v_count:=   sql%Rowcount;
       Insert into APPLICATIONS (ID,ALIAS,NAME,STATUS) 
            values (1000000257,'TIME','Timesheets','I');
        v_count:= v_count+ sql%Rowcount;
       dbms_output.put_line('No Of rows '||v_count);
     commit;
     end;

OR  如果要将数据插入到同一个表中,请使用这样的组合insert语句。 这将返回2行。

begin    
    INSERT ALL 
        into  APPLICATIONS (ID,ALIAS,NAME,STATUS) 
             values (1000000386,'BB','Branch Budgets','I')
        into  APPLICATIONS (ID,ALIAS,NAME,STATUS) 
             values (1000000257,'TIME','Timesheets','I')
    SELECT * FROM dual;         
    dbms_output.put_line('No Of rows '||sql%Rowcount);
    commit;
    end;