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 に依存するすべてのオブジェクトも無効にします。その後、これらのオブジェクトを参照する際に明示的に再コンパイルしない場合、データベースは実行時に暗黙的に再コンパイルを行います。