パッケージの作成および管理

PL/SQLパッケージを作成および管理できます。

関連項目:パッケージ本体を変更する方法については、チュートリアル: サブプログラムでの変数および定数の宣言を参照してください。

パッケージ構造について

パッケージには常に仕様があり、本体があります。仕様部はパッケージそのものを定義する、Application Program Interface (API)です。パッケージ本体では、宣言されたカーソルの問合せ、およびパッケージ仕様で宣言されているサブプログラムのコードを定義します。

パッケージ仕様には、パッケージが定義されます。パッケージ外部から参照される可能性のある、型、変数、定数、例外、宣言カーソル、およびサブプログラムが申告されます。パッケージ仕様部はアプリケーション・プログラム・インタフェース(API)です。クライアント・プログラムでサブプログラムを起動するために必要な情報はすべて含まれていますが、それらの実装に関する情報は含まれません。

パッケージ本体には、パッケージ仕様で宣言されている宣言カーソルやサブプログラムについて、に対応する問合せやコードを定義します(そのため、宣言カーソル もサブプログラム もないパッケージは本体を必要としません)。パッケージ本体は、ローカル・サブプログラムも定義でき、これは仕様では宣言されず、パッケージ内の他のサブプログラムによってのみ起動できます。パッケージ本体のコンテンツは、クライアント・プログラムからは見えません。パッケージをコールするアプリケーションを無効にすることなく、パッケージ本体を変更できます。

関連情報:

チュートリアル: パッケージ仕様部の作成

このチュートリアルでは、パッケージ作成ツールを使用して、このドキュメントの多くのチュートリアルおよび例に示されているEMP_EVALというパッケージの仕様書を作成する方法について説明します。

パッケージ仕様部を作成するには、SQL Developerのパッケージの作成ツールまたはDDL文のCREATE PACKAGEを使用します。

パッケージの作成ツールを使用してパッケージ仕様を作成するステップ:

  1. 「接続」フレーム内で、hr_connを展開します。

  2. スキーマ・オブジェクト・タイプのリスト内で、「パッケージ」を右クリックします。

  3. 選択肢のリストで、「新規パッケージ」をクリックします。

    「パッケージの作成」ウィンドウが開きます。フィールド・スキーマには、値HR、フィールド名には、デフォルト値PACKAGE1があり、チェック・ボックス新しいソースが小文字で追加されるは選択されていません。

  4. 「スキーマ」で、デフォルト値のHRを受け入れます。

  5. 「名前」では、PACKAGE1をEMP_EVALに変更します。

  6. 「OK」をクリックします。

    EMP_EVALペインが開き、パッケージを作成したCREATE PACKAGE文が表示されます:

     CREATE OR REPLACE PACKAGE emp_eval AS
    
     /* TODO enter package declarations (types, exceptions, methods etc) here */
    
     END emp_eval;
    

    ペインのタイトルがイタリック・フォントになっています。パッケージがデータベースに保存されていないことを示しています。

  7. (オプション)CREATE PACKAGE文で、コメントを宣言と置換します。

    「チュートリアル: パッケージ仕様の変更」に示すとおり、今このステップを実行しない場合、後で行うこともできます。

  8. 「ファイル」メニューから、「保存」をクリックします。

    Oracle Databaseによって、パッケージがコンパイルされ、これが保存されます。EMP_EVALペインのタイトルは、もはやイタリック・フォントでなくなります。

関連項目: CREATE PACKAGE文(パッケージ仕様)の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

チュートリアル: パッケージ仕様部の変更

このチュートリアルでは、編集ツールを使用して、このドキュメントの多くのチュートリアルおよび例に示されているEMP_EVALパッケージの仕様を変更する方法について説明します。具体的には、このチュートリアルで、プロシージャ、EVAL_DEPARTMENTおよび関数CALCULATE_SCOREの宣言を追加する方法を示します。

パッケージ仕様部を変更するには、SQL Developerツールの「編集」またはDDL文のCREATE PACKAGEをOR REPLACE句とともに使用します。

