ファセット検索の結果をHTMLでエクスポートするには、との相談がありました。Oracle APEX 20.2よりAPEX_REGION.EXPORT_DATAというAPIが提供されており、APEX_REGION.OPEN_QUERY_CONTEXTを使わずに実装できるようになっています。
サンプル・データセットのEMP/DEPTの表EMPを使ったファセット検索のページより、HTML形式でエクスポートを行う機能を実装してみます。
表EMPをソースとしたファセット検索のページを含むアプリケーションを作成します。
プロセス・ビューを開き、AjaxコールバックとしてHTML形式でエクスポートするプロセスEXPORTを作成します。
ソースのPL/SQLコードとして以下を記述します。APIリファレンスに例として紹介されているコードを、ほぼそのまま利用しています。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
DECLARE | |
l_export apex_data_export.t_export; | |
l_region_id number; | |
BEGIN | |
SELECT region_id into l_region_id | |
FROM apex_application_page_regions | |
WHERE application_id = :APP_ID | |
and page_id = :APP_PAGE_ID | |
and static_id = 'emp'; | |
l_export := apex_region.export_data ( | |
p_format => apex_data_export.c_format_html, | |
p_page_id => :APP_PAGE_ID, | |
p_region_id => l_region_id ); | |
apex_data_export.download( l_export ); | |
END; |
識別のボタン名をEXPORT、ラベルをExport、動作のアクションとしてこのアプリケーションのページにリダイレクトを選択します。
ターゲットをクリックし、リンク・ビルダーを開きます。
ターゲットのページとして1を指定し、詳細のリクエストとしてAPPLICATION_PROCESS=EXPORTを指定します。この指定により、Ajaxコールバックとして作成したプロセスEXPORTが実行されます。
以上で実装は完了です。
今回作成したアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/html-export-apex-region-export-data.zip
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完