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