Upload
mitesh1605
View
216
Download
0
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#';
|| 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
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)
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;/