REBIND_ROUTINE_PACKAGE プロシージャー - パッケージの再バインド
REBIND_ROUTINE_PACKAGE プロシージャーは機能的には REBIND コマンドと同じですが、パッケージ名の代わりにプロシージャー名を引数として使用します。
REBIND_ROUTINE_PACKAGE プロシージャーは、コマンド行またはアプリケーションから 呼び出すことができます。
明示的に関連パッケージを再バインドしても、ルーチンの再有効化は行われません。 無効なルーチンは、自動再有効化を使用するか、または明示的に ADMIN_REVALIDATE_DB_OBJECTS プロシージャーを使用して再有効化してください。 ルーチンの再有効化では、自動的に従属パッケージが再バインドされます。
許可
- プロシージャーでの EXECUTE 特権
- DATAACCESS 権限
- DBADM 権限
- SQLADM 権限
デフォルトの PUBLIC 特権
制限のないデータベースでは、このプロシージャーが自動的に作成されると、EXECUTE 特権が PUBLIC に付与されます。
構文
REBIND_ROUTINE_PACKAGE を呼び出すには、いずれも同じように有効な 2 つの方法があります。 2 つの呼び出しの違いは、ルーチン名を指定する方法だけです。 1 つ目の例では、routine-name-string 変数はピリオドで区切られた ID 名で構成されます。 2 つ目の方法では、ルーチンは schema、module、および name 値という別個の値で識別されます。
方法 1:
方法 2:
スキーマは SYSPROC です。
プロシージャー・パラメーター
- タイプ
- 以下のいずれかの値を使用してルーチンまたはコンパイル・トリガーのタイプを指定する、タイプ CHAR(2) の入力引数。
- 'P' - プロシージャー
- 'SP' - プロシージャーの特定名
- 'F' - コンパイル関数
- 'SF' - コンパイル関数の特定名
- 'T' - コンパイル・トリガー
routine-name-string (方法 1 のみ) - ルーチンまたはトリガーの名前を指定する、タイプ VARCHAR(386) の入力引数。 トリガー名はピリオドで区切られた 2 つの部分で構成されていて、schema.trigger という形式です。スキーマはオプションです。 ルーチン名はピリオドで区切られた 3 つの名前部分で構成されていて、schema.module.routine という形式です。スキーマとモジュールはオプションです。 スキーマを指定しないと、この値はデフォルトの CURRENT SCHEMA 特殊レジスターの値になります。 2 部構成の名前が指定されると、最初の部分はスキーマ名として当初解釈されます。そのスキーマ名の下にルーチンが見つからないと、最初の部分はモジュール名として解釈され、CURRENT SCHEMA の下のその名前のモジュール内でルーチンを検出しようとします。 スキーマ、モジュール、またはオブジェクト名に、二重引用符 (") またはピリオド (.) を含めることはできません。
- schema (方法 2 のみ)
- ルーチンまたはトリガーのスキーマを指定する、タイプ VARCHAR(128) のオプションの入力引数。 スキーマが指定されない場合、値はデフォルトで CURRENT SCHEMA 特殊レジスターの値になります。 このパラメーターには、大文字と小文字の区別があります。
- module (方法 2 のみ)
- ルーチンがあるモジュールの名前を指定する、タイプ VARCHAR (128) のオプションの入力引数。 このパラメーターをトリガーに指定しないでください。 このパラメーターを指定しない場合は、モジュール・ルーチンは無視されます。 このパラメーターには、大文字と小文字の区別があります。
- name (方法 2 のみ)
- ルーチンまたはトリガーの名前を指定する、タイプ VARCHAR (128) の入力引数。 このパラメーターには、大文字と小文字の区別があります。 オプション
- REBIND コマンド構文に従うすべての再バインド・オプションのリストを指定する、タイプ VARCHAR(1024) のオプションの入力引数。
ANY
またはCONSERVATIVE
の単一値も後方互換性のためにサポートされており、RESOLVE 再バインド・オプションの値として解釈されます。
ルーチンの修飾名は、検索するルーチンを決定するために使用されます。 検出されるルーチンは、SQL ルーチンでなければなりません。 それ以外は、エラーが返されます。(SQLSTATE 428F7) 特定名が使用されない場合は、複数のルーチンが検出される可能性があり、 エラーが返されます。(SQLSTATE 42725) このような場合は、必ず、検索したいルーチンの固有の名前を使用してください。
例
例 1: RESOLVE、REOPT、および APREUSE オプションを使用して、ルーチン UPDATE_EMPLOYEE のパッケージを再バインドします。
Method 1:
CALL SYSPROC.REBIND_ROUTINE_PACKAGE (
'P','UPDATE_EMPLOYEE','RESOLVE ANY REOPT ONCE APREUSE YES')
Method 2:
CALL SYSPROC.REBIND_ROUTINE_PACKAGE (
'P','','','UPDATE_EMPLOYEE','RESOLVE ANY REOPT ONCE APREUSE YES')
例 2: ルーチン UPDATE_EMPLOYEE のパッケージをオプションなしで再バインドします。
Method 1:
CALL SYSPROC.REBIND_ROUTINE_PACKAGE (
'P','UPDATE_EMPLOYEE','')
Method 2:
CALL SYSPROC.REBIND_ROUTINE_PACKAGE (
'P','','','UPDATE_EMPLOYEE','')
例 3: コンパイル済みトリガーのパッケージを再バインドします。
Method 1:
CALL SYSPROC.REBIND_ROUTINE_PACKAGE (
'T','DRICARD.MIN_SALARY','REOPT ALWAYS')
Method 2:
CALL SYSPROC.REBIND_ROUTINE_PACKAGE (
'T','DRICARD','','MIN_SALARY','REOPT ALWAYS')
例 4: 3 つの部分に分かれた名前を使用して、コンパイル済み関数のパッケージを再バインドします。
Method 1
CALL SYSPROC.REBIND_ROUTINE_PACKAGE (
'F','DRICARD.MODULE.FUNCTION','REOPT ALWAYS')
Method 2
CALL SYSPROC.REBIND_ROUTINE_PACKAGE (
'F','DRICARD','MODULE','FUNCTION','REOPT ALWAYS')