ALTER PROCEDURE ステートメントは、独立したストアドプロシージャを明示的に再コンパイルするために使用されます。
機能の適用範囲
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
パッケージの一部としてコンパイルされたストアドプロシージャを再コンパイルする場合は、ALTER PACKAGE ステートメントを使用してください。
前提条件
ストアドプロシージャが SYS スキーマにある場合は、SYSDBA アイデンティティで接続する必要があります。それ以外の場合、そのストアドプロシージャは現在ユーザーのスキーマに存在するか、ユーザーは ALTER ANY PROCEDURE システム権限を持っている必要があります。
構文
alter_procedure の構文は以下のとおりです:
ALTER PROCEDURE [ schema. ] procedure_name
{ procedure_compile_clause} ;
ここで、procedure_compile_clause の構文は以下のとおりです:
COMPILE [ DEBUG ] [ compiler_parameters_clause ... ] [ REUSE SETTINGS ]
セマンティクス
構文 |
キーワードまたは構文ノード |
説明 |
|---|---|---|
| alter_procedure | schema | このストアドプロシージャが存在するスキーマ名。デフォルト値は現在ユーザーのスキーマです。 |
| procedure_name | 再コンパイルするストアドプロシージャの名前。 | |
| procedure_compile_clause | -- | このストアドプロシージャを再コンパイルします。 |
例
以下の例は、ユーザー sys が所有するストアドプロシージャ userlogin を明示的に再コンパイルするものです。
ALTER PROCEDURE sys.userlogin COMPILE;
データベースが userlogin の再コンパイル時にコンパイルエラーに遭遇しない場合、userlogin は有効になります。データベースはその後、実行時の再コンパイルなしに実行できます。
userlogin を再コンパイルした際にコンパイルエラーが発生した場合、データベースはエラーを返し、userlogin は無効となります。
データベースは、userlogin に依存するすべてのオブジェクトも無効にします。これらのオブジェクトには、userlogin を呼び出すストアドプロシージャ、関数、およびプログラムパッケージ本体が含まれます。その後、これらのオブジェクトを参照する際に明示的に再コンパイルしない場合、データベースは実行時に暗黙的に再コンパイルを行います。