存儲過程造離散數據

平時我們造數據都是簡單的在代碼塊中造,begin for....end這種代碼塊去循環造數據,這樣造出來的數據單一,數據都是連續性的。

最近開發應老大要求造一些離散的數據。所以首先想到了使用存儲過程來生成一些離散的關聯的,重要的數據。

一:首先先創建packge:

create or replace package pkg_xiaomo_test_report_data is
  ---創建一個自定義數據類型
  TYPE USER_TYPE IS RECORD(
    USER_ID   VARCHAR2(84),
    USER_NAME VARCHAR2(64),
    DEPT_ID   VARCHAR2(60));

  PROCEDURE insert_begin(V_DATA_MIN_COUNT IN NUMBER,V_DATA_MAX_COUNT IN NUMBER,IS_OUT_OR_OHTER IN NUMBER);

  PROCEDURE insert_wrk_asc_wq(P_USER IN USER_TYPE, V_ACCT_SN IN NUMBER);

  PROCEDURE insert_wrk_asc_cm(P_USER IN USER_TYPE, V_ACCT_SN IN NUMBER);

  PROCEDURE insert_SYC_BSE_CP(V_ACCT_SN IN NUMBER);

  PROCEDURE insert_wrk_softp_calllist(V_ACCT_SN    IN NUMBER,
                                      V_PHONE_NUM1 IN VARCHAR2);

  PROCEDURE insert_wrk_bse_chg(P_USER IN USER_TYPE, V_ACCT_SN IN NUMBER);

  PROCEDURE insert_wrk_bse_ptp(P_USER IN USER_TYPE, V_ACCT_SN IN NUMBER);

  PROCEDURE insert_WRK_SOFTP_IVROBDT(V_PHONE_NUM1 IN VARCHAR2);

  PROCEDURE insert_wrk_softp_ivrobsec(V_ACCT_SN    IN NUMBER,
                                      V_PHONE_NUM1 IN VARCHAR2);

  PROCEDURE insert_wrk_bse_at(V_ACCT_SN IN NUMBER);

  PROCEDURE insert_wrk_nps_cal(P_USER       IN USER_TYPE,
                               V_PHONE_NUM1 IN VARCHAR2,
                               V_ACCT_SN    IN NUMBER);

  PROCEDURE insert_syc_bse_remark(P_USER IN USER_TYPE, V_ACCT_SN IN NUMBER);

  PROCEDURE insert_wrk_bse_onekey(P_USER IN USER_TYPE, V_ACCT_SN IN NUMBER);
 
  PROCEDURE update_history_data;
 
  PROCEDURE delete_history_data;
 
end pkg_xiaomo_test_report_data;

 

二:創建body

create or replace package body pkg_xiaomo_test_report_data is

  V_MODULE VARCHAR2(100) := 'pkg_cmpcc_test_report_data';
  V_BATNUM NUMBER(10); --當前處理人相關數量值
  /*  V_DATA_MIN_COUNT NUMBER(10); -- 開關造數最小值
    V_DATA_MAX_COUNT NUMBER(10); --開關造數最大值
  */
  V_ACCT_SN NUMBER(26); --賬戶流水號
  /*  V_ACCT_NO    VARCHAR2(84); --賬戶號,即合同號
  V_CUST_NO    VARCHAR2(84); -- 客戶號*/
  V_PHONE_NUM1 VARCHAR2(30); --電話號碼

  V_BUSI_RANDOM NUMBER(2);

  V_DATA_RANDOM NUMBER(2);

  PROCEDURE insert_begin(V_DATA_MIN_COUNT IN NUMBER,
                         V_DATA_MAX_COUNT IN NUMBER,
                         IS_OUT_OR_OHTER  IN NUMBER) IS
 
    V_ACTION VARCHAR2(50) := 'insert_begin';
 
