ヘッダーをスキップ
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス
11g リリース1(11.1)
E05686-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

109 DBMS_RLMGR

DBMS_RLMGRパッケージには、ルール・マネージャを使用してルールおよびルール・セッションを作成および管理する様々なプロシージャが含まれています。


関連項目:

詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』を参照してください。

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


DBMS_RLMGRサブプログラムの要約

表109-1に、DBMS_RLMGRパッケージのサブプログラムを示します。

特に明記されていないかぎり、DBMS_RLMGRパッケージに定義されているプロシージャに渡されるすべての値と名前で、大/小文字は区別されません。大/小文字の区別を保つには、値を二重引用符で囲んでください。

表109-1 DBMS_RLMGRパッケージのサブプログラム

サブプログラム 説明

ADD_ELEMENTARY_ATTRIBUTEプロシージャ


指定の属性をイベント構造(式フィルタの属性セット)に追加します。

ADD_EVENTプロシージャ


アクティブなセッションのルール・クラスにイベントを追加します。

ADD_FUNCTIONSプロシージャ


イベント構造(式フィルタの属性セット)を含むファンクションの承認リストに、ファンクション、タイプまたはパッケージを追加します。

ADD_RULEプロシージャ


ルール・クラスにルールを追加します。

CONDITION_REFファンクション


コンポジット・イベントのルール条件からプリミティブ・ルール条件参照を取り出します。

CONSUME_EVENTファンクション


イベント識別子を使用してイベントをコンシュームし、対応するルールをアクションの実行用に準備します。

CONSUME_PRIM_EVENTSファンクション


1つ以上のプリミティブ・イベントを悉無律セマンティクスに基づいてコンシュームします。

CREATE_CONDITIONS_TABLEプロシージャ


同一または異なるルール・クラスからの複数のルールで共有可能なプリミティブ・ルール条件のリポジトリを作成します。

CREATE_EVENT_STRUCTプロシージャ


イベント構造を作成します。

CREATE_EXPFIL_INDEXESプロシージャ


デフォルトの索引が削除されている場合に、ルール・クラスの式フィルタ索引を作成します。

CREATE_INTERFACEプロシージャ


ルール・クラスを直接操作するためのルール・クラス・インタフェースのパッケージを作成します。

CREATE_RULE_CLASSプロシージャ


ルール・クラスを作成します。

DELETE_RULEプロシージャ


ルール・クラスのルールを削除します。

DROP_CONDITIONS_TABLEプロシージャ


条件表を削除します。

DROP_EVENT_STRUCTプロシージャ


イベント構造を削除します。

DROP_EXPFIL_INDEXESプロシージャ


ルール条件の式フィルタ索引を削除します。

DROP_INTERFACEプロシージャ


ルール・クラス・インタフェースのパッケージを削除します。

DROP_RULE_CLASSプロシージャ


ルール・クラスを削除します。

EXTEND_EVENT_STRUCTプロシージャ


プリミティブ・イベント構造に属性を追加します。

GET_AGGREGATE_VALUEファンクション


コレクション・イベントに対して計算された集計値を取り出します。

GRANT_PRIVILEGEプロシージャ


ルール・クラスに対する権限を他のユーザーに付与します。

PROCESS_RULESプロシージャ


指定したイベントのルールを処理します。

PURGE_EVENTSプロシージャ


ルール・クラスに関連付けられているすべてのイベントを削除し、いくつかのイベントに一致するルールに関する状態情報をパージすることによって、ルール・クラスをリセットします。

RESET_SESSIONプロシージャ


データベース・セッション内で、新しいルール・セッションを開始します。

REVOKE_PRIVILEGEプロシージャ


ルール・クラスに対するユーザー権限を取り消します。

SYNC_TEXT_INDEXESプロシージャ


ルール条件のCONTAINS演算子に関連する述語を処理するために定義される索引を同期化します。



ADD_ELEMENTARY_ATTRIBUTEプロシージャ

このプロシージャは、指定の属性をイベント構造(式フィルタの属性セット)に追加します。このプロシージャはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。

構文

指定の要素属性を属性セットに追加する場合:

DBMS_RLMGR.ADD_ELEMENTARY_ATTRIBUTE (
              event_struct   IN   VARCHAR2,
              attr_name      IN   VARCHAR2,
              attr_type      IN   VARCHAR2,
              attr_defvl     IN   VARCHAR2 default NULL);

表の別名である要素属性を識別して、イベント構造に追加します。

DBMS_RLMGR.ADD_ELEMENTARY_ATTRIBUTE (
              event_struct   IN   VARCHAR2,
              attr_name      IN   VARCHAR2,
              tab_alias      IN   rlm$table_alias);

属性セットへのテキスト属性の追加を許可します。

DBMS_RLMGR.ADD_ELEMENTARY_ATTRIBUTE (
              event_struct   IN   VARCHAR2,
              attr_name      IN   VARCHAR2,
              attr_type      IN   VARCHAR2,
              text_pref      IN   EXF$TEXT);

パラメータ

表109-2 ADD_ELEMENTARY_ATTRIBUTEプロシージャのパラメータ

パラメータ 説明

event_struct

