sql >> データベース >  >> RDS >> Oracle

PL / SQLを使用してOracleでログファイルを作成するにはどうすればよいですか?

    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ファイルを作成する
    1. MySQLでテーブルをコピーする方法

    2. OracleマージをPostgreSQLへのクエリに変換する必要があります

    3. SQLServerで制約のある列を削除する方法

    4. SQL Serverの実行ポートを見つける方法は?