home *** CD-ROM | disk | FTP | other *** search
- /* ------------------------------------------------------------------------
- -- ERWATVIN.SIX --
- -- Copyright (C) Logic Works, Inc. 1994 --
- -- --
- -- Stored function to insert ERwin attribute valid values --
- -- into the Designer 2000 dictionary as attribute values --
- ------------------------------------------------------------------------- */
- CREATE OR REPLACE FUNCTION ERWATVIN(pEntity CI_ENTITIES.NAME%TYPE,
- pAttribute CI_ATTRIBUTES.NAME%TYPE,
- pLowVal CI_ATTRIBUTE_VALUES.LOW_VALUE%TYPE,
- pHiVal CI_ATTRIBUTE_VALUES.HIGH_VALUE%TYPE,
- pMeaning CI_ATTRIBUTE_VALUES.MEANING%TYPE,
- pApp CI_APPLICATION_SYSTEMS.NAME%TYPE,
- pVersion CI_APPLICATION_SYSTEMS.VERSION%TYPE)
- RETURN CI_ATTRIBUTES.ID%TYPE
- AS
- TYPE recAttValue IS RECORD
- (ATTRIBUTE_REFERENCE CI_ATTRIBUTE_VALUES.ATTRIBUTE_REFERENCE%TYPE,
- ID CI_ATTRIBUTE_VALUES.ID%TYPE,
- MEANING CI_ATTRIBUTE_VALUES.MEANING%TYPE);
- TYPE recEntity IS RECORD
- (APPLICATION_SYSTEM_OWNED_BY CI_ENTITIES.APPLICATION_SYSTEM_OWNED_BY%TYPE,
- ID CI_ENTITIES.ID%TYPE,
- NAME CI_ENTITIES.NAME%TYPE);
- TYPE recAttribute IS RECORD
- (ENTITY_REFERENCE CI_ATTRIBUTES.ENTITY_REFERENCE%TYPE,
- ID CI_ATTRIBUTES.ID%TYPE,
- NAME CI_ATTRIBUTES.NAME%TYPE);
- prAtt_Value recAttValue;
- stAtt_Value cioattribute_value.data;
- prAttribute recAttribute;
- prEntity recEntity;
- EntityRef CI_ENTITIES.ID%TYPE;
- act_status varchar2(100);
- act_warnings varchar2(100);
- BEGIN
- BEGIN
- IF pVersion = 0 THEN
- SELECT APPLICATION_SYSTEM_OWNED_BY, ID, NAME INTO prEntity
- FROM CI_ENTITIES
- WHERE CI_ENTITIES.NAME=UPPER(pEntity)
- AND CI_ENTITIES.APPLICATION_SYSTEM_OWNED_BY =
- (SELECT ID FROM CI_APPLICATION_SYSTEMS WHERE
- CI_APPLICATION_SYSTEMS.NAME = UPPER(pApp) AND
- CI_APPLICATION_SYSTEMS.LATEST_VERSION_FLAG='Y');
- ELSE
- SELECT APPLICATION_SYSTEM_OWNED_BY, ID, NAME INTO prEntity
- FROM CI_ENTITIES
- WHERE CI_ENTITIES.NAME=UPPER(pEntity)
- AND CI_ENTITIES.APPLICATION_SYSTEM_OWNED_BY =
- (SELECT ID FROM CI_APPLICATION_SYSTEMS WHERE
- CI_APPLICATION_SYSTEMS.NAME = UPPER(pApp) AND
- CI_APPLICATION_SYSTEMS.VERSION=pVersion);
- END IF;
- EntityRef := prEntity.ID;
- EXCEPTION
- WHEN OTHERS THEN
- RETURN -1;
- END;
- BEGIN
- SELECT ENTITY_REFERENCE, ID, NAME INTO prAttribute
- FROM CI_ATTRIBUTES
- WHERE CI_ATTRIBUTES.NAME=UPPER(pAttribute)
- AND CI_ATTRIBUTES.ENTITY_REFERENCE = EntityRef;
- EXCEPTION
- WHEN OTHERS THEN
- RETURN -1;
- END;
-
- stAtt_Value.v.ATTRIBUTE_REFERENCE := prAttribute.ID;
- stAtt_Value.i.ATTRIBUTE_REFERENCE := true;
- stAtt_Value.v.MEANING := pMeaning;
- stAtt_Value.i.MEANING := true;
- stAtt_Value.v.LOW_VALUE := pLowVal;
- stAtt_Value.i.LOW_VALUE := true;
- stAtt_Value.v.HIGH_VALUE := pHiVal;
- stAtt_Value.i.HIGH_VALUE := true;
- cdapi.open_activity;
- SELECT ATTRIBUTE_REFERENCE, ID, MEANING INTO prAtt_Value
- FROM CI_ATTRIBUTE_VALUES
- WHERE CI_ATTRIBUTE_VALUES.MEANING=pMeaning
- AND CI_ATTRIBUTE_VALUES.ATTRIBUTE_REFERENCE = prAttribute.ID;
- dbms_output.put_line('Attribute value already exists');
- stAtt_Value.v.ID := prAtt_Value.ID;
- stAtt_Value.i.ID := true;
- BEGIN
- cioattribute_value.upd(prAtt_Value.ID,stAtt_Value);
- dbms_output.put_line('Attribute value updated');
- cdapi.validate_activity(act_status, act_warnings);
- cdapi.close_activity(act_status);
- if act_status != 'Y' then
- cdapi.abort_activity;
- RETURN -2;
- else
- RETURN stAtt_Value.v.ID;
- end if;
- EXCEPTION
- WHEN OTHERS THEN
- if cdapi.stacksize > 0 then
- if cdapi.activity is not null then
- cdapi.abort_activity;
- end if;
- else
- if cdapi.activity is not null then
- cdapi.abort_activity;
- end if;
- end if;
- RETURN -3;
- END;
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- BEGIN
- cioattribute_value.ins(null,stAtt_Value);
- cdapi.validate_activity(act_status, act_warnings);
- cdapi.close_activity(act_status);
- if act_status != 'Y' then
- cdapi.abort_activity;
- RETURN -4;
- else
- RETURN stAtt_Value.v.ID;
- end if;
- EXCEPTION
- WHEN OTHERS THEN
- if cdapi.stacksize > 0 then
- if cdapi.activity is not null then
- cdapi.abort_activity;
- end if;
- else
- if cdapi.activity is not null then
- cdapi.abort_activity;
- end if;
- end if;
- RETURN -5;
- END;
- WHEN OTHERS THEN
- dbms_output.put_line('Unknown exception encountered');
- if cdapi.activity is not null then
- cdapi.abort_activity;
- end if;
- RETURN -6;
- END ERWATVIN;
- /
-