ALTER PROCEDURE文は、スタンドアロンのストアド・プロシージャを再コンパイルします。明示的に再コンパイルすることによって、実行時に暗黙的に再コンパイルする必要がなくなり、関連する実行時コンパイル・エラーおよびパフォーマンス・オーバーヘッドが発生しなくなります。
パッケージに含まれるプロシージャを再コンパイルするには、ALTER PACKAGE文を使用してパッケージを再コンパイルします。
必要な権限
プロシージャの所有者に必要な権限はありません。
別のユーザーのプロシージャの場合はALTER ANY PROCEDUREが必要です。
SQL構文
ALTER PROCEDURE [Owner.]ProcedureNameCOMPILE [
compiler_parameters_clause
[…]] [REUSE SETTINGS]
パラメータ
ALTER PROCEDURE文には、次のパラメータがあります。
パラメータ | 説明 |
---|---|
[Owner.]ProcedureName |
再コンパイルするプロシージャの名前。 |
COMPILE |
プロシージャの再コンパイルを発生させる必須キーワード。 プロシージャを正常にコンパイルできなかった場合は、ttIsql コマンドのSHOW ERRORS を使用してコンパイラのエラー・メッセージを表示します。 |
compiler_parameters_clause |
このオプション句を使用して、いずれかのPL/SQL永続コンパイラ・パラメータの値を指定します。PL/SQL永続コンパイラ・パラメータには、PLSQL_OPTIMIZE_LEVEL、PLSCOPE_SETTINGSおよびNLS_LENGTH_SEMANTICSがあります。
文の中で各パラメータを1回指定できます。 この句のパラメータを省略して |
REUSE SETTINGS |
このオプション句を使用して、TimesTenがコンパイラのスイッチ設定を削除および再取得しないようにします。REUSE SETTINGS を指定すると、TimesTenによって既存の設定が保持され、値を指定していないパラメータのコンパイルに使用されます。 |
説明
ALTER PROCEDURE文は、既存プロシージャの宣言または定義を変更しません。 プロシージャを再宣言または再定義するには、CREATE PROCEDURE文を使用します。
プロシージャが依存しているオブジェクトが無効な場合、TimesTenは最初にこれらのオブジェクトを再コンパイルします。
また、TimesTenは、再コンパイルされたプロシージャをコールするプロシージャや、再コンパイルされたプロシージャをコールするプロシージャが定義されているパッケージの本体など、プロシージャに依存しているオブジェクトをすべて無効にします。
TimesTenによってプロシージャが正常に再コンパイルされると、そのプロシージャは有効になります。 プロシージャの再コンパイルでコンパイル・エラーになった場合、TimesTenによってエラーが返され、プロシージャは無効のままになります。 ttIsql
コマンドのSHOW ERRORS
を使用して、コンパイル・エラーを表示します。
再コンパイル中に、TimesTenはすべての永続コンパイラ設定を削除し、セッションからこれらの設定を再取得して、コンパイルの最後に格納します。このプロセスを回避するには、REUSE SETTINGS句を指定します。
例
システム・ビューUSER_PLSQL_OBJECT_SETTINGSに問合せを発行して、プロシージャquery_emp
のPLSQL_OPTIMIZE_LEVELおよびPLSCOPE_SETTINGSを確認します。 PLSQL_OPTIMIZE_LEVELを3に変更することで、query_emp
を変更します。結果を確認します。
Command> SELECT PLSQL_OPTIMIZE_LEVEL, PLSCOPE_SETTINGS > FROM user_plsql_object_settings WHERE name = 'QUERY_EMP'; < 2, IDENTIFIERS:NONE > 1 row found. Command> ALTER PROCEDURE query_emp COMPILE PLSQL_OPTIMIZE_LEVEL = 3; Procedure altered. Command> SELECT PLSQL_OPTIMIZE_LEVEL, PLSCOPE_SETTINGS > FROM user_plsql_object_settings WHERE name = 'QUERY_EMP'; < 3, IDENTIFIERS:NONE > 1 row found.
関連項目