あなたの製品価格表には、ある種の変更日またはフィールドによって最後に変更された日付がありますか?その場合は、これらを更新していることを確認してください。
また、スクリプトを使用する場合は、エコーをオンに設定し、ログファイルにスプールする必要があります。スクリプトは次のようになります。
-- updates.sql
set serveroutput on
set echo on
WHENEVER SQLERROR EXIT SQL.SQLCODE
spool on
spool updates.log
-- put updates here
commit;
spool off
このファイルと同じディレクトリからsqlplusにログインし、@updates.sqlを使用して実行します。
updates.logファイルには、実行される各ステートメントが含まれます。
個別の更新ステートメントのリストから合計を取得する場合は、更新のたびにSQL%ROWCOUNTを検査する必要があります。(テストされていない)のようなもの:
declare
l_total pls_integer := 0;
begin
update product set x = 'foo' where y='bar';
l_total := l_total + SQL%ROWCOUNT;
update product set x = 'blah' where y='someval';
l_total := l_total + SQL%ROWCOUNT;
commit;
dbms_output.put_line(l_total);
end
/
これは基本的なpl/sql匿名ブロックであり、上記のスプール戦略で使用できます。
最後に、メッセージフィールド、ログ日時、いくつかのコンテキストフィールド(メッセージの送信元など)、メッセージのタイプ(ログ、エラー)などを含む基本的なログテーブルを設定するのが一般的です。処理するプロシージャを設定します。ログテーブルに挿入し(自律トランザクション)、統計などを追跡する必要があるときはいつでもログプロシージャを使用します(dbms_outputは非常に制限されています)。あなたの環境にはすでにこのようなものがあるかもしれません、あなたはそれを探す必要があります(またはあなたの会社の上級開発者に尋ねる必要があります)。