Oracle
 sql >> Database >  >> RDS >> Oracle

Come creare report PDF utilizzando PL/SQL

Prima di scrivere e fornire questo esempio per creare un report PDF utilizzando PL/SQL in Oracle, ho fatto molte ricerche su Google, ma non ho trovato alcun esempio corretto. Quindi ho pensato di fare un esempio per generare un file di report PDF utilizzando PL/SQL. Per farlo prima devi installare il pacchetto di database pdf_builder_pkg nel tuo schema . Puoi scaricare questo pacchetto dal seguente link pdf_builder_pkg.

Dopo aver eseguito lo script del pacchetto sopra nel tuo schema, devi creare un oggetto directory del database per la posizione dei tuoi file PDF, come mostrato di seguito:

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

Modifica il percorso nel comando sopra in base al percorso della directory di Windows o se stai utilizzando Linux o Unix, in base alla loro posizione, come mostrato nell'esempio seguente:

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

Puoi cambiare il nome della directory MY_PDF_DIR in qualsiasi nome perché dobbiamo passare questo nome di directory come parametro a una procedura save_pdf, che ti mostrerò nell'esempio seguente.

Ora hai già installato il pacchetto database e creato l'oggetto directory. Ora puoi scrivere la procedura per creare un report PDF utilizzando PL/SQL . Di seguito è riportato l'esempio di blocco 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;
 /

Puoi trovare il file PDF denominato emp_report.pdf nella posizione della tua directory . Se desideri ulteriori riferimenti ai comandi per il pacchetto pdf_builder_pkg, puoi controllare il seguente link per il download. Il rapporto PDF sarà simile a quello mostrato di seguito:

Puoi anche controllare questa utilità creata da me per generare un modello di procedura PL/SQL secondo la tua istruzione SQL. Si prega di controllare Genera modello di procedura PL/SQL.

Vedi anche:

  • Crea file Excel utilizzando PL/SQL
  • Crea file ZIP utilizzando PL/SQL
  • Esporta i dati in un file JSON in Oracle 11g utilizzando PL/SQL