Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie erstelle ich eine Protokolldatei in Oracle mit PL/SQL?

Sie haben ein PL/SQL-Programm und möchten Informationen zu jedem Schritt Ihres Codes in einer Textdatei protokollieren. Hier ist ein Beispiel zum Erstellen einer Protokolldatei in Oracle mit PL/SQL.

Protokolldatei in Oracle mit PL/SQL-Beispiel erstellen

Das Folgende ist eine PL/SQL-Prozedur zum Aktualisieren des Produktpreises durch einen als Parameter übergebenen Prozentwert. Außerdem werden die Informationen zu jedem Schritt im Programm protokolliert. Beachten Sie, dass Sie ein Verzeichnisobjekt in Oracle erstellt haben müssen, um die Dateien zu schreiben. Klicken Sie auf diesen Link, um zu erfahren, wie Sie ein Verzeichnisobjekt in Oracle erstellen.

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;

Testen Sie das Programm

BEGIN
   PROD_PRICE_UPDATE (12);
END;
/

Die Ausgabe der Protokolldatei (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

Siehe auch:

  • CSV-Dateien in Oracle mit PL/SQL schreiben