Oracle
 sql >> Database >  >> RDS >> Oracle

Come creare un file di registro in Oracle utilizzando PL/SQL?

Hai un programma PL/SQL e desideri registrare le informazioni in un file di testo di ogni passaggio del codice. Ecco un esempio per creare un file di registro in Oracle utilizzando PL/SQL.

Crea file di registro in Oracle utilizzando l'esempio PL/SQL

Quella che segue è una procedura PL/SQL per aggiornare il prezzo del prodotto di un valore percentuale passato come parametro. Inoltre, registrerà le informazioni di ogni passaggio che si verifica nel programma. Nota, devi avere un oggetto directory creato in Oracle per scrivere i file, controlla questo link per imparare come creare un oggetto directory in 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;

Testa il programma

BEGIN
   PROD_PRICE_UPDATE (12);
END;
/

L'output del file di registro (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

Vedi anche:

  • Scrivi file CSV in Oracle utilizzando PL/SQL