home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / SQL and Data Base / Logic Works ERwin 3.5 / data.1 / erwentin.six < prev    next >
Encoding:
Text File  |  1998-01-28  |  2.6 KB  |  82 lines

  1. /* ------------------------------------------------------------------------
  2. --    ERWENTIN.SIX                                                          --
  3. --    Copyright (C) Logic Works, Inc. 1994                                 --
  4. --                                                                       --
  5. --  Stored function to insert ERwin entities into the                      --
  6. --  Designer 2000 dictionary                                               --
  7. ------------------------------------------------------------------------- */
  8. CREATE OR REPLACE FUNCTION ERWENTIN (pName CI_ENTITIES.NAME%TYPE,
  9.                       pApp  CI_APPLICATION_SYSTEMS.NAME%TYPE,
  10.                       pVersion CI_APPLICATION_SYSTEMS.VERSION%TYPE,
  11.                       pEntityID    CI_ENTITIES.ID%TYPE)
  12.         RETURN CI_ENTITIES.ID%TYPE
  13. AS
  14.         TYPE recApp IS RECORD
  15.             (ID            CI_APPLICATION_SYSTEMS.ID%TYPE,
  16.              NAME         CI_APPLICATION_SYSTEMS.NAME%TYPE,
  17.              VERSION    CI_APPLICATION_SYSTEMS.VERSION%TYPE);
  18.         TYPE recEntity IS RECORD
  19.             (APPLICATION_SYSTEM_OWNED_BY   CI_ENTITIES.APPLICATION_SYSTEM_OWNED_BY%TYPE,
  20.              ID CI_ENTITIES.ID%TYPE,
  21.              NAME CI_ENTITIES.NAME%TYPE);
  22.         prEntity        recEntity;
  23.         stEntity        cioentity.data;
  24.         workingAppID    CI_APPLICATION_SYSTEMS.ID%TYPE;
  25.           act_status        varchar2(100);
  26.         act_warnings    varchar2(100);
  27. BEGIN
  28.     if cdapi.initialized = false then
  29.         RETURN -1;
  30.     end if;
  31.     BEGIN
  32.         IF pVersion = 0 THEN 
  33.             SELECT APPLICATION_SYSTEM_OWNED_BY, ID, NAME INTO prEntity
  34.                 FROM CI_ENTITIES
  35.                 WHERE    CI_ENTITIES.NAME=UPPER(pName) 
  36.                 AND CI_ENTITIES.APPLICATION_SYSTEM_OWNED_BY =
  37.                 (SELECT ID FROM CI_APPLICATION_SYSTEMS WHERE 
  38.                 CI_APPLICATION_SYSTEMS.NAME = UPPER(pApp) AND
  39.                 CI_APPLICATION_SYSTEMS.LATEST_VERSION_FLAG='Y');
  40.         ELSE
  41.             SELECT APPLICATION_SYSTEM_OWNED_BY, ID, NAME INTO prEntity
  42.                 FROM CI_ENTITIES
  43.                 WHERE    CI_ENTITIES.NAME=UPPER(pName) 
  44.                 AND CI_ENTITIES.APPLICATION_SYSTEM_OWNED_BY =
  45.                 (SELECT ID FROM CI_APPLICATION_SYSTEMS WHERE 
  46.                 CI_APPLICATION_SYSTEMS.NAME = UPPER(pApp) AND
  47.                 CI_APPLICATION_SYSTEMS.VERSION=pVersion);
  48.         END IF;
  49.         dbms_output.put_line('Entity already exists');
  50.         RETURN prEntity.ID;
  51.     EXCEPTION
  52.         WHEN NO_DATA_FOUND THEN
  53.             stEntity.v.NAME := pName;
  54.             stEntity.i.NAME := true;
  55.             BEGIN
  56.                 cdapi.open_activity;
  57.                 cioentity.ins(null,stEntity);
  58.                 cdapi.validate_activity(act_status, act_warnings);
  59.                 cdapi.close_activity(act_status);
  60.                 if act_status != 'Y' then
  61.                     cdapi.abort_activity;
  62.                     RETURN -1;
  63.                 else
  64.                     RETURN stEntity.v.ID;
  65.                 end if;
  66.             EXCEPTION
  67.                 WHEN OTHERS THEN
  68.                     if cdapi.stacksize > 0 then 
  69.                         if cdapi.activity is not null then 
  70.                             cdapi.abort_activity;
  71.                         end if;
  72.                     else
  73.                         if cdapi.activity is not null then 
  74.                             cdapi.abort_activity;
  75.                         end if;
  76.                     end if;
  77.                     RETURN  -1;
  78.             END;                    
  79.     END;
  80. END ERWENTIN;
  81. /
  82.