Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm thế nào để tạo tệp nhật ký trong Oracle bằng PL / SQL?

Bạn có một chương trình PL / SQL và bạn muốn ghi thông tin vào tệp văn bản của mỗi bước mã của bạn. Đây là một ví dụ để tạo tệp nhật ký trong Oracle bằng PL / SQL.

Tạo tệp nhật ký trong Oracle bằng ví dụ PL / SQL

Sau đây là quy trình PL / SQL để cập nhật giá của sản phẩm theo giá trị phần trăm được truyền dưới dạng tham số. Ngoài ra, nó sẽ ghi lại thông tin của từng bước diễn ra trong chương trình. Lưu ý, bạn phải có đối tượng thư mục được tạo trong Oracle để ghi tệp, hãy kiểm tra liên kết này để tìm hiểu cách tạo đối tượng thư mục trong 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;

Kiểm tra chương trình

BEGIN
   PROD_PRICE_UPDATE (12);
END;
/

Đầu ra của tệp nhật ký (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

Xem thêm:

  • Viết tệp CSV trong Oracle bằng 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. Làm thế nào để ghi lại một cơ sở dữ liệu

  2. cách khôi phục cơ sở dữ liệu dự phòng từ nhật ký lưu trữ bị thiếu

  3. SQL * Plus không thực thi các tập lệnh SQL mà Nhà phát triển SQL thực hiện

  4. điều gì xảy ra trong giai đoạn chuyển tiếp của việc áp dụng trong R12.2

  5. Oracle SQL - Tính tổng và nhóm dữ liệu theo tuần