303 ルール・タイプ
303.2 ルール・タイプのセキュリティ・モデル
PUBLIC
には、次のRULEタイプでEXECUTE
権限が付与されています。
参照:
ユーザー・グループPUBLIC
の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
303.3 ルール・タイプの要約
この表は、ルール・タイプ
を示し、簡単に説明しています。
表303-1 ルール・タイプ
タイプ | 説明 |
---|---|
変数の属性の値を指定します。 |
|
属性値のリストを識別します。 |
|
表列の値を指定します。 |
|
列値のリストを識別します。 |
|
名前のリストを識別します。 |
|
名前/値ペアのリストを識別します。 |
|
名前/値ペアのリストとそのリストを操作するメソッドを含むオブジェクトを識別します。このオブジェクト・タイプを使用して、ルールに対するイベント・コンテキストとアクション・コンテキストを表します。 |
|
名前/値ペアを識別します。 |
|
評価によって検出されたルールを指定します。 |
|
評価によって検出されたルールのリストを識別します。 |
|
ルールのリストを引数として渡すことを許可します。 |
|
ルール名の値のリストを識別します。 |
|
ルール評価コンテキストで使用する別名に対応する表を指定します。 |
|
ルール評価コンテキストで使用する表の別名のリストを識別します。 |
|
|
|
表値のリストを識別します。 |
|
1つのデータポイント値要素を表します。 |
|
|
|
ルール評価コンテキストで使用する変数のタイプを指定します。 |
|
ルール評価コンテキストで使用する変数とそのタイプのリストを識別します。 |
|
変数の値を指定します。 |
|
変数値のリストを識別します。 |
ルール・タイプは、オラクル社が提供する次のPL/SQLパッケージで使用します。
-
DBMS_RULE
-
DBMS_RULE_ADM
DBMS_RULE_ADM
パッケージは、ルール、ルール・セットおよび評価コンテキストを作成して管理するために使用でき、DBMS_RULE
パッケージは、ルールを評価するために使用できます。
Replication (Oracle GoldenGateおよびXStream)を使用する場合は、ルールによって、取得プロセスで取得する変更、伝播で伝播するメッセージ、適用プロセスで適用するメッセージ、およびメッセージ・クライアントでデキューするメッセージが判断されます。次のReplication (Oracle GoldenGateおよびXStream)のパッケージでは、ルールが使用されます。
-
DBMS_APPLY_ADM
-
DBMS_CAPTURE_ADM
-
DBMS_PROPAGATION_ADM
303.3.1 RE$ATTRIBUTE_VALUEタイプ
RE$ATTRIBUTE_VALUE
タイプは、変数の属性の値を指定します。
ノート:
変数名および属性名の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。
構文
TYPE SYS.RE$ATTRIBUTE_VALUE ( variable_name VARCHAR2(32), attribute_name VARCHAR2(4000), attribute_value ANYDATA);
属性
表303-2 RE$ATTRIBUTE_VALUEの属性
属性 | 説明 |
---|---|
|
ルールで使用する変数を指定します。 |
|
属性名を指定します。属性名には、 |
|
属性値を指定します。 |
303.3.2 RE$ATTRIBUTE_VALUE_LISTタイプ
RE$ATTRIBUTE_VALUE_LIST
タイプは、属性値のリストを識別します。
構文
TYPE SYS.RE$ATTRIBUTE_VALUE_LIST AS VARRAY(1024) OF SYS.RE$ATTRIBUTE_VALUE;
303.3.3 RE$COLUMN_VALUEタイプ
RE$COLUMN_VALUE
タイプは、表列の値を指定します。
ノート:
列名の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。
構文
TYPE SYS.RE$COLUMN_VALUE ( table_alias VARCHAR2(32), column_name VARCHAR2(4000), column_value ANYDATA);
属性
表303-3 RE$COLUMN_VALUEの属性
属性 | 説明 |
---|---|
|
ルールの表に使用する別名を指定します。 |
|
列名を指定します。 |
|
列値を指定します。 |
303.3.4 RE$COLUMN_VALUE_LISTタイプ
RE$COLUMN_VALUE_LIST
タイプは、列値のリストを識別します。
構文
TYPE SYS.RE$COLUMN_VALUE_LIST AS VARRAY(1024) OF SYS.RE$COLUMN_VALUE;
303.3.5 RE$NAME_ARRAYタイプ
RE$NAME_ARRAY
タイプは、名前のリストを識別します。
構文
TYPE SYS.RE$NAME_ARRAY AS VARRAY(1024) OF VARCHAR2(30);
303.3.6 RE$NV_ARRAYタイプ
RE$NV_ARRAY
タイプは、名前/値ペアのリストを識別します。
構文
TYPE SYS.RE$NV_ARRAY AS VARRAY(1024) OF SYS.RE$NV_NODE;
303.3.7 RE$NV_LISTタイプ
名前/値ペアのリストとそのリストを操作するメソッドを含むオブジェクトを識別します。
このオブジェクト・タイプを使用して、ルール・セット評価に対するイベント・コンテキストとルールに対するアクション・コンテキストを表します。
構文
TYPE SYS.RE$NV_LIST AS OBJECT( actx_list SYS.RE$NV_ARRAY);
属性
表303-4 RE$NV_LISTの属性
属性 | 説明 |
---|---|
|
名前/値ペアのリスト。 |
RE$NV_LISTサブプログラム
この項では、SYS.RE$NV_LIST
タイプの次のメンバー・プロシージャおよびメンバー・ファンクションについて説明します。
ADD_PAIRメンバー・プロシージャ
名前/値ペアを名前/値ペアのリストに追加します。
ノート:
名前の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。
構文
MEMBER PROCEDURE ADD_PAIR( name IN VARCHAR2, value IN ANYDATA);
パラメータ
表303-5 ADD_PAIRプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
リストに追加する名前/値ペアの名前。リスト内に名前が存在する場合は、エラーが発生します。 |
|
リストに追加する名前/値ペアの値。 |
GET_ALL_NAMESメンバー・ファンクション
名前/値ペアのリスト内にあるすべての名前のリストを戻します。
構文
MEMBER FUNCTION GET_ALL_NAMES() RETURN SYS.RE$NAME_ARRAY;
GET_VALUEメンバー・ファンクション
名前/値ペアのリスト内の指定の名前に対応する値を戻します。
ノート:
名前の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。
構文
MEMBER FUNCTION GET_VALUE( name IN VARCHAR2) RETURN ANYDATA;
パラメータ
表303-6 GET_VALUEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
値を戻す名前。 |
REMOVE_PAIRメンバー・プロシージャ
指定した名前の名前/値ペアを、名前/値ペアのリストから削除します。
ノート:
名前の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。
構文
MEMBER PROCEDURE REMOVE_PAIR( name IN VARCHAR2);
パラメータ
表303-7 REMOVE_PAIRプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除する組合せの名前。 |
303.3.8 RE$NV_NODEタイプ
RE$COLUMN_VALUE
タイプは、名前/値ペアを識別します。
ノート:
名前の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。
構文
TYPE SYS.RE$NV_NODE ( nvn_name VARCHAR2(30), nvn_value ANYDATA);
属性
表303-8 RE$NV_NODEの属性
属性 | 説明 |
---|---|
|
名前/値ペアの名前を指定します。 |
|
名前/値ペアの値を指定します。 |
303.3.9 RE$RULE_HITタイプ
RE$RULE_HIT
タイプは、評価によって検出されたルールを指定します。
構文
TYPE SYS.RE$RULE_HIT ( rule_name VARCHAR2(65), rule_action_context RE$NV_LIST);
属性
表303-9 RE$RULE_HITの属性
属性 | 説明 |
---|---|
|
|
|
|
303.3.10 RE$RULE_HIT_LISTタイプ
RE$RULE_HIT_LIST
タイプは、評価によって検出されたルールのリストを識別します。
構文
TYPE SYS.RE$RULE_HIT_LIST AS VARRAY(1024) OF SYS.RE$RULE_HIT;
303.3.11 RE$RULE_NAMEタイプ
RE$RULE_HIT
タイプは、ルールのリストを引数として渡すことができるようにします。
構文
CREATE OR REPLACE TYPE SYS.RE$RULE_NAME AS OBJECT( rule_name IN varchar2, evaluation_context IN varchar2);
属性
表303-10 RE$RULE_NAMEの属性
属性 | 説明 |
---|---|
|
|
|
|
303.3.12 RE$RULE_NAME_LISTタイプ
RE$RULE_HIT_LIST
タイプは、ルール名値のリストを識別します。
構文
CREATE OR REPLACE TYPE SYS.RE$RULE_NAME_LIST AS VARRAY(1024) OF SYS.RE$RULE_NAME;
303.3.13 RE$TABLE_ALIASタイプ
RE$TABLE_ALIAS
タイプは、ルール評価コンテキストで使用する別名に対応する表を指定します。
指定する表名は、スキーマ・オブジェクトのネーミング規則に準拠する必要があります。
ノート:
表名の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。
参照:
スキーマ・オブジェクトのネーミング規則は、『Oracle Database SQL言語リファレンス』を参照してください。
構文
TYPE SYS.RE$TABLE_ALIAS IS OBJECT( table_alias VARCHAR2(32), table_name VARCHAR2(194));
属性
表303-11 RE$TABLE_ALIASの属性
属性 | 説明 |
---|---|
|
ルールの表に使用する別名。 |
|
別名によって参照される表名。シノニムも指定できます。表名は、評価コンテキスト・スキーマで解決されます。 形式は次のいずれかです。 schema_name.table_name table_name たとえば、 hr.employees |
303.3.14 RE$TABLE_ALIAS_LISTタイプ
RE$TABLE_ALIAS_LIST
タイプは、ルール評価コンテキストで使用する表の別名のリストを識別します。
構文
TYPE SYS.RE$TABLE_ALIAS_LIST AS VARRAY(1024) OF SYS.RE$TABLE_ALIAS;
303.3.15 RE$TABLE_VALUEタイプ
RE$TABLE_VALUE
タイプは、ROWID
を使用して、表の行の値を指定します。
構文
TYPE SYS.RE$TABLE_VALUE( table_alias VARCHAR2(32), table_rowid VARCHAR2(18));
属性
表303-12 RE$TABLE_VALUEの属性
属性 | 説明 |
---|---|
|
ルールの表に使用する別名を指定します。 |
|
表の行のROWIDを指定します。 |
303.3.16 RE$TABLE_VALUE_LISTタイプ
RE$TABLE_VALUE_LIST
タイプは、表値のリストを識別します。
ノート:
表の別名はそれぞれ一意である必要があります。
構文
TYPE SYS.RE$TABLE_VALUE_LIST AS VARRAY(1024) OF SYS.RE$TABLE_VALUE;
303.3.17 RE$VALUEタイプ
RE$VALUE
タイプは、1つのデータポイント値要素を表します。
構文
TYPE SYS.RE$VALUE ( table_values IN SYS.RE$TABLE_VALUE_LIST:= NULL, column_values IN SYS.RE$COLUMN_VALUE_LIST:=NULL, variable_values IN SYS.RE$VARIABLE_VALUE_LIST:=NULL, attribute_values IN SYS.RE$ATTRIBUTE_VALUE_LIST:=NULL)
属性
表303-13 RE$VALUEの属性
属性 | 説明 |
---|---|
|
式の評価に使用される表の行のROWID |
|
式で参照される列の値。 |
|
式で参照される変数の値 |
|
式で参照される属性の値。 |
303.3.18 RE$VALUE_LISTタイプ
RE$TABLE_VALUE_LIST
は、RE$VALUE
タイプのリストを定義するためのVARRAYです。これは、データポイント要素のリストを表します。
構文
CREATE OR REPLACE TYPE SYS.RE$VALUE _LIST AS VARRAY(1024) OF SYS.RE$VALUE;
303.3.19 RE$VARIABLE_TYPEタイプ
RE$VARIABLE_TYPE
タイプは、ルール評価コンテキストで使用する変数のタイプを提供します。指定する変数名は、スキーマ・オブジェクトのネーミング規則に準拠する必要があります。
ノート:
変数名の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。
参照:
スキーマ・オブジェクトのネーミング規則は、『Oracle Database SQL言語リファレンス』を参照してください。
構文
TYPE SYS.RE$VARIABLE_TYPE ( variable_name VARCHAR2(32), variable_type VARCHAR2(4000), variable_value_function VARCHAR2(228), variable_method_function VARCHAR2(228));
属性
表303-14 RE$VARIABLE_TYPEの属性
属性 | 説明 |
---|---|
|
ルールで使用する変数名。 |
|
評価コンテキスト・スキーマで解決するタイプ。有効なOracleの組込みデータ・タイプ、ユーザー定義タイプまたはオラクル社が提供するタイプを指定できます。これらのタイプの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 |
|
暗黙的な変数に対して指定できる値ファンクション。シノニムも指定できます。ファンクション名は、評価コンテキスト・スキーマで解決されます。評価コンテキストを使用するルール・セット、または評価コンテキストを使用するルールを含むルール・セットの所有者にかわって実行されます。 詳細は、「使用上のノート」を参照してください。 |
|
メソッド起動の結果を戻す値関数を指定します。変数に対してメソッドを起動する単純なルールが多数ある場合は、この関数を指定すると評価を高速化できます。関数には、シノニムまたはリモート関数も指定できます。 ファンクション名は、評価コンテキスト・スキーマで解決されます。評価コンテキストを使用するルール・セット、または評価コンテキストを使用するルールを含むルール・セットの所有者にかわって実行されます。 詳細は、「使用上のノート」を参照してください。 |
使用上のノート
variable_value_function
パラメータおよびvariable_method_function
パラメータの両方で指定する関数は、次の形式になります。
schema_name.package_name.function_name@dblink
この形式のうち、schema_name
、package_name
および@dblink
の部分は省略できます。
たとえば、schema_name
がhr
、package_name
がvar_pac
、function_name
がfunc_value
、dblink
がdbs1.net
の場合は、次のように入力します。
hr.var_pac.func_value@dbs1.net
次の各項では、関数の署名について説明します。
variable_value_functionの署名
この関数には、次の署名が必要です。
FUNCTION variable_value_function_name(
evaluation_context_schema IN VARCHAR2,
evaluation_context_name IN VARCHAR2,
variable_name IN VARCHAR2,
event_context IN SYS.RE$NV_LIST )
RETURN SYS.RE$VARIABLE_VALUE;
variable_method_functionの署名
この関数には、次の署名が必要です。
FUNCTION variable_method_function_name(
evaluation_context_schema IN VARCHAR2,
evaluation_context_name IN VARCHAR2,
variable_value IN SYS.RE$VARIABLE_VALUE,
method_name IN VARCHAR2,
event_context IN SYS.RE$NV_LIST)
RETURN SYS.RE$ATTRIBUTE_VALUE;
303.3.20 RE$VARIABLE_TYPE_LISTタイプ
RE$VARIABLE_TYPE_LIST
タイプは、ルール評価コンテキストで使用する変数とそのタイプのリストを識別します。
構文
TYPE SYS.RE$VARIABLE_TYPE_LIST AS VARRAY(1024) OF SYS.RE$VARIABLE_TYPE;
303.3.21 RE$VARIABLE_VALUEタイプ
RE$VARIABLE_VALUE
タイプは、変数の値を指定します。
ノート:
変数名の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。
構文
TYPE SYS.RE$VARIABLE_VALUE ( variable_name VARCHAR2(32), variable_data ANYDATA);
属性
表303-15 RE$VARIABLE_VALUEの属性
属性 | 説明 |
---|---|
|
ルールで使用する変数名を指定します。 |
|
変数値のデータを指定します。 |