この属性を追加するイベント構造(属性セット)の名前。

attr_name

追加する要素属性の名前。同じセット内の2つの属性に同じ名前を指定することはできません。

attr_type

属性のデータ型。この引数には、標準のSQLデータ型、または現行のユーザーがアクセス可能なオブジェクト・タイプの名前を指定できます。

tab_alias

属性の別名を設定するデータベース表を識別する型。

attr_defv1

要素属性のデフォルト値。

text_pref

LEXER、WORDLIST指定などのテキスト・プリファレンス。


使用上の注意

次のコマンドでは、2つの要素属性が属性セットに追加されます。

BEGIN
  DBMS_RLMGR.ADD_ELEMENTARY_ATTRIBUTE (
                       EVENT_STRUCT => 'HRAttrSet',
                       ATTR_NAME => 'HRREP',
                       attr_type => 'VARCHAR2');
  DBMS_RLMGR.ADD_ELEMENTARY_ATTRIBUTE (
                       EVENT_STRUCT => 'HRAttrSet',
                       ATTR_NAME => 'DEPT',
                       TAB_ALIAS => RLM$TABLE_ALIAS('DEPT'));
END;

次のコマンドでは、ホテルの予約(追加情報を含む)に関する属性セットが作成されます。この属性セットは、CLOBデータ型のAddlInfo属性として示されます。このイベント構造に指定されているルール条件には、この属性に関するテキストの述語を含めることができます。

BEGIN
  DBMS_RLMGR.CREATE_EVENT_STRUCT (EVENT_STRUCT => 'AddFlight');
  DBMS_RLMGR.ADD_ELEMENTARY_ATTRIBUTE (
                       EVENT_STRUCT => 'AddHotel',
                       ATTR_NAME => 'CustId',
                       ATTR_TYPE => 'NUMBER');
  DBMS_RLMGR.ADD_ELEMENTARY_ATTRIBUTE (
                       EVENT_STRUCT => 'AddHotel',
                       ATTR_NAME => 'Type',
                       ATTR_TYPE => 'VARCHAR2(20)');
  . . .
  DBMS_RLMGR.ADD_ELEMENTARY_ATTRIBUTE (
                       EVENT_STRUCT => 'AddHotel',
                       ATTR_NAME => 'AddlInfo',
                       ATTR_TYPE => 'CLOB',
                       TEXT_PREF => EXF$TEXT('LEXER hotelreserv_lexer'));
END;

ADD_EVENTプロシージャ

このプロシージャは、アクティブなルール・セッションのルール・クラスにプリミティブ・イベントを追加します。このプロシージャはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。

構文

プリミティブ・イベント・インスタンスの文字列表現をルール・クラスに追加します。

DBMS_RLMGR.ADD_EVENT (
   rule_class      IN VARCHAR2,
   event_inst      IN VARCHAR2,
   event_type      IN VARCHAR2 default null);

プリミティブ・イベント・インスタンスのAnyData表現をルール・クラスに追加します。

DBMS_RLMGR.ADD_EVENT (
   rule_class      IN VARCHAR2,
   event_inst      IN sys.AnyData);

パラメータ

表109-3 ADD_EVENTプロシージャのパラメータ

パラメータ 説明

rule_class

ルール・クラスの名前。スキーマ拡張したルール・クラス名を使用すると、現行のスキーマに属していないルール・クラスを参照できます。

event_inst

ルール・クラスに追加するイベント・インスタンスの文字列表現またはAnyData表現。

event_type

event_inst引数に割り当てられたイベント・インスタンスのタイプ(コンポジット・イベント用に構成されたルール・クラスに対してイベント・インスタンスの文字列表現を使用する場合)。


使用上の注意

次のコマンドでは、2種類のプリミティブ・イベント(AddFlightおよびAddRentalCar)用に構成されているCompTravelPromoルール・クラスに2つのイベントが追加されます。

BEGIN
 DBMS_RLMGR.ADD_EVENT(rule_class => 'CompTravelPromo',
                     event_inst =>
                        AddFlight.getVarchar(987, 'Abcair', 'Boston',
                                         'Orlando', '01-APR-2003', '08-APR-2003'),
                     event_type => 'AddFlight');

DBMS_RLMGR.ADD_EVENT(rule_class => 'Scott.CompTravelPromo',
                     event_inst =>
                        AnyData.convertObject(
                                        AddRentalCar(987, 'Luxury', '03-APR-2003',
                                                     '08-APR-2003', NULL)));
END;/

ADD_FUNCTIONSプロシージャ

このプロシージャは、ファンクションの集合を表すユーザー定義ファンクション、パッケージ、またはタイプをイベント構造(式ファイルの属性セット)に追加します。

構文

DBMS_RLMGR.ADD_FUNCTIONS (
   event_struct   IN   VARCHAR2,
   funcs_name     IN   VARCHAR2);

パラメータ

表109-4 ADD_FUNCTIONSプロシージャのパラメータ

パラメータ 説明

event_struct

ファンクションを追加するイベント構造の名前。

funcs_name

(ファンクションの集合を表す)ファンクション、パッケージまたはタイプの名前またはそのシノニム。


使用上の注意