編集ツールを使用してEMP_EVALパッケージ仕様部を変更するには:

  1. 「接続」フレーム内で、hr_connを展開します。

  2. スキーマ・オブジェクト・タイプのリスト内で、「パッケージ」を展開します

  3. パッケージのリストで、EMP_EVALを右クリックします。

  4. 選択肢のリストで、「編集」をクリックします。

    EMP_EVALペインが開き、パッケージを作成したCREATE PACKAGE文が表示されます:

     CREATE OR REPLACE PACKAGE emp_eval AS
    
     /* TODO enter package declarations (types, exceptions, methods etc) here */
    
     END emp_eval;
    

    ペインのタイトルがイタリック・フォントになっていません。パッケージがデータベースに保存されていることを示しています。

  5. EMP_EVALペインで、コメントを次のコードと置換します。

     PROCEDURE eval_department ( dept_id IN NUMBER );
    
     FUNCTION calculate_score ( evaluation_id IN NUMBER
                             , performance_id IN NUMBER)
                             RETURN NUMBER;
    

    EMP_EVALペインのタイトルがイタリック・フォントに変更され、変更がデータベースに保存されていないことが示されます。

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

    変更したパッケージ仕様部がコンパイルされ、データベースに保存されます。EMP_EVALペインのタイトルは、もはやイタリック・フォントでなくなります。

関連項目: OR REPLACE句を使用したCREATE PACKAGE文の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

チュートリアル: パッケージ本体の変更

このチュートリアルでは、本体の作成ツールを使用して、このドキュメントの多くのチュートリアルおよびチュートリアルに示されているEMP_EVALパッケージの本文を作成する方法について説明します。

パッケージ本体を作成するには、SQL Developerツールの「本体の作成」またはDDL文の「CREATE PACKAGE BODY」を使用します。

本体の作成ツールを使用してパッケージEMP_EVALの本体を作成するステップ:

  1. 「接続」フレームのhr_connを開きます。

  2. スキーマ・オブジェクト・タイプのリスト内で、「パッケージ」を展開します。

  3. パッケージのリストで、EMP_EVALを右クリックします。

  4. 選択肢のリストから、「本体の作成」をクリックします。

    EMP_EVAL本体ペインが表示され、パッケージ本文用に自動的に生成されたコードが表示されます:

     CREATE OR REPLACE
     PACKAGE BODY EMP_EVAL AS
    
     PROCEDURE eval_department(dept_id IN NUMBER) AS
     BEGIN
    
         -- TODO implementation required for PROCEDURE EMP_EVAL.eval_department
         NULL;
     END eval_department;
    
     FUNCTION calculate_score ( evaluation_id IN NUMBER
                             , performance_id IN NUMBER)
                             RETURN NUMBER AS
     BEGIN
    
         -- TODO implementation required for FUNCTION EMP_EVAL.calculate_score
         RETURN NULL;
     END calculate_score;
    
     END EMP_EVAL;
    

    ペインのタイトルがイタリック・フォントになっています。コードがデータベースに保存されていないことを示しています。

  5. (オプション)CREATE PACKAGE BODY文で、次のようにします:

    • コメントを実行可能文と置換します。

    • (オプション)プロシージャの実行可能部で、NULLを削除するか、これを実行可能文と置換します。

    • (オプション)ファンクションの実行可能部で、NULLを他の式と置換します。

    「チュートリアル: サブプログラムでの変数および定数の宣言」に示すように、このステップを今行わない場合、後で行うこともできます。

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

    変更されたパッケージ本体がコンパイルされ、これが保存されます。EMP_EVAL本体ペインのタイトルは、イタリック・フォントではなくなりました。

関連項目: CREATE PACKAGE BODY文(パッケージ本体)の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

パッケージの削除

パッケージ(仕様および本体)を削除するには、SQL Developerの「接続」フレームと削除ツールまたはDDL文DROP PACKAGEのいずれかを使用します。

注意:パッケージEMP_EVALは削除しないでください。パッケージ0は後のチュートリアルで必要なため、削除しないでください。パッケージの削除の実習を行う場合は、簡単なパッケージを作成してから削除してください。

削除ツールを使用してパッケージを削除するステップ:

  1. 「接続」フレーム内で、hr_connを展開します。

  2. スキーマ・オブジェクト・タイプのリスト内で、「パッケージ」を展開します。

    パッケージのリストが表示されます。

  3. パッケージのリストで、削除するパッケージの名前を右クリックします。

  4. 選択肢のリストから、「パッケージの削除」をクリックします。

  5. 削除ウィンドウで、「適用」をクリックします。

  6. 「確認」ウィンドウで、「OK」をクリックします。

関連項目: DROP PACKAGE文の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。