ヘッダーをスキップ
Oracle Database PL/SQL言語リファレンス
11g リリース1(11.1)
E05670-03
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

SERIALLY_REUSABLEプラグマ

SERIALLY_REUSABLEプラグマは、サーバーへの1コール(データベースへのOCIコール、データベース・リンクを介したストアド・プロシージャ・コールなど)の間のみ、そのパッケージ状態が必要であることを示します。 このコールの後、パッケージ変数の記憶域の再利用が可能になり、長時間実行セッションのメモリー・オーバーヘッドが削減されます。

このプラグマは、同じセッションで1回のみ使用される大規模な一時作業領域を宣言するパッケージに適しています。

構文

serially_resuable_pragma ::=

serially_resuable_pragma
serially_reusable_pragma.gifの説明

キーワードとパラメータの説明

PRAGMA

文がプラグマ(コンパイラ・ディレクティブ)であることを表します。 プラグマは、実行時ではなくコンパイル時に処理されます。 プラグマは、コンパイラに情報を渡します。

SERIALLY_REUSABLE

逐次再使用可能なパッケージのグローバル・メモリーは、ユーザー・グローバル領域(UGA)で個のユーザーに割り当てられるのではなく、システム・グローバル領域(SGA)にプールされます。 それによって、パッケージ作業領域の再使用が可能になります。 サーバーへのコールが終わると、メモリーはプールに戻されます。 パッケージが再使用されるたびに、そのパッケージのパブリック変数はデフォルト値かNULLに初期設定されます。

逐次再使用可能パッケージには、データベース・トリガー、またはSQL文からコールされる他のPL/SQLサブプログラムからアクセスすることはできません。 これを試行すると、データベースによってエラーが生成されます。

使用上の注意

SERIALLY_REUSABLEプラグマは、本体のないパッケージの仕様部、またはパッケージの仕様部と本体の両方で使用できます。 このプラグマは、パッケージの本体のみには使用できません。

例13-5では、逐次再使用可能パッケージを作成します。

例13-5逐次再使用可能パッケージの作成

CREATE PACKAGE pkg1 IS
   PRAGMA SERIALLY_REUSABLE;
   num NUMBER := 0;
   PROCEDURE init_pkg_state(n NUMBER);
   PROCEDURE print_pkg_state;
END pkg1;
/
CREATE PACKAGE BODY pkg1 IS
   PRAGMA SERIALLY_REUSABLE;
   PROCEDURE init_pkg_state (n NUMBER) IS
   BEGIN
      pkg1.num := n;
   END;
   PROCEDURE print_pkg_state IS
   BEGIN
      DBMS_OUTPUT.PUT_LINE('Num: ' || pkg1.num);
   END;
END pkg1;
/

関連トピック


参照:

逐次再使用可能なPL/SQLパッケージの詳細は、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』を参照してください。