次のコマンドでは、2つのファンクションが属性セットに追加されます。

BEGIN
  DBMS_RLMGR.ADD_FUNCTIONS (attr_set   => 'Car4Sale',
                             funcs_name => 'HorsePower');
  DBMS_RLMGR.ADD_FUNCTIONS (attr_set   => 'Car4Sale',
                             funcs_name => 'Scott.CrashTestRating');
END;
/

ADD_RULEプロシージャ

このプロシージャは、ルール・クラスに新しいルールを追加します。

構文

DBMS_RLMGR.ADD_RULE (
   rule_class      IN  VARCHAR2,
   rule_id         IN  VARCHAR2,
   rule_cond       IN  VARCHAR2,
   actprf_nml      IN  VARCHAR2 DEFAULT NULL,
   actprf_vall     IN  VARCHAR2 DEFAULT NULL);

パラメータ

表109-5 ADD_RULEプロシージャのパラメータ

パラメータ 説明

rule_class

ルール・クラスの名前。スキーマ拡張したルール・クラス名を使用すると、現行のスキーマに属していないルール・クラスを参照できます。

rule_id

ルール・クラス内のルールの一意の識別子。

rule_cond

ルールの条件。条件では、ルール・クラスのイベント構造で定義された変数が使用されます。

actprf_nml

actprf_vall引数によって値が割り当てられるアクション・プリファレンス名のリスト。

actprf_vall

actprf_nml引数に割り当てられる名前リストに対するアクション・プリファレンス値のリスト。


使用上の注意

次のコマンドでは、ルール・クラスにルールが追加されます。

BEGIN
DBMS_RLMGR.ADD_RULE (
           rule_class => 'CompTravelPromo',
           rule_id => 'AB_AV_FL',
           rule_cond =>
             '<condition>
                 <and join="Flt.CustId = Car.CustId">
                    <object name="Flt">
                      Airline=''Abcair'' and ToCity=''Orlando''
                    </object>
                    <object name="Car">
                      CarType = ''Luxury''
                    </object>
                  </and>
               </condition>' ,
             actprf_nml => 'PromoType, OfferedBy',
             actprf_vall => '''RentalCar'', ''Acar''');
END;

適切な権限がある場合は、次のSQL INSERT文を使用してルールをルール・クラスに追加できます。

INSERT INTO CompTravelPromo (rlm$ruleid, rlm$rulecond, PromoType, OfferedBy)
  VALUES ('AB_AV_FL',
          '<condition>
             <and join="Flt.CustId = Car.CustId">
               <object name="Flt">
                   Airline=''Abcair'' and ToCity=''Orlando''
               </object>
               <object name="Car">
                   CarType = ''Luxury''
               </object>
             </and>
           </condition>',
          'RentalCar','Acar');

CONDITION_REFファンクション

このファンクションは、コンポジット・イベントのルール条件からプリミティブ・ルール条件参照を取り出します。

構文

DBMS_RLMGR.CONDITION_REF (
     rule_cond IN   VARCHAR2,
     eventnm   IN   VARCHAR2)
  RETURN VARCHAR2;

パラメータ

表109-6 CONDITION_REFファンクションのパラメータ

パラメータ 説明

rule_cond

XML形式のルール条件。

eventnm

参照を取得するイベント名。


使用上の注意

次のコマンドでは、ルール・クラス表とプリミティブ条件表が結合され、共有可能なプリミティブ条件への参照を持つすべてのルール条件が識別されます(問合せでは、rlm$rulecond列で定義されているファンクション索引を使用します)。この問合せでは、FlightConditions表に格納されている共有条件を参照するすべてのルール条件が識別されます。

select ctp.rlm$ruleid from CompTravelPromo ctp, FlightConditions fc
where dbms_rlmgr.condition_ref(ctp.rlm$rulecond, 'FLT') = fc.rlm$condid;

CONSUME_EVENTファンクション

このファンクションは、イベントをコンシュームし、対応するルールをアクションの実行用に準備します。これは、アクション(ルールの実行)がコールバックによってではなく、ユーザーのアプリケーションによって行われる場合にのみ必要です。

構文

DBMS_RLMGR.CONSUME_EVENT (
   rule_class       IN VARCHAR2,
   event_ident      IN VARCHAR2)
 RETURN NUMBER;

パラメータ

表109-7 CONSUME_EVENTファンクションのパラメータ

パラメータ 説明

rule_class

ルール・クラスの名前。スキーマ拡張したルール・クラス名を使用すると、現行のスキーマに属していないルール・クラスを参照できます。

event_ident

対応するルール・クラスの結果ビュー(RULEベースのコンシューム・ポリシー用に構成されるルール・クラスの場合はアクション・コールバック・プロシージャの引数)から取得されるイベント識別子。


戻り値

このファンクションは、次の値を戻します。

使用上の注意

次のコマンドでは、ルールの実行で使用されるイベントが識別され、その識別子を使用してイベントがコンシュームされます。

var eventid VARCHAR(40);
var evtcnsmd NUMBER;

