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

Cách tạo báo cáo PDF bằng PL / SQL

Trước khi viết và đưa ra ví dụ này để tạo báo cáo PDF bằng PL / SQL trong Oracle, tôi đã nghiên cứu rất nhiều trên Google, nhưng tôi không tìm thấy bất kỳ ví dụ thích hợp nào. Vì vậy, tôi nghĩ tôi nên đưa ra một ví dụ để tạo tệp báo cáo PDF bằng PL / SQL. Để thực hiện việc này trước tiên, bạn cần cài đặt gói cơ sở dữ liệu pdf_builder_pkg trong lược đồ của mình . Bạn có thể tải xuống gói này từ liên kết sau pdf_builder_pkg.

Sau khi thực hiện tập lệnh gói ở trên trong giản đồ của bạn, bạn cần tạo một đối tượng thư mục cơ sở dữ liệu cho vị trí tệp PDF của mình, như được hiển thị bên dưới:

CREATE OR REPLACE DIRECTORY 
MY_PDF_DIR AS 
'D:\abc\plsql_pdfs'
/

Thay đổi đường dẫn trong lệnh trên theo đường dẫn thư mục windows của bạn hoặc nếu bạn đang sử dụng Linux hoặc Unix thì tùy theo vị trí của chúng, như được hiển thị trong ví dụ dưới đây:

CREATE OR REPLACE DIRECTORY 
MY_PDF_DIR AS 
'/usr09/oracle/files/'
/

Bạn có thể thay đổi tên thư mục MY_PDF_DIR thành bất kỳ tên nào vì chúng ta cần chuyển tên thư mục này làm tham số cho thủ tục save_pdf mà tôi sẽ chỉ cho bạn trong ví dụ dưới đây.

Bây giờ bạn đã cài đặt gói cơ sở dữ liệu và tạo đối tượng thư mục. Giờ đây, bạn có thể viết quy trình để tạo báo cáo PDF bằng PL / SQL . Dưới đây là ví dụ về khối PL / SQL.

DECLARE
 CURSOR c_emp
 IS
 SELECT empno,
 ename,
 job,
 mgr,
 hiredate,
 sal,
 comm,
 deptno
 FROM employee;

v_hdr VARCHAR (1000);
 v_dtl VARCHAR (1000);
 v_rec NUMBER (10) := 0;
 v_sal NUMBER (10) := 0;
 v_comm NUMBER (10) := 0;
 BEGIN
 /* First line to initialize the package*/
 pdf_builder_pkg.init;
 /* Set the font to bold for heading*/
 pdf_builder_pkg.set_font ('helvetica', 'b');
 /* Write a line using pdf_builder_pkg.write procedure*/
 pdf_builder_pkg.write ('Employee Report');
 /* Set the font to normal */
 pdf_builder_pkg.set_font ('helvetica');
 pdf_builder_pkg.
 write ('Printed Date: ' || SYSDATE, -1, p_alignment => 'right');
 pdf_builder_pkg.
 write (
 '________________________________________________________________________________');
 pdf_builder_pkg.write (' ' || CHR (10) || CHR (13));
 /* Setting font courier for better alignment*/
 pdf_builder_pkg.set_font ('courier');
 v_hdr :=
 RPAD ('Emp No.', 10, ' ')
 || RPAD ('Emp Name', 12, ' ')
 || RPAD ('Job', 10, ' ')
 || RPAD ('Manager', 10, ' ')
 || RPAD ('Hire Date', 12, ' ')
 || RPAD ('Salary', 10, ' ')
 || RPAD ('Comm', 10, ' ');
 pdf_builder_pkg.write (v_hdr);
 pdf_builder_pkg.set_font ('helvetica');
 pdf_builder_pkg.
 write (
 '________________________________________________________________________________');
 pdf_builder_pkg.write (CHR (10) || CHR (13));
 pdf_builder_pkg.set_font ('courier');

FOR c IN c_emp
 LOOP
 v_dtl :=
 RPAD (c.empno, 10, ' ')
 || RPAD (c.ename, 12, ' ')
 || RPAD (c.job, 10, ' ')
 || RPAD (c.mgr, 10, ' ')
 || RPAD (c.hiredate, 12, ' ')
 || RPAD (c.sal, 10, ' ')
 || RPAD (c.comm, 10, ' ')
 || CHR (10)
 || CHR (13);
 pdf_builder_pkg.write (v_dtl);
 v_rec := v_rec + 1;
 v_sal := v_sal + c.sal;
 v_comm := v_comm + NVL (c.comm, 0);
 END LOOP;

pdf_builder_pkg.set_font ('helvetica');
 pdf_builder_pkg.
 write (
 '________________________________________________________________________________');
 pdf_builder_pkg.set_font ('courier');
 pdf_builder_pkg.write ('Records Count:' || v_rec);
 pdf_builder_pkg.write ('Total Salary:' || v_sal);
 pdf_builder_pkg.write ('Total Comm:' || v_comm);
 /* Saving the PDF file by passing directory name and file name */
 pdf_builder_pkg.save_pdf ('MY_PDF_DIR', 'emp_report.pdf');
 END;
 /

Bạn có thể tìm thấy tệp PDF có tên emp_report.pdf tại vị trí thư mục của mình . Nếu bạn muốn tham khảo thêm lệnh cho gói pdf_builder_pkg, bạn có thể kiểm tra liên kết sau để tải xuống. Báo cáo PDF sẽ giống như hình dưới đây:

Bạn cũng có thể kiểm tra tiện ích này do tôi tạo để tạo mẫu thủ tục PL / SQL theo câu lệnh SQL của bạn. Vui lòng kiểm tra Tạo mẫu thủ tục PL / SQL.

Xem thêm:

  • Tạo tệp Excel bằng PL / SQL
  • Tạo tệp ZIP bằng PL / SQL
  • Xuất dữ liệu sang tệp JSON trong Oracle 11g 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. Cách tạo menu trong SQLPlus hoặc PL / SQL

  2. Làm thế nào để lấy ngày hiện tại trong PL / SQL?

  3. Cuộn lại A nếu B sai. khởi động mùa xuân, jdbctemplate

  4. Cách tách một chuỗi trong Oracle

  5. Cách thêm chỉ báo AD / BC vào ngày trong Oracle