プライマリ・コンテンツに移動
Oracle® Database PL/SQLパッケージおよびタイプ・リファレンス
12c リリース1 (12.1)
B71281-05
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

283 ルール・タイプ

この章では、ルール、ルール・セットおよび評価コンテキストで使用するタイプについて説明します。

この章では、次の項目について説明します。

ルール・タイプの使用方法

この章では、ルール、ルール・セットおよび評価コンテキストで使用されるタイプの使用方法に関連する項目について説明します。

概要

この章で説明するこれらのタイプはルールで使用され、クライアントがルール・エンジンを使用してルールを評価できるようにします。


関連項目:


セキュリティ・モデル

PUBLICには、この章で説明するタイプのEXECUTE権限が付与されます。


関連項目:

ユーザー・グループPUBLICの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

ルール・タイプの要約

表283-1 ルール・タイプ

タイプ 説明

RE$ATTRIBUTE_VALUEタイプ


変数の属性の値を指定します。

RE$ATTRIBUTE_VALUE_LISTタイプ


属性値のリストを識別します。

RE$COLUMN_VALUEタイプ


表列の値を指定します。

RE$COLUMN_VALUE_LISTタイプ


列値のリストを識別します。

RE$NAME_ARRAYタイプ


名前のリストを識別します。

RE$NAME_ARRAYタイプ


名前/値ペアのリストを識別します。

RE$NV_LISTタイプ


名前/値ペアのリストとそのリストを操作するメソッドを含むオブジェクトを識別します。このオブジェクト・タイプを使用して、ルールに対するイベント・コンテキストとアクション・コンテキストを表します。

RE$NV_NODEタイプ


名前/値ペアを識別します。

RE$RULE_HITタイプ


評価によって検出されたルールを指定します。

RE$RULE_HIT_LISTタイプ


評価によって検出されたルールのリストを識別します。

RE$TABLE_ALIASタイプ


ルール評価コンテキストで使用する別名に対応する表を指定します。

RE$TABLE_ALIAS_LISTタイプ


ルール評価コンテキストで使用する表の別名のリストを識別します。

RE$TABLE_VALUEタイプ


ROWIDを使用して、表の行の値を指定します。

RE$TABLE_VALUE_LISTタイプ


表値のリストを識別します。

RE$VARIABLE_TYPEタイプ


ルール評価コンテキストで使用する変数のタイプを指定します。

RE$VARIABLE_TYPE_LISTタイプ


ルール評価コンテキストで使用する変数とそのタイプのリストを識別します。

RE$VARIABLE_VALUEタイプ


変数の値を指定します。

RE$VARIABLE_VALUE_LISTタイプ


変数値のリストを識別します。


ルール・タイプは、オラクル社が提供する次の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概要および管理』

RE$ATTRIBUTE_VALUEタイプ

変数の属性の値を指定します。


注意:

変数名および属性名の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。

構文

TYPE SYS.RE$ATTRIBUTE_VALUE (
   variable_name    VARCHAR2(32), 
   attribute_name   VARCHAR2(4000),
   attribute_value  ANYDATA); 

属性

表283-2 RE$ATTRIBUTE_VALUEの属性

属性 説明

variable_name

ルールで使用する変数を指定します。

attribute_name

属性名を指定します。属性名には、a1.b2.c3のように複数のコンポーネント名を指定できます。

attribute_value

属性値を指定します。


RE$ATTRIBUTE_VALUE_LISTタイプ

属性値のリストを識別します。

構文

TYPE SYS.RE$ATTRIBUTE_VALUE_LIST AS VARRAY(1024) OF SYS.RE$ATTRIBUTE_VALUE;

RE$COLUMN_VALUEタイプ

表列の値を指定します。


注意:

列名の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。

構文

TYPE SYS.RE$COLUMN_VALUE (
   table_alias   VARCHAR2(32), 
   column_name   VARCHAR2(4000),
   column_value  ANYDATA); 

属性

表283-3 RE$COLUMN_VALUEの属性

属性 説明

table_alias

ルールの表に使用する別名を指定します。

column_name

列名を指定します。

column_value

列値を指定します。


RE$COLUMN_VALUE_LISTタイプ

列値のリストを識別します。

構文

