ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Reportsレポート作成のためのユーザーズ・ガイド
11gリリース1(11.1.1)
B61376-01
  ドキュメント・ライブラリへ
ライブラリ
製品リストへ
製品
目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

41.8 パッケージへのSELECT文の移動

現行のレポート構成では、REFカーソル問合せによって使用されるSELECT文はレポート内に置かれています。多くの場合、REFカーソル型を定義するパッケージ内にSELECT文を配置しておくと有利です。これにより、同じSELECT文を使用するレポートそれぞれにSELECT文を直接入力しなくても、パッケージを簡単に参照できるようになります。SELECT文を変更(たとえば、句を修正または追加)する必要がある場合は、パッケージ内でSELECT文を1回更新するのみです。各レポートで更新する必要はありません。

この項の手順では、REFカーソル型を定義するパッケージにSELECT文を移動します。

SELECT文をパッケージに移動するには:

  1. オブジェクト・ナビゲータで、レポートの「プログラム・ユニット」ノードをクリックします。

  2. ツールバーで「作成」ボタンをクリックして、「新規プログラム・ユニット」ダイアログ・ボックスを表示します。

  3. 新規プログラム・ユニットダイアログ・ボックスで、「名前」フィールドにconcl_cvと入力します。

  4. パッケージ本体」を選択し、「OK」をクリックして新しいプログラム・ユニットのPL/SQLエディタを表示します。

  5. 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;
    

    注意:

    提供されているファイルrefcursor_code.txtを開き、そのコードをコピーしてReports Builderに貼り付けることができます。

  6. コンパイル」をクリックします。

  7. コンパイル・エラーが発生した場合は、構文エラーのコードをチェックして必要に応じてコンパイルを再実行します。

  8. 閉じる」をクリックします。

  9. これでファンクションが定義されました。このファンクションをパッケージ仕様部に追加して、参照できるようにします。他のプログラム・ユニットがパッケージ本体内のファンクションを認識するのは、パッケージ仕様部にファンクションが記述されている場合のみです。

  10. オブジェクト・ナビゲータで、「CONT_CV(パッケージ仕様部)」オブジェクトをダブルクリックしてPL/SQLエディタを表示します。

  11. PL/SQLエディタで、END;文の上に次の行を入力します。

    function query_container (p_department_id number) return container_refcur;
    
  12. 閉じる」をクリックします。

  13. プログラム」→「コンパイル」→「すべて」を選択します。

  14. 終了したら、「OK」をクリックします。

  15. オブジェクト・ナビゲータの「プログラム・ユニット」ノードで、「Q_CONTAINERREFCURDS」オブジェクトをダブルクリックしてPL/SQLエディタを表示します。

  16. 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を変更するときは、この問合せおよびこの問合せを参照するその他の問合せを変更します。


    注意:

    提供されているファイルrefcursor_code.txtを開き、そのコードをコピーしてReports Builderに貼り付けることができます。

  17. コンパイル」をクリックします。

  18. コンパイル・エラーが発生した場合は、構文エラーのコードをチェックして必要に応じてコンパイルを再実行します。

  19. 閉じる」をクリックします。

  20. ツールバーの「ペーパー・デザイン」ボタンをクリックして、ペーパー・デザイン・ビューにレポートを表示します。

  21. レポートをref_67_<自分のイニシャル>.rdfという名前で保存します。

演習(オプション):

レポート内の他の2つの問合せについても、前述の手順を繰り返します。