存储过程实例

 

存储过程实例:

PROCEDURE CODEBATCHINSERTDC(startcode     in varchar2,
                              endcode       in varchar2,
                              codepoolid    in varchar2,
                              codetype      in varchar2,
                              codesubtype   in varchar2,
                              username      in varchar2,
                              TESTROOM      in varchar2,
                              LOCOBJID      in varchar2,
                              RESERVELEVEL  in number,
                              LONG_FUNCTION in number,
                              CHARGE        in number,
                              CONTROL_WAY   in number,
                              BIT_LEN       in varchar2,
                              START_BIT_LEN in number,
                              COMMENTS      in varchar2,
                              USING         in number,
                              LIFECYCLE     in number,
                              DESCNAME      in varchar2,
                              ORDERNUM      in varchar2) is
    VM_CODECOUNT varchar2(20);
    EXISTSCODE   EXCEPTION;
    NUMISTOLARGE EXCEPTION;
    VM_CODEID     VARCHAR2(20);
    VM_MES        VARCHAR2(200);
    i             number;
    VM_ACCOUNTPIN varchar2(200);
    type NODEID_CUR_TYPE is ref cursor return c_codepoolentity%rowtype;
    NODEID_CUR          NODEID_CUR_TYPE;
    NODEID_RECORD       c_codepoolentity%rowtype;
    VM_CODEPOOLTYPE_ID  number;
    VM_AREA_ID          number;
    VM_CODETYPE         number;
    VM_CODELIFE_DEFAULT number;
    VM_CODELIFE2        number;
    VM_CODELIFE_TEMP    number;
    CODEPOOL_START      NUMBER;
    CODEPOOL_END        NUMBER;
    codesubtype_key     varchar2(10); --purdo1.0-9443
    V_COUNT             NUMBER;
    V_USING             NUMBER;
    V_RESERVELEVEL      number;
    V_LIFECYCLE         NUMBER;
    V_LONG_FUNCTION     NUMBER;
    v_CHARGE            NUMBER;
    V_CONTROL_WAY       NUMBER;
    V_BIT_LEN           VARCHAR2(255);
    V_START_BIT_LEN     NUMBER;
    V_COMMENTS          vARCHAR2(255);
    VM_NODE_ID_LIST     CODE_CODEPOOLID_LIST;
    V_ORDERNUM          varchar2(30);
    v_index             number;
    V_OFFICENN          number;
  BEGIN
    if (codetype != 114004) then
      if (((endcode - startcode) + 1) > 10000) then
        RAISE NUMISTOLARGE;
      end if;
    end if;
    --select count(0) INTO VM_CODECOUNT from c_code where code between to_number(startcode) and to_number(endcode) and codetype_id = codetype;
    /*select checkCodeCount(startcode,endcode,codetype,codesubtype)into VM_CODECOUNT from dual;
    IF (VM_CODECOUNT>0) THEN
      RAISE EXISTSCODE;
    END IF;*/
    i          := to_number(startcode);
    VM_AREA_ID := LOCOBJID;
  
    VM_CODELIFE_DEFAULT := 4965;
    VM_CODELIFE2        := 4964;
    VM_CODELIFE_TEMP    := VM_CODELIFE_DEFAULT;
  
    if VM_CODEPOOLTYPE_ID = 115000 then
      select t.logiccodetype
        into VM_CODETYPE
        from ext_codepool t
       where t.id = codepoolid;
    
      if VM_CODETYPE = 4884 then
        VM_CODELIFE_TEMP := VM_CODELIFE2;
      else
        VM_CODELIFE_TEMP := VM_CODELIFE_DEFAULT;
      end if;
    end if;
    select to_number(substr(CPP.OFFICENUMBER_NAME, 1, 1))
      into V_OFFICENN
      from C_CODEPOOL CPP
     where CPP.ID = codepoolid;
    V_USING         := to_number(USING);
    V_RESERVELEVEL  := RESERVELEVEL;
    V_LIFECYCLE     := LIFECYCLE;
    V_LONG_FUNCTION := LONG_FUNCTION;
    v_CHARGE        := CHARGE;
    V_CONTROL_WAY   := CONTROL_WAY;
    V_BIT_LEN       := BIT_LEN;
    V_START_BIT_LEN := START_BIT_LEN;
    V_COMMENTS      := COMMENTS;
  
    if ((V_USING = f_get_dictionaryid('用途', '20', 'CDMA') or
       V_USING = f_get_dictionaryid('用途', '21', 'CDMA2000') or
       V_USING = f_get_dictionaryid('用途', '22', 'GSM') or
       V_USING = f_get_dictionaryid('用途', '23', 'TD-SCDMA') or
       V_USING = f_get_dictionaryid('用途', '24', 'WCDMA'))) then
      v_index := 1;
    else
      v_index := 0;
    end if;
    while (i <= to_number(endcode)) loop
      IF (codetype = 114003) THEN
        select count(0)
          INTO VM_CODECOUNT
          from c_code
         where code_val = i
           AND codetype_id = 114003;
      ELSIF (codetype = 114004) THEN
        select count(0)
          INTO VM_CODECOUNT
          from c_code
         where code_val = i
           AND codetype_id = 114004;
      ELSE
        select count(0)
          INTO VM_CODECOUNT
          from c_code
         where code_val = i
           AND codetype_id != 114004;
      END IF;
      /* if(VM_CODECOUNT > 0 and v_index=0) then
       select MIN(ID) INTO VM_CODEID from c_code where code_val = i;
        IF(RESERVELEVEL != 4975) THEN
       update  c_code set codetype_id = codetype,Codepool_Id = codepoolid,RESERVELEVEL = V_RESERVELEVEL,LONG_FUNCTION = V_LONG_FUNCTION,CHARGE = V_CHARGE,CONTROL_WAY = V_CONTROL_WAY,BIT_LEN = V_BIT_LEN,START_BIT_LEN = V_START_BIT_LEN,COMMENTS = V_COMMENTS,USING = V_USING,LIFECYCLE = V_LIFECYCLE where id = VM_CODEID;
       ELSE
         update c_code set codetype_id = codetype,Codepool_Id = codepoolid,RESERVELEVEL = V_RESERVELEVEL,LONG_FUNCTION = V_LONG_FUNCTION,Reserver = username,CHARGE = V_CHARGE,CONTROL_WAY = V_CONTROL_WAY,BIT_LEN = V_BIT_LEN,START_BIT_LEN = V_START_BIT_LEN,COMMENTS = V_COMMENTS,USING = V_USING,LIFECYCLE = V_LIFECYCLE,RESERVETIME = sysdate where id = VM_CODEID;
         END IF;
      ELSE*/
      select seq_c_code.nextval into VM_CODEID FROM DUAL;
      IF (codetype = 114017) THEN
        --LocalCode
        IF (RESERVELEVEL != 4975) THEN
          insert into c_code
            (id,
             name,
             code,
             code_val,
             createdate,
             editdate,
             creator,
             editor,
             version,
             codetype_id,
             Codepool_Id,
             location_id,
             servicestatus,
             AREA_ID,
             LOCALCODETYPE,
             RESERVELEVEL,
             LONG_FUNCTION,
             CHARGE,
             CONTROL_WAY,
             BIT_LEN,
             START_BIT_LEN,
             COMMENTS,
             USING,
             LIFECYCLE)
          values
            (VM_CODEID,
             i,
             i,
             i,
             sysdate,
             sysdate,
             username,
             username,
             '1',
             codetype,
             codepoolid,
             TESTROOM,
             f_get_dictionaryid('业务状态', '0', '空闲'),
             VM_AREA_ID,
             codesubtype,
             RESERVELEVEL,
             LONG_FUNCTION,
             CHARGE,
             CONTROL_WAY,
             BIT_LEN,
             START_BIT_LEN,
             COMMENTS,
             USING,
             LIFECYCLE);
        ELSE
          insert into c_code
            (id,
             name,
             code,
             code_val,
             createdate,
             editdate,
             creator,
             editor,
             version,
             codetype_id,
             Codepool_Id,
             location_id,
             servicestatus,
             AREA_ID,
             LOCALCODETYPE,
             RESERVELEVEL,
             LONG_FUNCTION,
             CHARGE,
             CONTROL_WAY,
             BIT_LEN,
             START_BIT_LEN,
             COMMENTS,
             RESERVETIME,
             USING,
             LIFECYCLE,
             Reserver)
          values
            (VM_CODEID,
             i,
             i,
             i,
             sysdate,
             sysdate,
             username,
             username,
             '1',
             codetype,
             codepoolid,
             TESTROOM,
             f_get_dictionaryid('业务状态', '0', '空闲'),
             VM_AREA_ID,
             codesubtype,
             RESERVELEVEL,
             LONG_FUNCTION,
             CHARGE,
             CONTROL_WAY,
             BIT_LEN,
             START_BIT_LEN,
             COMMENTS,
             sysdate,
             USING,
             LIFECYCLE,
             username);
        END IF;
      ELSIF (codetype = 114003) THEN
        --LocalCode
        --insert into ext_code(id,LOCALCODETYPE) values (VM_CODEID, codesubtype);
        IF (RESERVELEVEL != 4975) THEN
          IF (v_index = 1 AND V_OFFICENN = 0) THEN
            insert into c_code
              (id,
               name,
               code,
               code_val,
               createdate,
               editdate,
               creator,
               editor,
               version,
               codetype_id,
               Codepool_Id,
               location_id,
               servicestatus,
               AREA_ID,
               LOCALCODETYPE,
               RESERVELEVEL,
               LONG_FUNCTION,
               CHARGE,
               CONTROL_WAY,
               BIT_LEN,
               START_BIT_LEN,
               COMMENTS,
               USING,
               LIFECYCLE)
            values
              (VM_CODEID,
               '0' || i,
               '0' || i,
               i,
               sysdate,
               sysdate,
               username,
               username,
               '1',
               codetype,
               codepoolid,
               TESTROOM,
               f_get_dictionaryid('业务状态', '0', '空闲'),
               VM_AREA_ID,
               codesubtype,
               RESERVELEVEL,
               LONG_FUNCTION,
               CHARGE,
               CONTROL_WAY,
               BIT_LEN,
               START_BIT_LEN,
               COMMENTS,
               USING,
               LIFECYCLE);
          ELSE
            insert into c_code
              (id,
               name,
               code,
               code_val,
               createdate,
               editdate,
               creator,
               editor,
               version,
               codetype_id,
               Codepool_Id,
               location_id,
               servicestatus,
               AREA_ID,
               LOCALCODETYPE,
               RESERVELEVEL,
               LONG_FUNCTION,
               CHARGE,
               CONTROL_WAY,
               BIT_LEN,
               START_BIT_LEN,
               COMMENTS,
               USING,
               LIFECYCLE)
            values
              (VM_CODEID,
               i,
               i,
               i,
               sysdate,
               sysdate,
               username,
               username,
               '1',
               codetype,
               codepoolid,
               TESTROOM,
               f_get_dictionaryid('业务状态', '0', '空闲'),
               VM_AREA_ID,
               codesubtype,
               RESERVELEVEL,
               LONG_FUNCTION,
               CHARGE,
               CONTROL_WAY,
               BIT_LEN,
               START_BIT_LEN,
               COMMENTS,
               USING,
               LIFECYCLE);
          END IF;
        ELSE
          IF (v_index = 1 AND V_OFFICENN = 0) THEN
            insert into c_code
              (id,
               name,
               code,
               code_val,
               createdate,
               editdate,
               creator,
               editor,
               version,
               codetype_id,
               Codepool_Id,
               location_id,
               servicestatus,
               AREA_ID,
               LOCALCODETYPE,
               RESERVELEVEL,
               LONG_FUNCTION,
               CHARGE,
               CONTROL_WAY,
               BIT_LEN,
               START_BIT_LEN,
               COMMENTS,
               RESERVETIME,
               USING,
               Logiccodetype,
               LIFECYCLE,
               Reserver)
            values
              (VM_CODEID,
               '0' || i,
               '0' || i,
               i,
               sysdate,
               sysdate,
               username,
               username,
               '1',
               codetype,
               codepoolid,
               TESTROOM,
               f_get_dictionaryid('业务状态', '0', '空闲'),
               VM_AREA_ID,
               codesubtype,
               RESERVELEVEL,
               LONG_FUNCTION,
               CHARGE,
               CONTROL_WAY,
               BIT_LEN,
               START_BIT_LEN,
               COMMENTS,
               sysdate,
               USING,
               USING,
               LIFECYCLE,
               username);
          ELSE
            insert into c_code
              (id,
               name,
               code,
               code_val,
               createdate,
               editdate,
               creator,
               editor,
               version,
               codetype_id,
               Codepool_Id,
               location_id,
               servicestatus,
               AREA_ID,
               LOCALCODETYPE,
               RESERVELEVEL,
               LONG_FUNCTION,
               CHARGE,
               CONTROL_WAY,
               BIT_LEN,
               START_BIT_LEN,
               COMMENTS,
               RESERVETIME,
               USING,
               Logiccodetype,
               LIFECYCLE,
               Reserver)
            values
              (VM_CODEID,
               i,
               i,
               i,
               sysdate,
               sysdate,
               username,
               username,
               '1',
               codetype,
               codepoolid,
               TESTROOM,
               f_get_dictionaryid('业务状态', '0', '空闲'),
               VM_AREA_ID,
               codesubtype,
               RESERVELEVEL,
               LONG_FUNCTION,
               CHARGE,
               CONTROL_WAY,
               BIT_LEN,
               START_BIT_LEN,
               COMMENTS,
               sysdate,
               USING,
               USING,
               LIFECYCLE,
               username);
          END IF;
        END IF;
      ELSIF (codetype = 114004) THEN
        --LocalCode
        --insert into ext_code(id,LOCALCODETYPE) values (VM_CODEID, codesubtype);
        IF (RESERVELEVEL != 4975) THEN
          insert into c_code
            (id,
             name,
             code,
             code_val,
             createdate,
             editdate,
             creator,
             editor,
             version,
             codetype_id,
             Codepool_Id,
             location_id,
             servicestatus,
             AREA_ID,
             LOCALCODETYPE,
             RESERVELEVEL,
             LONG_FUNCTION,
             CHARGE,
             CONTROL_WAY,
             BIT_LEN,
             START_BIT_LEN,
             COMMENTS,
             USING,
             LIFECYCLE)
          values
            (VM_CODEID,
             i,
             i,
             i,
             sysdate,
             sysdate,
             username,
             username,
             '1',
             codetype,
             codepoolid,
             TESTROOM,
             f_get_dictionaryid('业务状态', '0', '空闲'),
             VM_AREA_ID,
             codesubtype,
             RESERVELEVEL,
             LONG_FUNCTION,
             CHARGE,
             CONTROL_WAY,
             BIT_LEN,
             START_BIT_LEN,
             COMMENTS,
             USING,
             LIFECYCLE);
        ELSE
          insert into c_code
            (id,
             name,
             code,
             code_val,
             createdate,
             editdate,
             creator,
             editor,
             version,
             codetype_id,
             Codepool_Id,
             location_id,
             servicestatus,
             AREA_ID,
             LOCALCODETYPE,
             RESERVELEVEL,
             LONG_FUNCTION,
             CHARGE,
             CONTROL_WAY,
             BIT_LEN,
             START_BIT_LEN,
             COMMENTS,
             RESERVETIME,
             USING,
             Logiccodetype,
             LIFECYCLE,
             Reserver)
          values
            (VM_CODEID,
             i,
             i,
             i,
             sysdate,
             sysdate,
             username,
             username,
             '1',
             codetype,
             codepoolid,
             TESTROOM,
             f_get_dictionaryid('业务状态', '0', '空闲'),
             VM_AREA_ID,
             codesubtype,
             RESERVELEVEL,
             LONG_FUNCTION,
             CHARGE,
             CONTROL_WAY,
             BIT_LEN,
             START_BIT_LEN,
             COMMENTS,
             sysdate,
             USING,
             USING,
             LIFECYCLE,
             username);
        END IF;
      ELSIF (codetype = 114011) THEN
        --ShortCode
        --insert into ext_code(id,LOCALCODETYPE) values (VM_CODEID, codesubtype);
        IF (RESERVELEVEL != 4975) THEN
          insert into c_code
            (id,
             name,
             code,
             code_val,
             createdate,
             editdate,
             creator,
             editor,
             version,
             codetype_id,
             Codepool_Id,
             location_id,
             servicestatus,
             AREA_ID,
             LOCALCODETYPE,
             RESERVELEVEL,
             LONG_FUNCTION,
             CHARGE,
             CONTROL_WAY,
             BIT_LEN,
             START_BIT_LEN,
             COMMENTS,
             USING,
             LIFECYCLE)
          values
            (VM_CODEID,
             i,
             i,
             i,
             sysdate,
             sysdate,
             username,
             username,
             '1',
             codetype,
             codepoolid,
             TESTROOM,
             f_get_dictionaryid('业务状态', '0', '空闲'),
             VM_AREA_ID,
             codesubtype,
             RESERVELEVEL,
             LONG_FUNCTION,
             CHARGE,
             CONTROL_WAY,
             BIT_LEN,
             START_BIT_LEN,
             COMMENTS,
             USING,
             LIFECYCLE);
        ELSE
          insert into c_code
            (id,
             name,
             code,
             code_val,
             createdate,
             editdate,
             creator,
             editor,
             version,
             codetype_id,
             Codepool_Id,
             location_id,
             servicestatus,
             AREA_ID,
             LOCALCODETYPE,
             RESERVELEVEL,
             LONG_FUNCTION,
             CHARGE,
             CONTROL_WAY,
             BIT_LEN,
             START_BIT_LEN,
             COMMENTS,
             RESERVETIME,
             USING,
             LIFECYCLE,
             Reserver)
          values
            (VM_CODEID,
             i,
             i,
             i,
             sysdate,
             sysdate,
             username,
             username,
             '1',
             codetype,
             codepoolid,
             TESTROOM,
             f_get_dictionaryid('业务状态', '0', '空闲'),
             VM_AREA_ID,
             codesubtype,
             RESERVELEVEL,
             LONG_FUNCTION,
             CHARGE,
             CONTROL_WAY,
             BIT_LEN,
             START_BIT_LEN,
             COMMENTS,
             sysdate,
             USING,
             LIFECYCLE,
             username);
          open NODEID_CUR for
            select coen.*
              from c_codepoolentity coen
             where coen.codepool_id =
                   (select a.id from c_codepool a where a.startcode = i);
        END IF;
        loop
          fetch NODEID_CUR
            into NODEID_RECORD;
          exit when NODEID_CUR%notfound;
          insert into c_codeentity
            (id, codetype_id, code_id, abstractentity_id, entity_id)
          values
            (seq_c_codeentity.nextval,
             codetype,
             VM_CODEID,
             102,
             NODEID_RECORD.Entity_Id);
        end loop;
        close NODEID_CUR;
      ELSIF (codetype = 114019) THEN
        --LocalCode
        --insert into ext_code(id,LOCALCODETYPE) values (VM_CODEID, codesubtype);
        IF (RESERVELEVEL != 4975) THEN
          insert into c_code
            (id,
             name,
             code,
             code_val,
             createdate,
             editdate,
             creator,
             editor,
             version,
             codetype_id,
             Codepool_Id,
             location_id,
             servicestatus,
             AREA_ID,
             LOCALCODETYPE,
             RESERVELEVEL,
             LONG_FUNCTION,
             CHARGE,
             CONTROL_WAY,
             BIT_LEN,
             START_BIT_LEN,
             COMMENTS,
             USING,
             LIFECYCLE)
          values
            (VM_CODEID,
             i,
             i,
             i,
             sysdate,
             sysdate,
             username,
             username,
             '1',
             codetype,
             codepoolid,
             TESTROOM,
             f_get_dictionaryid('业务状态', '0', '空闲'),
             VM_AREA_ID,
             codesubtype,
             RESERVELEVEL,
             LONG_FUNCTION,
             CHARGE,
             CONTROL_WAY,
             BIT_LEN,
             START_BIT_LEN,
             COMMENTS,
             USING,
             LIFECYCLE);
        ELSE
          insert into c_code
            (id,
             name,
             code,
             code_val,
             createdate,
             editdate,
             creator,
             editor,
             version,
             codetype_id,
             Codepool_Id,
             location_id,
             servicestatus,
             AREA_ID,
             LOCALCODETYPE,
             RESERVELEVEL,
             LONG_FUNCTION,
             CHARGE,
             CONTROL_WAY,
             BIT_LEN,
             START_BIT_LEN,
             COMMENTS,
             RESERVETIME,
             USING,
             LIFECYCLE,
             Reserver)
          values
            (VM_CODEID,
             i,
             i,
             i,
             sysdate,
             sysdate,
             username,
             username,
             '1',
             codetype,
             codepoolid,
             TESTROOM,
             f_get_dictionaryid('业务状态', '0', '空闲'),
             VM_AREA_ID,
             codesubtype,
             RESERVELEVEL,
             LONG_FUNCTION,
             CHARGE,
             CONTROL_WAY,
             BIT_LEN,
             START_BIT_LEN,
             COMMENTS,
             sysdate,
             USING,
             LIFECYCLE,
             username);
        END IF;
      END IF;
      insert into ext_code (id) values (VM_CODEID); --扩展表上这个还是要的!!
      insert into S_CODEOPERATELOG
        (id,
         WORKORDERNUMBER,
         OPERATOR,
         OPERATIONCONTENT,
         OPERATIONDATE,
         CODE_ID,
         CODE_NAME)
      values
        (seq_s_codeoperatelog.nextval,
         ORDERNUM,
         username,
         DESCNAME || i,
         sysdate,
         VM_CODEID,
         i);
    
      /* END IF;*/
    
      i := i + 1;
    end loop;
    /* 号码段扩容 Purdo1.0-8707  */
    SELECT CP.STARTCODE
      INTO CODEPOOL_START
      FROM C_CODEPOOL CP
     WHERE ID = codepoolid;
    SELECT CP.ENDCODE
      INTO CODEPOOL_END
      FROM C_CODEPOOL CP
     WHERE ID = codepoolid;
    IF (startcode < CODEPOOL_START) THEN
      CODEPOOL_START := startcode;
      UPDATE C_CODEPOOL CP
         SET CP.STARTCODE = CODEPOOL_START
       WHERE CP.ID = codepoolid;
    END IF;
    IF (endcode > CODEPOOL_END) THEN
      CODEPOOL_END := endcode;
      UPDATE C_CODEPOOL CP
         SET CP.Endcode = CODEPOOL_END
       WHERE CP.ID = codepoolid;
    END IF;
    /*   Purdo1.0-8707  end  */
    PKG_CODE.CodeAnalyze(to_number(startcode),
                         to_number(endcode),
                         codetype,
                         username,
                         VM_MES);
  
  END;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我才是真的封不觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值