sql >> データベース >  >> RDS >> Oracle

PL/SQLを使用してPDFレポートを作成する方法

    OracleでPL/SQLを使用してPDFレポートを作成するためにこの例を作成して提供する前に、Googleで多くの調査を行いましたが、適切な例は見つかりませんでした。そこで、PL/SQLを使用してPDFレポートファイルを生成する例を示す必要があると思いました。これを行うには、まず、スキーマにpdf_builder_pkgデータベースパッケージをインストールする必要があります 。このパッケージは、次のリンクpdf_builder_pkgからダウンロードできます。

    スキーマで上記のパッケージスクリプトを実行した後、以下に示すように、PDFファイルの場所のデータベースディレクトリオブジェクトを作成する必要があります。

    CREATE OR REPLACE DIRECTORY 
    MY_PDF_DIR AS 
    'D:\abc\plsql_pdfs'
    /
    として作成または置換します。

    以下の例に示すように、Windowsディレクトリパスに従って、またはLinuxまたはUnixを使用している場合は、それらの場所に従って、上記のコマンドのパスを変更します。

    CREATE OR REPLACE DIRECTORY 
    MY_PDF_DIR AS 
    '/usr09/oracle/files/'
    /
    を作成または置換します

    このディレクトリ名をパラメータとしてsave_pdfプロシージャに渡す必要があるため、ディレクトリ名MY_PDF_DIRを任意の名前に変更できます。これを以下の例で示します。

    これで、データベースパッケージがインストールされ、ディレクトリオブジェクトが作成されました。これで、 PL/SQLを使用してPDFレポートを作成する手順を記述できます。 。以下は、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;
     /

    ディレクトリの場所にemp_report.pdfという名前のPDFファイルがあります 。パッケージpdf_builder_pkgのコマンドリファレンスがさらに必要な場合は、次のリンクを確認してダウンロードできます。 PDFレポートは次のようになります:

    また、私が作成したこのユーティリティをチェックして、SQL文に従ってPL /SQLプロシージャ・テンプレートを生成することもできます。 「PL/SQLプロシージャ・テンプレートの生成」をチェックしてください。

    関連項目:

    • PL/SQLを使用してExcelファイルを作成する
    • PL/SQLを使用してZIPファイルを作成する
    • PL/SQLを使用してOracle11gのJSONファイルにデータをエクスポートする
    1. PARSENAME()を使用して、SQLServerのオブジェクト名の一部を返します

    2. Oracle SqlPlus-出力をファイルに保存しますが、画面に表示されません

    3. PL / SQL変数名と同じSQL列名-これはselect文でどのように行うことができますか?

    4. Oraclejdbcクライアントのデフォルトのnls_date_formatを変更する方法