ルール・マネージャには、事前定義タイプおよびこのタイプのパブリック・シノニムがあります。
|
関連項目: 詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』を参照してください。 |
この章では、次の項目について説明します。
表237-1に、ルール・マネージャのオブジェクト・タイプを示します。
RLM$EVENTIDSタイプは、VARCHAR2値の表として次のように定義されます。
構文
CREATE OR REPLACE TYPE RLM$EVENTIDS is table of VARCHAR2(38);
属性
なし
使用上の注意
RLM$EVENTIDSタイプは、CONSUME_PRIM_EVENTSファンクションにイベント識別子のリストを渡すために使用します。これらのイベント識別子は、データベース内の対応するイベントのROWIDです。これらの値は、ルール・クラスがRULEコンシューム・ポリシー用に構成されている場合、アクション・コールバック・プロシージャおよびルール・クラス結果ビュー列の引数を介して使用できます。
例
次のコマンドは、RULEコンシューム・ポリシー用に構成されたルール・クラスのアクション・コールバック・プロシージャの本体を示しています。 ここでは、RLM$EVENTDIDSタイプを使用して、一致するルールに対するアクションを実行する前にイベントをコンシュームする方法を示します。
CREATE OR REPLACE PROCEDURE PromoAction (
Flt AddFlight,
Flt_EvtId ROWID, --- rowid for the fligt 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;
/