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

So erstellen Sie einen PDF-Bericht mit PL/SQL

Bevor ich dieses Beispiel zum Erstellen eines PDF-Berichts mit PL/SQL in Oracle geschrieben und gegeben habe, habe ich viel bei Google recherchiert, aber kein richtiges Beispiel gefunden. Also dachte ich, ich sollte ein Beispiel geben, um eine PDF-Berichtsdatei mit PL/SQL zu generieren. Dazu müssen Sie zuerst das Datenbankpaket pdf_builder_pkg in Ihrem Schema installieren . Sie können dieses Paket über den folgenden Link pdf_builder_pkg herunterladen.

Nachdem Sie das obige Paketskript in Ihrem Schema ausgeführt haben, müssen Sie ein Datenbankverzeichnisobjekt für den Speicherort Ihrer PDF-Dateien erstellen, wie unten gezeigt:

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

Ändern Sie den Pfad im obigen Befehl gemäß Ihrem Windows-Verzeichnispfad oder, wenn Sie Linux oder Unix verwenden, entsprechend ihrem Speicherort, wie im folgenden Beispiel gezeigt:

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

Sie können den Verzeichnisnamen MY_PDF_DIR in einen beliebigen Namen ändern, da wir diesen Verzeichnisnamen als Parameter an eine save_pdf-Prozedur übergeben müssen, die ich Ihnen im folgenden Beispiel zeigen werde.

Jetzt haben Sie bereits das Datenbankpaket installiert und das Verzeichnisobjekt erstellt. Jetzt können Sie die Prozedur zum Erstellen eines PDF-Berichts mit PL/SQL schreiben . Hier unten ist der Beispiel-PL/SQL-Block.

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;
 /

Sie finden die PDF-Datei namens emp_report.pdf in Ihrem Verzeichnis . Wenn Sie weitere Befehlsreferenzen für das Paket pdf_builder_pkg wünschen, können Sie den folgenden Link zum Herunterladen verwenden. Der PDF-Bericht sieht wie folgt aus:

Sie können auch dieses von mir erstellte Dienstprogramm überprüfen, um eine PL/SQL-Prozedurvorlage gemäß Ihrer SQL-Anweisung zu generieren. Bitte aktivieren Sie PL/SQL-Prozedurvorlage generieren.

Siehe auch:

  • Excel-Dateien mit PL/SQL erstellen
  • ZIP-Dateien mit PL/SQL erstellen
  • Daten mit PL/SQL in eine JSON-Datei in Oracle 11g exportieren