Oracle® Fusion Middleware Oracle Reportsレポート作成のためのユーザーズ・ガイド 11gリリース2 (11.1.2) B70752-02 |
|
前へ |
次へ |
現行のレポート構成では、REFカーソル
問合せによって使用されるSELECT
文はレポート内に置かれています。多くの場合、REFカーソル
型を定義するパッケージ内にSELECT
文を配置しておくと有利です。これにより、同じSELECT
文を使用するレポートそれぞれにSELECT文を直接入力しなくても、パッケージを簡単に参照できます。SELECT
文を変更(たとえば、句を修正または追加)する必要がある場合は、パッケージ内でSELECT文を1回更新するのみです。各レポートで更新する必要はありません。
この項の手順では、REFカーソル
型を定義するパッケージSELECT
文を移動します。
SELECT文をパッケージに移動するには:
オブジェクト・ナビゲータで、レポートの「プログラム・ユニット」ノードをクリックします。
ツールバーで「作成」ボタンをクリックして、「新規プログラム・ユニット」ダイアログ・ボックスを表示します。
新規プログラム・ユニット・ダイアログ・ボックスで、「名前」フィールドにcont_cv
と入力します。
「パッケージ本体」を選択し、「OK」をクリックして新しいプログラム・ユニットのPL/SQLエディタを表示します。
PL/SQLエディタで、テンプレートを使用して次のPL/SQLコードを入力します。
PACKAGE BODY cont_cv IS function query_container (p_department_id number) return container_refcur is tempcv_container cont_cv.container_ refcur; begin open tempcv_container for select employee_id, start_date, end_date, job_id, department_id from job_history where :department_id=department_id; return tempcv_container; end; END;
注意: 提供されているファイル |
「コンパイル」をクリックします。
コンパイル・エラーが発生した場合は、構文エラーのコードをチェックして必要に応じてコンパイルを再実行します。
「閉じる」をクリックします。
これでファンクションが定義されました。このファンクションをパッケージ仕様部に追加して、参照できるようにします。他のプログラム・ユニットがパッケージ本体内のファンクションを認識するのは、パッケージ仕様部にファンクションが記述されている場合のみです。
オブジェクト・ナビゲータで、「CONT_CV(パッケージ仕様部)」オブジェクトをダブルクリックしてPL/SQLエディタを表示します。
PL/SQLエディタで、END;
文の上に次の行を入力します。
function query_container (p_department_id number) return container_refcur;
「閉じる」をクリックします。
「プログラム」→「コンパイル」→「すべて」を選択します。
終了したら、「OK」をクリックします。
オブジェクト・ナビゲータの「プログラム・ユニット」ノードで、「Q_CONTAINERREFCURDS」オブジェクトをダブルクリックしてPL/SQLエディタを表示します。
PL/SQLエディタで、コードを次のように編集します。
function Q_containerRefCurDS return cont_cv.container_refcur is temp_container cont_cv.container_refcur; begin temp_container:=cont_cv.query_container (:department_id); return temp_container; end;
終了すると、問合せのロジックはすべて、query_container
という名前のファンクション内に置かれます。これ以降query_container
を変更するときは、この問合せおよびこの問合せを参照するその他の問合せを変更します。
注意: 提供されているファイル |
「コンパイル」をクリックします。
コンパイル・エラーが発生した場合は、構文エラーのコードをチェックして必要に応じてコンパイルを再実行します。
「閉じる」をクリックします。
ツールバーの「ペーパー・デザイン」ボタンをクリックして、ペーパー・デザイン・ビューにレポートを表示します。
レポートをref_67_
your_initials
.rdf
という名前で保存します。
演習(オプション):
レポート内の他の2つの問合せについても、前述の手順を繰り返します。