BEGIN
  SELECT rlm$eventid INTO :eventid FROM MatchingPromos WHERE rownum < 2;

  -- carry the required action for a rule matched by the above event --
  :evtcnsmd := DBMS_RLMGR.CONSUME_EVENT(rule_class  => 'TravelPromotion',
                                        event_ident => :eventid);
END;

CONSUME_PRIM_EVENTSファンクション

このファンクションは、RULEベースのコンシューム・ポリシーで構成されたルール・クラスの場合、悉無律セマンティクスに基づいて一連のプリミティブ・イベントをコンシュームします。

構文

DBMS_RLMGR.CONSUME_PRIM_EVENTS (
   rule_class       IN VARCHAR2,
   event_idents     IN RLM$EVENTIDS)
 RETURN NUMBER;

パラメータ

表109-8 CONSUME_PRIM_EVENTSファンクションのパラメータ

パラメータ 説明

rule_class

ルール・クラスの名前。スキーマ拡張したルール・クラス名を使用すると、現行のスキーマに属していないルール・クラスを参照できます。

event_ident

対応するルール・クラスの結果ビューまたはアクション・コールバック・プロシージャの引数から取得されたイベント識別子。


戻り値

このファンクションは、次の値を戻します。

使用上の注意

次のコマンドは、RULEコンシューム・ポリシー用に構成されたルール・クラスのアクション・コールバック・プロシージャの本体を示しています。 ここでは、CONSUME_PRIM_EVENTSファンクションを使用して、一致するルールに対するアクションを実行する前にイベントをコンシュームする方法を示します。

create or replace procedure PromoAction (
      Flt        AddFlight,
      Flt_EvtId  ROWID,    --- rowid for the flight primitive event
      Car        AddRentalCar,
      Car_EvtId  ROWID,
      rlm$rule   TravelPromotions%ROWTYPE) is
  evtcnsmd   NUMBER;
BEGIN
  evtcnsmd := DBMS_RLMGR.CONSUME_PRIM_EVENTS(
                    rule_class   => 'TravelPromotions',
                    event_idents => RLM$EVENTIDS(Flt_EvtId, Car_EvtId));

  if (evtcnsmd = 1) then
    -- consume operation was successful; perform the action ---
    OfferPromotion (Flt.CustId, rlm$rule.PromoType, rlm$rule.OfferedBy);
  end if;
END;
/

CREATE_CONDITIONS_TABLEプロシージャ

このプロシージャは、同一または異なるルール・クラスからの複数のルールによって共有可能なプリミティブ・ルール条件のリポジトリである条件表を作成します。このプロシージャはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。

構文

条件表を作成して、プリミティブ・イベントに対して定義されている共有可能なプリミティブ条件を格納します。

DBMS_RLMGR.CREATE_CONDITIONS_TABLE (
     cond_table    IN  VARCHAR2,
     pevent_struct IN  VARCHAR2,
     stg_clause    IN  VARCHAR2 DEFAULT NULL);

条件表を作成し、表の別名を使用して識別されるリレーショナル表に対して定義されている共有可能なプリミティブ条件を格納します。

DBMS_RLMGR.CREATE_CONDITIONS_TABLE (
     cond_table    IN  VARCHAR2,
     tab_alias     IN  rlm$table_alias,
     stg_clause    IN  VARCHAR2 DEFAULT NULL);

パラメータ

表109-9 CREATE_CONDITIONS_TABLEプロシージャのパラメータ

パラメータ 説明

pevent_struct

共有可能なプリミティブ・ルール条件が定義されているプリミティブ・イベント構造。

cond_table

プリミティブ・ルール条件を格納する表の名前。

stg_clause

条件表のSTORAGE句。

tab_alias

共有可能なプリミティブ・ルール条件が定義されるデータベース表を識別するタイプ。


使用上の注意

次のコマンドでは、AddRentalCarイベント構造の共有可能なプリミティブ・ルール条件を格納できる条件表が作成されます。

BEGIN
  DBMS_RLMGR.CREATE_CONDITIONS_TABLE (
    cond_table    => 'FlightConditions',
    pevent_struct => 'AddFlight',
    stg_clause    => 'TABLESPACE TBS_1');
END;
/

CREATE_EVENT_STRUCTプロシージャ

このプロシージャは、イベント構造を作成します。

構文

DBMS_RLMGR.CREATE_EVENT_STRUCT  (
   event_struct  IN  VARCHAR2);

パラメータ

表109-10 CREATE_EVENT_STRUCTプロシージャのパラメータ

パラメータ 説明

event_struct

現行のスキーマ内に作成するイベント構造の名前。


使用上の注意

次のコマンドでは、イベント構造が作成されます。

BEGIN  DBMS_RLMGR.CREATE_EVENT_STRUCT(event_struct => 'AddFlight');END;

CREATE_EXPFIL_INDEXESプロシージャ

このプロシージャは、デフォルトの索引が削除されている場合に、ルール・クラスの式フィルタ索引を作成します。典型的なルール・セットがルール・クラス表に格納されている場合は、統計を収集することによって、索引をこれらの式に応じてチューニングできます。

構文

DBMS_RLMGR.CREATE_EXPFIL_INDEXES  (
   rule_class  IN  VARCHAR2,
   coll_stats  IN  VARCHAR2 default 'NO');

