ヘッダーをスキップ
Oracle® Database PL/SQL言語リファレンス
11gリリース2 (11.2)
B56260-09
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

ALTER PACKAGE文

ALTER PACKAGE文は、パッケージの仕様部、本体、またはその両方を明示的に再コンパイルします。明示的に再コンパイルすることによって、実行時に暗黙的に再コンパイルする必要がなくなり、関連する実行時コンパイル・エラーおよびパフォーマンス・オーバーヘッドが発生しなくなります。

パッケージ内のすべてのオブジェクトは1つの単位として格納されるため、ALTER PACKAGE文によって、すべてのパッケージ・オブジェクトが再コンパイルされます。ALTER PROCEDURE文またはALTER FUNCTION文を使用して、パッケージの一部であるプロシージャまたはファンクションを個別に再コンパイルすることはできません。


注意:

この文では、既存のパッケージの宣言または定義は変更されません。パッケージを再宣言または再定義するには、CREATE PACKAGE文を使用するか、またはCREATE PACKAGE BODY文OR REPLACE句とともに使用します。

ここでのトピック

前提条件

パッケージがSYSスキーマ内にある場合、SYSDBAとして接続する必要があります。そうでない場合は、パッケージが自分のスキーマ内にあるか、ALTER ANY PROCEDUREシステム権限が必要です。

構文

alter_package::=

alter_package.gifの説明が続きます。
alter_package.gifの説明

compiler_parameters_clause::=

compiler_parameters_clause.gifの説明が続きます
compiler_parameters_clause.gifの説明

セマンティクス

schema

パッケージが含まれているスキーマの名前。デフォルト: 自分のスキーマ。

package

再コンパイルするパッケージの名前。

COMPILE

パッケージ仕様部、パッケージ本体、またはその両方が再コンパイルされます。

再コンパイル中、データベースによってコンパイラの永続的なスイッチ設定はすべて削除され、セッションから再度取得されて、コンパイル後に格納されます。この処理を回避するには、REUSE SETTINGSを指定します。

DEBUG

型に対する動作は、ファンクションに対する動作と同様です。詳細は、「DEBUG」を参照してください。

SPECIFICATION

有効か無効かに関係なくパッケージ仕様部のみが再コンパイルされます。仕様部を変更した後、パッケージ仕様部を再コンパイルしてコンパイル・エラーを確認できます。

パッケージ仕様部を再コンパイルすると、仕様部に依存するローカル・オブジェクト(パッケージ内のプロシージャまたはファンクションを起動するプロシージャなど)がデータベースによって無効にされます。パッケージの本体も仕様部に依存します。その後、最初に明示的に再コンパイルせずにこれらの依存オブジェクトのいずれかを参照すると、データベースによって実行時にそのオブジェクトが暗黙的に再コンパイルされます。

BODY

有効か無効かに関係なくパッケージ本体のみが再コンパイルされます。パッケージ本体は、変更した後に再コンパイルできます。パッケージ本体を再コンパイルしても、パッケージ仕様部に依存するオブジェクトは無効になりません。

パッケージ本体の再コンパイル時にその本体が依存するオブジェクトのいずれかが無効な場合は、データベースによってそれらのオブジェクトが最初に再コンパイルされます。本体は、データベースによって正常に再コンパイルされた場合に有効になります。

PACKAGE

(デフォルト)有効か無効かに関係なくパッケージ仕様部とパッケージ本体(存在する場合)の両方が再コンパイルされます。パッケージ仕様部および本体を再コンパイルした場合、SPECIFICATIONおよびBODYで説明されているように、依存オブジェクトの無効化および再コンパイルが行われます。

REUSE SETTINGS

パッケージに対する動作は、ファンクションに対する動作と同様です。詳細は、「REUSE SETTINGS」を参照してください。

compiler_parameters_clause

パッケージに対する動作は、ファンクションに対する動作と同様です。詳細は、「ALTER FUNCTION」のcompiler_parameters_clauseを参照してください。

パッケージの再コンパイル: 例 次の文は、hr.emp_mgmtパッケージの仕様部および本体を明示的に再コンパイルします。このパッケージを作成する例については、「パッケージの作成: 例」を参照してください。

ALTER PACKAGE emp_mgmt COMPILE PACKAGE;

emp_mgmt仕様部および本体の再コンパイル中にデータベースでコンパイル・エラーが発生しなかった場合、emp_mgmtは有効となります。その後、ユーザーhrは、emp_mgmtの仕様部で宣言されたすべてのパッケージ・オブジェクトを実行時に再コンパイルせずに起動または参照できます。emp_mgmtの再コンパイル時にコンパイル・エラーが発生した場合は、データベースによってエラーが戻され、emp_mgmtは無効なままになります。

また、データベースによって、emp_mgmtに依存するオブジェクトもすべて無効にされます。その後、最初に明示的に再コンパイルせずにこれらのオブジェクトのいずれかを参照すると、データベースによって実行時にそのオブジェクトが暗黙的に再コンパイルされます。

スキーマhr内のemp_mgmtパッケージの本体を再コンパイルするには、次の文を発行します。

ALTER PACKAGE hr.emp_mgmt  COMPILE BODY;

パッケージ本体の再コンパイル中にデータベースでコンパイル・エラーが発生しなかった場合、本体は有効になります。その後、ユーザーhrは、emp_mgmtの仕様部で宣言されたすべてのパッケージ・オブジェクトを実行時に再コンパイルせずに起動または参照できます。本体の再コンパイル時にコンパイル・エラーが発生した場合は、データベースによってエラー・メッセージが戻され、本体は無効なままになります。

この文はemp_mgmtの仕様部ではなく本体を再コンパイルするため、依存オブジェクトはデータベースによって無効にされません。