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

Sådan opretter du PDF-rapport ved hjælp af PL/SQL

Før jeg skrev og gav dette eksempel for at lave en PDF-rapport ved hjælp af PL/SQL i Oracle, undersøgte jeg meget på Google, men jeg fandt ikke noget ordentligt eksempel. Så jeg tænkte, at jeg skulle give et eksempel for at generere en PDF-rapportfil ved hjælp af PL/SQL. For at gøre dette først skal du installere pdf_builder_pkg-databasepakken i dit skema . Du kan downloade denne pakke fra følgende link pdf_builder_pkg.

Efter at have udført ovenstående pakkescript i dit skema, skal du oprette et databasebiblioteksobjekt for din PDF-filplacering, som vist nedenfor:

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

Skift stien i ovenstående kommando i henhold til din Windows-mappesti, eller hvis du bruger Linux eller Unix, i henhold til deres placering, som vist i eksemplet nedenfor:

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

Du kan ændre biblioteksnavnet MY_PDF_DIR til et hvilket som helst navn, fordi vi skal videregive dette biblioteksnavn som en parameter til en save_pdf-procedure, som jeg vil vise dig i nedenstående eksempel.

Nu har du allerede installeret databasepakken og oprettet mappeobjektet. Nu kan du skrive proceduren for at oprette en PDF-rapport ved hjælp af PL/SQL . Her nedenfor er eksemplet på PL/SQL-blokken.

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

Du kan finde PDF-filen med navnet emp_report.pdf på din mappeplacering . Hvis du ønsker mere kommandoreference for pakken pdf_builder_pkg, kan du tjekke følgende link for at downloade. PDF-rapporten vil se ud som vist nedenfor:

Du kan også tjekke dette værktøj oprettet af mig for at generere PL/SQL-procedureskabelon i henhold til din SQL-sætning. Tjek venligst Generer PL/SQL-procedureskabelon.

Se også:

  • Opret Excel-filer ved hjælp af PL/SQL
  • Opret ZIP-filer ved hjælp af PL/SQL
  • Eksporter data til JSON-fil i Oracle 11g ved hjælp af PL/SQL
  1. Oracle underforespørgsel sjov

  2. MySQL Vis indekser i databasen

  3. ORA-12505, TNS:listener kender i øjeblikket ikke til SID givet i forbindelsesbeskrivelsen

  4. SQL Server Process Queue Race Condition