home *** CD-ROM | disk | FTP | other *** search
- /* ------------------------------------------------------------------------
- -- ERWUIEIN.SIX --
- -- Copyright (C) Logic Works, Inc. 1994 --
- -- --
- -- Stored function to insert ERwin primary keys or --
- -- identifying relationships into the Designer 2000 dictionary as --
- -- UIEs --
- ------------------------------------------------------------------------- */
- CREATE OR REPLACE FUNCTION ERWUIEIN(pAttRel CI_UNIQUE_IDENTIFIER_ENTRIES.ATTRIBUTE_OR_RELATION%TYPE,
- pEntName CI_ENTITIES.NAME%TYPE,
- pEntID CI_ENTITIES.ID%TYPE,
- pOtherEntID CI_ENTITIES.ID%TYPE,
- pAttRelName CI_UNIQUE_IDENTIFIER_ENTRIES.RELATIONSHIP_NAME%TYPE,
- pSequence CI_UNIQUE_IDENTIFIER_ENTRIES.SEQUENCE_NUMBER%TYPE,
- pApp CI_APPLICATION_SYSTEMS.NAME%TYPE,
- pVersion CI_APPLICATION_SYSTEMS.VERSION%TYPE)
- RETURN CI_UNIQUE_IDENTIFIER_ENTRIES.ID%TYPE
- AS
- 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);
- TYPE recRelend IS RECORD
- (FROM_ENTITY_REFERENCE CI_RELATIONSHIP_ENDS.FROM_ENTITY_REFERENCE%TYPE,
- ID CI_RELATIONSHIP_ENDS.ID%TYPE,
- NAME CI_RELATIONSHIP_ENDS.NAME%TYPE,
- TO_ENTITY_REFERENCE CI_RELATIONSHIP_ENDS.TO_ENTITY_REFERENCE%TYPE);
- TYPE recUniqueIE is RECORD
- (ATTRIBUTE_OR_RELATION CI_UNIQUE_IDENTIFIER_ENTRIES.ATTRIBUTE_NAME%TYPE,
- ATTRIBUTE_REFERENCE CI_ATTRIBUTES.ID%TYPE,
- ENTITY_REFERENCE CI_ENTITIES.ID%TYPE,
- ID CI_UNIQUE_IDENTIFIER_ENTRIES.ID%TYPE,
- RELATIONSHIP_END_REFERENCE CI_UNIQUE_IDENTIFIER_ENTRIES.RELATIONSHIP_END_REFERENCE%TYPE);
- prUIE recUniqueIE;
- stUIE ciounique_identifier_entry.data;
- prEntity recEntity;
- prAttribute recAttribute;
- prRelend recRelend;
- EntityRef CI_ENTITIES.ID%TYPE;
- AttRelRef CI_ATTRIBUTES.ID%TYPE;
- nSequenceNumber CI_UNIQUE_IDENTIFIER_ENTRIES.SEQUENCE_NUMBER%TYPE;
- act_status varchar2(100);
- act_warnings varchar2(100);
- BEGIN
- if cdapi.initialized = false then
- RETURN -1;
- end if;
- BEGIN
- IF pVersion = 0 THEN
- SELECT APPLICATION_SYSTEM_OWNED_BY, ID, NAME INTO prEntity
- FROM CI_ENTITIES
- WHERE CI_ENTITIES.NAME=UPPER(pEntName)
- 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(pEntName)
- 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;
- IF UPPER(pAttRel) != 'A' THEN
- BEGIN
- SELECT FROM_ENTITY_REFERENCE,ID,
- NAME, TO_ENTITY_REFERENCE
- INTO prRelend
- FROM CI_RELATIONSHIP_ENDS
- WHERE FROM_ENTITY_REFERENCE=EntityRef
- AND NAME=pAttRelName;
- AttRelRef := prRelend.ID;
- BEGIN
- SELECT ATTRIBUTE_OR_RELATION,ATTRIBUTE_REFERENCE,
- ENTITY_REFERENCE,ID,RELATIONSHIP_END_REFERENCE
- INTO prUIE FROM CI_UNIQUE_IDENTIFIER_ENTRIES
- WHERE ENTITY_REFERENCE = EntityRef AND
- RELATIONSHIP_END_REFERENCE = AttRelRef AND
- SEQUENCE_NUMBER = pSequence;
- RETURN prUIE.ID;
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- stUIE.v.RELATIONSHIP_NAME := pAttRelName;
- stUIE.i.RELATIONSHIP_NAME := true;
- stUIE.v.RELATIONSHIP_END_REFERENCE := AttRelRef;
- stUIE.i.RELATIONSHIP_END_REFERENCE := true;
- stUIE.v.ENTITY_REFERENCE := EntityRef;
- stUIE.i.ENTITY_REFERENCE := true;
- stUIE.v.ATTRIBUTE_OR_RELATION := 'R';
- stUIE.i.ATTRIBUTE_OR_RELATION := true;
- stUIE.v.SEQUENCE_NUMBER := pSequence;
- stUIE.i.SEQUENCE_NUMBER := true;
- WHEN OTHERS THEN
- RETURN -1;
- END;
- EXCEPTION
- WHEN OTHERS THEN
- RETURN -1;
- END;
- ELSE
- BEGIN
- SELECT ENTITY_REFERENCE, ID, NAME INTO prAttribute
- FROM CI_ATTRIBUTES
- WHERE CI_ATTRIBUTES.NAME=UPPER(pAttRelName)
- AND CI_ATTRIBUTES.ENTITY_REFERENCE = EntityRef;
- AttRelRef := prAttribute.ID;
- BEGIN
- SELECT ATTRIBUTE_OR_RELATION,ATTRIBUTE_REFERENCE,
- ENTITY_REFERENCE,ID,RELATIONSHIP_END_REFERENCE
- INTO prUIE FROM CI_UNIQUE_IDENTIFIER_ENTRIES
- WHERE ENTITY_REFERENCE = EntityRef AND
- ATTRIBUTE_REFERENCE = AttRelRef AND
- SEQUENCE_NUMBER = pSequence;
- RETURN prUIE.ID;
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- stUIE.v.ATTRIBUTE_NAME := pAttRelName;
- stUIE.i.ATTRIBUTE_NAME := true;
- stUIE.v.ATTRIBUTE_REFERENCE := AttRelRef;
- stUIE.i.ATTRIBUTE_REFERENCE := true;
- stUIE.v.ENTITY_REFERENCE := EntityRef;
- stUIE.i.ENTITY_REFERENCE := true;
- stUIE.v.ATTRIBUTE_OR_RELATION := 'A';
- stUIE.i.ATTRIBUTE_OR_RELATION := true;
- stUIE.v.SEQUENCE_NUMBER := pSequence;
- stUIE.i.SEQUENCE_NUMBER := true;
- WHEN OTHERS THEN
- RETURN -1;
- END;
- EXCEPTION
- WHEN OTHERS THEN
- RETURN -1;
- END;
- END IF;
- BEGIN
- cdapi.open_activity;
- ciounique_identifier_entry.ins(NULL,stUIE);
- cdapi.validate_activity(act_status, act_warnings);
- cdapi.close_activity(act_status);
- if act_status != 'Y' then
- cdapi.abort_activity;
- RETURN -1;
- else
- RETURN stUIE.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 -1;
- END;
- END ERWUIEIN;
- /
-