/*    cursor c_iloan_type is
      select cd.item_value
        from SYC_BSE_CD cd
       where cd.code_id = 'ILOAN_BUSINESS_TYPE';*/
 
    CURSOR V_USER IS
      select r.user_id, r.user_name, r.dept_id
        from syc_smg_usr r
       where r.dept_id = 'ZS_CD_TEST_EFCT';
  BEGIN
 
    /*    SELECT to_number(CD.ITEM_VALUE)
     INTO V_DATA_MIN_COUNT
     FROM SYC_BSE_CD CD
    WHERE CD.CODE_ID = 'TEST_DATA_CONFIGURE'
      AND CD.ITEM_SEQ = '1';*/
 
    /*    SELECT to_number(CD.ITEM_VALUE)
     INTO V_DATA_MAX_COUNT
     FROM SYC_BSE_CD CD
    WHERE CD.CODE_ID = 'TEST_DATA_CONFIGURE'
      AND CD.ITEM_SEQ = '2';*/
 
    --循環催員作插入
    FOR V_CUR IN V_USER LOOP
      select trunc(dbms_random.value(V_DATA_MIN_COUNT, V_DATA_MAX_COUNT))
        into V_BATNUM
        from dual;
      --分別插入各個表數據
      for x in 1 .. V_BATNUM loop
        BEGIN
          V_ACCT_SN := trunc(dbms_random.value(0, 9999999999999999)) || x;
        
          V_BUSI_RANDOM := trunc(dbms_random.value(0, 5));
        
          V_DATA_RANDOM := trunc(dbms_random.value(0, 2));
        
          /*          V_ACCT_NO := trunc(dbms_random.value(0, 9999999999999999)) || x;
          
          V_CUST_NO := trunc(dbms_random.value(0, 9999999999999999)) || x;*/
        
          V_PHONE_NUM1 := trunc(dbms_random.value(0, 9999999999)) || x; --電話號碼
        
          insert_wrk_bse_at(V_ACCT_SN);
          IF IS_OUT_OR_OHTER = 0 THEN
            --跑OB數據
            --公共
            IF V_BUSI_RANDOM = 0 THEN
              insert_wrk_asc_wq(V_CUR, V_ACCT_SN);
            ELSE
              insert_wrk_asc_cm(V_CUR, V_ACCT_SN);
            END IF;
          
            insert_SYC_BSE_CP(V_ACCT_SN);
          
            --OUTBOUND
            insert_wrk_softp_calllist(V_ACCT_SN, V_PHONE_NUM1);
            insert_WRK_SOFTP_IVROBDT(V_PHONE_NUM1);
            insert_wrk_softp_ivrobsec(V_ACCT_SN, V_PHONE_NUM1);
            insert_wrk_bse_chg(V_CUR, V_ACCT_SN);
            insert_wrk_bse_ptp(V_CUR, V_ACCT_SN);
          
          ELSE
            --跑效能和產能
            --公共
            insert_wrk_asc_wq(V_CUR, V_ACCT_SN);
          
            --產能
            insert_wrk_nps_cal(V_CUR, V_PHONE_NUM1, V_ACCT_SN);
            insert_syc_bse_remark(V_CUR, V_ACCT_SN);
            insert_wrk_bse_onekey(V_CUR, V_ACCT_SN);
          
            --效能  
            insert_wrk_bse_chg(V_CUR, V_ACCT_SN);
            insert_wrk_bse_ptp(V_CUR, V_ACCT_SN);
          
          END IF;
        
          COMMIT;
        exception
          when OTHERS then
            CONTINUE;
            --記錄錯誤信息
            PKG_ph_yxd_cmp_LOG.ERROR_LOG(V_MODULE || '.' || V_ACTION, --存儲過程名
                                         'PROC', --錯誤分類
                                         'PUB', --業務類型
                                         SUBSTRB(SQLCODE, 1, 20), --ORACLE錯誤編號
                                         '催員ID:' || V_CUR.User_Id || ',' ||
                                         '錯誤標示' || SUBSTRB(SQLERRM, 1, 650)); --錯誤信息
        END;
      end loop;
    END LOOP;
 
  end insert_begin;

  PROCEDURE insert_wrk_asc_wq(P_USER IN USER_TYPE, V_ACCT_SN IN NUMBER) IS
 
  BEGIN
    insert into wrk_asc_wq
      (ID_KEY,
       BUSINESS_TYPE,
       ACCT_NO,
       ACCT_SN,
       GROUP_ID,
       USER_ID,
       AMOUNT,
       STATUS,
       COL_LEVEL,
       PREV_GROUP_ID,
       PREV_USER_ID,
       IS_OWNER,
       FLOW_TYPE,
       CREATED_BY,
       CREATED_DATE,
       UPDATED_BY,
       UPDATED_DATE,
       LAST_USER,
       LAST_USER_PRIORITY,
       LAST_USER_DEPT,
       VISITABLE_FLAG,
       ASSIGN_TYPE,
       MARK,
       COLOR)
    values
      (sys_guid(),
       decode(V_BUSI_RANDOM,
              1,
              'RB1',
              2,
              'RB2',
              3,
              'RB3',
              4,
              'RB4',
              0,
              'RB5',
              'RB5'),
       V_ACCT_SN,
       V_ACCT_SN,
       'ZS_CD_TEST_EFCT',
       P_USER.USER_ID,
       '',
       'U',
       '',
       '',
       '',
       '',
       '',
       'SYS',
       SYSDATE,
       'SYS',
       SYSDATE,
       '',
       '',
       '',
       '',
       '',
       '',
       '');
 
  exception
    when OTHERS then
      ROLLBACK;
      COMMIT;
    
  END insert_wrk_asc_wq;

  PROCEDURE insert_wrk_asc_cm(P_USER IN USER_TYPE, V_ACCT_SN IN NUMBER) IS
  BEGIN
    insert into wrk_asc_cm
      (ID_KEY,
       ACCT_SN,
       USER_ID,
       ACCT_NO,
       BUSINESS_TYPE,
       CUST_NAME,
       IN_QUEUE_DATE,
       PRE_USER_ID,
       OVERDUE_DAY,
       ENTRUSTING_CAPITAL,
       CHARGER_ID,
       DEPT_NAME,
       ENTRUSTING_COMPANY_NAME,
       ENTRUSTING_START_TIME,
       ENTRUSTING_END_TIME,
       CASE_TYPE,
       QUEUE_TYPE,
       CREATED_DATE,
       CREATED_BY,
       UPDATED_DATE,
       UPDATED_BY,
       AREA_ID,
       COMPANY_ID)
    values
      (sys_guid(),
       V_ACCT_SN,
       '',
       V_ACCT_SN,
       decode(V_BUSI_RANDOM,
              1,
              'RB1',
              2,
              'RB2',
              3,
              'RB3',
              4,
              'RB4',
              0,
              'RB5',
              'RB5'),
       '',
       sysdate,
       '',
       '328',
       '30600.46',
       '',
       '',
       '',
       '20180301',
       '20181228',
       'B',
       'Q_B_1516679719515_0',
       sysdate,
       P_USER.USER_ID,
       sysdate,
       P_USER.USER_ID,
       'SC',
       'ZHONGSHI');
 
  exception
    when OTHERS then
      ROLLBACK;
  END insert_wrk_asc_cm;

  PROCEDURE insert_SYC_BSE_CP(V_ACCT_SN IN NUMBER) IS
  BEGIN
    insert into SYC_BSE_CP
      (ID_KEY,
       BUSINESS_TYPE,
       ACCT_NO,
       COMPANY_ID,
       PERMISSION_START_TIME,
       PERMISSION_END_TIME,
       CREATED_BY,
       CREATED_DATE,
       UPDATED_BY,
       UPDATED_DATE)
    values
      (sys_guid(),
       decode(V_BUSI_RANDOM,
              1,
              'RB1',
              2,
              'RB2',
              3,
              'RB3',
              4,
              'RB4',
              0,
              'RB5',
              'RB5'),
       V_ACCT_SN,
       'ZHONGSHI',
       to_date('27-03-2018', 'dd-mm-yyyy'),
       to_date('31-05-2019', 'dd-mm-yyyy'),
       '定時客服同步',
       sysdate,
       '定時客服同步',
       sysdate);
 
  exception
    when OTHERS then
      ROLLBACK;
  END insert_SYC_BSE_CP;

  PROCEDURE insert_wrk_softp_calllist(V_ACCT_SN    IN NUMBER,
                                      V_PHONE_NUM1 IN VARCHAR2) IS
 
  BEGIN
    insert into wrk_softp_calllist
      (CALL_ID,
       TASK_ID,
       CALL_STATUS,
       CALL_BEGINTIME,
       CALL_ANSWERTIME,
       CALL_ENDTIME,
       AGENT_ID,
       AGENT_DN,
       PHONE_NUM1,
       PHONE_NUM2,
       PHONE_NUM3,
       PHONE_NUM4,
       PHONE_NUM5,
       PHONE_NUM6,
       PHONE_NUM7,
       PHONE_NUM8,
       PHONE_NUM9,
       PHONE_NUM10,
       CUSTOM_DATA1,
       CUSTOM_DATA2,
       CUSTOM_DATA3,
       CUSTOM_DATA4,
       CUSTOM_DATA5,
       CUSTOM_DATA6,
       CUSTOM_DATA7,
       CUSTOM_DATA8,
       CUSTOM_DATA9,
       CUSTOM_DATA10,
       THREAD_ID,
       CALL_ANI,
       CREATE_TIME,
       UPDATE_TIME,
       APPOINT_BEGIN,
       APPOINT_END,
       DATA_STATUS,
       CUSTOM_ID,
       BUSINESS_TYPE)
    values
      (V_ACCT_SN,
       '',
       '3',
       '',
       '',
       '',
       '',
       '',
       V_PHONE_NUM1,
       '',
       '',
       '',
       '',
       '',
       '',
       '',
       '',
       '',
       '',
       '',
       '',
       '',
       '',
       '',
       '',
       '',
       '',
       '',
       '',
       '',
       '',
       '',
       to_char(sysdate, 'yyyy-MM-dd'),
       '',
       '',
       V_ACCT_SN,
       decode(V_BUSI_RANDOM,
              1,
              'RB1',
              2,
              'RB2',
              3,
              'RB3',
              4,
              'RB4',
              0,
              'RB5',
              'RB5'));
 
  exception
    when OTHERS then
      ROLLBACK;
      commit;
  END insert_wrk_softp_calllist;

  PROCEDURE insert_wrk_bse_chg(P_USER IN USER_TYPE, V_ACCT_SN IN NUMBER) IS
  BEGIN
    insert into wrk_bse_chg
      (ID_KEY,
       USER_ID,
       ACCT_SN,
       PRE_CASE_TYPE,
       CUR_CASE_TYPE,
       BUSINESS_MONTH,
       CREATED_DATE,
       CREATED_BY,
       UPDATED_DATE,
       UPDATED_BY,
       BUSINESS_TYPE,
       ACCT_NO)
    values
      (sys_guid(),
       P_USER.USER_ID,
       V_ACCT_SN,
       decode(trunc(dbms_random.value(0, 5)),
              1,
              'N',
              2,
              'B',
              3,
              'B+',
              4,
              'A',
              0,
              'A+',
              'N'),
       decode(trunc(dbms_random.value(0, 5)),
              1,
              'N',
              2,
              'B',
              3,
              'B+',
              4,
              'A',
              0,
              'A+',
              'A+'),
       to_char(sysdate, 'YYYYMM'),
       SYSDATE,
       P_USER.USER_ID,
       SYSDATE,
       P_USER.USER_ID,
       decode(V_BUSI_RANDOM,
              1,
              'RB1',
              2,
              'RB2',
              3,
              'RB3',
              4,
              'RB4',
              0,
              'RB5',
              'RB5'),
       V_ACCT_SN);
 
  exception
    when OTHERS then
      ROLLBACK;
      COMMIT;
    
  END insert_wrk_bse_chg;

  PROCEDURE insert_wrk_bse_ptp(P_USER IN USER_TYPE, V_ACCT_SN IN NUMBER) IS
  BEGIN
    insert into wrk_bse_ptp
      (ID_KEY,
       BUSINESS_TYPE,
       ACCT_SN,
       ACTION_CODE,
       SEQ_NO,
       PAYMENT_METHOD,
       ISSMS,
       TOLERANCE_DAYS,
       PROMISE_AMOUNT,
       ACTUAL_AMOUNT,
       DUE_DATE,
       STATUS,
       IS_SHOWN,
       CREATED_BY,
       CREATED_DATE,
       UPDATED_BY,
       UPDATED_DATE,
       PAYSOURCE)
    values
      (sys_guid(),
       decode(V_BUSI_RANDOM,
              1,
              'RB1',
              2,
              'RB2',
              3,
              'RB3',
              4,
              'RB4',
              0,
              'RB5',
              'RB5'),
       V_ACCT_SN,
       'P', ---------------必須P
       V_ACCT_SN,
       '',
       'N',
       '',
       '10000',
       '',
       decode(trunc(dbms_random.value(0, 2)),
              0,
              '',
              1,
              to_char((sysdate - 1), 'YYYYMMDD'),
              to_char((sysdate - 1), 'YYYYMMDD')),
       decode(trunc(dbms_random.value(0, 2)), 0, 'B', 1, 'I', 'I'), -------------必須是I或B
       '',
       P_USER.USER_ID,
       SYSDATE,
       P_USER.USER_ID,
       SYSDATE,
       '');
 
  exception
    when OTHERS then
      ROLLBACK;
      COMMIT;
    
  END insert_wrk_bse_ptp;

  PROCEDURE insert_WRK_SOFTP_IVROBDT(V_PHONE_NUM1 IN VARCHAR2) IS
  BEGIN
    insert into WRK_SOFTP_IVROBDT
      (ID_KEY,
       ORI_DNIS,
       START_TIME,
       TALK_TIME,
       CREATED_BY,
       CREATED_DATE,
       UPDATED_BY,
       UPDATED_DATE,
       CALL_STATUS,
       INSERT_TIME)
    values
      (sys_guid(),
       V_PHONE_NUM1, ---第一個表的電話
       '2018-06-27 10:48:10.944',
       '2018-06-27 10:48:10.944',
       '',
       sysdate,
       '',
       sysdate,
       '',
       '');
 
  exception
    when OTHERS then
      ROLLBACK;
      COMMIT;
    
  END insert_WRK_SOFTP_IVROBDT;

  PROCEDURE insert_wrk_softp_ivrobsec(V_ACCT_SN    IN NUMBER,
                                      V_PHONE_NUM1 IN VARCHAR2) IS
  BEGIN
    insert into wrk_softp_ivrobsec
      (ID_KEY,
       AGENT_DN,
       AGENT_ID,
       ORI_DNIS,
       START_TIME,
       QUEUE_DURATION,
       TALK_DURATION,
       RE_STATUS,
       CALL_STATUS,
       CREATED_BY,
       CREATED_DATE,
       UPDATED_BY,
       UPDATED_DATE,
       INSERT_TIME,
       ACCT_SN)
    values
      (sys_guid(),
       '',
       '',
       V_PHONE_NUM1, ---第一個表的電話
       '',
       '1',
       '1',
       '',
       '',
       '',
       sysdate,
       '',
       sysdate,
       '',
       V_ACCT_SN);
 
  exception
    when OTHERS then
      ROLLBACK;
      COMMIT;
    
  END insert_wrk_softp_ivrobsec;

  PROCEDURE insert_wrk_bse_at(V_ACCT_SN IN NUMBER) IS
 
  BEGIN
    insert into wrk_bse_at
      (ID_KEY,
       BUSINESS_TYPE,
       ACCT_SN,
       ACCT_NO,
       CUST_NO,
       LOAN_NO,
       IS_COLLECTION,
       MASTER_ACCT,
       PRODUCT_TYPE,
       PRODUCT_TYPE_DESC,
       OVERDUE_DAY,
       OVERDUE_STAGE,
       OVERDUE_STAGE_CHANGED,
       OVERDUE_AMOUNT,
       CAPITAL,
       BALANCE_CAPITAL,
       INTEREST,
       COMPOUND_INT,
       PENALTY_INTEREST,
       PENALTY,
       OVERHEAD_EXPENSES,
       LOAN_CURRENCY,
       LOAN_TERM,
       LOAN_DATE,
       LOAN_MATURITY_DATE,
       LOAN_AMOUNT,
       LOAN_STATUS,
       CITY,
       LOAN_ORGANIZATION,
       LOAN_MANAGER,
       OVERDUE_DATE,
       LEFT_TERM,
       ACTUAL_RATE,
       REPAYMENT_ACCOUNT,
       REPAYMENT_METHOD,
       DEFAULT_REPAYMENT_DATE,
       LAST_REPAYMENT_DATE,
       BARCODE_NO,
       SPECIAL_CASE_TYPE,
       BILL_BALANCE,
       MIN_REPAYMENT_AMOUNT,
       CREDIT_LIMIT,
       CREATED_BY,
       CREATED_DATE,
       UPDATED_BY,
       UPDATED_DATE,
       SPECIAL_FLAG,
       ACCT_STATUS,
       ACCT_STATUS_DESC,
       APPLY_NO,
       IS_NEW_CORE,
       LATEST_UPDATED_DATE,
       ANAGE_BRANCH_CODE,
       MONTHLY_PAY_AMOUNT,
       RANDOM_DIGIT,
       ENTRUSTING_COMPANY_NAME,
       PROVINCE,
       BUSINESS_PATTERN,
       SIGN_BRANCH_COMPANY,
       ENTRUSTING_TERM,
       ENTRUSTING_CASE_CAPITAL,
       ENTRUSTING_CAPITAL,
       ENTRUSTING_START_TIME,
       ENTRUSTING_END_TIME,
       ENTRUSTING_TIMES,
       CASE_TYPE,
       COLLECTION_DAYS,
       BP_COUNTS,
       BSET_PRESSING,
       DELINQUENT_AMOUNT,
       SERVICE_FEE,
       FORMALITY_FEE,
       POLICY_CODE)
    values
      (sys_guid(),
       decode(V_BUSI_RANDOM,
              1,
              'RB1',
              2,
              'RB2',
              3,
              'RB3',
              4,
              'RB4',
              0,
              'RB5',
              'RB5'),
       V_ACCT_SN,
       V_ACCT_SN,
       V_ACCT_SN,
       '',
       'Y',
       '',
       '華樓通',
       '個貸',
       '424',
       'M7+',
       '',
       trunc(dbms_random.value(0, 999999)),
       '',
       trunc(dbms_random.value(0, 999999)),
       '0',
       '',
       '0',
       '',
       '',
       '',
       '36',
       '20160105',
       '20190105',
       trunc(dbms_random.value(0, 999999)),
       '',
       '濟南',
       '濟南1店',
       '',
       '',
       '',
       '',
       '6226632400691809',
       '',
       '5',
       '',
       '',
       '',
       '',
       '',
       '',
       'sys',
       sysdate,
       'sys',
       sysdate,
       '',
       '',
       '',
       '',
       '',
       null,
       '',
       '',
       '7169',
       '華夏信財',
       '山東',
       decode(V_BUSI_RANDOM,
              1,
              'RB1',
              2,
              'RB2',
              3,
              'RB3',
              4,
              'RB4',
              0,
              'RB5',
              'RB5'),
       '衆勢信用',
       '55',
       '0',
       trunc(dbms_random.value(0, 999999)),
       '20180517',
       '20190720',
       '0',
       decode(trunc(dbms_random.value(0, 5)),
              1,
              'N',
              2,
              'B',
              3,
              'B+',
              4,
              'A',
              0,
              'A+',
              'A+'),
       '',
       '',
       '',
       '',
       '',
       '',
       trunc(dbms_random.value(0, 999999)));
 
  exception
    when OTHERS then
      ROLLBACK;
  END insert_wrk_bse_at;

  PROCEDURE insert_wrk_nps_cal(P_USER       IN USER_TYPE,
                               V_PHONE_NUM1 IN VARCHAR2,
                               V_ACCT_SN    IN NUMBER) IS
  BEGIN
    insert into wrk_nps_cal
      (ID_KEY,
       CALL_NUMBER,
       CALL_DIRECTION,
       AGENT_ID,
       AGENT_DN,
       CALL_PARTY,
       CALL_RESULT,
       CALL_DATE,
       CREATED_BY,
       CREATED_DATE,
       UPDATED_BY,
       UPDATED_DATE,
       LAST_DAY_DATE,
       CALL_RECORD_URL,
       ACCT_SN,
       CONNECT_DATE,
       HANG_DATE,
       CALL_TYPE,
       DIAL_CALLER,
       DIAL_PREFIX,
       COMPANY_ID,
       BUSINESS_TYPE,
       ACCT_NO,
       CONTACT_ID)
    values
      (SYS_GUID(),
       V_PHONE_NUM1,
       'OUT',
       '',
       '',
       '',
       'N',
       sysdate,
       P_USER.USER_ID,
       SYSDATE,
       P_USER.USER_ID,
       SYSDATE,
       null,
       '',
       V_ACCT_SN,
       null,
       sysdate,
       'onekeyCall',
       '',
       '',
       'ZHONGSHI',
       decode(V_BUSI_RANDOM,
              1,
              'RB1',
              2,
              'RB2',
              3,
              'RB3',
              4,
              'RB4',
              0,
              'RB5',
              'RB5'),
       V_ACCT_SN,
       null);
  exception
    when OTHERS then
      ROLLBACK;
  END insert_wrk_nps_cal;

  PROCEDURE insert_syc_bse_remark(P_USER IN USER_TYPE, V_ACCT_SN IN NUMBER) IS
  BEGIN
    insert into syc_bse_remark
      (ID_KEY,
       CASE_CODE,
       CASE_TYPE,
       OPERATION_METHOD,
       OPE_NAME,
       COMMUNICATION_METHOD,
       COM_NAME,
       RELATION,
       REL_NAME,
       CONTACT_PEOPLE,
       CON_NAME,
       SPECIFIC_CONDITIONS,
       SPE_NAME,
       CALLING_MODE,
       CAL_NAME,
       ACTUAL_ANSWER_PEOPLE,
       ACT_NAME,
       ACTUAL_NUMBER,
       COLLECTION_PEOPLE,
       COLLECTION_REMARK,
       RECORDING_CODE,
       PROMISE_REPAY_TIME,
       PROMISE_REPAY_AMOUNT,
       CASE_DATE,
       CREATED_DATE,
       CREATED_BY,
       UPDATED_DATE,
       UPDATED_BY,
       COMMUNICATION_OTHER,
       SPECIFIC_OTHER,
       CO_STATUS,
       BUSINESS_TYPE,
       ACCT_NO)
    values
      (SYS_GUID(),
       V_ACCT_SN,
       '',
       'N',
       '非溝通類',
       'T',
       '電話',
       'D',
       '客戶本人',
       'Y',
       '是',
       'P',
       '其他',
       'O',
       '呼出',
       'P',
       '父母',
       '',
       P_USER.USER_ID,
       '13501591558-系統-CMP影像查詢',
       '',
       '',
       '',
       '',
       SYSDATE,
       P_USER.USER_ID,
       SYSDATE,
       P_USER.USER_ID,
       '',
       '',
       '3',
       decode(V_BUSI_RANDOM,
              1,
              'RB1',
              2,
              'RB2',
              3,
              'RB3',
              4,
              'RB4',
              0,
              'RB5',
              'RB5'),
       V_ACCT_SN);
  exception
    when OTHERS then
      ROLLBACK;
  END insert_syc_bse_remark;

  PROCEDURE insert_wrk_bse_onekey(P_USER IN USER_TYPE, V_ACCT_SN IN NUMBER) IS
  BEGIN
    insert into wrk_bse_onekey
      (PK_ID,
       ACCT_SN,
       BUSINESS_TYPE,
       CALL_DATE,
       CALL_PHONE,
       CLOSE_PHONE,
       PHONE_COUNT,
       CREATED_DATE,
       CREATED_BY,
       UPDATED_DATE,
       UPDATED_BY,
       DIAL_CALLER,
       DIAL_PREFIX)
    values
      (SYS_GUID(),
       V_ACCT_SN,
       decode(V_BUSI_RANDOM,
              1,
              'RB1',
              2,
              'RB2',
              3,
              'RB3',
              4,
              'RB4',
              0,
              'RB5',
              'RB5'),
       '2018-06-04 14:00:57',
       '',
       '13410124104,07714730472',
       '2',
       SYSDATE,
       P_USER.USER_ID,
       SYSDATE,
       P_USER.USER_ID,
       '',
       '');
  exception
    when OTHERS then
      ROLLBACK;
  END insert_wrk_bse_onekey;

  ----更新歷史數據
  PROCEDURE update_history_data is
 
    V_ACTION VARCHAR2(50) := 'update_history_data';
    --需要更新的電話號碼數據
    cursor V_PHONE_LIST IS
      select l.phone_num1
        from wrk_softp_calllist l
       where l.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
  BEGIN
    update wrk_asc_wq q
       set q.created_date = sysdate, q.updated_date = sysdate
     where q.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
    update wrk_asc_cm q
       set q.created_date  = sysdate,
           q.updated_date  = sysdate,
           Q.IN_QUEUE_DATE = SYSDATE
     where q.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
    update SYC_BSE_CP q
       set q.created_date = sysdate, q.updated_date = sysdate
     where q.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
    update wrk_softp_calllist Q
       set q.create_time   = sysdate,
           q.update_time   = sysdate,
           q.Appoint_Begin = sysdate
     where q.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
    update wrk_bse_chg q
       set q.created_date   = sysdate,
           q.updated_date   = sysdate,
           q.business_month = to_char(sysdate, 'YYYYMM')
     where q.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
    update wrk_bse_ptp q
       set q.created_date = sysdate,
           q.updated_date = sysdate,
           q.due_date     = decode(trunc(dbms_random.value(0, 2)),
                                   0,
                                   '',
                                   1,
                                   to_char((sysdate - 1), 'YYYYMMDD'),
                                   to_char((sysdate - 1), 'YYYYMMDD'))
     where q.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
    update wrk_bse_at q
       set q.created_date = sysdate, q.updated_date = sysdate
     where q.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
    update wrk_nps_cal q
       set q.created_date = sysdate,
           q.updated_date = sysdate,
           q.call_date    = sysdate,
           q.hang_date    = sysdate
     where q.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
    update syc_bse_remark q
       set q.created_date = sysdate, q.updated_date = sysdate
     where q.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
    update wrk_bse_onekey q
       set q.created_date = sysdate, q.updated_date = sysdate
     where q.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
    COMMIT;
 
    for V_PHONE IN V_PHONE_LIST LOOP
    
      BEGIN
      
        update WRK_SOFTP_IVROBDT q
           set q.created_date = sysdate, q.updated_date = sysdate
         where q.ori_dnis = V_PHONE.PHONE_NUM1;
      
        update wrk_softp_ivrobsec q
           set q.created_date = sysdate, q.updated_date = sysdate
         where q.ori_dnis = V_PHONE.PHONE_NUM1;
      exception
        when OTHERS then
          CONTINUE;
        
      END;
    
    END LOOP;
    COMMIT;
 
  exception
    when OTHERS then
      rollback;
      --記錄錯誤信息
      PKG_ph_yxd_cmp_LOG.ERROR_LOG(V_MODULE || '.' || V_ACTION, --存儲過程名
                                   'PROC', --錯誤分類
                                   'PUB', --業務類型
                                   SUBSTRB(SQLCODE, 1, 20), --ORACLE錯誤編號
                                   SUBSTRB(SQLERRM, 1, 750)); --錯誤信息
 
  end update_history_data;

  ----刪除歷史數據
  PROCEDURE delete_history_data is
    V_ACTION VARCHAR2(50) := 'delete_history_data';
    --需要刪除的電話號碼數據
    cursor V_PHONE_LIST IS
      select l.phone_num1
        from wrk_softp_calllist l
       where l.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
  BEGIN
 
    for V_PHONE IN V_PHONE_LIST LOOP
    
      BEGIN
      
        delete from WRK_SOFTP_IVROBDT q
         where q.ori_dnis = V_PHONE.PHONE_NUM1;
      
        delete from wrk_softp_ivrobsec q
         where q.ori_dnis = V_PHONE.PHONE_NUM1;
      exception
        when OTHERS then
          CONTINUE;
        
      END;
    
    END LOOP;
    COMMIT;
 
    delete from wrk_asc_wq q
     where q.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
    delete from wrk_asc_cm q
     where q.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
    delete from SYC_BSE_CP q
     where q.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
    delete from wrk_softp_calllist Q
     where q.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
    delete from wrk_bse_chg q
     where q.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
    delete from wrk_bse_ptp q
     where q.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
    delete from wrk_bse_at q
     where q.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
    delete from wrk_nps_cal q
     where q.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
    delete from syc_bse_remark q
     where q.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
    delete from wrk_bse_onekey q
     where q.business_type in ('RB1', 'RB2', 'RB3', 'RB4', 'RB5');
 
    COMMIT;
 
  exception
    when OTHERS then
      rollback;
      --記錄錯誤信息
      PKG_ph_yxd_cmp_LOG.ERROR_LOG(V_MODULE || '.' || V_ACTION, --存儲過程名
                                   'PROC', --錯誤分類
                                   'PUB', --業務類型
                                   SUBSTRB(SQLCODE, 1, 20), --ORACLE錯誤編號
                                   SUBSTRB(SQLERRM, 1, 750)); --錯誤信息
 
  end delete_history_data;

end pkg_xiaomo_test_report_data;

三:直接運行輸入參數就行。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章