在Oracle 9i中,在命令行程序中.如何dbms_output.put_line
在前一个BEGIN
和最后一个之间受影响的行数(更新/删除/插入)COMMIT
?
另外,如何打印已执行指令的数量(DML,DDL)?
获取执行的语句数量或受影响的行的累积计数并不容易.您需要添加代码以自行跟踪.对于语句数,您可以在每次执行时向变量添加一个.对于受影响的行计数,您可以使用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
如果你只在提交的数值感兴趣,如果你要那么做中间块; 虽然这通常不是必要的或者是个好主意.