打印执行的COMMITTED行数和/或命令数

 莫莫2602891683 发布于 2023-02-03 00:12

在Oracle 9i中,在命令行程序中.如何dbms_output.put_line在前一个BEGIN和最后一个之间受影响的行数(更新/删除/插入)COMMIT

另外,如何打印已执行指令的数量(DML,DDL)?

1 个回答
  • 获取执行的语句数量或受影响的行的累积计数并不容易.您需要添加代码以自行跟踪.对于语句数,您可以在每次执行时向变量添加一个.对于受影响的行计数,您可以使用SQL%ROWCOUNT隐式游标属性:

    declare
      statement_count pls_integer := 0;
      total_row_count pls_integer := 0;
    begin
      insert into my_table (id) values (1);
      statement_count := statement_count + 1;
      total_row_count := total_row_count + SQL%ROW_COUNT;
      dbms_output.put_line('Rows affected by statement ' || statement_count
        || ': ' || SQL%ROWCOUNT);
    
      update my_table set id = id + 1;
      statement_count := statement_count + 1;
      total_row_count := total_row_count + SQL%ROW_COUNT;
      dbms_output.put_line('Rows affected by statement ' || statement_count
        || ': ' || SQL%ROWCOUNT);
    
      delete from my_table where id = 2;
      statement_count := statement_count + 1;
      total_row_count := total_row_count + SQL%ROW_COUNT;
      dbms_output.put_line('Rows affected by statement ' || statement_count
        || ': ' || SQL%ROWCOUNT);
    
      dbms_output.put_line('Number of statements: ' || statement_count);
      dbms_output.put_line('Total rows affected:  ' || total_row_count);
    end;
    /
    

    您将需要重设计数器(S)后commit或者rollback如果你只在提交的数值感兴趣,如果你要那么做中间块; 虽然这通常不是必要的或者是个好主意.

    2023-02-03 00:36 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有