Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment créer un fichier journal dans Oracle à l'aide de PL/SQL ?

Vous avez un programme PL/SQL et vous souhaitez consigner les informations dans un fichier texte de chaque étape de votre code. Voici un exemple pour créer un fichier journal dans Oracle en utilisant PL/SQL.

Créer un fichier journal dans Oracle à l'aide d'un exemple PL/SQL

Ce qui suit est une procédure PL/SQL pour mettre à jour le prix du produit par une valeur en pourcentage passée en paramètre. En outre, il enregistrera les informations de chaque étape du programme. Notez que vous devez avoir créé un objet répertoire dans Oracle pour écrire les fichiers. Consultez ce lien pour savoir comment créer un objet répertoire dans 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;

Tester le programme

BEGIN
   PROD_PRICE_UPDATE (12);
END;
/

La sortie du fichier journal (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

Voir aussi :

  • Écrire des fichiers CSV dans Oracle à l'aide de PL/SQL