Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да създадете регистрационен файл в Oracle с помощта на PL/SQL?

Имате програма PL/SQL и искате да регистрирате информация в текстов файл за всяка стъпка от вашия код. Ето пример за създаване на регистрационен файл в Oracle с помощта на PL/SQL.

Създайте регистрационен файл в Oracle, използвайки пример за PL/SQL

Следва 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

Вижте също:

  • Пишете CSV файлове в Oracle с помощта на PL/SQL
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да използвате dbms_scheduler за изпълнение на заданието на всеки 30 минути

  2. Сравнението на датата на Oracle е нарушено поради DST

  3. Как да създадете схема в Oracle с помощта на SQL Developer?

  4. Добра справка за Oracle PL/SQL

  5. Ефективно четене и импортиране на CSV файлове в Oracle PL/SQL