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 を呼び出すすべてのストアドプロシージャ、関数、およびパッケージ本体が含まれます。その後、これらのオブジェクトを参照する際に事前に明示的に再コンパイルしない場合、データベースは実行時に暗黙的に再コンパイルを行います。