オブジェクトをダウンロードするリンクの追加
オブジェクトのダウンロード要求を処理するページを新規に作成します。このページは画面の表示には使われません。アプリケーションの開発画面よりページの作成を実行し、空白ページを選びます。
ページ番号として3、名前はDownload Object、ページ・モードは標準を選択します。ナビゲーションのブレッドクラム、ナビゲーションともにOFFにし、ページの作成を実行します。
作成したプロセスの識別の名前をdownloadObjectとし、識別のタイプにコードを実行を指定します。ソースの位置はローカル・データベース、PL/SQLコードとして以下を記述します。元のブログのコードは日本語の扱いに不備があったので、その部分を修正しています。
このコードの最後に
apex_application.stop_apex_engine;
の記載があります。downloadObjectプロセスはAPEXの標準的なページ処理を中断させているため、この後の処理は(どのような処理をページに追加していても)実行されません。
次にページ1のホーム画面をページ・デザイナで開き、オブジェクトの一覧にダウンロード・リンクを追加します。リージョンBucket Contentsの列の上でコンテキスト・メニューを開き、仮想列の作成を実行します。
リンクのターゲットは先ほど作成したDownload Objectのページなので、ターゲットのタイプはこのアプリケーションのページ、ページは3です。アイテムの設定として、P3_BUCKET_NAMEにはページ・アイテム&P1_BUCKET_NAME.を値として渡し、P3_OBJECT_NAMEにはレポートの出力である#NAME#を値として与えます。OKをクリックして、ターゲットを設定します。