パラメータ

表109-11 CREATE_EXPFIL_INDEXESプロシージャのパラメータ

パラメータ 説明

rule_class

ルール・クラスの名前。

coll_stats

索引を構築するための式統計を収集します。


使用上の注意

次のコマンドでは、CompTravelPromoルール・クラスで定義されているルールの統計が収集され、セット内で最も一般的な述語に基づく式フィルタ索引が作成されます。

BEGIN
DBMS_RLMGR.CREATE_EXPFIL_INDEXES (rule_class => 'CompTravelPromo',
                                  coll_stats => 'yes');
END;
/

次の例は式フィルタのチューニングを示しており、ドメインに関する知識を使用して特定の索引パラメータを割り当てています。次のコマンドでは、特定の索引パラメータがAddFlightイベント構造に関連付けられます。これに応じて、対応する式に対して作成された式フィルタ索引が最適化されます。 その後のCREATE_EXPFIL_INDEXESのステップでは、これらの索引パラメータを使用します。

BEGIN
  DBMS_EXPFIL.DEFAULT_INDEX_PARAMETERS('AddFlight',
    exf$attribute_list (
       exf$attribute (attr_name => 'Airline',
                      attr_oper => exf$indexoper('='),
                      attr_indexed => 'TRUE'),
       exf$attribute (attr_name => 'ToCity',
                      attr_oper => exf$indexoper('='),
                      attr_indexed => 'TRUE'),
       exf$attribute (attr_name => 'Depart',
                      attr_oper => exf$indexoper('=','<','>','>=','<='),
                      attr_indexed => 'FALSE')
    )
  );
  -- create the indexes after assigning the index parameters --
  DBMS_RLMGR.CREATE_EXPFIL_INDEXES (rule_class => 'CompTravelPromo');
END;
/

CREATE_INTERFACEプロシージャ

このプロシージャは、ルール・クラスを直接操作できるルール・クラス・インタフェースのパッケージを作成して、効率性および使いやすさを改善します。

構文

DBMS_RLMGR.CREATE_INTERFACE  (
   rule_class   IN  VARCHAR2,
   interface_nm IN  VARCHAR2);

パラメータ

表109-12 CREATE_INTERFACEプロシージャのパラメータ

パラメータ 説明

rule_class

インタフェースのパッケージが作成されるルール・クラスの名前

interface_nm

ルール・アプリケーションのインタフェースとして動作するPL/SQLパッケージの名前。


使用上の注意

次のコマンドでは、CompTravelPromoルール・クラスに対してルール・クラス・インタフェースのパッケージが作成されます。

  BEGIN
    DBMS_RLMGR.CREATE_INTERFACE  (rule_class   => 'CompTravelPromo',
                                  interface_nm => 'TravelPromoRules');
  END;

