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