1
在Oracle 9i中,在命令行程序中。如何dbms_output.put_line
以前的BEGIN
和最後的COMMIT
之間受影響的行數(更新/刪除/插入)?打印COMMITTED行數或/和執行的命令
另外,如何打印執行指令的數量(DML,DDL)?
在Oracle 9i中,在命令行程序中。如何dbms_output.put_line
以前的BEGIN
和最後的COMMIT
之間受影響的行數(更新/刪除/插入)?打印COMMITTED行數或/和執行的命令
另外,如何打印執行指令的數量(DML,DDL)?
有沒有簡單的方法來獲取執行的語句的數量,或受影響的行的累計計數。你需要添加代碼來跟蹤你自己。對於語句的數量,您可以在每次執行時將一個變量添加到變量中。對於受影響的行數,你可以使用SQL%ROWCOUNT implicit cursor attribute:
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;
/
你需要,如果你只在提交的數值興趣commit
或rollback
後的計數器(S)重置,如果你要成爲做那中間塊;儘管這通常不是必要的或者是一個好主意。
正如我懷疑......沒有FOO%STATEMNTCOUNT,我們必須一一計算。 –