ALTER PROCEDURE文は、スタンドアロン・プロシージャを明示的に再コンパイルします。明示的に再コンパイルすることによって、実行時に暗黙的に再コンパイルする必要がなくなり、関連する実行時コンパイル・エラーおよびパフォーマンス・オーバーヘッドが発生しなくなります。
パッケージの一部であるプロシージャを再コンパイルするには、ALTER PACKAGE文を使用してパッケージ全体を再コンパイルします。
|
注意: この文では、既存のプロシージャの宣言または定義は変更されません。スタンドアロン・プロシージャを再宣言または再定義するには、CREATE PROCEDURE文をOR REPLACE句とともに使用します。 |
ALTER PROCEDURE文は、ALTER FUNCTION文に非常に似ています。詳細は、「ALTER FUNCTION文」を参照してください。
ここでのトピック
前提条件
プロシージャがSYSスキーマ内にある場合、SYSDBAとして接続する必要があります。そうでない場合は、プロシージャが自分のスキーマ内にあるか、ALTER ANY PROCEDUREシステム権限が必要です。
構文
alter_procedure::=

compiler_parameters_clause::=

セマンティクス
schema
プロシージャが含まれているスキーマの名前。デフォルト: 自分のスキーマ。
procedure
再コンパイルするプロシージャの名前。
COMPILE
プロシージャに対する動作は、ファンクションに対する動作と同様です。ALTER FUNCTIONの「COMPILE」を参照してください。
DEBUG
プロシージャに対する動作は、ファンクションに対する動作と同様です。詳細は、「DEBUG」を参照してください。
|
関連項目: プロシージャのデバッグの詳細は、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』を参照してください。 |
REUSE SETTINGS
プロシージャに対する動作は、ファンクションに対する動作と同様です。詳細は、「REUSE SETTINGS」を参照してください。
compiler_parameters_clause
プロシージャに対する動作は、ファンクションに対する動作と同様です。詳細は、「ALTER FUNCTION」の「compiler_parameters_clause」を参照してください。
例
プロシージャの再コンパイル: 例 ユーザーhrが所有しているプロシージャremove_empを明示的に再コンパイルするには、次の文を発行します。
ALTER PROCEDURE hr.remove_emp COMPILE;
remove_empの再コンパイル中にデータベースでコンパイル・エラーが発生しなかった場合、remove_empは有効になります。その後、実行時にデータベースによって再コンパイルされることなく、実行できます。remove_empの再コンパイル時にコンパイル・エラーが発生した場合は、データベースによってエラーが戻され、remove_empは無効なままになります。
また、データベースによってすべての依存オブジェクトも無効にされます。これらのオブジェクトには、remove_empを起動するプロシージャ、ファンクションおよびパッケージ本体などがあります。その後、最初に明示的に再コンパイルせずにこれらのオブジェクトのいずれかを参照すると、データベースによって実行時にそのオブジェクトが暗黙的に再コンパイルされます。