PL / SQLプログラムがあり、コードの各ステップのテキストファイルに情報を記録したいとします。 PL/SQLを使用してOracleでログファイルを作成する例を次に示します。
PL/SQLの例を使用してOracleでログファイルを作成する
以下は、パラメータとして渡されたパーセント値で製品の価格を更新するPL/SQLプロシージャです。また、プログラムで発生する各ステップの情報をログに記録します。ファイルを書き込むには、Oracleでディレクトリオブジェクトを作成する必要があることに注意してください。Oracleでディレクトリオブジェクトを作成する方法については、このリンクを確認してください。
CREATE OR REPLACE PROCEDURE prod_price_update (increase_pct IN NUMBER) IS f_file UTL_FILE.file_type; v_file_name VARCHAR2 (100); BEGIN v_file_name := 'log_' || TO_CHAR (SYSDATE, 'yyyymmdd_HH24miss') || '.log'; f_file := UTL_FILE.fopen ('LOG_FILES', v_file_name, 'w'); UTL_FILE.put_line (f_file, 'Log file ' || v_file_name); UTL_FILE.new_line (f_file); UTL_FILE.put_line ( f_file, 'Job started at: ' || TO_CHAR (SYSDATE, 'dd-mm-yyyy HH24:mi:ss')); UTL_FILE.put_line ( f_file, 'Price increment percentage value: ' || increase_pct || '%'); UPDATE products SET prod_list_price = prod_list_price + (prod_list_price * increase_pct / 100); UTL_FILE.put_line (f_file, 'Number of products updated: ' || SQL%ROWCOUNT); COMMIT; UTL_FILE.put_line (f_file, 'Records committed.'); UTL_FILE.put_line ( f_file, 'Job finished successfully at: ' || TO_CHAR (SYSDATE, 'dd-mm-yyyy HH24:mi:ss')); UTL_FILE.fclose (f_file); EXCEPTION WHEN OTHERS THEN IF UTL_FILE.is_open (f_file) THEN UTL_FILE.put_line (f_file, 'Job finished with errors: ' || SQLERRM); UTL_FILE.fclose (f_file); END IF; END;
プログラムのテスト
BEGIN PROD_PRICE_UPDATE (12); END; /
ログファイルの出力(log_20180919_214756.log)
Log file log_20180919_214756.log Job started at: 19-09-2018 21:47:56 Price increment percentage value: 12% Number of products updated: 72 Records committed. Job finished successfully at: 19-09-2018 21:47:57
関連項目:
- PL/SQLを使用してOracleでCSVファイルを作成する