2023年6月7日水曜日

APEX_REGION.EXPORT_DATAを使ってみる

 ファセット検索の結果を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リファレンスに例として紹介されているコードを、ほぼそのまま利用しています。

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;


ファセット検索の検索結果を表示するクラシック・レポートに、静的IDとしてempを設定します。


ボタンを作成し、Ajaxコールバックとして作成したEXPORTを呼び出します。

識別ボタン名EXPORTラベルExport動作アクションとしてこのアプリケーションのページにリダイレクトを選択します。


ターゲットをクリックし、リンク・ビルダーを開きます。

ターゲットページとしてを指定し、詳細リクエストとしてAPPLICATION_PROCESS=EXPORTを指定します。この指定により、Ajaxコールバックとして作成したプロセスEXPORTが実行されます。


以上で実装は完了です。

今回作成したアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/html-export-apex-region-export-data.zip

Oracle APEXのアプリケーション作成の参考になれば幸いです。