ALTER
PROCEDURE
文は、スタンドアロン・プロシージャを明示的に再コンパイルします。明示的に再コンパイルすることによって、実行時に暗黙的に再コンパイルする必要がなくなり、関連する実行時コンパイル・エラーおよびパフォーマンス・オーバーヘッドが発生しなくなります。
パッケージの一部であるプロシージャを再コンパイルするには、「ALTER PACKAGE文」を使用してパッケージ全体を再コンパイルします。
注意:
この文では、既存のプロシージャの宣言または定義は変更されません。スタンドアロン・プロシージャを再宣言または再定義するには、「CREATE PROCEDURE文」をOR
REPLACE
句とともに使用します。
ALTER
PROCEDURE
文は、ALTER
FUNCTION
文に非常に似ています。詳細は、「ALTER FUNCTION文」を参照してください。
ここでのトピック
前提条件
プロシージャがSYS
スキーマ内にある場合、SYSDBA
として接続する必要があります。そうでない場合は、プロシージャが自分のスキーマ内にあるか、ALTER
ANY
PROCEDURE
システム権限が必要です。
構文
alter_procedure::=
procedure_compile_clause ::=
compiler_parameters_clause::=
セマンティクス
schema
プロシージャが含まれているスキーマの名前。デフォルト: 自分のスキーマ。
procedure_name
再コンパイルするプロシージャの名前。
COMPILE
プロシージャに対する動作は、ファンクションに対する動作と同様です。「COMPILE」を参照してください。
DEBUG
プロシージャに対する動作は、ファンクションに対する動作と同様です。DEBUGを参照してください。
関連項目:
プロシージャのデバッグの詳細は、『Oracle Database開発ガイド』を参照してください。
REUSE SETTINGS
プロシージャに対する動作は、ファンクションに対する動作と同様です。「REUSE SETTINGS」を参照してください。
compiler_parameters_clause
プロシージャに対する動作は、ファンクションに対する動作と同様です。詳細は、「ALTER
FUNCTION
」の「compiler_parameters_clause」を参照してください。
{ EDITIONABLE | NONEDITIONABLE }
schema
でスキーマ・オブジェクト・タイプPROCEDURE
に対して後からエディションが有効化された場合に、プロシージャがエディション・オブジェクトまたは非エディション・オブジェクトのどちらになるかを指定します。デフォルト: EDITIONABLE
。エディション・オブジェクトと非エディション・オブジェクトの変更の詳細は、『Oracle Database開発ガイド』を参照してください。
例
例14-2 プロシージャの再コンパイル: 例
ユーザーhr
が所有しているプロシージャremove_emp
を明示的に再コンパイルするには、次の文を発行します。
ALTER PROCEDURE hr.remove_emp COMPILE;
remove_emp
の再コンパイル中にデータベースでコンパイル・エラーが発生しなかった場合、remove_emp
は有効になります。その後、実行時にデータベースによって再コンパイルされることなく、実行できます。remove_emp
の再コンパイル時にコンパイル・エラーが発生した場合は、データベースによってエラーが戻され、remove_emp
は無効なままになります。
また、データベースによってすべての依存オブジェクトも無効にされます。これらのオブジェクトには、remove_emp
を起動するプロシージャ、ファンクションおよびパッケージ本体などがあります。その後、最初に明示的に再コンパイルせずにこれらのオブジェクトのいずれかを参照すると、データベースによって実行時にそのオブジェクトが暗黙的に再コンパイルされます。