ALTER PACKAGE ステートメントは、パッケージのヘッダーおよび/または本体を明示的に再コンパイルするために使用されます。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
パッケージ内のすべてのオブジェクトは単一のユニットとして格納されるため、ALTER PACKAGE ステートメントはすべてのパッケージオブジェクトを再コンパイルします。ALTER PROCEDURE ステートメントや ALTER FUNCTION ステートメントを使用して、パッケージの一部であるストアドプロシージャや関数を個別に再コンパイルすることはできません。
前提条件
パッケージが SYS スキーマにある場合は、SYSDBA 身分で接続する必要があります。それ以外の場合、そのパッケージは現在のユーザーのスキーマに存在するか、ユーザーは ALTER ANY PROCEDURE システム権限を持っている必要があります。
構文
alter_package の構文は次のとおりです:
ALTER PACKAGE [ schema. ] package_name
{ package_compile_clause} ;
ここで、package_compile_clause の構文は次のとおりです:
COMPILE [ DEBUG ] [ compiler_parameters_clause ... ] [ REUSE SETTINGS ]
セマンティクス
構文 |
キーワードまたは構文ノード |
説明 |
|---|---|---|
| alter_package | schema | プログラムパッケージが存在するスキーマ名。デフォルト値は現在ユーザーのスキーマです。 |
| alter_package | package_name | 再コンパイルするプログラムパッケージの名前。 |
| package_compile_clause | -- | プログラムパッケージのヘッダーおよび(または)本体を再コンパイルします。 |
例
以下の例は、sys.obdemo_pack パッケージのスペциフィケーションと本体を明示的に再コンパイルする規範です。
ALTER PACKAGE obdemo_pack COMPILE PACKAGE;
データベースが obdemo_pack のスペциフィケーションと本体の再コンパイル時にコンパイルエラーに遭遇しない場合、obdemo_pack は有効になります。その後、ユーザー sys は obdemo_pack のスペциフィケーションで宣言されたすべてのパッケージオブジェクトを呼び出したり参照したりでき、ランタイムでの再コンパイルは不要です。
obdemo_pack の再コンパイルによりコンパイルエラーが発生した場合、データベースはエラーを返し、obdemo_pack は無効になります。データベースはまた、obdemo_pack に依存するすべてのオブジェクトも無効にします。その後、これらのオブジェクトを明示的に再コンパイルせずに参照した場合、データベースはランタイムで暗黙的に再コンパイルします。
以下の例は、SYS スキーマ下でパッケージ本体を再コンパイルする規範です:
ALTER PACKAGE sys.obdemo_pack COMPILE BODY;
データベースが obdemo_pack パッケージ本体の再コンパイル時にコンパイルエラーに遭遇しない場合、パッケージ本体は有効になります。その後、ユーザー sys は obdemo_pack のスペциフィケーションで宣言されたすべてのパッケージオブジェクトを呼び出したり参照したりでき、ランタイムでの再コンパイルは不要です。
本体の再コンパイルによりコンパイルエラーが発生した場合、データベースはエラーメッセージを返し、本体は引き続き無効のままです。
このステートメントは本体を再コンパイルするものであり、obdemo_pack のスペциフィケーションではないため、データベースは依存オブジェクトを無効にしません。