rem rem $Header: L:\\\\model\\repman40\\api\\RCS\\rmdq.rpb 1.1 1998/05/28 17:06:03 mfrobins Exp $ rem rem Copyright (c) Oracle Corporation 1991. All Rights Reserved. rem NAME rem rmcdq.sql rem DESCRIPTION rem RM Method Deferred Query services rem PUBLIC FUNCTION(S) rem new - RM Method Deferred Query: NEW (if not exists) rem remove_all - RM Method Deferred Query: REMOVE ALL deferred queries rem remove - RM Method Deferred Query: REMOVE deferred query rem PRIVATE FUNCTION(S) rem MODIFIED (MM/DD/YY) Rem cvanes 07/21/95 - Creation Rem bferris 12/13/94 - Changes for patch CI0110P.001 Rem qttran 04/14/94 - Rem bferris 01/26/94 - Fix bug #12404 Rem bferris 01/18/94 - Creation CREATE OR REPLACE PACKAGE BODY rmmdq IS /* */ /*-------------------------------- new -------------------------------------*/ /* NAME new - RM Method Deferred Query: NEW query (if not already exists) MODULE RMMDQNW DESCRIPTION This procedure creates a new deferred query if one does not already exist. The EID parameter should contain the ID of the element which has been changed (hence, causing the query to be logged). The TID parameter should contain the ID of the element EID's element type. The CID parameter should contain the ID of the assertion which needs to be requeried. NOTES EXCEPTIONS RETURNS */ PROCEDURE new(eid IN number, tid IN number, cid IN number) is temp_num number; -- pl rmodeferred_query.data; newid number; begin -- select max(1) into temp_num from sys.dual -- where not exists (select null -- from rm$deferred_queries q -- where q.element = new.eid -- and q.assertion = new.cid); -- pl.i.element := true; -- pl.v.element := new.eid; -- pl.i.element_type := true; -- pl.v.element_type := new.tid; -- pl.i.assertion := true; -- pl.v.assertion := new.cid; -- rmodeferred_query.ins(NULL, pl); -- rmdbg.print('rmmdq.new: '||'insert deferred_query for '|| -- 'element='||new.eid|| -- ',etype='||new.tid|| -- ',assertion='||new.cid,1); select max(1) into temp_num from sys.dual where not exists (select null from rm$deferred_queries q where q.element = new.eid and q.assertion = new.cid); if temp_num = 1 then newid := rm.idgen; insert into rm_deferred_queries (id,types,element,assertion,element_type) values (newid,0,eid,cid,tid); end if; end new; /* */ /*-------------------------------- remove_all ------------------------------*/ /* NAME remove_all - RM Method Deferred Check: REMOVE ALL deferred checks MODULE RMMDQRA DESCRIPTION This procedure simply deletes all existing deferred queries. This comes in handy when closing the root activity (because deferred queries are not persistent). NOTES EXCEPTIONS RETURNS */ PROCEDURE remove_all is begin delete from rm_deferred_queries; end remove_all; /* ^L */ /*-------------------------------- remove ----------------------------------*/ /* NAME remove - RM Method Deferred Query: REMOVE deferred query MODULE RMMDQRM DESCRIPTION This procedure delete a given set of deferred queries based on the passed parameters. It is used by the generated constraint specific code to remove deferred queries associated with an element when the element is being deleted. The cid parameter should contain the constraint ID. The eid parameter should contain the element ID. If cid is null, all deferred queries recorded for the element are removed. If cid is not null, all deferred queries recorded for the constraint are removed. NOTES EXCEPTIONS RETURNS */ PROCEDURE remove ( cid IN number, eid IN number ) is begin if cid is null then delete from rm_deferred_queries where element = eid; else delete from rm_deferred_queries where assertion = cid and element = eid; end if; end remove; END rmmdq; /