Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment créer un rapport PDF à l'aide de PL/SQL

Avant d'écrire et de donner cet exemple pour créer un rapport PDF en utilisant PL/SQL dans Oracle, j'ai beaucoup recherché sur Google, mais je n'ai trouvé aucun exemple approprié. J'ai donc pensé que je devrais donner un exemple pour générer un fichier de rapport PDF en utilisant PL/SQL. Pour ce faire d'abord, vous devez installer le package de base de données pdf_builder_pkg dans votre schéma . Vous pouvez télécharger ce package à partir du lien suivant pdf_builder_pkg.

Après avoir exécuté le script de package ci-dessus dans votre schéma, vous devez créer un objet de répertoire de base de données pour l'emplacement de vos fichiers PDF, comme indiqué ci-dessous :

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

Modifiez le chemin dans la commande ci-dessus en fonction du chemin de votre répertoire Windows ou si vous utilisez Linux ou Unix, en fonction de leur emplacement, comme indiqué dans l'exemple ci-dessous :

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

Vous pouvez remplacer le nom du répertoire MY_PDF_DIR par n'importe quel nom, car nous devons transmettre ce nom de répertoire en tant que paramètre à une procédure save_pdf, que je vais vous montrer dans l'exemple ci-dessous.

Vous avez maintenant déjà installé le package de base de données et créé l'objet répertoire. Vous pouvez maintenant écrire la procédure pour créer un rapport PDF en utilisant PL/SQL . Voici ci-dessous l'exemple de bloc 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;
 /

Vous pouvez trouver le fichier PDF nommé emp_report.pdf à l'emplacement de votre répertoire . Si vous souhaitez plus de référence de commande pour le package pdf_builder_pkg, vous pouvez consulter le lien suivant pour le télécharger. Le rapport PDF ressemblera à l'exemple ci-dessous :

Vous pouvez également vérifier cet utilitaire créé par moi pour générer un modèle de procédure PL/SQL selon votre instruction SQL. Veuillez cocher Générer un modèle de procédure PL/SQL.

Voir aussi :

  • Créer des fichiers Excel à l'aide de PL/SQL
  • Créer des fichiers ZIP à l'aide de PL/SQL
  • Exporter des données vers un fichier JSON dans Oracle 11g à l'aide de PL/SQL