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

Posted

技术标签:

【中文标题】Oracle如何计算插入plsql块中的总行数【英文标题】:Oracle How to count total number of rows inserted in a plsql block 【发布时间】:2016-06-01 08:39:31 【问题描述】:

我想计算我在数据库中插入的次数

虽然有 2 行确实更新了,但下面的查询返回一 (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】:
dbms_output.put_line('No Of rows'||sql%Rowcount);

这将为您提供由 last 语句更新的总行数。因此,即使您以这种方式有 10 个插入语句,您也将始终得到 1sql%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;

或 如果要将数据插入同一个表,请使用这样的组合 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;

【讨论】:

谢谢 - 我的网络中断了,所以我花了很长时间才回复 没问题。如果您还没有回答,也请接受之前提出的问题的答案。如果没有正确回答,请对答案发表评论,以便查看。谢谢!

以上是关于Oracle如何计算插入plsql块中的总行数的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SQL 或 PLSQL 将多行数据插入 Oracle 中的表中?

如何探索 PLSQL 块中的 out 游标参数?

Oracle/PLSQL 中的分页错误

匿名plsql块中的列索引无效[重复]

将行数传递给Oracle中的列[重复]

将 XML 插入 Oracle 中的 XMLTYPE 列时字符串文字太长