TYPE SYS.RE$COLUMN_VALUE_LIST AS VARRAY(1024) OF SYS.RE$COLUMN_VALUE;

RE$NAME_ARRAYタイプ

名前のリストを識別します。

構文

TYPE SYS.RE$NAME_ARRAY AS VARRAY(1024) OF VARCHAR2(30);

RE$NV_ARRAYタイプ

名前/値ペアのリストを識別します。

構文

TYPE SYS.RE$NV_ARRAY AS VARRAY(1024) OF SYS.RE$NV_NODE;

RE$NV_LISTタイプ

名前/値ペアのリストとそのリストを操作するメソッドを含むオブジェクトを識別します。このオブジェクト・タイプを使用して、ルール・セット評価に対するイベント・コンテキストとルールに対するアクション・コンテキストを表します。

構文

TYPE SYS.RE$NV_LIST AS OBJECT( 
   actx_list  SYS.RE$NV_ARRAY);

属性

表283-4 RE$NV_LISTの属性

属性 説明

actx_list

名前/値ペアのリスト。


RE$NV_LISTサブプログラム

この項では、SYS.RE$NV_LISTタイプの次のメンバー・プロシージャおよびメンバー・ファンクションについて説明します。

ADD_PAIRメンバー・プロシージャ

名前/値ペアを名前/値ペアのリストに追加します。


注意:

名前の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。

構文

MEMBER PROCEDURE ADD_PAIR(
   name   IN  VARCHAR2, 
   value  IN  ANYDATA);

パラメータ

表283-5 ADD_PAIRプロシージャのパラメータ

パラメータ 説明

name

リストに追加する名前/値ペアの名前。リスト内に名前が存在する場合は、エラーが発生します。

value

リストに追加する名前/値ペアの値。


GET_ALL_NAMESメンバー・ファンクション

名前/値ペアのリスト内にあるすべての名前のリストを戻します。

構文

MEMBER FUNCTION GET_ALL_NAMES()
RETURN SYS.RE$NAME_ARRAY;

GET_VALUEメンバー・ファンクション

名前/値ペアのリスト内の指定の名前に対応する値を戻します。


注意:

名前の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。

構文

MEMBER FUNCTION GET_VALUE(
   name  IN  VARCHAR2) 
RETURN ANYDATA;

パラメータ

表283-6 GET_VALUEファンクションのパラメータ

パラメータ 説明

name

値を戻す名前。


REMOVE_PAIRメンバー・プロシージャ

指定した名前の名前/値ペアを、名前/値ペアのリストから削除します。


注意:

名前の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。

構文

MEMBER PROCEDURE REMOVE_PAIR(
   name  IN  VARCHAR2);

パラメータ

表283-7 REMOVE_PAIRプロシージャのパラメータ

パラメータ 説明

name

削除する組合せの名前。


RE$NV_NODEタイプ

名前/値ペアを識別します。


注意:

名前の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。

構文

TYPE SYS.RE$NV_NODE (
   nvn_name   VARCHAR2(30), 
   nvn_value  ANYDATA); 

属性

表283-8 RE$NV_NODEの属性

属性 説明

nvn_name

名前/値ペアの名前を指定します。

nvn_value

名前/値ペアの値を指定します。


RE$RULE_HITタイプ

評価によって検出されたルールを指定します。

構文

TYPE SYS.RE$RULE_HIT (
   rule_name            VARCHAR2(65),
   rule_action_context  RE$NV_LIST); 

属性

表283-9 RE$RULE_HITの属性

属性 説明

rule_name

schema_name.rule_name形式のルール名。たとえば、hrスキーマ内のemployee_ruleというルールは、"hr"."employee_rule"の形式で戻されます。

rule_action_context

DBMS_RULE_ADMパッケージのCREATE_RULEプロシージャまたはALTER_RULEプロシージャで指定したルール・アクション・コンテキスト。


RE$RULE_HIT_LISTタイプ

評価によって検出されたルールのリストを識別します。

構文

TYPE SYS.RE$RULE_HIT_LIST AS VARRAY(1024) OF SYS.RE$RULE_HIT;

RE$TABLE_ALIASタイプ

ルール評価コンテキストで使用する別名に対応する表を指定します。指定する表名は、スキーマ・オブジェクトのネーミング規則に準拠する必要があります。


注意:

表名の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。


関連項目:

スキーマ・オブジェクトのネーミング規則については『Oracle Database SQL言語リファレンス』を参照してください。

構文

TYPE SYS.RE$TABLE_ALIAS IS OBJECT(
   table_alias  VARCHAR2(32),
   table_name   VARCHAR2(194));

属性

表283-10 RE$TABLE_ALIASの属性

属性 説明

table_alias

ルールの表に使用する別名。

table_name

別名によって参照される表名。シノニムも指定できます。表名は、評価コンテキスト・スキーマで解決されます。

形式は次のいずれかです。

schema_name.table_name

table_name

たとえば、schema_namehrで、table_nameemployeesの場合は、次のように入力します。

hr.employees

RE$TABLE_ALIAS_LISTタイプ

ルール評価コンテキストで使用する表の別名のリストを識別します。

構文

TYPE SYS.RE$TABLE_ALIAS_LIST AS VARRAY(1024) OF SYS.RE$TABLE_ALIAS;

RE$TABLE_VALUEタイプ

ROWIDを使用して、表の行の値を指定します。

構文

TYPE SYS.RE$TABLE_VALUE(
   table_alias  VARCHAR2(32), 
   table_rowid  VARCHAR2(18));

属性

表283-11 RE$TABLE_VALUEの属性

属性 説明

table_alias

ルールの表に使用する別名を指定します。

table_rowid

表の行のROWIDを指定します。


RE$TABLE_VALUE_LISTタイプ

表値のリストを識別します。


注意:

表の別名はそれぞれ一意である必要があります。

構文

TYPE SYS.RE$TABLE_VALUE_LIST AS VARRAY(1024) OF SYS.RE$TABLE_VALUE;

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));

属性

表283-12 RE$VARIABLE_TYPEの属性

属性 説明

variable_name

ルールで使用する変数名。

variable_type

評価コンテキスト・スキーマで解決するタイプ。有効なOracleの組込みデータ・タイプ、ユーザー定義タイプまたはオラクル社が提供するタイプを指定できます。これらのタイプの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

variable_value_function

暗黙的な変数に対して指定できる値ファンクション。シノニムも指定できます。ファンクション名は、評価コンテキスト・スキーマで解決されます。評価コンテキストを使用するルール・セット、または評価コンテキストを使用するルールを含むルール・セットの所有者にかわって実行されます。

詳細は、「使用上の注意」を参照してください。

variable_method_function

メソッド起動の結果を戻す値関数を指定します。変数に対してメソッドを起動する単純なルールが多数ある場合は、この関数を指定すると評価を高速化できます。関数には、シノニムまたはリモート関数も指定できます。

ファンクション名は、評価コンテキスト・スキーマで解決されます。評価コンテキストを使用するルール・セット、または評価コンテキストを使用するルールを含むルール・セットの所有者にかわって実行されます。

詳細は、「使用上の注意」を参照してください。


使用上の注意

variable_value_functionパラメータおよびvariable_method_functionパラメータの両方で指定する関数は、次の形式になります。

schema_name.package_name.function_name@dblink

この形式のうち、schema_namepackage_nameおよび@dblinkの部分は省略できます。

たとえば、schema_namehrpackage_namevar_pacfunction_namefunc_valuedblinkdbs1.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;

RE$VARIABLE_TYPE_LISTタイプ

ルール評価コンテキストで使用する変数とそのタイプのリストを識別します。

構文

TYPE SYS.RE$VARIABLE_TYPE_LIST AS VARRAY(1024) OF SYS.RE$VARIABLE_TYPE;

RE$VARIABLE_VALUEタイプ

変数の値を指定します。


注意:

変数名の中に特殊文字が含まれている場合は、二重引用符(")で囲みます。

構文

TYPE SYS.RE$VARIABLE_VALUE (
   variable_name  VARCHAR2(32), 
   variable_data  ANYDATA); 

属性

表283-13 RE$VARIABLE_VALUEの属性

属性 説明

variable_name

ルールで使用する変数名を指定します。

variable_data

変数値のデータを指定します。


RE$VARIABLE_VALUE_LISTタイプ

変数値のリストを識別します。

構文

TYPE SYS.RE$VARIABLE_VALUE_LIST AS VARRAY(1024) OF SYS.RE$VARIABLE_VALUE;