ALTER
PROCEDURE
文は、スタンドアロン・ストアド・プロシージャを明示的に再コンパイルします。 明示的に再コンパイルすることによって、実行時に暗黙的に再コンパイルする必要がなくなり、また、実行時のコンパイル・エラーとパフォーマンス上のオーバーヘッドもなくなります。
パッケージの一部であるプロシージャを再コンパイルするには、ALTER PACKAGE文を使用してパッケージ全体を再コンパイルします。
注意: この文では、既存のプロシージャの宣言または定義は変更されません。 スタンドアロン・ストアド・プロシージャを再宣言または再定義するには、CREATE PROCEDURE文をOR REPLACE 句とともに使用します。 |
ALTER
PROCEDURE
文は、ALTER
FUNCTION
文に非常に似ています。 詳細は、「ALTER FUNCTION文」を参照してください。
前提条件
プロシージャが自身のスキーマ内にある必要があります。自身のスキーマ内にない場合は、ALTER
ANY
PROCEDURE
システム権限が必要です。
構文
alter_procedure::=
compiler_parameters_clause::=
キーワードとパラメータの説明
schema
プロシージャが含まれているスキーマを指定します。 schema
を省略すると、プロシージャは自身のスキーマ内に存在するとみなされます。
procedure
再コンパイルするプロシージャの名前を指定します。
COMPILE
を指定すると、プロシージャを再コンパイルすることができます。 COMPILE
キーワードは必須です。プロシージャは、有効か無効かに関係なく再コンパイルされます。
プロシージャが依存するオブジェクトのいずれかが無効な場合、データベースによってそれらのオブジェクトが最初に再コンパイルされます。
また、データベースによって、プロシージャに依存するローカル・オブジェクト(再コンパイルされたプロシージャをコールするプロシージャ、再コンパイルされたプロシージャをコールするプロシージャを定義するパッケージ本体など)も無効にされます。
プロシージャは、データベースによって正常に再コンパイルされた場合に有効になります。 プロシージャの再コンパイル時にコンパイル・エラーが発生した場合は、データベースによってエラーが戻され、プロシージャは無効なままになります。 関連付けられているコンパイラ・エラー・メッセージは、SQL*PlusコマンドSHOW
ERRORS
を使用して確認できます。
再コンパイル中、コンパイラの永続的なスイッチ設定はすべて削除され、セッションから再度取得されてコンパイルの最後に格納されます。 この処理を回避するには、REUSE
SETTINGS
句を指定します。
DEBUG
を指定すると、PL/SQLデバッガで使用するためのコードを生成して格納するようにPL/SQLコンパイラに指示できます。 この句を指定した場合の効果は、compiler_parameters_clause
でPLSQL_DEBUG
= TRUE
を指定した場合と同じです。
参照: プロシージャのデバッグの詳細は、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』を参照してください。 |
この句のプロシージャに対する動作は、ファンクションに対する動作と同様です。 詳細は、「ALTER
FUNCTION
」の「compiler_parameters_clause」を参照してください。
この句のプロシージャに対する動作は、ファンクションに対する動作と同様です。 詳細は、「ALTER
FUNCTION」
の「REUSE SETTINGS」を参照してください。
例
プロシージャの再コンパイル: 例 ユーザーhr
が所有しているプロシージャremove_emp
を明示的に再コンパイルするには、次の文を発行します。
ALTER PROCEDURE hr.remove_emp COMPILE;
remove_emp
の再コンパイル中にデータベースでコンパイル・エラーが発生しなかった場合、remove_emp
は有効となります。その後、データベースによって、実行時に再コンパイルせずにこのプロシージャを実行できます。 remove_emp
の再コンパイル時にコンパイル・エラーが発生した場合は、データベースによってエラーが戻され、remove_emp
は無効なままになります。
また、データベースによってすべての依存オブジェクトも無効にされます。 これらのオブジェクトには、remove_emp
をコールするプロシージャ、ファンクションおよびパッケージ本体などがあります。 その後、最初に明示的に再コンパイルせずにこれらのオブジェクトのいずれかを参照すると、データベースによって実行時にそのオブジェクトが暗黙的に再コンパイルされます。
関連トピック