Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak utworzyć raport PDF za pomocą PL/SQL

Przed napisaniem i podaniem tego przykładu do stworzenia raportu PDF przy użyciu PL/SQL w Oracle, dużo szukałem w Google, ale nie znalazłem żadnego odpowiedniego przykładu. Pomyślałem więc, że powinienem podać przykład generowania pliku raportu PDF przy użyciu PL/SQL. Aby to zrobić najpierw musisz zainstalować pakiet bazy danych pdf_builder_pkg w swoim schemacie . Możesz pobrać ten pakiet z następującego linku pdf_builder_pkg.

Po wykonaniu powyższego skryptu pakietu w swoim schemacie, musisz utworzyć obiekt katalogu bazy danych dla lokalizacji plików PDF, jak pokazano poniżej:

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

Zmień ścieżkę w powyższym poleceniu zgodnie ze ścieżką katalogu Windows lub jeśli używasz systemu Linux lub Unix, zgodnie z ich lokalizacją, jak pokazano w poniższym przykładzie:

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

Możesz zmienić nazwę katalogu MY_PDF_DIR na dowolną nazwę, ponieważ musimy przekazać tę nazwę katalogu jako parametr do procedury save_pdf, którą pokażę w poniższym przykładzie.

Teraz już zainstalowałeś pakiet bazy danych i utworzyłeś obiekt katalogu. Teraz możesz napisać procedurę tworzenia raportu PDF przy użyciu PL/SQL . Poniżej znajduje się przykładowy blok 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;
 /

Plik PDF o nazwie emp_report.pdf można znaleźć w lokalizacji swojego katalogu . Jeśli chcesz uzyskać więcej informacji o poleceniach dla pakietu pdf_builder_pkg, możesz sprawdzić poniższy link, aby pobrać. Raport PDF będzie wyglądał tak, jak pokazano poniżej:

Możesz również sprawdzić to narzędzie stworzone przeze mnie, aby wygenerować szablon procedury PL/SQL zgodnie z twoją instrukcją SQL. Proszę sprawdzić Generuj szablon procedury PL/SQL.

Zobacz też:

  • Tworzenie plików Excela za pomocą PL/SQL
  • Twórz pliki ZIP za pomocą PL/SQL
  • Eksportuj dane do pliku JSON w Oracle 11g przy użyciu 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. Jak porównać dwie tabele kolumna po kolumnie w Oracle?

  2. Wywołanie niezdefiniowanej funkcji oci_connect()

  3. Oracle:wydajność zbierania zbiorczego

  4. varchar2(n BYTE|CHAR) default -> CHAR lub BYTE

  5. Jak sformatować liczbę z przecinkiem w Oracle