注意: RESTRICT REFERENCES プラグマは廃止されました。 オラクル社では、RESTRICT REFERENCES のかわりにDETERMINISTIC およびPARALLEL_ENABLE (「ファンクション宣言と定義」を参照)を使用することをお薦めします。 |
RESTRICT REFERENCES
プラグマは、ユーザー定義のサブプログラムがデータベース表またはパッケージ変数に対する読込みまたは書込みを行っていないことを示します。
データベース表またはパッケージ変数に対して読込みまたは書込み操作を行っているサブプログラムは、サブプログラムへのコールによって結果が異なったり、エラーが発生する場合があるため、最適化は困難です。
構文
restrict_references_pragma ::=
キーワードとパラメータの説明
PRAGMA
文がプラグマ(コンパイラ・ディレクティブ)であることを表します。 プラグマは、実行時ではなくコンパイル時に処理されます。 プラグマは、コンパイラに情報を渡します。
subprogram_name
ユーザー定義サブプログラム(通常はファンクション)の名前。
subprogram_name
がオーバーロードされた場合、プラグマは直前のサブプログラム宣言にのみ適用されます。
プラグマがパッケージ仕様部またはオブジェクト型の仕様部内のすべてのサブプログラム(オブジェクト型に対するシステム定義のコンストラクタを含む)に適用されるように指定します。
その場合でも、サブプログラムごとにプラグマを宣言し、DEFAULT
のプラグマをオーバーライドできます。
サブプログラムがデータベースに読込み禁止状態である(データベース表を問合せできない)ことを示します。
サブプログラムがデータベースへの書込み禁止状態である(表を変更できない)ことを示します。
サブプログラムがパッケージに読込み禁止状態である(パッケージ変数の値を参照できない)ことを示します。
サブプログラムでSQLCODE
またはSQLERRM
ファンクションが起動される場合、RNPS
を指定することはできません。
サブプログラムがパッケージへの書込み禁止状態である(パッケージ変数の値を変更できない)ことを示します。
サブプログラムでSQLCODE
またはSQLERRM
ファンクションが起動される場合、WNPS
を指定することはできません。
サブプログラムが1つ以上の規則に違反しないと信頼されていることを示します。
TRUST
を指定すると、サブプログラム本体はプラグマにリストされた制約に違反しているかどうかチェックされません。 サブプログラムは制約に違反していないことを承認されます。 これらのチェックをスキップすると、パフォーマンスが向上します。 CまたはJavaで記述されたファンクションをPL/SQLで起動する場合は、実行時にこれらのファンクションを検証できないため、TRUST
が必要です。
使用上の注意
RESTRICT_REFERENCES
プラグマは、パッケージ仕様部またはオブジェクト型仕様部でのみ使用できます。 通常、このプラグマはファンクションに対して指定します。 ファンクションがプロシージャをコールする場合は、それらのプロシージャにも同様にプラグマを指定します。
パラレル問合せからサブプログラムを起動するには、4つすべての制約(RNDS
、WNDS
、RNPS
およびWNPS
)を指定します。 他の制約を暗黙的に指定する制約はありません。
関連トピック