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

