⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pkg_ken_etl.pck

📁 数据迁移使用的ETL程序包
💻 PCK
📖 第 1 页 / 共 5 页
字号:
  
    if v_FailRecord <> 0 then
      pkg_ken_util.prc_upd_lps(v_ProcessName,
                               v_SucceedRecord,
                               v_FailRecord,
                               'SP');
    else
      pkg_ken_util.prc_upd_lps(v_ProcessName,
                               v_SucceedRecord,
                               v_FailRecord,
                               'CM');
    
    end if;
    commit;
    close c_ACCT;
  EXCEPTION
    WHEN OTHERS THEN
      close c_ACCT;
      pkg_ken_util.prc_handle_exception(v_ProcessName, p_MODE, v_RowID);
  END PRC_T_BA;

  /****************  SI  ****************************/
  PROCEDURE PRC_T_SI(p_CITY       IN VARCHAR2,
                     p_PROCESSNUM IN NUMBER,
                     p_CURRENTNUM IN NUMBER,
                     p_MODE       IN VARCHAR2) AS
  
    /*constant variable*/
    c_CommitCounter CONSTANT NUMBER := 5000;
    c_Domain        constant varchar2(3) := 'SI';
  
    /* related to workflow*/
    l_ProcessName   varchar2(30) := 'PRC_T_' || c_Domain || '_' || p_CITY || '_' ||
                                    p_PROCESSNUM || '_' || p_CURRENTNUM;
    l_TotalRecord   LOG_PROCESS_STATUS.Total_Rec%Type;
    l_SucceedRecord LOG_PROCESS_STATUS.succeed_rec%TYPE;
    l_FailRecord    LOG_PROCESS_STATUS.fail_rec%TYPE;
    l_RecordStart   NUMBER := pkg_ken_util.fun_get_start_id(l_ProcessName);
    l_RecordEnd     NUMBER := pkg_ken_util.fun_get_end_id(l_ProcessName);
    v_RowId         src_serv.row_id%type;
  
    /* variable related with kenan table */
    l_ParertID           CMF.parent_id%TYPE;
    l_SubscrNo           SERVICE.subscr_no%TYPE;
    l_SeqServiceViewID   SERVICE.view_id%TYPE;
    l_ServiceViewID      SERVICE.view_id%TYPE;
    l_ServiceID2         CUSTOMER_ID_EQUIP_MAP.external_id%TYPE;
    l_ServiceNum         SRC_SERV_NUM.SERV_NUM%TYPE;
    l_ServiceNum972      SRC_SERV_NUM.SERV_NUM%TYPE;
    l_UnEncodeServiceNum SRC_SERV_NUM.Serv_Num%TYPE;
    l_EncodeServiceNum   SRC_SERV_NUM.Serv_Num%TYPE;
    l_status             SERVICE_STATUS.STATUS_ID%TYPE;
    l_StatusReason       SERVICE_STATUS.Status_Reason_Id%Type;
    l_ClassServiceCode   smallint;
    l_ECC                smallint;
    l_ETC                smallint;
    l_RateClass          SERVICE.Rate_Class%TYPE;
    l_SuspendDefault2    SRC_serv.Suspend_LOSS%Type;
    l_SuspendExtend      cfg_lov_map.ken_code%TYPE;
    l_ServCustID         src_serv.serv_cust_id%TYPE;
    l_EncodeOldServNum   src_serv_chg_num.old_serv_num%type;
    l_CurOldServNum      src_serv_chg_num.old_serv_num%type;
    l_CurNewServNum      src_serv_chg_num.new_serv_num%type;
    l_CurChgDate         date;
    l_ChgNumTime         smallint;
    l_SeqMapViewID       EXTERNAL_ID_EQUIP_MAP_VIEW.VIEW_ID%TYPE;
    l_MapViewID          CUSTOMER_ID_EQUIP_MAP_VIEW.VIEW_ID%TYPE;
  
    l_ExtActiveDt_Chg   date;
    l_ExtInActiveDt_Chg date;
    l_NextNewServNum    src_serv_chg_num.new_serv_num%type;
    l_IsCurrent         customer_id_equip_map.is_current%type;
    l_InactiveDate      service_status.inactive_dt%type;
    indx                number(2);
    l_ServiceActiveDt   date;
    l_ServiceInactiveDt date;
    l_NextChgDt         date;
    l_TempActiveDt      date;
    l_CountExternalType number;
    l_ServId            src_serv_num.serv_id%type;
    l_ServNumType       src_serv_num.serv_num_type%type;
    l_ServRevCostCtr    number;
  
    /*variable related to MSA*/
    l_ServerID EXTERNAL_ID_ACCT_MAP.server_id%TYPE; --server id of customer db
    l_DBUSER   CFG_KEN_MSA.MIG_SCHEMA%TYPE;
  
    /* declare a cursor for src_serv
    */
    CURSOR c_SI IS
      SELECT *
        FROM SRC_SERV
       WHERE is_processed = p_MODE
         AND (src_id = p_CITY || '97' or src_id = p_CITY || 'Bl')
         AND (ROW_ID >= l_RecordStart AND ROW_ID <= l_RecordEnd);
    rec_si c_SI%rowtype;
  
  BEGIN
    pkg_ken_util.PRC_STREAM_INFO(l_ProcessName,
                                 l_TotalRecord,
                                 l_SucceedRecord,
                                 l_FailRecord);
  
    OPEN c_SI;
    <<NEXTLOOP01555>>
    LOOP
      BEGIN
        FETCH c_SI
          INTO rec_si;
        EXIT WHEN c_SI%NOTFOUND;
      EXCEPTION
        WHEN OTHERS THEN
          IF SQLCODE = -1555 THEN
            ROLLBACK;
            CLOSE c_SI;
            pkg_ken_util.PRC_STREAM_INFO(l_ProcessName,
                                         l_TotalRecord,
                                         l_SucceedRecord,
                                         l_FailRecord);
            OPEN c_SI;
            GOTO NEXTLOOP01555;
          ELSE
            RAISE;
          END IF;
      END;
      begin
        v_RowId := rec_si.row_id;
        pkg_ken_migapi.prc_clear_si;
        indx                := 1;
        l_ServiceActiveDt   := trunc(rec_si.START_DT);
        l_ServiceInactiveDt := trunc(rec_si.END_DT);
      
        l_Status    := to_number(pkg_ken_util.FUN_CFG_LOV_MAP(rec_si.SRC_ID,
                                                              'STATUS',
                                                              rec_si.STATUS));
        l_RateClass := to_number(pkg_ken_util.FUN_CFG_LOV_MAP(rec_si.SRC_ID,
                                                              'SERV_AREA',
                                                              rec_si.SERV_AREA));
      
        l_ServRevCostCtr := to_number(pkg_ken_util.FUN_CFG_LOV_MAP(rec_si.SRC_ID,
                                                                   'SERV_REV_COST_CTR',
                                                                   rec_SI.SERV_REV_COST_CTR));
      
        pkg_ken_util.PRC_PARENT_INFO('SRC_ACCT_STATUS',
                                     rec_si.SRC_ID,
                                     rec_si.ACCT_NBR_97,
                                     l_ParertID,
                                     l_ServerID,
                                     l_DBUSER);
      
        execute immediate 'select ' || PKG_KEN_UTIL.g_MIGCAT_Schema ||
                          'subscriber_id_seq_num_seq.nextval from DUAL'
          into l_SubscrNo;
        execute immediate 'select ' || l_DBUSER ||
                          'service_view_seq.nextval from DUAL'
          into l_SeqServiceViewID;
      
        l_ServiceViewID := l_SeqServiceViewID * 1000 + l_ServerID;
      
        /*************** get config information  ******************************************/
        begin
          EXECUTE IMMEDIATE 'SELECT class_of_service_code, equip_class_code, equip_type_code FROM ' ||
                            PKG_KEN_UTIL.g_MIGADM_Schema ||
                            'EMF_CONFIGURATION WHERE emf_config_id = :1'
            INTO l_ClassServiceCode, l_ECC, l_ETC
            USING TO_NUMBER(rec_si.EQUIP_TYPE);
        exception
          when no_data_found or too_many_rows then
            raise_application_error(-20301,
                                    'EMF_CONFIGURATION for SI is not correct');
        end;
      
        select DECODE(rec_si.SUSPEND_DEFAULT,
                      '正常',
                      'N',
                      '单向',
                      'S',
                      '双向',
                      'D')
          into l_SuspendDefault2
          from dual;
        l_SuspendExtend := rec_si.SUSPEND_INITIATIVE ||
                           rec_si.SUSPEND_PECCANCY || rec_si.SUSPEND_LOSS ||
                           l_SuspendDefault2 || 'N';
        if l_status = 1 then
          if rec_si.SUSPEND_INITIATIVE = 'Y' then
            l_status       := 3;
            l_StatusReason := 4;
            if l_ServiceActiveDt = trunc(rec_si.cr_sus_dt) then
              l_InactiveDate := add_months(l_ServiceActiveDt + 1 / 24 / 60,
                                           0);
            else
              l_InactiveDate := trunc(rec_si.cr_sus_dt);
            end if;
          else
            l_status       := 1;
            l_StatusReason := 1;
            l_InactiveDate := null;
          end if;
        elsif l_status = 2 then
          if l_ServiceActiveDt = l_ServiceInactiveDt then
            l_InactiveDate := add_months(l_ServiceInactiveDt + 1 / 24 / 60,
                                         0);
          else
            l_InactiveDate := l_ServiceInactiveDt;
          end if;
          if l_SuspendExtend = 'NNNNN' then
            l_StatusReason := 6;
          else
            l_StatusReason := -88;
          end if;
        end if;
      
        /* numbering service Number*/
        l_UnEncodeServiceNum := rec_si.SERV_NUM;
        l_EncodeServiceNum   := pkg_ken_util.FUN_ENCODE_SERVNUM(rec_si.SERV_NUM,
                                                                TO_NUMBER(rec_si.EQUIP_TYPE),
                                                                p_CITY);
      
        /******************  SERVICE , VIEW  ,  KEY  ***********************************************/
      
        pkg_ken_migapi.t_sv(1).view_id := l_ServiceViewID;
        pkg_ken_migapi.t_sv(1).view_status := 2;
        pkg_ken_migapi.t_sv(1).view_created_dt := rec_si.START_DT;
        pkg_ken_migapi.t_sv(1).view_effective_dt := rec_si.START_DT;
        pkg_ken_migapi.t_sv(1).intended_view_effective_dt := rec_si.START_DT;
        pkg_ken_migapi.t_sv(1).subscr_no := l_SubScrNo;
        pkg_ken_migapi.t_sv(1).subscr_no_resets := 0;
        pkg_ken_migapi.t_sv(1).chg_dt := rec_si.START_DT;
        pkg_ken_migapi.t_sv(1).chg_who := pkg_ken_util.g_Chg_Who;
        pkg_ken_migapi.t_sv(1).currency_code := 14;
        pkg_ken_migapi.t_sv(1).display_external_id_type := TO_NUMBER(rec_si.SERV_NUM_TYPE);
        pkg_ken_migapi.t_sv(1).emf_config_id := TO_NUMBER(rec_si.EQUIP_TYPE);
        pkg_ken_migapi.t_sv(1).exrate_class := 1;
        pkg_ken_migapi.t_sv(1).no_bill := 0;
        pkg_ken_migapi.t_sv(1).parent_account_no := l_ParertID;
        pkg_ken_migapi.t_sv(1).privacy_level := 0;
        pkg_ken_migapi.t_sv(1).rate_class := l_RateClass;
        pkg_ken_migapi.t_sv(1).rev_rcv_cost_ctr := l_ServRevCostCtr;
        pkg_ken_migapi.t_sv(1).service_lname := rec_si.CUST_NAME_1;
        pkg_ken_migapi.t_sv(1).service_address1 := rec_si.SERV_ADDR;
        pkg_ken_migapi.t_sv(1).service_city := rec_si.SERV_ADDR_CITY;
        pkg_ken_migapi.t_sv(1).service_county := rec_si.SERV_ADDR_COUNTY;
        pkg_ken_migapi.t_sv(1).service_state := rec_si.SERV_ADDR_STATE;
        pkg_ken_migapi.t_sv(1).service_zip := rec_si.SERV_ADDR_ZIPCODE;
        pkg_ken_migapi.t_sv(1).service_phone := substrb(rec_si.SERV_PHONE,
                                                        1,
                                                        20);
        pkg_ken_migapi.t_sv(1).service_country_code := 156;
        pkg_ken_migapi.t_sv(1).service_geocode := '156001000000000';
        pkg_ken_migapi.t_sv(1).is_prepaid := 0;
        pkg_ken_migapi.t_sv(1).service_active_dt := l_ServiceActiveDt;
        pkg_ken_migapi.t_sv(1).service_inactive_dt := l_ServiceInactiveDt;
        pkg_ken_migapi.t_sv(1).b_service_state := rec_si.B_SERV_ADDR_STATE;
        pkg_ken_migapi.t_sv(1).b_service_city := rec_si.B_SERV_ADDR_CITY;
        pkg_ken_migapi.t_sv(1).b_service_county := rec_si.B_SERV_ADDR_COUNTY;
        pkg_ken_migapi.t_sv(1).b_service_lname := NVL(rec_si.B_SERV_NAME,
                                                      '未知');
        pkg_ken_migapi.t_sv(1).b_service_address1 := nvl(rec_si.B_SERV_ADDR,
                                                         '未知');
        pkg_ken_migapi.t_sv(1).pop_units := rec_si.POP_UNITS;
        pkg_ken_migapi.t_sv(1).service_franchise_tax_code := 1;
      
        /********************  SERVICE_EXT_DATA  *********************************************************/
      
        pkg_ken_migapi.t_sed(1).view_id := l_ServiceViewID;
        pkg_ken_migapi.t_sed(1).param_id := 2;
        pkg_ken_migapi.t_sed(1).param_value := l_SuspendExtend;
        pkg_ken_migapi.t_sed(1).param_datatype := 2;
      
        --last updated
        pkg_ken_migapi.t_sed(2).view_id := l_Servic

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -