ヘッダーをスキップ
Oracle Database PL/SQL言語リファレンス
11g リリース1(11.1)
E05670-03
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

ALTER FUNCTION文

ALTER FUNCTION文は、無効なスタンドアロン・ストアド・ファンクションを明示的に再コンパイルします。 明示的に再コンパイルすることによって、実行時に暗黙的に再コンパイルする必要がなくなり、また、実行時のコンパイル・エラーとパフォーマンス上のオーバーヘッドもなくなります。


注意:

この文では、既存のファンクションの宣言または定義は変更されません。 スタンドアロン・ストアド・ファンクションを再宣言または再定義するには、CREATE FUNCTION文OR REPLACE句とともに使用します。

前提条件

ファンクションが自身のスキーマ内にある必要があります。自身のスキーマ内にない場合は、ALTER ANY PROCEDUREシステム権限が必要です。

構文

alter_function::=

alter_function
alter_function.gifの説明

compiler_parameters_clause::=

compiler_parameters_clause
compiler_parameters_clause.gifの説明

キーワードとパラメータの説明

schema

ファンクションが含まれているスキーマを指定します。 schemaを省略すると、ファンクションは自身のスキーマ内に存在するとみなされます。

function

再コンパイルするファンクションの名前を指定します。

COMPILE

COMPILEを指定すると、データベースでファンクションを再コンパイルできます。 COMPILEキーワードは必須です。 データベースによってファンクションが正常にコンパイルされない場合は、SQL*PlusコマンドSHOW ERRORSを使用して、関連付けられているコンパイラ・エラー・メッセージを確認できます。

再コンパイル中、コンパイラの永続的なスイッチ設定はすべて削除され、セッションから再度取得されてコンパイルの最後に格納されます。 この処理を回避するには、REUSE SETTINGS句を指定します。

DEBUG

DEBUGを指定すると、PL/SQLデバッガで使用するためのコードを生成して格納するようにPL/SQLコンパイラに指示できます。 この句を指定した場合の効果は、compiler_parameters_clausePLSQL_DEBUG = TRUEを指定した場合と同じです。

compiler_parameters_clause

この句を使用すると、PL/SQLの永続的なコンパイラ・パラメータのいずれかに対して値を指定できます。 コンパイル時のこれらの初期化パラメータの値は、ユニットのメタデータとともに格納されます。 このようなパラメータの値は、適切な*_PLSQL_OBJECT_SETTINGSビューを問い合せて確認できます。 PL/SQLの永続的なパラメータは、PLSQL_OPTIMIZE_LEVELPLSQL_CODE_TYPEPLSQL_DEBUGPLSQL_WARNINGSPLSQL_CCFLAGSおよびNLS_LENGTH_SEMANTICSです。

各パラメータは、それぞれの文で1回のみ指定できます。 各設定は、現在コンパイルされているライブラリ・ユニットに対してのみ有効であり、このセッションまたはシステムの他のコンパイルには影響しません。 セッションまたはシステム全体に影響を与えるには、ALTER SESSIONまたはALTER SYSTEM文を使用してパラメータの値を設定する必要があります。

この句からいずれかのパラメータを省略してREUSE SETTINGSを指定した場合に、このライブラリ・ユニットの以前のコンパイルでそのパラメータの値が指定されていると、データベースによって以前の値が使用されます。 いずれかのパラメータを省略した場合に、REUSE SETTINGSを指定しないか、または以前のコンパイルでそのパラメータの値が指定されていないと、データベースによってセッション環境からそのパラメータの値が取得されます。

compiler_parameters_clauseに対する制限 DEBUGを指定する場合、PLSQL_DEBUGパラメータの値は設定できません。いずれの句もPLSQL_DEBUGパラメータを設定しますが、各パラメータに値を指定できるのは1回のみのためです。


参照:

  • これらの各パラメータの有効な値およびセマンティクスの詳細は、『Oracle Databaseリファレンス』を参照してください。

  • コンパイル・パラメータの詳細は、「条件付きコンパイル」を参照してください。


REUSE SETTINGS

REUSE SETTINGSを指定すると、Oracleによってコンパイラ・スイッチ設定が削除および再取得されないようにすることができます。 この句を指定すると、Oracleによって既存の設定が保持され、この文の他の場所に値が指定されていないパラメータの再コンパイルにその設定が使用されます。

下位互換性を保つために、この文によって設定されるPLSQL_CODE_TYPEおよびPLSQL_DEBUGパラメータの値が反映されるように、PLSQL_COMPILER_FLAGS初期化パラメータの永続的に格納される値がデータベースによって設定されます。


参照:

  • これらの各パラメータの有効な値およびセマンティクスの詳細は、『Oracle Databaseリファレンス』を参照してください。

  • コンパイル・パラメータの詳細は、「条件付きコンパイル」を参照してください。


ファンクションの再コンパイル: 例 サンプル・ユーザーoeが所有しているファンクションget_balを明示的に再コンパイルするには、次の文を発行します。

ALTER FUNCTION oe.get_bal
   COMPILE;

get_balの再コンパイル中にデータベースでコンパイル・エラーが発生しなかった場合、get_balは有効となります。その後、データベースでは、実行時に再コンパイルせずにこのファンクションを実行できます。 get_balの再コンパイル時にコンパイル・エラーが発生した場合は、データベースによってエラーが戻され、get_balは無効なままになります。

また、データベースによって、get_balに依存するオブジェクトもすべて無効にされます。 その後、最初に明示的に再コンパイルせずにこれらのオブジェクトのいずれかを参照すると、データベースによって実行時にそのオブジェクトが暗黙的に再コンパイルされます。

関連トピック