次のコマンドでは、前のステップで作成されたインタフェースを使用して、AddFlightイベントのインスタンスのルールが処理されます。

  BEGIN
    TravelPromoRules.process_rules (event_inst =>
              AddFlight(987, 'Abcair', 'Boston', 'Orlando',
                                      '01-APR-2003', '08-APR-2003');
  END;

CREATE_RULE_CLASSプロシージャ

このプロシージャは、ルール・クラスを作成します。

構文

DBMS_RLMGR.CREATE_RULE_CLASS  (
   rule_class      IN  VARCHAR2,
   event_struct    IN  VARCHAR2,
   action_cbk      IN  VARCHAR2,
   actprf_spec     IN  VARCHAR2  default null,
   rslt_viewnm     IN  VARCHAR2  default null,
   rlcls_prop      IN  VARCHAR2  default <simple/>);

パラメータ

表109-13 CREATE_RULE_CLASSプロシージャのパラメータ

パラメータ 説明

rule_class

現行のスキーマ内に作成するルール・クラスの名前。

event_struct

ルール・クラスのイベント構造を表す、現行のスキーマ内のオブジェクト・タイプまたは式フィルタの属性セットの名前。

action_cbk

ルール・クラスに対して作成するアクション・コールバック・プロシージャの名前。

actprf_spec

ルール・クラスに関連付けられているアクション・プリファレンスの仕様(名前とSQLデータ型の組合せ)。

rlst_viewnm

セッション内の一致するイベントとルールが表示されるルール・クラスの結果ビューの名前。この名前のビューが現行のスキーマ内に作成されます。

rlcls_prop

ルール・クラスのプロパティを設定するためのXML文書。デフォルトでは、ルール・クラスは単純イベント(非コンポジット)用に作成されます。


使用上の注意

次のコマンドでは、単純イベント(AddFlightタイプ)用のルール・クラスが作成されます。

CREATE or REPLACE TYPE AddFlight AS OBJECT (
                  CustId NUMBER,
                  Airline VARCHAR(20),
                  FromCity VARCHAR(30),
                  ToCity VARCHAR(30),
                  Depart DATE,
                  Return DATE);
BEGIN
  DBMS_RLMGR.CREATE_RULE_CLASS (
              rule_class   => 'TravelPromotion', -- rule class name --
              event_struct => 'AddFlight', -- event struct name --
              action_cbk    => 'PromoAction', -- callback proc name –-
              rslt_viewnm   => 'MatchingPromos', -- results view --
              actprf_spec   => 'PromoType VARCHAR(20),
                              OfferedBy VARCHAR(20)');
END;

次のコマンドでは、2つのプリミティブ・イベント(AddFlightおよびAddRentalCar)で構成されるコンポジット・イベント用のルール・クラスが作成されます。

CREATE or REPLACE TYPE TSCompEvent (Flt AddFlight,
                                    Car AddRentalCar);
BEGIN
  DBMS_RLMGR.CREATE_RULE_CLASS (
              rule_class    => 'CompTravelPromo', -- rule class name --
              event_struct  => 'TSCompEvent', -- event struct name --
              action_cbk    => 'CompPromoAction', -- callback proc name –-
              rslt_viewnm   => 'MatchingCompPromos', -- results view --
              actprf_spec   => 'PromoType VARCHAR(20),
                              OfferedBy VARCHAR(20)',
              properties    => '<composite/>');
END;

DELETE_RULEプロシージャ

このプロシージャは、ルール・クラスからルールを削除します。

構文

DBMS_RLMGR.DELETE_RULE (
   rule_class    IN    VARCHAR2,
   rule_id       IN    VARCHAR2);

パラメータ

表109-14 DELETE_RULEプロシージャのパラメータ

パラメータ 説明

rule_class

ルール・クラスの名前。スキーマ拡張したルール・クラス名を使用すると、現行のスキーマに属していないルール・クラスを参照できます。

rule_id

削除するルールの識別子。


使用上の注意

このコマンドでは、ルール・クラスからルールが削除されます。

BEGIN
  DBMS_RLMGR.DELETE_RULE (
           rule_class  => 'CompTravelPromo',
           rule_id     => 'AB_AV_FL');
END;

また、前述のルールは、次のSQL DELETE文を発行してルール・クラスから削除することもできます。

DELETE FROM CompTravelPromo WHERE rlm$ruleid = 'AB_AV_FL';

DROP_CONDITIONS_TABLEプロシージャ

このプロシージャは、条件表を削除します。

構文

DBMS_RLMGR.DROP_CONDITIONS_TABLE (
     cond_table IN   VARCHAR2);

パラメータ

表109-15 DROP_CONDITIONS_TABLEプロシージャのパラメータ

パラメータ 説明

cond_table

ユーザー・スキーマの条件表の名前。


使用上の注意

次のコマンドでは、条件表が削除されます。

BEGIN
  DBMS_RLMGR.DROP_CONDITIONS_TABLE (cond_table => 'FlightConditions');
END;
/

DROP_EVENT_STRUCTプロシージャ

このプロシージャは、イベント構造を削除します。

構文

DBMS_RLMGR.DROP_EVENT_STRUCT  (
   event_struct  IN  VARCHAR2);

パラメータ

表109-16 DROP_EVENT_STRUCTプロシージャのパラメータ

パラメータ 説明

event_struct

現行のスキーマ内のイベント構造の名前。


使用上の注意

次のコマンドでは、イベント構造が削除されます。

BEGIN  DBMS_RLMGR.DROP_EVENT_STRUCT(event_struct => 'AddFlight');END;

DROP_EXPFIL_INDEXESプロシージャ

このプロシージャは、ルール・クラスに対して作成された式フィルタ索引を削除します。

構文

DBMS_RLMGR.DROP_EXPFIL_INDEXES  (
   rule_class  IN  VARCHAR2);

パラメータ

表109-17 DROP_EXPFIL_INDEXESプロシージャのパラメータ

パラメータ 説明

rule_class

ルール・クラスの名前。


使用上の注意

このプロシージャは、ルール・クラスに関連付けられているすべての式フィルタ索引を削除します。 この索引は、DBMS_RLMGR.CREATE_EXPFIL_INDEXESコールを使用して再作成できます。

次のコマンドでは、CompTravelPromoルール・クラスに対して作成された式フィルタ索引が削除されます。

BEGIN
DBMS_RLMGR.DROP_EXPFIL_INDEXES (rule_class => 'CompTravelPromo');
END;
/

DROP_INTERFACEプロシージャ

このプロシージャは、ルール・アプリケーションに対して作成されたルール・クラス・インタフェースのパッケージを削除します。

構文

DBMS_RLMGR.DROP_INTERFACE  (
   interface_nm  IN  VARCHAR2);

パラメータ

表109-18 DROP_INTERFACEプロシージャのパラメータ

パラメータ 説明

interface_nm

ルール・アプリケーションのインタフェースとして動作するPL/SQLパッケージの名前。


使用上の注意

このプロシージャは、DBMS_RLMGR.CREATE_INTERFACEコールを使用して作成されたルール・クラス・インタフェースのパッケージを削除します。

次のコマンドでは、ルール・クラス・インタフェースのパッケージTravelPromoRulesが削除されます。

  BEGIN
    DBMS_RLMGR.DROP_INTERFACE (interface_nm => 'TravelPromoRules'
  END;

DROP_RULE_CLASSプロシージャ

このプロシージャは、ルール・クラスを削除します。

構文

DBMS_RLMGR.DROP_RULE_CLASS  (
   rule_class  IN  VARCHAR2);

パラメータ

表109-19 DROP_RULE_CLASSプロシージャのパラメータ

パラメータ 説明

rule_class

現行のスキーマ内のルール・クラスの名前。


使用上の注意

次のコマンドでは、ルール・クラスが削除されます。

BEGIN  DBMS_RLMGR.DROP_RULE_CLASS(rule_class => 'CompTravelPromo');END;

EXTEND_EVENT_STRUCTプロシージャ

このプロシージャは、新しい属性を追加することによって、1つ以上のルール・クラスで使用されるプリミティブ・イベント構造を拡張する場合に使用します。

構文

DBMS_RLMGR.EXTEND_EVENT_STRUCT (
          event_struct    IN   VARCHAR2,
          attr_name       IN   VARCHAR2,
          attr_type       IN   VARCHAR2,
          attr_defvl      IN   VARCHAR2 default NULL);

パラメータ

表109-20 EXTEND_EVENT_STRUCTプロシージャのパラメータ

パラメータ 説明

event_struct

この属性を追加するイベント構造の名前。

attr_name

追加する要素属性の名前。同じセット内の2つの属性に同じ名前を指定することはできません。

attr_type

属性のデータ型。この引数には、標準のSQLデータ型、または現行のユーザーがアクセス可能なオブジェクト・タイプの名前を指定できます。

attr_defvl

要素属性のデフォルト値。


使用上の注意

次のコマンドでは、CompTravelPromoルール・クラスによって使用されるAddRentalCarイベント構造に属性が追加されます。

  BEGIN
    DBMS_RLMGR.EXTEND_EVENT_STRUCT (
          event_struct   => 'AddRentalCar',
          attr_name      => 'PrefMemberId',
          attr_type      => 'VARCHAR2(30)');
  END;

GET_AGGREGATE_VALUEファンクション

このファンクションは、コレクション・イベントに対して計算された集計値を取り出します。

構文

DBMS_RLMGR.GRANT_PRIVILEGE  (
   rule_class      IN  VARCHAR2,
   event_ident     IN  VARCHAR2,
   aggr_func       IN  VARCHAR2) RETURN VARCHAR2;

パラメータ

表109-21 GET_AGGREGATE_VALUEファンクションのパラメータ

パラメータ 説明

rule_class

コレクション・イベントのルール・クラスの名前。

event_ident

システムによって生成されたコレクション・イベントの識別子。

aggr_func

取り出される集計値のシグネチャ。


使用上の注意

次の例は、アクションの実行の一部として、計算された集計値を出力するアクション・コールバック・プロシージャのサンプル実装を示しています。この場合、BankTransactionプリミティブ・イベントはコレクションに対して有効になっています。

CREATE OR REPLACE PROCEDURE LAWENFORCEMENTCBK (
   bank                 banktransaction,
   bankcollid           rowid,
   transport            transportation,
   fldrpt               fieldreport,
   rlm$rule             LawEnforcementRC%ROWTYPE) IS
   aggrval              VARCHAR(30);
begin
  dbms_ouput.put_line('Mathing Rule :'||rlm$rule.rlm$ruleid||chr(10));

  if (bank is not null) then
   dbms_ouput.put_line('-->Bank Transactions by ('||bank.subjectId||')'||chr(10);

   aggrval := dbms_rlmgr.get_aggregate_value(rule_class  =>'LawEnforcementRC',
                                             event_ident => bankcollid,
                                             aggr_func   => 'sum(amount)');
   if (aggrval is not null) then
     dbms_ouput.put_line('---> Sum of the amounts is :'||aggrval||chr(10));
   end if;
   . . .
  end if;
end;

GRANT_PRIVILEGEプロシージャ

このプロシージャは、ルール・クラスに対する権限を他のユーザーに付与します。

構文

DBMS_RLMGR.GRANT_PRIVILEGE  (
   rule_class      IN  VARCHAR2,
   priv_type       IN  VARCHAR2,
   to_user         IN  VARCHAR2);

パラメータ

表109-22 GRANT_PRIVILEGEプロシージャのパラメータ

パラメータ 説明

rule_class

現行のスキーマ内のルール・クラスの名前。

priv_type

付与するルール・クラス権限のタイプ。

to_user

権限を付与されるユーザー。


使用上の注意

次のコマンドでは、ルール・クラスTravelPromoのPROCESS RULES権限がユーザーSCOTTに付与されます。

BEGIN
  DBMS_RLMGR.GRANT_PRIVILEGE(rule_class => 'TravelPromo',
                             priv_type => 'PROCESS RULES',
                             to_user => 'SCOTT');
END;

PROCESS_RULESプロシージャ

このプロシージャは、指定したイベントのルールを処理します。このプロシージャはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。

構文

ルール・クラスに追加するイベント・インスタンスの文字列表現に対するルールを処理します。

DBMS_RLMGR.PROCESS_RULES  (
   rule_class    IN  VARCHAR2,
   event_inst    IN  VARCHAR2,
   event_type    IN  VARCHAR2 default null);

ルール・クラスに追加するイベント・インスタンスのAnyData表現に対するルールを処理します。

DBMS_RLMGR.PROCESS_RULES  (
   rule_class    IN  VARCHAR2,
   event_inst    IN  sys.AnyData);

パラメータ

表109-23 PROCESS_RULESプロシージャのパラメータ

パラメータ 説明

rule_class

ルール・クラスの名前。スキーマ拡張したルール・クラス名を使用すると、現行のスキーマに属していないルール・クラスを参照できます。

event_inst

ルール・クラスに追加するイベント・インスタンスの文字列表現またはAnyData表現。

event_type

event_inst引数に割り当てられたイベント・インスタンスのタイプ(コンポジット・イベント用に構成されたルール・クラスに対してイベント・インスタンスの文字列表現を使用する場合)。


使用上の注意

次のコマンドでは、指定したイベントのルール・クラスTravelPromotionのルールが処理されます。

BEGIN
  DBMS_RLMGR.PROCESS_RULES (
               rule_class => 'TravelPromotion',
               event_inst =>
                 AddFlight.getVarchar(987, 'Abcair', 'Boston', 'Orlando',
                                      '01-APR-2003', '08-APR-2003'));
END;

次のコマンドでは、示されている2つのプリミティブ・イベントのルール・クラスCompTravelPromoのルールが処理されます。

BEGIN  DBMS_RLMGR.PROCESS_RULES(
               rule_class => 'CompTravelPromo',
               event_inst =>
                 AddFlight.getVarchar(987, 'Abcair', 'Boston', 'Orlando',
                                      '01-APR-2003', '08-APR-2003'),
               event_type => 'AddFlight');
  DBMS_RLMGR.PROCESS_RULES(
               rule_class => 'Scott.CompTravelPromo',
               event_inst =>
                  AnyData.convertObject(AddRentalCar(987, 'Luxury', '03-APR-2003',
                                        '08-APR-2003', NULL)));
END;

PURGE_EVENTSプロシージャ

このプロシージャは、ルール・クラスに関連付けられているすべてのイベントを削除し、いくつかのイベントに一致するルールに関する状態情報をパージすることによって、ルール・クラスで保持されている増分状態をリセットします。

構文

DBMS_RLMGR.PURGE_EVENTS (
     rule_class IN   VARCHAR2);

パラメータ

表109-24 PURGE_EVENTSプロシージャのパラメータ

パラメータ 説明

rule_class

現行のスキーマ内のルール・クラスの名前。


使用上の注意

次のコマンドでは、CompTravelPromoルール・クラスに関連付けられているイベントが削除されます。

BEGIN
  DBMS_RLMGR.PURGE_EVENTS (rule_class => 'CompTravelPromo');
END;
/

RESET_SESSIONプロシージャ

このプロシージャは、新しいセッションを開始し、ルール・クラスの結果ビュー内の結果を破棄します。

構文

DBMS_RLMGR.RESET_SESSION  (
   rule_class  IN  VARCHAR2);

パラメータ

表109-25 RESET_SESSIONプロシージャのパラメータ

パラメータ 説明

rule_class

ルール・クラスの名前。スキーマ拡張したルール・クラス名を使用すると、現行のスキーマに属していないルール・クラスを参照できます。


使用上の注意

次のコマンドでは、ルール・クラス・セッションがリセットされます。

BEGIN  DBMS_RLMGR.RESET_SESSION(
             rule_class => 'CompTravelPromo');
END;

REVOKE_PRIVILEGEプロシージャ

このプロシージャは、他のユーザーが持つルール・クラスに対する権限を取り消します。

構文

DBMS_RLMGR.REVOKE_PRIVILEGE  (
   rule_class      IN  VARCHAR2,
   priv_type       IN  VARCHAR2,
   from_user       IN  VARCHAR2);

パラメータ

表109-26 REVOKE_PRIVILEGEプロシージャのパラメータ

パラメータ 説明

rule_class

現行のスキーマ内のルール・クラスの名前。

priv_type

取り消すルール・クラス権限のタイプ。

from_user

権限を取り消されるユーザー。


使用上の注意

次のコマンドでは、ルール・クラスTravelPromoに対するPROCESS RULES権限がユーザーSCOTTから取り消されます。

BEGIN
  DBMS_RLMGR.REVOKE_PRIVILEGE(rule_class  => 'TravelPromo',
                              priv_type   => 'PROCESS RULES',
                              from_user   => 'SCOTT');
END;

SYNC_TEXT_INDEXESプロシージャ

このプロシージャは、ルール条件のCONTAINS演算子に関連する述語を処理するために定義された索引を同期化します。

構文

DBMS_RLMGR.SYNC_TEXT_INDEXES (
     rule_class IN   VARCHAR2);

パラメータ

表109-27 SYNC_TEXT_INDEXESプロシージャのパラメータ

パラメータ 説明

rule_class

現行のスキーマ内のルール・クラスの名前。


使用上の注意

次のコマンドでは、CompTravelPromoルール・クラスに関連付けられているテキスト索引が同期化されます。

BEGIN
  DBMS_RLMGR.SYNC_TEXT_INDEXES (rule_class => 'CompTravelPromo');
END;
/