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

戻る
戻る
 
次へ
次へ
 

RESTRICT_REFERENCESプラグマ


注意:

RESTRICT REFERENCESプラグマは廃止されました。 オラクル社では、RESTRICT REFERENCESのかわりにDETERMINISTICおよびPARALLEL_ENABLE「ファンクション宣言と定義」を参照)を使用することをお薦めします。

RESTRICT REFERENCESプラグマは、ユーザー定義のサブプログラムがデータベース表またはパッケージ変数に対する読込みまたは書込みを行っていないことを示します。

データベース表またはパッケージ変数に対して読込みまたは書込み操作を行っているサブプログラムは、サブプログラムへのコールによって結果が異なったり、エラーが発生する場合があるため、最適化は困難です。

構文

restrict_references_pragma ::=

restrict_references_pragma
restrict_references_pragma.gifの説明

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

PRAGMA

文がプラグマ(コンパイラ・ディレクティブ)であることを表します。 プラグマは、実行時ではなくコンパイル時に処理されます。 プラグマは、コンパイラに情報を渡します。

subprogram_name

ユーザー定義サブプログラム(通常はファンクション)の名前。

subprogram_nameがオーバーロードされた場合、プラグマは直前のサブプログラム宣言にのみ適用されます。

DEFAULT

プラグマがパッケージ仕様部またはオブジェクト型の仕様部内のすべてのサブプログラム(オブジェクト型に対するシステム定義のコンストラクタを含む)に適用されるように指定します。

その場合でも、サブプログラムごとにプラグマを宣言し、DEFAULTのプラグマをオーバーライドできます。

RNDS

サブプログラムがデータベースに読込み禁止状態である(データベース表を問合せできない)ことを示します。

WNDS

サブプログラムがデータベースへの書込み禁止状態である(表を変更できない)ことを示します。

RNPS

サブプログラムがパッケージに読込み禁止状態である(パッケージ変数の値を参照できない)ことを示します。

サブプログラムでSQLCODEまたはSQLERRMファンクションが起動される場合、RNPSを指定することはできません。

WNPS

サブプログラムがパッケージへの書込み禁止状態である(パッケージ変数の値を変更できない)ことを示します。

サブプログラムでSQLCODEまたはSQLERRMファンクションが起動される場合、WNPSを指定することはできません。

TRUST

サブプログラムが1つ以上の規則に違反しないと信頼されていることを示します。

TRUSTを指定すると、サブプログラム本体はプラグマにリストされた制約に違反しているかどうかチェックされません。 サブプログラムは制約に違反していないことを承認されます。 これらのチェックをスキップすると、パフォーマンスが向上します。 CまたはJavaで記述されたファンクションをPL/SQLで起動する場合は、実行時にこれらのファンクションを検証できないため、TRUSTが必要です。

使用上の注意

RESTRICT_REFERENCESプラグマは、パッケージ仕様部またはオブジェクト型仕様部でのみ使用できます。 通常、このプラグマはファンクションに対して指定します。 ファンクションがプロシージャをコールする場合は、それらのプロシージャにも同様にプラグマを指定します。

パラレル問合せからサブプログラムを起動するには、4つすべての制約(RNDSWNDSRNPSおよびWNPS)を指定します。 他の制約を暗黙的に指定する制約はありません。

関連トピック