ALTER FUNCTION ステートメントは、独立関数を再コンパイルするために使用されます。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
前提条件
関数が SYS スキーマにある場合は、SYSDBA アイデンティティで接続する必要があります。そうでない場合は、関数は現在のユーザーのスキーマに存在するか、ユーザーには ALTER ANY PROCEDURE のシステム権限が付与されていなければなりません。
構文
ALTER FUNCTION の構文は次のとおりです:
ALTER FUNCTION [ schema. ] function_name
{ function_compile_clause } ;
ここで、function_compile_clause の構文は次のとおりです:
COMPILE [ DEBUG ] [ compiler_parameters_clause ... ] [ REUSE SETTINGS ]
セマンティクス
| 構文 | キーワードまたは構文ノード | 説明 |
|---|---|---|
| alter_function | schema | この関数が属するスキーマ名。デフォルト値は現在のユーザーのスキーマです。 |
| alter_function | function_name | 再コンパイルする関数の名前。 |
| function_compile_clause | -- | 有効かどうかにかかわらず、この関数を再コンパイルします。 |
例
以下の例は、ユーザー sys が所有する関数 get_salary_by_dept を明示的に再コンパイルする方法を示しています。
ALTER FUNCTION sys.get_salary_by_dept COMPILE;
データベースが get_salary_by_dept の再コンパイル時にコンパイルエラーを発生させなかった場合、get_salary_by_dept は有効になります。その後、データベースは実行時に再コンパイルすることなくこれを実行できます。
get_salary_by_dept の再コンパイルによってコンパイルエラーが発生した場合、データベースはエラーを返し、get_salary_by_dept は無効になります。また、データベースは get_salary_by_dept に依存するすべてのオブジェクトも無効にします。その後、これらのオブジェクトを明示的に再コンパイルせずに参照した場合、データベースは実行時にそれらを暗黙的に再コンパイルします。