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