RESTRICT_REFERENCES
プラグマは、ユーザー定義のサブプログラムがデータベース表またはパッケージ変数に対する読込みまたは書込みを行っていないことを示します。
注意:
RESTRICT_REFERENCES
プラグマは非推奨となりました。RESTRICT_REFERENCES
のかわりにDETERMINISTIC
およびPARALLEL_ENABLE
を使用することをお薦めします。
データベース表またはパッケージ変数に対して読込みまたは書込み操作を行っているサブプログラムは、サブプログラムの起動によって結果が異なったり、エラーが発生する場合があるため、最適化は困難です。TRUST
を指定しないかぎり、ユーザー定義サブプログラム内の文がRESTRICT_REFERENCES
により行われたアサーションに違反する場合、PL/SQLコンパイラにより文の解析時にエラー・メッセージが発行されます。
通常、このプラグマはファンクションに対して指定します。ファンクションがプロシージャを起動する場合は、それらのプロシージャにも同様にこのプラグマを指定します。
RESTRICT_REFERENCESプラグマの制限
このプラグマは、パッケージ仕様部またはADT仕様部でのみ使用できます。
所定のサブプログラム宣言を参照できるRESTRICT_REFERENCES
プラグマは、1つのみです。
ここでのトピック
構文
restrict_references_pragma ::=
セマンティクス
subprogram
ユーザー定義サブプログラム(通常はファンクション)の名前。subprogram
がオーバーロードされた場合、プラグマは直前のサブプログラム宣言にのみ適用されます。
method
MEMBER
サブプログラムの名前(「CREATE TYPE文」の「element_spec ::=」を参照)。
DEFAULT
プラグマをパッケージ仕様部またはADTの仕様部内のすべてのサブプログラム(ADTに対するシステム定義のコンストラクタを含む)に適用します。
個々のサブプログラムに対してもプラグマを宣言すると、そのサブプログラムのDEFAULT
のプラグマはオーバーライドされます。
RNDS
サブプログラムがデータベースに読込み禁止状態である(データベース表を問合せできない)ことを示します。
WNDS
サブプログラムがデータベースへの書込み禁止状態である(表を変更できない)ことを示します。
RNPS
サブプログラムがパッケージに読込み禁止状態である(パッケージ変数の値を参照できない)ことを示します。
RNPSの制限
サブプログラムがSQLCODE
ファンクションまたはSQLERRM
ファンクションを起動する場合、RNPS
を指定することはできません。
WNPS
サブプログラムがパッケージへの書込み禁止状態である(パッケージ変数の値を変更できない)ことを示します。
WNPSの制限
サブプログラムがSQLCODE
ファンクションまたはSQLERRM
ファンクションを起動する場合、WNPS
を指定することはできません。
TRUST
指定された他のアサーションにサブプログラムが違反しないと信頼できることを示し、PL/SQLコンパイラがサブプログラム本体で違反の有無をチェックすることを防ぎます。これらのチェックをスキップすると、パフォーマンスが向上します。
PL/SQLサブプログラムがCまたはJavaサブプログラムを起動する場合、PL/SQLコンパイラは実行時にCまたはJavaサブプログラムで違反の有無をチェックできないため、PL/SQLサブプログラムあるいはCまたはJavaサブプログラムに対してTRUST
を指定する必要があります。
注意:
パラレル化されたDML文からサブプログラムを起動するには、4つの制約(RNDS
、WNDS
、RNPS
およびWNPS
)すべてを指定する必要があります。他の制約を暗黙的に指定する制約はありません。
関連項目:
既存のアプリケーションでのPRAGMA
RESTRICT_REFERENCES
プラグマの使用の詳細は、『Oracle Database開発ガイド』を参照してください