Oracle 9i では、コマンド ライン プログラムで。前の行と最後のdbms_output.put_line
行の間で影響を受ける行 (更新/削除/挿入) の数を確認するにはどうすればよいですか?BEGIN
COMMIT
さらに、実行された命令 (DML、DDL) の数を出力する方法は?
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;
/
commit
コミットされた値のみに関心がある場合、およびブロックの途中でそれを行う場合は、カウンターをリセットする必要がありrollback
ます。ただし、それは通常は必要ないか、良い考えではありません。