PL/SQLパッケージ

実践オラクルデータベース構築・運用

オラクルデータベース構築オラクルデータベース運用SQL書式PL/SQL書式Oracle Master試験

TOP PL/SQL書式 PL/SQL実践活用

PL/SQLパッケージ


スポンサードリンク
スポンサードリンク


PL/SQLパッケージ



PL/SQLパッケージは、複数のプログラムを1つに纏めるたのオブジェクトです。前章まで解説してきた「ストアドプロシージャ」と「ストアドファンクション」について、一つのパッケージとして纏めることも可能です。パッケージは、Oracleに格納されるオブジェクトなので、プロシージャとファンクション同様に名前を定義します。なお、パッケージは仕様部と本体を別々に作成する必要がある点が、プロシージャやファンクションと異なる点です。

以下が、PL/SQLのパッケージイメージ図になります。
PL/SQLパッケージイメージ図

◆PL/SQLパッケージの特徴

●アプリケーション設計が容易
⇒仕様部と本体が分離されていることにより、パッケージ化(コンパイル)の際に、パッケージ本体は実行プログラムから直接参照されません。よってパッケージ本体の定義を変更しても実行側プログラムを再コンパイルする必要がありません。

●情報の隠ぺい
⇒仕様部には定義せずに、本体のみに定義することで、必要最低限のオブジェクトのみを公開し、その他のオブジェクトは隠ぺいすることができます。

●パフォーマンスの向上
⇒最初実行時にパッケージ内のオブジェクトがまとめてメモリ上に呼び出されるため、2回目以降のパフォーマンスが向上します。

●オブジェクトが永続的に利用可
⇒仕様部で定義したオブジェクトは、サブプログラム内で永続的に使用できます。



以下にパッケージ仕様部の作成例を示します。

SQL> CREATE OR REPLACE PACKAGE PACKAGE_SAMPLE
2 IS
3 PROCEDURE pobject_id;
4 PROCEDURE pobject_type(pname VARCHAR2);
5 END;
6 /

パッケージが作成されました。

SQL>


以下にパッケージ本体の作成例を示します。

SQL> CREATE OR REPLACE PACKAGE BODY package_sample
2 IS
3 pno NUMBER:=0;
4 ptype VARCHAR2(30);
5 pstatus VARCHAR2(30);
6
7 PROCEDURE pobject_id
8 IS
9 BEGIN
10 SELECT object_id INTO pno FROM dba_objects WHERE object_name='FUNCTION_SAMPLE';
11 DBMS_OUTPUT.PUT_LINE(pno);
12 END pobject_id;
13
14
15 PROCEDURE pobject_type(pname VARCHAR2)
16 IS
17 BEGIN
18 SELECT object_type,status INTO ptype,pstatus FROM dba_objects WHERE object_name=pname;
19 DBMS_OUTPUT.PUT_LINE(ptype||' '||pstatus);
20 END pobject_type;
21
22 END;
23 /

パッケージ本体が作成されました。

SQL>

※コンパイル時がエラーもしくは警告が発生した場合の、対処方法は「PL/SQLコンパイルエラー確認方法」で解説しています。



以下にパッケージの確認方法を示します。

SQL> SET PAGES 1000
SQL> COLUMN object_name FORMAT a30;
SQL> COLUMN object_type FORMAT a30;
SQL> SELECT object_name,object_type,status FROM user_objects WHERE object_name='PACKAGE_SAMPLE';

OBJECT_NAME OBJECT_TYPE STATUS
------------------------------ ------------------------------ --------------
PACKAGE_SAMPLE PACKAGE VALID
PACKAGE_SAMPLE PACKAGE BODY VALID

SQL>



以下にパッケージの実行例を示します。

SQL> SET SERVEROUTPUT ON
SQL> EXECUTE package_sample.pobject_id
20265

PL/SQLプロシージャが正常に完了しました。

SQL>
※パッケージ内のオブジェクトを使用するには、対象オブジェクトの前にパッケージ名を修飾します。
【書式】<パッケージ名>.<オブジェクト名>



PL/SQLの実践活用方法

 ● PL/SQLエディタ利用
   ⇒直接記述するのではなく、テキストエディタを使用して編集・保存します。

 ● PL/SQLストアドプロシージャ
   ⇒特定の処理を実行するためのプログラムをOracleに格納し使用します。

 ● PL/SQLストアドファンクション
   ⇒プロシージャから呼び出され、処理を実行し値をプロシージャに返します。

 ● PL/SQLパッケージ
   ⇒複数のPL/SQLプログラムを纏めて使用します。

 ● PL/SQLトリガー
   ⇒特定のアクションを引き金にプログラムを動作させる際に使用します。




スポンサードリンク

リンク集 / 免責事項サイトマップ問い合わせ
Copyright (C) 2012  実践オラクルデータベース構築・運用  All rights reserved