First Commit - Source Code from Reply
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
CREATE TABLE MNP_DBP2COOP
|
||||
(
|
||||
MSISDN VARCHAR2(20 BYTE) NOT NULL,
|
||||
CODICE_OPERATORE_RECIPIENT VARCHAR2(4 BYTE),
|
||||
ROUTING_NUMBER VARCHAR2(10 BYTE) DEFAULT NULL,
|
||||
DATA_CUT_OVER DATE,
|
||||
DATA_ESTRAZIONE DATE NOT NULL,
|
||||
FLAG_LAVORATO NUMBER(1) DEFAULT 0 NOT NULL
|
||||
)
|
||||
LOGGING
|
||||
NOCOMPRESS
|
||||
NOCACHE
|
||||
NOPARALLEL
|
||||
NOMONITORING;
|
||||
|
||||
ALTER TABLE MNP_DBP2COOP ADD CONSTRAINT PK_MNP_DBP2COOP PRIMARY KEY (MSISDN) USING INDEX TABLESPACE TAB_IDX_MEDIUM;
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
CREATE TABLE MNP_DBP2COOP_DATE
|
||||
(
|
||||
START_DATE VARCHAR2(8 BYTE),
|
||||
END_DATE VARCHAR2(8 BYTE),
|
||||
FINAL_DATE VARCHAR2(8 BYTE)
|
||||
);
|
||||
|
||||
@@ -0,0 +1,142 @@
|
||||
-- Execute as user MNP
|
||||
-- 2022 C05 MNP_RU_XXX
|
||||
-- full export of porting history to OLOs
|
||||
-- Full extract for DNs in test set, with name of table of origin.
|
||||
SELECT * FROM (
|
||||
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, TABELLA_ORIGINE FROM (
|
||||
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
|
||||
SELECT /*+ FULL(MGR) PARALLEL(5)*/ MGR.MSISDN AS MSISDN
|
||||
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
|
||||
, (SELECT A.ROUTING_NUMBER FROM MNP_OLO A WHERE A.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT) AS ROUTING_NUMBER
|
||||
, MGR.DATA_CUT_OVER_CALC AS DATA_CUT_OVER
|
||||
, SYSDATE AS DATA_ESTRAZIONE
|
||||
, 'MNP_GESTIONE_RICHIESTA' AS TABELLA_ORIGINE
|
||||
FROM MNP_GESTIONE_RICHIESTA MGR
|
||||
WHERE MGR.MSISDN IN (:X)
|
||||
AND MGR.STATO = 16
|
||||
) m_cur_bulk
|
||||
)
|
||||
WHERE rnum = 1
|
||||
UNION ALL
|
||||
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, TABELLA_ORIGINE FROM (
|
||||
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
|
||||
SELECT /*+ FULL(MGR) PARALLEL(5)*/ MGR.MSISDN AS MSISDN
|
||||
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
|
||||
, (SELECT A.ROUTING_NUMBER FROM MNP_OLO A WHERE A.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT) AS ROUTING_NUMBER
|
||||
, MGR.DATA_CUT_OVER_AOM AS DATA_CUT_OVER
|
||||
, SYSDATE AS DATA_ESTRAZIONE
|
||||
, 'MNP_GESTIONE_RICHIESTA_REC' AS TABELLA_ORIGINE
|
||||
FROM MNP_GESTIONE_RICHIESTA_REC MGR
|
||||
WHERE MGR.MSISDN IN (:X)
|
||||
AND MGR.STATO = 12
|
||||
) m_cur_bulk
|
||||
)
|
||||
WHERE rnum = 1
|
||||
UNION ALL
|
||||
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, TABELLA_ORIGINE FROM (
|
||||
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
|
||||
SELECT
|
||||
MGR.MSISDN AS MSISDN
|
||||
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
|
||||
, (SELECT A.ROUTING_NUMBER FROM MNP_OLO A WHERE A.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT) AS ROUTING_NUMBER
|
||||
, MGR.DATA_CUT_OVER AS DATA_CUT_OVER
|
||||
, SYSDATE AS DATA_ESTRAZIONE
|
||||
, 'MNP_GESTIONE_RICHIESTA_PORTING' AS TABELLA_ORIGINE
|
||||
FROM MNP_GESTIONE_RICHIESTA_PORTING MGR
|
||||
WHERE MGR.MSISDN IN (:X)
|
||||
AND MGR.STATO = 6
|
||||
) m_cur_bulk
|
||||
)
|
||||
WHERE rnum = 1
|
||||
UNION ALL
|
||||
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, TABELLA_ORIGINE FROM (
|
||||
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
|
||||
SELECT
|
||||
MGR.MSISDN AS MSISDN
|
||||
, O.DESC_OLO AS CODICE_OPERATORE_CESSATORE
|
||||
, O.ROUTING_NUMBER AS ROUTING_NUMBER_CESSATORE
|
||||
, MGR.DATARICEZIONERICHIESTA AS DATA_CUT_OVER
|
||||
, SYSDATE AS DATA_ESTRAZIONE
|
||||
, 'MNP_GESTIONE_RICH_CESS_PORT' AS TABELLA_ORIGINE
|
||||
, MO.DESC_OLO AS CODICE_OPERATORE_RECIPIENT
|
||||
, MO.ROUTING_NUMBER AS ROUTING_NUMBER
|
||||
FROM MNP_GESTIONE_RICH_CESS_PORT MGR, MNP_OLO O
|
||||
, MNP_OLO_PREFISSI MOP INNER JOIN MNP_OLO MO ON MO.COD_OLO=MOP.COD_OLO
|
||||
WHERE MGR.MSISDN IN (:X)
|
||||
AND ( MOP.PREFIX=SUBSTR(MGR.MSISDN,3,3) OR MOP.PREFIX=SUBSTR(MGR.MSISDN,3,4) )
|
||||
AND MGR.STATO = '2'
|
||||
AND O.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT
|
||||
) m_cur_bulk
|
||||
)
|
||||
WHERE rnum = 1
|
||||
UNION ALL
|
||||
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, TABELLA_ORIGINE FROM (
|
||||
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
|
||||
SELECT
|
||||
MGR.MSISDN AS MSISDN
|
||||
, O.DESC_OLO AS CODICE_OPERATORE_CESSATORE
|
||||
, O.ROUTING_NUMBER AS ROUTING_NUMBER_CESSATORE
|
||||
, MGR.DATARICEZIONERICHIESTA AS DATA_CUT_OVER
|
||||
, SYSDATE AS DATA_ESTRAZIONE
|
||||
, 'MNP_GESTIONE_RICHIESTA_CESS' AS TABELLA_ORIGINE
|
||||
, MO.DESC_OLO AS CODICE_OPERATORE_RECIPIENT
|
||||
, MO.ROUTING_NUMBER AS ROUTING_NUMBER
|
||||
FROM
|
||||
MNP_GESTIONE_RICHIESTA_CESS MGR, MNP_OLO O
|
||||
, MNP_OLO_PREFISSI MOP INNER JOIN MNP_OLO MO ON MO.COD_OLO=MOP.COD_OLO
|
||||
WHERE MGR.MSISDN IN (:X)
|
||||
AND (MOP.PREFIX = SUBSTR(MGR.MSISDN,3,3) OR MOP.PREFIX = SUBSTR(MGR.MSISDN,3,4))
|
||||
AND MGR.STATO = '3'
|
||||
AND O.DESC_OLO = MGR.CODICE_OPERATORE_RECIPIENT
|
||||
) m_cur_bulk
|
||||
)
|
||||
WHERE rnum = 1
|
||||
UNION ALL
|
||||
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, TABELLA_ORIGINE FROM (
|
||||
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
|
||||
SELECT
|
||||
MGR.MSISDN AS MSISDN
|
||||
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
|
||||
, (SELECT A.ROUTING_NUMBER FROM MNP_OLO A WHERE A.DESC_OLO = MGR.CODICE_OPERATORE_RECIPIENT) AS ROUTING_NUMBER
|
||||
, MGR.DATA_CUT_OVER_CALC AS DATA_CUT_OVER
|
||||
, SYSDATE AS DATA_ESTRAZIONE
|
||||
, 'HIST_GESTIONE_RICHIESTA' AS TABELLA_ORIGINE
|
||||
FROM HIST_GESTIONE_RICHIESTA MGR
|
||||
WHERE MGR.MSISDN IN (:X)
|
||||
AND MGR.STATO = 16
|
||||
) m_cur_bulk
|
||||
)
|
||||
WHERE rnum = 1
|
||||
UNION ALL
|
||||
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, TABELLA_ORIGINE FROM (
|
||||
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
|
||||
SELECT
|
||||
MGR.MSISDN AS MSISDN
|
||||
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
|
||||
, (SELECT A.ROUTING_NUMBER FROM MNP_OLO A WHERE A.DESC_OLO = MGR.CODICE_OPERATORE_RECIPIENT) AS ROUTING_NUMBER
|
||||
, MGR.DATA_CUT_OVER_AOM AS DATA_CUT_OVER
|
||||
, SYSDATE AS DATA_ESTRAZIONE
|
||||
, 'HIST_GESTIONE_RICHIESTA_REC' AS TABELLA_ORIGINE
|
||||
FROM HIST_GESTIONE_RICHIESTA_REC MGR
|
||||
WHERE MGR.MSISDN IN (:X)
|
||||
AND MGR.STATO = 12
|
||||
) m_cur_bulk
|
||||
)
|
||||
WHERE rnum = 1
|
||||
UNION ALL
|
||||
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, TABELLA_ORIGINE FROM (
|
||||
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
|
||||
SELECT
|
||||
MGR.MSISDN AS MSISDN
|
||||
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
|
||||
, (SELECT A.ROUTING_NUMBER FROM MNP_OLO A WHERE A.DESC_OLO = MGR.CODICE_OPERATORE_RECIPIENT) AS ROUTING_NUMBER
|
||||
, MGR.DATA_CUT_OVER AS DATA_CUT_OVER
|
||||
, SYSDATE AS DATA_ESTRAZIONE
|
||||
, 'HIST_GESTIONE_RICHIESTAPORTING' AS TABELLA_ORIGINE
|
||||
FROM HIST_GESTIONE_RICHIESTAPORTING MGR
|
||||
WHERE MGR.MSISDN IN (:X)
|
||||
AND MGR.STATO = 6
|
||||
) m_cur_bulk
|
||||
)
|
||||
WHERE rnum = 1
|
||||
) ORDER BY MSISDN, DATA_CUT_OVER;
|
||||
@@ -0,0 +1,481 @@
|
||||
-- Execute as user MNP
|
||||
-- 2022 C05 MNP_RU_XXX
|
||||
-- full export of porting history to OLOs
|
||||
-- DDL 2/2
|
||||
-- CREATE PKG_DBP_COOP to export of porting history to OLOs
|
||||
-- Per le CESSAZIONI riportare come CODICE_OPERATORE_RECIPIENT
|
||||
-- l'OLO proprietario originale del DN (come da prefisso)
|
||||
|
||||
CREATE OR REPLACE PACKAGE PKG_DBP_COOP AS
|
||||
|
||||
PROCEDURE ESTR_RICHIESTA (in_data_inizio IN DATE, in_data_fine IN DATE);
|
||||
PROCEDURE ESTR_RICHIESTA_REC (in_data_inizio IN DATE, in_data_fine IN DATE);
|
||||
PROCEDURE ESTR_RICHIESTA_PORTING (in_data_inizio IN DATE, in_data_fine IN DATE);
|
||||
PROCEDURE ESTR_RICH_CESS_PORT (in_data_inizio IN DATE, in_data_fine IN DATE);
|
||||
PROCEDURE ESTR_RICHIESTA_CESS (in_data_inizio IN DATE, in_data_fine IN DATE);
|
||||
|
||||
PROCEDURE ESTR_RICHIESTA_HIST (in_data_inizio IN DATE, in_data_fine IN DATE);
|
||||
PROCEDURE ESTR_RICHIESTA_REC_HIST (in_data_inizio IN DATE, in_data_fine IN DATE);
|
||||
PROCEDURE ESTR_RICHIESTA_PORTING_HIST(in_data_inizio IN DATE, in_data_fine IN DATE);
|
||||
|
||||
END PKG_DBP_COOP;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PACKAGE BODY PKG_DBP_COOP AS
|
||||
|
||||
-- ===============================================================================
|
||||
-- 2022 C05 MNP_RU_XXX Procedura #1/8
|
||||
-- PROCESSO DONOR STANDARD/MVNO/PrjHoc
|
||||
-- Utilizza MERGE invece di LOOP on CURSOR
|
||||
PROCEDURE ESTR_RICHIESTA(in_data_inizio IN DATE, in_data_fine IN DATE) IS
|
||||
BEGIN
|
||||
MERGE INTO MNP_DBP2COOP m_tgt
|
||||
USING (
|
||||
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, FLAG_LAVORATO FROM (
|
||||
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
|
||||
SELECT /*+ FULL(MGR) PARALLEL(5)*/ MGR.MSISDN AS MSISDN
|
||||
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
|
||||
, MO.ROUTING_NUMBER AS ROUTING_NUMBER
|
||||
, MGR.DATA_CUT_OVER_CALC AS DATA_CUT_OVER
|
||||
, SYSDATE AS DATA_ESTRAZIONE
|
||||
, 0 AS FLAG_LAVORATO
|
||||
FROM MNP_GESTIONE_RICHIESTA MGR INNER JOIN MNP_OLO MO ON MO.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT
|
||||
WHERE MGR.MSISDN IS NOT NULL AND MO.ROUTING_NUMBER IS NOT NULL
|
||||
AND MGR.DATA_CUT_OVER_CALC BETWEEN in_data_inizio AND in_data_fine
|
||||
AND STATO = 16 --ESPLETATA
|
||||
) m_cur_bulk
|
||||
)
|
||||
WHERE rnum = 1
|
||||
) m_cur
|
||||
ON (m_cur.MSISDN = m_tgt.MSISDN)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE SET
|
||||
CODICE_OPERATORE_RECIPIENT = m_cur.CODICE_OPERATORE_RECIPIENT
|
||||
, ROUTING_NUMBER = m_cur.ROUTING_NUMBER
|
||||
, DATA_CUT_OVER = m_cur.DATA_CUT_OVER
|
||||
, DATA_ESTRAZIONE = m_cur.DATA_ESTRAZIONE
|
||||
, FLAG_LAVORATO = m_cur.FLAG_LAVORATO
|
||||
WHERE m_cur.DATA_CUT_OVER > m_tgt.DATA_CUT_OVER
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (
|
||||
MSISDN
|
||||
, CODICE_OPERATORE_RECIPIENT
|
||||
, ROUTING_NUMBER
|
||||
, DATA_CUT_OVER
|
||||
, DATA_ESTRAZIONE
|
||||
, FLAG_LAVORATO
|
||||
) VALUES (
|
||||
m_cur.MSISDN
|
||||
, m_cur.CODICE_OPERATORE_RECIPIENT
|
||||
, m_cur.ROUTING_NUMBER
|
||||
, m_cur.DATA_CUT_OVER
|
||||
, m_cur.DATA_ESTRAZIONE
|
||||
, m_cur.FLAG_LAVORATO
|
||||
);
|
||||
COMMIT;
|
||||
RETURN;
|
||||
END ESTR_RICHIESTA;
|
||||
|
||||
-- ===============================================================================
|
||||
-- 2022 C05 MNP_RU_XXX Procedura #2/8
|
||||
-- PROCESSO RECIPIENT STANDARD/MVNO/PrjHoc
|
||||
-- Utilizza MERGE invece di LOOP on CURSOR
|
||||
PROCEDURE ESTR_RICHIESTA_REC(in_data_inizio IN DATE, in_data_fine IN DATE) IS
|
||||
BEGIN
|
||||
MERGE INTO MNP_DBP2COOP m_tgt
|
||||
USING (
|
||||
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, FLAG_LAVORATO FROM (
|
||||
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
|
||||
SELECT /*+ FULL(MGR) PARALLEL(5)*/ MGR.MSISDN AS MSISDN
|
||||
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
|
||||
, MO.ROUTING_NUMBER AS ROUTING_NUMBER
|
||||
, MGR.DATA_CUT_OVER_AOM AS DATA_CUT_OVER
|
||||
, SYSDATE AS DATA_ESTRAZIONE
|
||||
, 0 AS FLAG_LAVORATO
|
||||
FROM MNP_GESTIONE_RICHIESTA_REC MGR INNER JOIN MNP_OLO MO ON MO.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT
|
||||
WHERE MGR.MSISDN IS NOT NULL AND MO.ROUTING_NUMBER IS NOT NULL
|
||||
AND MGR.DATA_CUT_OVER_AOM BETWEEN in_data_inizio AND in_data_fine
|
||||
AND STATO = 12 --EVASA
|
||||
) m_cur_bulk
|
||||
)
|
||||
WHERE rnum = 1
|
||||
) m_cur
|
||||
ON (m_cur.MSISDN = m_tgt.MSISDN)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE SET
|
||||
CODICE_OPERATORE_RECIPIENT = m_cur.CODICE_OPERATORE_RECIPIENT
|
||||
, ROUTING_NUMBER = m_cur.ROUTING_NUMBER
|
||||
, DATA_CUT_OVER = m_cur.DATA_CUT_OVER
|
||||
, DATA_ESTRAZIONE = m_cur.DATA_ESTRAZIONE
|
||||
, FLAG_LAVORATO = m_cur.FLAG_LAVORATO
|
||||
WHERE m_cur.DATA_CUT_OVER > m_tgt.DATA_CUT_OVER
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (
|
||||
MSISDN
|
||||
, CODICE_OPERATORE_RECIPIENT
|
||||
, ROUTING_NUMBER
|
||||
, DATA_CUT_OVER
|
||||
, DATA_ESTRAZIONE
|
||||
, FLAG_LAVORATO
|
||||
) VALUES (
|
||||
m_cur.MSISDN
|
||||
, m_cur.CODICE_OPERATORE_RECIPIENT
|
||||
, m_cur.ROUTING_NUMBER
|
||||
, m_cur.DATA_CUT_OVER
|
||||
, m_cur.DATA_ESTRAZIONE
|
||||
, m_cur.FLAG_LAVORATO
|
||||
);
|
||||
COMMIT;
|
||||
RETURN;
|
||||
END ESTR_RICHIESTA_REC;
|
||||
|
||||
-- ===============================================================================
|
||||
-- 2022 C05 MNP_RU_XXX Procedura #3/8
|
||||
-- PROCESSO PORTING TERZE PARTI
|
||||
-- Utilizza MERGE invece di LOOP on CURSOR
|
||||
PROCEDURE ESTR_RICHIESTA_PORTING(in_data_inizio IN DATE, in_data_fine IN DATE) IS
|
||||
BEGIN
|
||||
MERGE INTO MNP_DBP2COOP m_tgt
|
||||
USING (
|
||||
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, FLAG_LAVORATO FROM (
|
||||
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
|
||||
SELECT
|
||||
MGR.MSISDN AS MSISDN
|
||||
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
|
||||
, MO.ROUTING_NUMBER AS ROUTING_NUMBER
|
||||
, MGR.DATA_CUT_OVER AS DATA_CUT_OVER
|
||||
, SYSDATE AS DATA_ESTRAZIONE
|
||||
, 0 AS FLAG_LAVORATO
|
||||
FROM MNP_GESTIONE_RICHIESTA_PORTING MGR INNER JOIN MNP_OLO MO ON MO.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT
|
||||
WHERE MGR.MSISDN IS NOT NULL AND MO.ROUTING_NUMBER IS NOT NULL
|
||||
AND MGR.DATA_CUT_OVER BETWEEN in_data_inizio AND in_data_fine
|
||||
AND MGR.STATO = 6 -- ESPLETATA
|
||||
) m_cur_bulk
|
||||
)
|
||||
WHERE rnum = 1
|
||||
) m_cur
|
||||
ON (m_cur.MSISDN = m_tgt.MSISDN)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE SET
|
||||
CODICE_OPERATORE_RECIPIENT = m_cur.CODICE_OPERATORE_RECIPIENT
|
||||
, ROUTING_NUMBER = m_cur.ROUTING_NUMBER
|
||||
, DATA_CUT_OVER = m_cur.DATA_CUT_OVER
|
||||
, DATA_ESTRAZIONE = m_cur.DATA_ESTRAZIONE
|
||||
, FLAG_LAVORATO = m_cur.FLAG_LAVORATO
|
||||
WHERE m_cur.DATA_CUT_OVER > m_tgt.DATA_CUT_OVER
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (
|
||||
MSISDN
|
||||
, CODICE_OPERATORE_RECIPIENT
|
||||
, ROUTING_NUMBER
|
||||
, DATA_CUT_OVER
|
||||
, DATA_ESTRAZIONE
|
||||
, FLAG_LAVORATO
|
||||
) VALUES (
|
||||
m_cur.MSISDN
|
||||
, m_cur.CODICE_OPERATORE_RECIPIENT
|
||||
, m_cur.ROUTING_NUMBER
|
||||
, m_cur.DATA_CUT_OVER
|
||||
, m_cur.DATA_ESTRAZIONE
|
||||
, m_cur.FLAG_LAVORATO
|
||||
);
|
||||
COMMIT;
|
||||
RETURN;
|
||||
END ESTR_RICHIESTA_PORTING;
|
||||
|
||||
|
||||
-- ===============================================================================
|
||||
-- 2022 C05 MNP_RU_XXX Procedura #4/8
|
||||
-- PROCESSO CESSAZIONI PORTING
|
||||
-- STATO 4 = CESSATA
|
||||
-- Riportare come CODICE_OPERATORE_RECIPIENT l'OLO proprietario originale del DN
|
||||
-- L'ultima condizione serve a estrarre OLO Cessatori (Donor) esistenti e validi
|
||||
-- Utilizza MERGE invece di LOOP on CURSOR
|
||||
|
||||
PROCEDURE ESTR_RICH_CESS_PORT(in_data_inizio IN DATE, in_data_fine IN DATE) IS
|
||||
BEGIN
|
||||
MERGE INTO MNP_DBP2COOP m_tgt
|
||||
USING (
|
||||
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, FLAG_LAVORATO FROM (
|
||||
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
|
||||
SELECT
|
||||
MGR.MSISDN AS MSISDN
|
||||
, O.DESC_OLO AS CODICE_OPERATORE_CESSATORE
|
||||
, O.ROUTING_NUMBER AS ROUTING_NUMBER_CESSATORE
|
||||
, MGR.DATARICEZIONERICHIESTA AS DATA_CUT_OVER
|
||||
, SYSDATE AS DATA_ESTRAZIONE
|
||||
, 0 AS FLAG_LAVORATO
|
||||
, MO.DESC_OLO AS CODICE_OPERATORE_RECIPIENT
|
||||
, MO.ROUTING_NUMBER AS ROUTING_NUMBER
|
||||
FROM MNP_GESTIONE_RICH_CESS_PORT MGR, MNP_OLO O
|
||||
, MNP_OLO_PREFISSI MOP INNER JOIN MNP_OLO MO ON MO.COD_OLO=MOP.COD_OLO
|
||||
WHERE
|
||||
MGR.MSISDN IS NOT NULL AND MO.ROUTING_NUMBER IS NOT NULL
|
||||
AND MGR.DATARICEZIONERICHIESTA BETWEEN in_data_inizio AND in_data_fine
|
||||
AND ( MOP.PREFIX=SUBSTR(MGR.MSISDN,3,3) OR MOP.PREFIX=SUBSTR(MGR.MSISDN,3,4) )
|
||||
AND MGR.STATO='2' -- CESSATA
|
||||
AND O.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT
|
||||
) m_cur_bulk
|
||||
)
|
||||
WHERE rnum = 1
|
||||
) m_cur
|
||||
ON (m_cur.MSISDN = m_tgt.MSISDN)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE SET
|
||||
CODICE_OPERATORE_RECIPIENT = m_cur.CODICE_OPERATORE_RECIPIENT
|
||||
, ROUTING_NUMBER = m_cur.ROUTING_NUMBER
|
||||
, DATA_CUT_OVER = m_cur.DATA_CUT_OVER
|
||||
, DATA_ESTRAZIONE = m_cur.DATA_ESTRAZIONE
|
||||
, FLAG_LAVORATO = m_cur.FLAG_LAVORATO
|
||||
WHERE m_cur.DATA_CUT_OVER > m_tgt.DATA_CUT_OVER
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (
|
||||
MSISDN
|
||||
, CODICE_OPERATORE_RECIPIENT
|
||||
, ROUTING_NUMBER
|
||||
, DATA_CUT_OVER
|
||||
, DATA_ESTRAZIONE
|
||||
, FLAG_LAVORATO
|
||||
) VALUES (
|
||||
m_cur.MSISDN
|
||||
, m_cur.CODICE_OPERATORE_RECIPIENT
|
||||
, m_cur.ROUTING_NUMBER
|
||||
, m_cur.DATA_CUT_OVER
|
||||
, m_cur.DATA_ESTRAZIONE
|
||||
, m_cur.FLAG_LAVORATO
|
||||
);
|
||||
COMMIT;
|
||||
RETURN;
|
||||
END ESTR_RICH_CESS_PORT;
|
||||
|
||||
|
||||
-- ===============================================================================
|
||||
-- 2022 C05 MNP_RU_XXX Procedura #5/8
|
||||
-- PROCESSO CESSAZIONI
|
||||
-- Riportare come CODICE_OPERATORE_RECIPIENT l'OLO proprietario originale del DN
|
||||
-- L'ultima condizione serve a estrarre OLO Cessatori (Donor) esistenti e validi
|
||||
-- Utilizza MERGE invece di LOOP on CURSOR
|
||||
PROCEDURE ESTR_RICHIESTA_CESS(in_data_inizio IN DATE, in_data_fine IN DATE) IS
|
||||
BEGIN
|
||||
MERGE INTO MNP_DBP2COOP m_tgt
|
||||
USING (
|
||||
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, FLAG_LAVORATO FROM (
|
||||
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
|
||||
SELECT
|
||||
MGR.MSISDN AS MSISDN
|
||||
, O.DESC_OLO AS CODICE_OPERATORE_CESSATORE
|
||||
, O.ROUTING_NUMBER AS ROUTING_NUMBER_CESSATORE
|
||||
, MGR.DATARICEZIONERICHIESTA AS DATA_CUT_OVER
|
||||
, SYSDATE AS DATA_ESTRAZIONE
|
||||
, 0 AS FLAG_LAVORATO
|
||||
, MO.DESC_OLO AS CODICE_OPERATORE_RECIPIENT
|
||||
, MO.ROUTING_NUMBER AS ROUTING_NUMBER
|
||||
FROM
|
||||
MNP_GESTIONE_RICHIESTA_CESS MGR, MNP_OLO O
|
||||
, MNP_OLO_PREFISSI MOP INNER JOIN MNP_OLO MO ON MO.COD_OLO=MOP.COD_OLO
|
||||
WHERE
|
||||
MGR.MSISDN IS NOT NULL AND MO.ROUTING_NUMBER IS NOT NULL
|
||||
AND MGR.DATARICEZIONERICHIESTA BETWEEN in_data_inizio AND in_data_fine
|
||||
AND (MOP.PREFIX = SUBSTR(MGR.MSISDN,3,3) OR MOP.PREFIX = SUBSTR(MGR.MSISDN,3,4))
|
||||
AND MGR.STATO='3' -- CESSATA
|
||||
AND O.DESC_OLO = MGR.CODICE_OPERATORE_RECIPIENT
|
||||
) m_cur_bulk
|
||||
)
|
||||
WHERE rnum = 1
|
||||
) m_cur
|
||||
ON (m_cur.MSISDN = m_tgt.MSISDN)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE SET
|
||||
CODICE_OPERATORE_RECIPIENT = m_cur.CODICE_OPERATORE_RECIPIENT
|
||||
, ROUTING_NUMBER = m_cur.ROUTING_NUMBER
|
||||
, DATA_CUT_OVER = m_cur.DATA_CUT_OVER
|
||||
, DATA_ESTRAZIONE = m_cur.DATA_ESTRAZIONE
|
||||
, FLAG_LAVORATO = m_cur.FLAG_LAVORATO
|
||||
WHERE m_cur.DATA_CUT_OVER > m_tgt.DATA_CUT_OVER
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (
|
||||
MSISDN
|
||||
, CODICE_OPERATORE_RECIPIENT
|
||||
, ROUTING_NUMBER
|
||||
, DATA_CUT_OVER
|
||||
, DATA_ESTRAZIONE
|
||||
, FLAG_LAVORATO
|
||||
) VALUES (
|
||||
m_cur.MSISDN
|
||||
, m_cur.CODICE_OPERATORE_RECIPIENT
|
||||
, m_cur.ROUTING_NUMBER
|
||||
, m_cur.DATA_CUT_OVER
|
||||
, m_cur.DATA_ESTRAZIONE
|
||||
, m_cur.FLAG_LAVORATO
|
||||
);
|
||||
COMMIT;
|
||||
RETURN;
|
||||
END ESTR_RICHIESTA_CESS;
|
||||
|
||||
-- ===============================================================================
|
||||
-- 2022 C05 MNP_RU_XXX Procedura #6/8
|
||||
-- PROCESSO DONOR STANDARD/MVNO/PrjHoc tabella storicizzata
|
||||
-- Utilizza MERGE invece di LOOP on CURSOR
|
||||
PROCEDURE ESTR_RICHIESTA_HIST(in_data_inizio IN DATE, in_data_fine IN DATE) IS
|
||||
BEGIN
|
||||
MERGE INTO MNP_DBP2COOP m_tgt
|
||||
USING (
|
||||
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, FLAG_LAVORATO FROM (
|
||||
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
|
||||
SELECT
|
||||
MGR.MSISDN AS MSISDN
|
||||
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
|
||||
, MO.ROUTING_NUMBER AS ROUTING_NUMBER
|
||||
, MGR.DATA_CUT_OVER_CALC AS DATA_CUT_OVER
|
||||
, SYSDATE AS DATA_ESTRAZIONE
|
||||
, 0 AS FLAG_LAVORATO
|
||||
FROM HIST_GESTIONE_RICHIESTA MGR INNER JOIN MNP_OLO MO ON MO.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT
|
||||
WHERE MGR.MSISDN IS NOT NULL AND MO.ROUTING_NUMBER IS NOT NULL
|
||||
AND MGR.DATA_CUT_OVER_CALC BETWEEN in_data_inizio AND in_data_fine
|
||||
AND MGR.STATO = 16 --ESPLETATA
|
||||
) m_cur_bulk
|
||||
)
|
||||
WHERE rnum = 1
|
||||
) m_cur
|
||||
ON (m_cur.MSISDN = m_tgt.MSISDN)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE SET
|
||||
CODICE_OPERATORE_RECIPIENT = m_cur.CODICE_OPERATORE_RECIPIENT
|
||||
, ROUTING_NUMBER = m_cur.ROUTING_NUMBER
|
||||
, DATA_CUT_OVER = m_cur.DATA_CUT_OVER
|
||||
, DATA_ESTRAZIONE = m_cur.DATA_ESTRAZIONE
|
||||
, FLAG_LAVORATO = m_cur.FLAG_LAVORATO
|
||||
WHERE m_cur.DATA_CUT_OVER > m_tgt.DATA_CUT_OVER
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (
|
||||
MSISDN
|
||||
, CODICE_OPERATORE_RECIPIENT
|
||||
, ROUTING_NUMBER
|
||||
, DATA_CUT_OVER
|
||||
, DATA_ESTRAZIONE
|
||||
, FLAG_LAVORATO
|
||||
) VALUES (
|
||||
m_cur.MSISDN
|
||||
, m_cur.CODICE_OPERATORE_RECIPIENT
|
||||
, m_cur.ROUTING_NUMBER
|
||||
, m_cur.DATA_CUT_OVER
|
||||
, m_cur.DATA_ESTRAZIONE
|
||||
, m_cur.FLAG_LAVORATO
|
||||
);
|
||||
COMMIT;
|
||||
RETURN;
|
||||
END ESTR_RICHIESTA_HIST;
|
||||
|
||||
|
||||
-- ===============================================================================
|
||||
-- 2022 C05 MNP_RU_XXX Procedura #7/8
|
||||
-- PROCESSO RECIPIENT STANDARD/MVNO/PRJHOC tabella storicizzata
|
||||
-- Utilizza MERGE invece di LOOP on CURSOR
|
||||
PROCEDURE ESTR_RICHIESTA_REC_HIST(in_data_inizio IN DATE, in_data_fine IN DATE) IS
|
||||
BEGIN
|
||||
MERGE INTO MNP_DBP2COOP m_tgt
|
||||
USING (
|
||||
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, FLAG_LAVORATO FROM (
|
||||
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
|
||||
SELECT
|
||||
MGR.MSISDN AS MSISDN
|
||||
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
|
||||
, MO.ROUTING_NUMBER AS ROUTING_NUMBER
|
||||
, MGR.DATA_CUT_OVER_AOM AS DATA_CUT_OVER
|
||||
, SYSDATE AS DATA_ESTRAZIONE
|
||||
, 0 AS FLAG_LAVORATO
|
||||
FROM HIST_GESTIONE_RICHIESTA_REC MGR INNER JOIN MNP_OLO MO ON MO.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT
|
||||
WHERE MGR.MSISDN IS NOT NULL AND MO.ROUTING_NUMBER IS NOT NULL
|
||||
AND MGR.DATA_CUT_OVER_AOM BETWEEN in_data_inizio AND in_data_fine
|
||||
AND MGR.STATO = 12 --EVASA
|
||||
) m_cur_bulk
|
||||
)
|
||||
WHERE rnum = 1
|
||||
) m_cur
|
||||
ON (m_cur.MSISDN = m_tgt.MSISDN)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE SET
|
||||
CODICE_OPERATORE_RECIPIENT = m_cur.CODICE_OPERATORE_RECIPIENT
|
||||
, ROUTING_NUMBER = m_cur.ROUTING_NUMBER
|
||||
, DATA_CUT_OVER = m_cur.DATA_CUT_OVER
|
||||
, DATA_ESTRAZIONE = m_cur.DATA_ESTRAZIONE
|
||||
, FLAG_LAVORATO = m_cur.FLAG_LAVORATO
|
||||
WHERE m_cur.DATA_CUT_OVER > m_tgt.DATA_CUT_OVER
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (
|
||||
MSISDN
|
||||
, CODICE_OPERATORE_RECIPIENT
|
||||
, ROUTING_NUMBER
|
||||
, DATA_CUT_OVER
|
||||
, DATA_ESTRAZIONE
|
||||
, FLAG_LAVORATO
|
||||
) VALUES (
|
||||
m_cur.MSISDN
|
||||
, m_cur.CODICE_OPERATORE_RECIPIENT
|
||||
, m_cur.ROUTING_NUMBER
|
||||
, m_cur.DATA_CUT_OVER
|
||||
, m_cur.DATA_ESTRAZIONE
|
||||
, m_cur.FLAG_LAVORATO
|
||||
);
|
||||
COMMIT;
|
||||
RETURN;
|
||||
END ESTR_RICHIESTA_REC_HIST;
|
||||
|
||||
|
||||
-- ===============================================================================
|
||||
-- 2022 C05 MNP_RU_XXX Procedura #8/8
|
||||
-- PROCESSO PORTING TERZE PARTI tabella storicizzata
|
||||
-- Utilizza MERGE invece di LOOP on CURSOR
|
||||
PROCEDURE ESTR_RICHIESTA_PORTING_HIST(in_data_inizio IN DATE, in_data_fine IN DATE) IS
|
||||
BEGIN
|
||||
MERGE INTO MNP_DBP2COOP m_tgt
|
||||
USING (
|
||||
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, FLAG_LAVORATO FROM (
|
||||
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
|
||||
SELECT
|
||||
MGR.MSISDN AS MSISDN
|
||||
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
|
||||
, MO.ROUTING_NUMBER AS ROUTING_NUMBER
|
||||
, MGR.DATA_CUT_OVER AS DATA_CUT_OVER
|
||||
, SYSDATE AS DATA_ESTRAZIONE
|
||||
, 0 AS FLAG_LAVORATO
|
||||
FROM HIST_GESTIONE_RICHIESTAPORTING MGR INNER JOIN MNP_OLO MO ON MO.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT
|
||||
WHERE MGR.MSISDN IS NOT NULL AND MO.ROUTING_NUMBER IS NOT NULL
|
||||
AND MGR.DATA_CUT_OVER BETWEEN in_data_inizio AND in_data_fine
|
||||
AND MGR.STATO = 6 -- ESPLETATA
|
||||
) m_cur_bulk
|
||||
)
|
||||
WHERE rnum = 1
|
||||
) m_cur
|
||||
ON (m_cur.MSISDN = m_tgt.MSISDN)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE SET
|
||||
CODICE_OPERATORE_RECIPIENT = m_cur.CODICE_OPERATORE_RECIPIENT
|
||||
, ROUTING_NUMBER = m_cur.ROUTING_NUMBER
|
||||
, DATA_CUT_OVER = m_cur.DATA_CUT_OVER
|
||||
, DATA_ESTRAZIONE = m_cur.DATA_ESTRAZIONE
|
||||
, FLAG_LAVORATO = m_cur.FLAG_LAVORATO
|
||||
WHERE m_cur.DATA_CUT_OVER > m_tgt.DATA_CUT_OVER
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (
|
||||
MSISDN
|
||||
, CODICE_OPERATORE_RECIPIENT
|
||||
, ROUTING_NUMBER
|
||||
, DATA_CUT_OVER
|
||||
, DATA_ESTRAZIONE
|
||||
, FLAG_LAVORATO
|
||||
) VALUES (
|
||||
m_cur.MSISDN
|
||||
, m_cur.CODICE_OPERATORE_RECIPIENT
|
||||
, m_cur.ROUTING_NUMBER
|
||||
, m_cur.DATA_CUT_OVER
|
||||
, m_cur.DATA_ESTRAZIONE
|
||||
, m_cur.FLAG_LAVORATO
|
||||
);
|
||||
COMMIT;
|
||||
RETURN;
|
||||
END ESTR_RICHIESTA_PORTING_HIST;
|
||||
|
||||
END PKG_DBP_COOP;
|
||||
/
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
-- 2022 C05 MNP_RU_XXX
|
||||
--execute as MNP
|
||||
|
||||
--spool /mnpapp/log/script/dbc_export_coop.log;
|
||||
|
||||
-----------------------------
|
||||
--CREATE/MODIFY OBJECT
|
||||
@@DDL_mnp_dbp2coop.sql
|
||||
@@DDL_mnp_dbp2coop_date.sql
|
||||
@@MNP_DDL_PKG_DBP_COOP.sql
|
||||
|
||||
-----------------------------
|
||||
--INSERT/UPDATE DATA
|
||||
--@@dbcDML.sql
|
||||
|
||||
-----------------------------
|
||||
commit;
|
||||
spool off;
|
||||
Reference in New Issue
Block a user