この章では、ルール、ルール・セットおよび評価コンテキストで使用するタイプについて説明します。
この章では、次の項目について説明します。
表236-1 ルール・タイプ
タイプ | 説明 |
---|---|
|
変数の属性の値を指定します。 |
|
属性値のリストを識別します。 |
|
表列の値を指定します。 |
|
列値のリストを識別します。 |
|
名前のリストを識別します。 |
|
名前/値ペアのリストを識別します。 |
|
名前/値ペアのリストとそのリストを操作するメソッドを含むオブジェクトを識別します。このオブジェクト・タイプを使用して、ルールに対するイベント・コンテキストとアクション・コンテキストを表します。 |
|
名前/値ペアを識別します。 |
|
評価の結果として検出されたルールを指定します。 |
|
評価の結果として検出されたルールのリストを識別します。 |
|
ルール評価コンテキストで使用する別名に対応する表を指定します。 |
|
ルール評価コンテキストで使用する表の別名のリストを識別します。 |
|
|
|
表値のリストを識別します。 |
|
ルール評価コンテキストで使用する変数のタイプを指定します。 |
|
ルール評価コンテキストで使用する変数とそのタイプのリストを識別します。 |
|
変数の値を指定します。 |
|
変数値のリストを識別します。 |
ルール・タイプは、オラクル社が提供する次のPL/SQLパッケージで使用します。
DBMS_RULE
DBMS_RULE_ADM
DBMS_RULE_ADM
パッケージは、ルール、ルール・セットおよび評価コンテキストを作成して管理するために使用でき、DBMS_RULE
パッケージは、ルールを評価するために使用できます。
Oracle Streamsを使用する場合は、ルールによって、取得プロセスで取得する変更、伝播で伝播するメッセージ、適用プロセスで適用するメッセージ、およびメッセージ・クライアントでデキューするメッセージが判断されます。次のOracle Streamsパッケージでルールが使用されます。
DBMS_APPLY_ADM
DBMS_CAPTURE_ADM
DBMS_PROPAGATION_ADM
DBMS_STREAMS
DBMS_STREAMS_ADM
DBMS_STREAMS_AUTH
関連項目: 『Oracle Streams概要および管理』 |
変数の属性の値を指定します。
注意: 変数名および属性名の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。 |
構文
TYPE SYS.RE$ATTRIBUTE_VALUE ( variable_name VARCHAR2(32), attribute_name VARCHAR2(4000), attribute_value ANYDATA);
属性
表236-2 RE$ATTRIBUTE_VALUEの属性
属性 | 説明 |
---|---|
|
ルールで使用する変数を指定します。 |
|
属性名を指定します。属性名には、 |
|
属性値を指定します。 |
属性値のリストを識別します。
構文
TYPE SYS.RE$ATTRIBUTE_VALUE_LIST AS VARRAY(1024) OF SYS.RE$ATTRIBUTE_VALUE;
表列の値を指定します。
注意: 列名の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。 |
構文
TYPE SYS.RE$COLUMN_VALUE ( table_alias VARCHAR2(32), column_name VARCHAR2(4000), column_value ANYDATA);
属性
表236-3 RE$COLUMN_VALUEの属性
属性 | 説明 |
---|---|
|
ルールの表に使用する別名を指定します。 |
|
列名を指定します。 |
|
列値を指定します。 |
列値のリストを識別します。
構文
TYPE SYS.RE$COLUMN_VALUE_LIST AS VARRAY(1024) OF SYS.RE$COLUMN_VALUE;
名前のリストを識別します。
構文
TYPE SYS.RE$NAME_ARRAY AS VARRAY(1024) OF VARCHAR2(30);
名前/値ペアのリストを識別します。
TYPE SYS.RE$NV_ARRAY AS VARRAY(1024) OF SYS.RE$NV_NODE;
名前/値ペアのリストとそのリストを操作するメソッドを含むオブジェクトを識別します。このオブジェクト・タイプを使用して、ルール・セット評価に対するイベント・コンテキストとルールに対するアクション・コンテキストを表します。
構文
TYPE SYS.RE$NV_LIST AS OBJECT( actx_list SYS.RE$NV_ARRAY);
属性
RE$NV_LISTサブプログラム
この項では、SYS.RE$NV_LIST
タイプの次のメンバー・プロシージャおよびメンバー・ファンクションについて説明します。
名前/値ペアを名前/値ペアのリストに追加します。
注意: 名前の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。 |
構文
MEMBER PROCEDURE ADD_PAIR( name IN VARCHAR2, value IN ANYDATA);
パラメータ
表236-5 ADD_PAIRプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
リストに追加する名前/値ペアの名前。リスト内にすでに名前が存在する場合は、エラーが発生します。 |
|
リストに追加する名前/値ペアの値。 |
名前/値ペアのリスト内にあるすべての名前のリストを戻します。
構文
MEMBER FUNCTION GET_ALL_NAMES() RETURN SYS.RE$NAME_ARRAY;
名前/値ペアのリスト内の指定の名前に対応する値を戻します。
注意: 名前の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。 |
構文
MEMBER FUNCTION GET_VALUE( name IN VARCHAR2) RETURN ANYDATA;
パラメータ
指定した名前の名前/値ペアを、名前/値ペアのリストから削除します。
注意: 名前の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。 |
構文
MEMBER PROCEDURE REMOVE_PAIR( name IN VARCHAR2);
パラメータ
名前/値ペアを識別します。
注意: 名前の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。 |
構文
TYPE SYS.RE$NV_NODE ( nvn_name VARCHAR2(30), nvn_value ANYDATA);
属性
評価の結果として検出されたルールを指定します。
構文
TYPE SYS.RE$RULE_HIT ( rule_name VARCHAR2(65), rule_action_context RE$NV_LIST);
属性
表236-9 RE$RULE_HITの属性
属性 | 説明 |
---|---|
|
|
|
|
評価の結果として検出されたルールのリストを識別します。
構文
TYPE SYS.RE$RULE_HIT_LIST AS VARRAY(1024) OF SYS.RE$RULE_HIT;
ルール評価コンテキストで使用する別名に対応する表を指定します。指定する表名は、スキーマ・オブジェクトのネーミング規則に準拠する必要があります。
注意: 表名の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。 |
関連項目: スキーマ・オブジェクトのネーミング規則については『Oracle Database SQL言語リファレンス』を参照してください。 |
構文
TYPE SYS.RE$TABLE_ALIAS IS OBJECT( table_alias VARCHAR2(32), table_name VARCHAR2(194));
属性
表236-10 RE$TABLE_ALIASの属性
属性 | 説明 |
---|---|
|
ルールの表に使用する別名。 |
|
別名によって参照される表名。シノニムも指定できます。表名は、評価コンテキスト・スキーマで解決されます。 形式は次のいずれかです。 schema_name.table_name table_name たとえば、 hr.employees |
ルール評価コンテキストで使用する表の別名のリストを識別します。
構文
TYPE SYS.RE$TABLE_ALIAS_LIST AS VARRAY(1024) OF SYS.RE$TABLE_ALIAS;
ROWID
を使用して、表の行の値を指定します。
構文
TYPE SYS.RE$TABLE_VALUE( table_alias VARCHAR2(32), table_rowid VARCHAR2(18));
属性
表値のリストを識別します。
注意: 表の別名はそれぞれ一意である必要があります。 |
構文
TYPE SYS.RE$TABLE_VALUE_LIST AS VARRAY(1024) OF SYS.RE$TABLE_VALUE;
ルール評価コンテキストで使用する変数のタイプを指定します。指定する変数名は、スキーマ・オブジェクトのネーミング規則に準拠する必要があります。
注意: 変数名の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。 |
関連項目: スキーマ・オブジェクトのネーミング規則については『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));
属性
表236-12 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;
ルール評価コンテキストで使用する変数とそのタイプのリストを識別します。
構文
TYPE SYS.RE$VARIABLE_TYPE_LIST AS VARRAY(1024) OF SYS.RE$VARIABLE_TYPE;
変数の値を指定します。
注意: 変数名の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。 |
構文
TYPE SYS.RE$VARIABLE_VALUE ( variable_name VARCHAR2(32), variable_data ANYDATA);
属性
変数値のリストを識別します。
構文
TYPE SYS.RE$VARIABLE_VALUE_LIST AS VARRAY(1024) OF SYS.RE$VARIABLE_VALUE;