Proc

Embed Size (px)

DESCRIPTION

proc

Citation preview

  • /* Formatted on 11/30/2015 8:43:34 AM (QP5 v5.215.12089.38647) */DECLARE iSubsId VARCHAR2 (30000) := '26763'; iChangeType AUX_SUB_ACTIONS_KEY_CODES.CHANGE_TYPE%TYPE := 'Bundle\Promotion'; iLob LOB.LOB_ID%TYPE := NULL; iSubLob SUBLOB.SUBLOB_ID%TYPE := NULL; iMsisdn NUMBER := 0; -- all by default iDateFrom VARCHAR2 (30000) := '20150827'; iDateTo VARCHAR2 (30000) := '20151127'; iDateFormat VARCHAR2 (30000) DEFAULT 'YYYYMMDD'; o_res_crs SYS_REFCURSOR; vDateFrom DATE; vDateTo DATE; vSelect VARCHAR2 (32000); vSDRSelect VARCHAR2 (30000); vSUBHISTDR VARCHAR2 (30000); vWASelect VARCHAR2 (30000); vBUNDLEDR VARCHAR2 (30000); vDBSCDR VARCHAR2 (30000); vWhere VARCHAR2 (32000); vPISelect VARCHAR2 (32000); vPrdSelect VARCHAR2 (32000); vOrder VARCHAR2 (30000); vDbscTabIMEI VARCHAR2 (50); vDbscTabMSISDN VARCHAR2 (50); vDbscTabIMSI VARCHAR2 (50); vConversionId NUMBER (10);BEGIN --SubsId is mandatory IF iSubsId IS NULL THEN raise_application_error ( -20001, 'No Creiteria was given , subscriber list cannot be null'); END IF;

    vDateFrom := NVL (TO_DATE (iDateFrom, NVL (iDateFormat, 'yyyy-mm-dd')), TRUNC (SYSDATE - 60)); vDateTo := NVL (TO_DATE (iDateTo, NVL (iDateFormat, 'yyyy-mm-dd')), SYSDATE) + 86399 / 86400 /* 23:59:59 */ ;

    IF (iLob IS NOT NULL AND iLob '-1') THEN vWhere := ' and lob.lob_id = ''' || iLob || ''''; END IF;

    IF (iSubLob IS NOT NULL AND iSubLob '-1') THEN vWhere := vWhere || ' and sublob.sublob_id = ''' || iSubLob || ''''; END IF;

    IF (iMsisdn IS NOT NULL AND iMsisdn 0) THEN vWhere := vWhere || ' and subs_msisdn2.msisdn = ' || iMsisdn; END IF;

  • -- BEGIN -- -- Get the DBSC cluster id -- select A.nc_conversion_id into vConversionId -- from resource_types@report2foundation A -- where A.resource_type = -2; -- -- select 'DBSC__'||to_char(abs(vConversionId))||'_'||to_char(cluster_id)||'_1@report2foundation' into vDbscTabIMEI -- from nc_clusters@report2foundation -- where nc_conversion_id = vConversionId; -- -- EXCEPTION -- WHEN NO_DATA_FOUND THEN -- null; -- dbms_output.put_line(vDbscTabIMEI); -- END;

    BEGIN --Resource types changes are not supported - but the MSISDN is mandatory for any of the change types WITH dynamic_dbsc AS (SELECT A.resource_type, A.nc_conversion_id, B.LRE_ID, C.CLUSTER_ID FROM resource_types@report2foundation A LEFT JOIN nc_conversion_formats@report2foundation B ON A.nc_conversion_id = B.nc_conversion_id LEFT JOIN nc_clusters@report2foundation C ON C.nc_conversion_id = A.nc_conversion_id WHERE A.resource_type = -3) SELECT table_name || '@report2foundation' INTO vDbscTabMSISDN FROM user_tables@report2foundation ut INNER JOIN dynamic_dbsc ON dynamic_dbsc.resource_type = -3 WHERE UPPER (table_name) LIKE 'DBSC\_\_%' || ABS (dynamic_dbsc.nc_conversion_id) || '%' || dynamic_dbsc.CLUSTER_ID || '%' || '1' ESCAPE '\'; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.put_line (vDbscTabMSISDN); raise_application_error ( -20001, 'Guiding DBSC tables missing , DBSC data is mandatory .'); END;

    -- BEGIN -- select A.nc_conversion_id into vConversionId -- from resource_types@report2foundation A -- where A.resource_type = -4; -- -- select 'DBSC__'||to_char(abs(vConversionId))||'_'||to_char(cluster_id)||'_1@report2foundation' into vDbscTabIMSI

  • -- from nc_clusters@report2foundation -- where nc_conversion_id = vConversionId; -- -- EXCEPTION -- WHEN NO_DATA_FOUND THEN -- null; -- dbms_output.put_line(vDbscTabIMSI); -- END;

    DBMS_OUTPUT.put_line (vDbscTabIMEI); DBMS_OUTPUT.put_line (vDbscTabMSISDN); DBMS_OUTPUT.put_line (vDbscTabIMSI);

    vWhere := CASE WHEN iChangeType = 'Personal info' THEN vWhere || CHR (10) || ' and aux_mapping.change_type= ''Personal info''' WHEN iChangeType = 'Add\Remove Product' THEN vWhere || CHR (10) || ' and aux_mapping.change_type= ''Add\Remove Product''' WHEN iChangeType = 'Customer Operations' THEN vWhere || CHR (10) || ' and aux_mapping.change_type= ''Customer Operations''' WHEN iChangeType = 'Status' THEN vWhere || CHR (10) || ' and aux_mapping.change_type= ''Status''' WHEN iChangeType = 'Tax Exemption' THEN vWhere || CHR (10) || ' and aux_mapping.change_type= ''Tax Exemption''' WHEN iChangeType = 'Credit Limit' THEN vWhere || CHR (10) || ' and aux_mapping.change_type= ''Credit Limit''' WHEN iChangeType = 'Bundle\Promotion' THEN vWhere || CHR (10) || ' and aux_mapping.change_type= ''Bundle\Promotion''' WHEN iChangeType = 'Resource' THEN vWhere || CHR (10) || ' and aux_mapping.change_type= ''Resource''' ELSE vWhere END;

    vOrder := q'#order by time desc,subs_id#';

  • vSDRSelect := q'#SELECT * FROM (WITH aux_mapping AS (SELECT change_type, activity_type, DR_TYPE, PROPERTY_KEY, PROPERTY_NAME FROM AUX_SUB_ACTIONS_KEY_CODES), subs_list AS (SELECT COLUMN_VALUE AS subs_id FROM TABLE(in_list(:iSubsId))), subshist AS (select subs_id,max(enum_64) enum_64,max(enum_10) enum_10 from ( (SELECT /*+ index(sh,SUBSPPS_HISTORY_IDX) */ sh.subs_id, CASE WHEN subscriber_field_enum = 64 THEN subscriber_field_numeric_value END AS enum_64, CASE WHEN subscriber_field_enum = 10 THEN subscriber_field_numeric_value END AS enum_10, rank() over (partition by subs_id,subscriber_field_enum order by effective_date desc) rk FROM subsPPS_History sh WHERE EXISTS (SELECT subs_id FROM subs_list WHERE subs_id = sh.subs_id) AND sh.subscriber_field_enum IN (64, 10) AND sh.effective_date >= :vDateFrom AND sh.effective_date
  • COALESCE(subs_status_new.default_name, new_property) AS new_value, sublob.sublob_name sub_lob, lob.LOB_NAME lob, sp.subs_id, users.user_name, sp.comments, NULL wallet_type_name, offer_name FROM sdr_partitioned sp INNER JOIN subs_list ON subs_list.subs_id = sp.subs_id LEFT JOIN aux_mapping ON aux_mapping.property_key = sp.property_key LEFT JOIN subshist ON subshist.subs_ID = sp.subs_ID LEFT JOIN sublob ON sublob.sublob_id = subshist.enum_64 LEFT JOIN lob ON lob.lob_id = sublob.lob_id LEFT JOIN users ON users.user_id = sp.user_id LEFT JOIN offer ON offer.offer_id = subshist.enum_10 left join subs_msisdn2 ON subs_msisdn2.subs_id = sp.subs_id and sp.Time >= subs_msisdn2.start_date and sp.Time = :vDateFrom AND sp.time
  • subscriber_field_numeric_value END AS enum_64, CASE WHEN subscriber_field_enum = 10 THEN subscriber_field_numeric_value END AS enum_10, rank() over (partition by subs_id,subscriber_field_enum order by effective_date desc) rk FROM subsPPS_History sh WHERE EXISTS (SELECT subs_id FROM subs_list WHERE subs_id = sh.subs_id) AND sh.subscriber_field_enum IN (64, 10) AND sh.effective_date >= :vDateFrom AND sh.effective_date = 23 and sp.property_key
  • ON aux_mapping.property_key = sp.property_key LEFT JOIN subshist ON subshist.subs_ID = sp.subs_ID LEFT JOIN sublob ON sublob.sublob_id = subshist.enum_64 LEFT JOIN lob ON lob.lob_id = sublob.lob_id LEFT JOIN users ON users.user_id = sp.user_id LEFT JOIN offer ON offer.offer_id = subshist.enum_10 left join subs_msisdn2 ON subs_msisdn2.subs_id = sp.subs_id and sp.Time >= subs_msisdn2.start_date and sp.Time = :vDateFrom AND sp.time
  • WHERE EXISTS (SELECT subs_id FROM subs_list WHERE subs_id = sh.subs_id) AND sh.subscriber_field_enum IN (64, 10) AND sh.effective_date >= :vDateFrom AND sh.effective_date = subs_msisdn2.start_date and sp.Time
  • sdn2.expiration_date LEFT JOIN Subs_products oldPrd ON oldPrd.lre_id = sp.lre_id AND to_char(oldPrd.product_id) = to_char(sp.old_property) LEFT JOIN Subs_products newPrd ON newPrd.lre_id = sp.lre_id AND newPrd.product_id = sp.new_property --SDR Where WHERE sp.time >= :vDateFrom AND sp.time = :vDateFrom AND sh.effective_date
  • expiration_date,sysdate) expiration_date, subs_id, resource_number msisdn, to_date('31121899 23:59','dd/mm/yyyy hh24:mi')+ (lead(expiration_date,1,0) OVER (PARTITION BY subs_id ORDER BY resource_number DESC NULLS LAST)) START_DATE FROM #' || vDbscTabMSISDN || q'# DBSCTAB WHERE exists (select subs_id from subs_list where subs_id = DBSCTAB.subs_id) ) --HISTDR SELECT event_date AS time, subs_msisdn2.msisdn, aux_mapping.activity_type, NULL AS old_value, CASE WHEN shp.subscriber_field_enum = 10 THEN offer_name WHEN shp.subscriber_field_enum = 75 THEN BILLING_CYCLE_TYPES.cycle_type_name ELSE COALESCE(TO_CHAR(shp.SUBSCRIBER_FIELD_NUMERIC_VALUE), shp.SUBSCRIBER_FIELD_STRING_VALUE) END AS new_value, sublob.sublob_name sub_lob, lob.LOB_NAME lob, shp.subs_id, users.user_name, shp.info AS comments, NULL wallet_type_name, offer_name FROM subshistdr_partitioned shp INNER JOIN subs_list ON subs_list.subs_id = shp.subs_id LEFT JOIN aux_mapping ON aux_mapping.property_key = shp.subscriber_field_enum LEFT JOIN subshist ON subshist.subs_ID = shp.subs_ID LEFT JOIN sublob ON sublob.sublob_id = subshist.enum_64 LEFT JOIN lob ON lob.lob_id = sublob.lob_id LEFT JOIN users ON users.user_id = shp.user_id LEFT JOIN offer ON offer.offer_id = subshist.enum_10 left join subs_msisdn2 ON subs_msisdn2.subs_id = shp.subs_id and shp.event_date >= subs_msisdn2.start_date and shp.event_date = :vDateFrom AND shp.event_date
  • || q'# )#';

    vWASelect := q'# SELECT * FROM (WITH aux_mapping AS (SELECT change_type, activity_type, DR_TYPE, PROPERTY_KEY, PROPERTY_NAME FROM AUX_SUB_ACTIONS_KEY_CODES), subs_list AS (SELECT COLUMN_VALUE AS subs_id FROM TABLE(in_list(:iSubsId))), subshist AS (select subs_id,max(enum_64) enum_64,max(enum_10) enum_10 from ( (SELECT /*+ index(sh,SUBSPPS_HISTORY_IDX) */ sh.subs_id, CASE WHEN subscriber_field_enum = 64 THEN subscriber_field_numeric_value END AS enum_64, CASE WHEN subscriber_field_enum = 10 THEN subscriber_field_numeric_value END AS enum_10, rank() over (partition by subs_id,subscriber_field_enum order by effective_date desc) rk FROM subsPPS_History sh WHERE EXISTS (SELECT subs_id FROM subs_list WHERE subs_id = sh.subs_id) AND sh.subscriber_field_enum IN (64, 10) AND sh.effective_date >= :vDateFrom AND sh.effective_date

  • swhp.WALLET_FIELD_NUMERIC_VALUE)) AS new_value, sublob.sublob_name sub_lob, lob.LOB_NAME lob, swhp.subs_id, users.user_name, swhp.info AS comments, WALLET_TYPES_LAST_VER_VW.wallet_type_name, offer_name FROM SUBSWAHISTDR_PARTITIONED swhp INNER JOIN subs_list ON subs_list.subs_id = swhp.subs_id left join subs_msisdn2 ON subs_msisdn2.subs_id = swhp.subs_id and swhp.event_date >= subs_msisdn2.start_date and swhp.event_date = :vDateFrom AND swhp.event_date
  • AS enum_64, CASE WHEN subscriber_field_enum = 10 THEN subscriber_field_numeric_value END AS enum_10, rank() over (partition by subs_id,subscriber_field_enum order by effective_date desc) rk FROM subsPPS_History sh WHERE EXISTS (SELECT subs_id FROM subs_list WHERE subs_id = sh.subs_id) AND sh.subscriber_field_enum IN (64, 10) AND sh.effective_date >= :vDateFrom AND sh.effective_date
  • ON subs_msisdn2.subs_id = bdp.sub_id and bdp.event_date >= subs_msisdn2.start_date and bdp.event_date = :vDateFrom AND bdp.event_date = subs_msisdn2.start_date and pdp.event_date = :vDateFrom AND pdp.event_date
  • AND aux_mapping.dr_type = 'PROMOTIONDR' #' || vWhere || q'# )#';

    vDBSCDR := q'# SELECT * FROM (WITH aux_mapping AS (SELECT change_type, activity_type, DR_TYPE, PROPERTY_KEY, PROPERTY_NAME FROM AUX_SUB_ACTIONS_KEY_CODES), subs_list AS (SELECT COLUMN_VALUE AS subs_id FROM TABLE(in_list(:iSubsId))), subshist AS (select subs_id,max(enum_64) enum_64,max(enum_10) enum_10 from ( (SELECT /*+ index(sh,SUBSPPS_HISTORY_IDX) */ sh.subs_id, CASE WHEN subscriber_field_enum = 64 THEN subscriber_field_numeric_value END AS enum_64, CASE WHEN subscriber_field_enum = 10 THEN subscriber_field_numeric_value END AS enum_10, rank() over (partition by subs_id,subscriber_field_enum order by effective_date desc) rk FROM subsPPS_History sh WHERE EXISTS (SELECT subs_id FROM subs_list WHERE subs_id = sh.subs_id) AND sh.subscriber_field_enum IN (64, 10) AND sh.effective_date >= :vDateFrom AND sh.effective_date

  • dbscdr_partitioned B ON B.new_filed_value = A.resource_number WHERE B.table_id = -3 AND B.action = 2 AND B.field_id = 1 AND B.old_filed_value IS NOT NULL AND B.time >= TRUNC(:vDateFrom) AND B.time = TRUNC(:vDateTo))) WHERE rk = 1), imei_change AS (SELECT subs_id, imei FROM (SELECT subs_id, imei, time, RANK() OVER (PARTITION BY subs_id, imei ORDER BY time DESC) rk FROM (SELECT A.subs_id, A.resource_number imei, B.time FROM #' || vDbscTabIMEI || q'# A INNER JOIN dbscdr_partitioned B ON B.new_filed_value = A.resource_number WHERE B.table_id = -2 AND B.action = 2 AND B.field_id = 1 AND B.old_filed_value IS NOT NULL AND B.time >= TRUNC(:vDateFrom) AND B.time = TRUNC(:vDateTo))) WHERE rk = 1), imsi_change AS (SELECT subs_id, imsi FROM (SELECT subs_id, imsi, time, RANK() OVER (PARTITION BY subs_id, imsi ORDER BY time DESC) rk FROM (SELECT A.subs_id, A.resource_number imsi, B.time FROM #' || vDbscTabIMSI || q'# A INNER JOIN dbscdr_partitioned B ON B.new_filed_value = A.resource_number WHERE B.table_id = -4 AND B.action = 2 AND B.field_id = 1 AND B.old_filed_value IS NOT NULL AND B.time >= TRUNC(:vDateFrom)

  • AND B.time = TRUNC(:vDateTo))) WHERE rk = 1), subs_msisdn2 as ( SELECT nvl(to_date('31121899 23:59','dd/mm/yyyy hh24:mi')+expiration_date,sysdate) expiration_date, subs_id, resource_number msisdn, to_date('31121899 23:59','dd/mm/yyyy hh24:mi')+ (lead(expiration_date,1,0) OVER (PARTITION BY subs_id ORDER BY resource_number DESC NULLS LAST)) START_DATE FROM #' || vDbscTabMSISDN || q'# DBSCTAB WHERE exists (select subs_id from subs_list where subs_id = DBSCTAB.subs_id) ) --MSISDN SELECT time, subs_msisdn2.msisdn, aux_mapping.activity_type, dbscdr.OLD_FILED_VALUE AS old_value, dbscdr.NEW_FILED_VALUE AS new_value, sublob.sublob_name sub_lob, lob.LOB_NAME lob, MSISDN_change.subs_id, users.user_name, dbscdr.remark AS comments, NULL wallet_type_name, offer_name FROM dbscdr_partitioned dbscdr LEFT JOIN MSISDN_change ON MSISDN_change.msisdn = dbscdr.NEW_FILED_VALUE LEFT JOIN aux_mapping ON aux_mapping.property_key = dbscdr.table_id LEFT JOIN subshist ON subshist.subs_ID = MSISDN_change.subs_ID LEFT JOIN sublob ON sublob.sublob_id = subshist.enum_64 LEFT JOIN lob ON lob.lob_id = sublob.lob_id LEFT JOIN users ON users.user_id = dbscdr.user_id LEFT JOIN offer ON offer.offer_id = subshist.enum_10 left join subs_msisdn2 ON subs_msisdn2.subs_id = msisdn_change.subs_id and msisdn_change.Time >= subs_msisdn2.start_date and msisdn_change.Time = :vDateFrom AND dbscdr.time
  • imsi_change.subs_id, users.user_name, dbscdr.remark AS comments, NULL wallet_type_name, offer_name FROM dbscdr_partitioned dbscdr LEFT JOIN imsi_change ON imsi_change.imsi = dbscdr.NEW_FILED_VALUE LEFT JOIN aux_mapping ON aux_mapping.property_key = dbscdr.table_id LEFT JOIN subshist ON subshist.subs_ID = imsi_change.subs_ID LEFT JOIN sublob ON sublob.sublob_id = subshist.enum_64 LEFT JOIN lob ON lob.lob_id = sublob.lob_id LEFT JOIN users ON users.user_id = dbscdr.user_id LEFT JOIN offer ON offer.offer_id = subshist.enum_10 left join subs_msisdn2 ON subs_msisdn2.subs_id = imsi_change.subs_id and imsi_change.Time >= subs_msisdn2.start_date and imsi_change.Time = :vDateFrom AND dbscdr.time
  • ON subs_msisdn2.subs_id = imei_change.subs_id and imei_change.Time >= subs_msisdn2.start_date and imei_change.Time = :vDateFrom AND dbscdr.time
  • vDateFrom, vDateTo, iDateFormat, iDateFormat, vDateFrom, vDateTo, iDateFormat, vDateFrom, vDateTo; -- DBMS_OUTPUT.PUT_LINE ( vBUNDLEDR||chr(10) || vOrder ); ELSIF (iChangeType = 'Resource') THEN OPEN o_res_crs FOR vDBSCDR || CHR (10) || vOrder USING iSubsId, vDateFrom, vDateTo, vDateFrom, vDateTo, vDateFrom, vDateTo, vDateFrom, vDateTo, vDateFrom, vDateTo, vDateFrom, vDateTo, vDateFrom, vDateTo; ELSIF (iChangeType = 'Personal info') THEN OPEN o_res_crs FOR vPISelect || CHR (10) || vOrder USING iSubsId, vDateFrom, vDateTo, vDateFrom, vDateTo; ELSE vSelect := q'# select * from ( #' || vSDRSelect || CHR (10) || ' union all ' || CHR (10) || vSUBHISTDR || CHR (10) || ' union all ' || vWASelect || CHR (10) || ' union all ' || vBUNDLEDR || CHR (10) -- || ' union all ' -- || vDBSCDR -- || CHR(10) || ' union all ' || vPrdSelect || CHR (10) || ' union all ' || vPISelect || CHR (10)

  • || q'#)#' || vOrder;

    DBMS_OUTPUT.PUT_LINE (vSelect);

    OPEN o_res_crs FOR vSelect USING --SDR iSubsId, vDateFrom, vDateTo, vDateFrom, vDateTo, --SUBSHIST iSubsId, vDateFrom, vDateTo, vDateFrom, vDateTo, --WALLET iSubsId, vDateFrom, vDateTo, vDateFrom, vDateTo, --BUNDLE iSubsId, vDateFrom, vDateTo, iDateFormat, iDateFormat, vDateFrom, vDateTo, iDateFormat, vDateFrom, vDateTo, --DBSC -- iSubsId, -- vDateFrom, -- vDateTo, -- vDateFrom, -- vDateTo, -- vDateFrom, -- vDateTo, -- vDateFrom, -- vDateTo, -- vDateFrom, -- vDateTo, -- vDateFrom, -- vDateTo, -- vDateFrom, -- vDateTo, --PI iSubsId, vDateFrom, vDateTo, vDateFrom, vDateTo, --SDR Products iSubsId, vDateFrom,

  • vDateTo, vDateFrom, vDateTo; END IF;EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line (DBMS_UTILITY.format_error_stack); DBMS_OUTPUT.put_line (DBMS_UTILITY.format_error_backtrace);END;/