Oracle Databaseが提供しているWPG_DOCLOAD.DOWNLOAD_FILEを、Oracle APEXが提供しているAPEX_DATA_EXPORT.DOWNLOADに置き換えてみます。両方ともマニュアルに記載があるパッケージなので、どちらを利用しても良いでしょう。
テキストとして
吾輩は猫である。
名前はまだ無い。
をダウンロードするコーディングを行います。
APEX_DATA_EXPORT.DOWNLOADでは以下の書き方になります。
declare
l_clob clob;
l_download apex_data_export.t_export;
begin
l_clob :=
q'~吾輩は猫である。
名前はまだ無い。
~';
l_download.file_name := 'mytest';
l_download.format := 'TXT';
l_download.mime_type := 'text/plain';
l_download.as_clob := TRUE;
l_download.content_clob := l_clob;
apex_data_export.download( p_export => l_download );
apex_application.stop_apex_engine;
end;
WPG_DOCLOAD.DOWNLOAD_FILEでは以下の書き方になります。
declare
l_blob blob;
l_clob clob;
begin
l_clob :=
q'~吾輩は猫である。
名前はまだ無い。
~';
l_blob := wwv_flow_utilities.clob_to_blob(
p_clob => l_clob
, p_charset => 'AL32UTF8'
, p_include_bom => FALSE
);
sys.htp.init;
sys.htp.p('Content-Length: ' || dbms_lob.getlength(l_blob));
sys.htp.p('Content-Type: text/plain');
sys.htp.p('Content-Disposition: attachment; filename=mytest.txt');
sys.owa_util.http_header_close;
sys.wpg_docload.download_file(l_blob);
apex_application.stop_apex_engine;
end;
上記のプロシージャをAjaxプロセスとして呼び出すAPEXアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/file-download-api.sql
以上になります。
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完