2006.12.04

PL/SQLで最初に呼び出されたときのみ実行する

パッケージ初期化部というものを作成することで実現できます。
パッケージ初期化部とは、セッションから最初に呼び出されたときのみ実行されるコードのブロックです。Javaや.NETでいうコンストラクタのようなものです。
PL/SQLではセッション毎にパッケージインスタンスというものが生成され、パッケージ初期化部はパッケージインスタンス生成時のみ呼び出されます。

パッケージ初期化部はPACKAGE BODY内で宣言します。
通常、PACKAGE BODYにはPROCEDUREやFUNCTIONなどを書き、その中でBEGIN~ENDと書きますが、そういう記述は必要なく、直接BEGIN~ENDのブロックを書きます。

■宣言方法
--------------------------------------------------------
CREATE OR REPLACE PACKAGE BODY [パッケージ名]
IS
 -- パッケージ初期化部
 BEGIN
 DECLARE
  [変数の宣言]
 BEGIN
 
  --*** ここにコードを書きます ***
 
 EXCEPTION
  WHEN OTHERS THEN
   [例外]
 END;
END [パッケージ名];
--------------------------------------------------------

コードにはPROCEDUREやFUNCTIONと同じように記述できます。
セッションの最初だけ処理を行いたい場合はパッケージ初期化部を使うのが有効です。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
yamaoka