REM *************************************************************************** REM Hand-carved package body for UNIQUENESS RULE created on 14-JAN-99 REM *************************************************************************** CREATE OR REPLACE PACKAGE BODY cihunr IS -- Generic post-process routines PROCEDURE check_delete(id number); sac_type constant varchar2(6) := 'CRU'; pac_type constant varchar2(6) := 'CLA'; pac_reference number; --======================== PRE-PROCESS (INS,UPD) ============================-- PROCEDURE pre_process(operation varchar2,id number, pl in out NOCOPY ciouniqueness_rule.data) IS BEGIN -- Calculate the PAC reference which determines access control rights pac_reference := NVL(NVL(pl.v.entity_object_reference, pl.v.generic_class_reference), pl.v.view_object_reference); -- Access rights for uniqueness rule derive from the reference -- Access rights checking performed by triggers in config 4.0.9 -- ciiacc.check_access_rights(pac_reference,pac_type,'UPD'); -- Initialize unassigned properties with default values on INSERT if operation = 'INS' then pl.v.element_type_name := sac_type; pl.i.element_type_name := true; pl.v.classifier_rule_subtype := 'UNR'; pl.i.classifier_rule_subtype := true; end if; if pl.i.entity_object_reference then pl.v.classifier_rule_for := 'EOC'; pl.i.classifier_rule_for := true; elsif pl.i.generic_class_reference then pl.v.classifier_rule_for := 'GEC'; pl.i.classifier_rule_for := true; elsif pl.i.view_object_reference then pl.v.classifier_rule_for := 'VOB'; pl.i.classifier_rule_for := true; elsif pl.i.interface_classifier_reference then pl.v.classifier_rule_for := 'INC'; pl.i.classifier_rule_for := true; end if; END; --======================== PRE-PROCESS (DEL,SEL) ============================-- PROCEDURE pre_process(operation varchar2,id number) IS BEGIN -- Access rights for uniqueness rule derive from the reference -- Access rights checking performed by triggers in config 4.0.9 -- ciiacc.check_access_rights(id,sac_type,operation,'SAC'); -- if operation is 'DELETE', make sure no non-cascading references exist if operation = 'DEL' then check_delete(id); end if; END; --===================== POST-PROCESS (INS,UPD,SEL) ==========================-- PROCEDURE post_process(operation varchar2,id number, pl ciouniqueness_rule.data) IS dummy number; BEGIN if operation != 'SEL' then select count(*) into dummy from ci_uniqueness_rules where designated_primary_key_flag = 'Y' and (entity_object_reference = pl.v.entity_object_reference or generic_class_reference = pl.v.generic_class_reference or interface_classifier_reference = pl.v.interface_classifier_reference or view_object_reference = pl.v.view_object_reference); if dummy > 1 then --%0!s: Only one Uniqueness rule can be transformed to the primary key ciierr.post(2111,ciiutl.identify(id, 'UNR')); raise cdapi.apierror; end if; end if; END; --========================= POST PROCESS (DEL) ==============================-- PROCEDURE post_process(operation varchar2,id number) IS BEGIN null; END; --============================= CHECK DELETE ================================-- PROCEDURE check_delete(id number) IS dummy number; error_count number := 0; BEGIN null; END; --================================== END ====================================-- -- -- Package instantiation block -- BEGIN is_installed := true; END; /