Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como criar um relatório PDF usando PL/SQL


Antes de escrever e dar este exemplo para criar um relatório em PDF usando PL/SQL no Oracle, pesquisei muito no Google, mas não encontrei nenhum exemplo adequado. Então pensei em dar um exemplo para gerar um arquivo de relatório PDF usando PL/SQL. Para fazer isso primeiro, você precisa instalar o pacote de banco de dados pdf_builder_pkg em seu esquema . Você pode fazer o download deste pacote no link a seguir pdf_builder_pkg.

Depois de executar o script de pacote acima em seu esquema, você precisa criar um objeto de diretório de banco de dados para o local de seus arquivos PDF, conforme mostrado abaixo:
CREATE OR REPLACE DIRECTORY 
MY_PDF_DIR AS 
'D:\abc\plsql_pdfs'
/

Altere o caminho no comando acima de acordo com o caminho do diretório do Windows ou se você estiver usando Linux ou Unix, de acordo com a localização, conforme mostrado no exemplo abaixo:
CREATE OR REPLACE DIRECTORY 
MY_PDF_DIR AS 
'/usr09/oracle/files/'
/

Você pode alterar o nome do diretório MY_PDF_DIR para qualquer nome, pois precisamos passar esse nome de diretório como parâmetro para um procedimento save_pdf, que mostrarei no exemplo abaixo.

Agora você já instalou o pacote de banco de dados e criou o objeto de diretório. Agora você pode escrever o procedimento para criar um relatório PDF usando PL/SQL . Aqui abaixo está o exemplo de bloco 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;
 /

Você pode encontrar o arquivo PDF chamado emp_report.pdf no local do seu diretório . Se você quiser mais referência de comando para o pacote pdf_builder_pkg, você pode verificar o seguinte link para download. O relatório em PDF será semelhante ao mostrado abaixo:

Você também pode verificar este utilitário criado por mim para gerar o modelo de procedimento PL/SQL de acordo com sua instrução SQL. Por favor, verifique Gerar Modelo de Procedimento PL/SQL.

Veja também:

  • Criar arquivos do Excel usando PL/SQL
  • Criar arquivos ZIP usando PL/SQL
  • Exportar dados para arquivo JSON no Oracle 11g usando PL/SQL