SP Data Load Verify Data
SP Data Load Verify Data
CURSOR C3 IS SELECT *
FROM SYS_LOAD_INTERFACE_DETAIL
WHERE INTERFACE_ID=P_INTERFACE_ID
ORDER BY LINE_NO;
CURSOR C4 IS SELECT *
FROM SYS_LOAD_INTERFACE_POST_SQLS
WHERE INTERFACE_ID=P_INTERFACE_ID
ORDER BY LINE_NO;
CURSOR C5 IS SELECT *
FROM SYS_LOAD_INTERFACE_SQLS
WHERE INTERFACE_ID=P_INTERFACE_ID
ORDER BY LINE_NO;
CURSOR C6 IS SELECT A.DESTINATION_TABLE_NAME,
A.DESTINATION_FIELD_NAME ,
A.DESTINATION_TYPE ,
B.SOURCE_TABLE_NAME ,
A.SOURCE_FIELD_NAME ,
A.SOURCE_FIELD_NAME_FOR_CLEANUP,
NVL(A.NON_DATABASE_SOURCE_COLUMN,'N') AS
NON_DATABASE_SOURCE_COLUMN
FROM SYS_LOAD_INTERFACE_DETAIL A,
SYS_LOAD_INTERFACE_HEADER B
WHERE A.INTERFACE_ID=P_INTERFACE_ID
AND A.INTERFACE_ID = B.INTERFACE_ID
AND A.DESTINATION_TYPE IN ('N')
ORDER BY LINE_NO;
CURSOR S1 IS
SELECT B.COLUMN_NAME ,A.*
FROM SYS_LOAD_INTERFACE_DETAIL A,
USER_TAB_COLUMNS B
WHERE INTERFACE_ID=P_INTERFACE_ID
AND A.DESTINATION_TABLE_NAME = B.TABLE_NAME(+)
AND A.DESTINATION_FIELD_NAME = B.COLUMN_NAME(+)
ORDER BY LINE_NO;
V_NAME SD_CUSTOMERS.NAME%TYPE;
V_LOAD_HEADER SYS_LOAD_INTERFACE_HEADER%ROWTYPE;
V_SNO SYS_LOAD_INTERFACE_LOG.SNO%TYPE;
V_DEST_DATA_TYPE USER_TAB_COLUMNS.DATA_TYPE%TYPE;
V_MAX_REC NUMBER(25,5);
V_CNT NUMBER(6);
V_CAPS NUMBER;
V_LINE_NO NUMBER;
V_SQL VARCHAR2(32000);
V_SELECT VARCHAR2(32000);
V_INSERT1 VARCHAR2(32000);
V_INSERT VARCHAR2(32000);
--V_SOURCE_COLUMN VARCHAR2(4000);
V_SOURCE_FIELD_NAME VARCHAR2(4000);
V_SOURCE_FIELD_NAME_TEMP VARCHAR2(4000);
V_SOURCE_FIELD_NAME_FORCLEANUP VARCHAR2(4000);
V_SOURCE_TABLE_NAME VARCHAR2(4000);
V_FLAG VARCHAR2(500);
V_NO_OF_RECORDS NUMBER;
TABLE_ERROR EXCEPTION;
OUT_ERRORS EXCEPTION;
V_ERRORS_FOUND NUMBER(10);
V_ERRORS_FOUND_TOTAL NUMBER(10);
V_SQL_STRING VARCHAR2(1000);
V_SQL_STRING_RESULT VARCHAR2(1000);
V_ERROR_LOGS VARCHAR2(2000);
V_DESTINATION_TABLE_NAME VARCHAR2(4000);
V_FIELD_IS_CAPS VARCHAR2(10);
V_DFLT_DESTINATION_FIELD_VALUE VARCHAR2(4000);
V_DFLT_FORMAT_MODEL VARCHAR2(4000);
V_NON_DATABASE_SOURCE_COLUMN VARCHAR2(1);
BEGIN
SELECT *
INTO V_LOAD_HEADER
FROM SYS_LOAD_INTERFACE_HEADER
WHERE INTERFACE_ID = P_INTERFACE_ID;
-----------------------------------------------------------------------------------
-------------------------
------------------------------------CLEAN UP THE LOGS/TARGET
TABLE------------------------------------------
-----------------------------------------------------------------------------------
-------------------------
BEGIN
DELETE FROM SYS_LOAD_INTERFACE_LOG_DETAIL WHERE SNO IN (SELECT SNO FROM
SYS_LOAD_DATA_VERIFY_SUM WHERE INTERFACE_ID = P_INTERFACE_ID);
DELETE FROM SYS_LOAD_DATA_VERIFY_SUM WHERE INTERFACE_ID =
P_INTERFACE_ID;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
V_FLAG := '1';
BEGIN
EXECUTE IMMEDIATE 'TRUNCATE TABLE '||V_LOAD_HEADER.DESTINATION_TABLE_NAME;
EXCEPTION
WHEN OTHERS THEN
EXECUTE IMMEDIATE 'delete from '||V_LOAD_HEADER.DESTINATION_TABLE_NAME;
COMMIT;
END;
V_FLAG := '2';
DECLARE
V_AVL NUMBER;
BEGIN
SELECT COUNT(*) INTO V_AVL FROM TAB WHERE TNAME =
V_LOAD_HEADER.SOURCE_TABLE_NAME;
IF V_AVL = 0 THEN
RAISE TABLE_ERROR;
END IF;
EXCEPTION
WHEN OTHERS THEN
RAISE TABLE_ERROR;
END;
-----------------------------------------------------------------------------------
-------------------------
---------------------------------------SETUP CHECKS
--------------------------------------------------
-----------------------------------------------------------------------------------
-------------------------
-- 1
FOR X IN S1 LOOP
IF X.COLUMN_NAME IS NULL THEN
PKG_DATA_LOAD.SP_INSERT_ERROR_LOG_SUM(P_INTERFACE_ID,
'Destination Field Name : <font color= "Red"><B>'||
X.DESTINATION_FIELD_NAME||'</B></font> not Found',
V_CNT,
V_SQL);
V_ERRORS_FOUND := NVL(V_ERRORS_FOUND,0)+1;
END IF;
END LOOP;
ELSE
V_SQL := 'SELECT COUNT(1) FROM '||
V_LOAD_HEADER.SOURCE_USER_ID||'.'||V_LOAD_HEADER.SOURCE_TABLE_NAME||' WHERE '||
V_SOURCE_FIELD_NAME
||' IS NOT NULL ' ||' AND '
|| CASE WHEN V_FIELD_IS_CAPS ='Y' THEN ' UPPER('||
V_SOURCE_FIELD_NAME||')' ELSE V_SOURCE_FIELD_NAME END ||' NOT IN (SELECT '||
J.REFERENCE2||' FROM '||J.REFERENCE1||' WHERE '||
REPLACE(REPLACE(REPLACE ( UPPER(J.REFERENCE3 ),'" &
','' ),'.TEXT & "',''),V_DESTINATION_TABLE_NAME||'_','')||')';
END IF;
ELSE
IF V_LOAD_HEADER.WHERE_CONDITION IS NOT NULL THEN
V_SQL := 'SELECT COUNT(1) FROM '||
V_LOAD_HEADER.SOURCE_USER_ID||'.'||V_LOAD_HEADER.SOURCE_TABLE_NAME||' WHERE '||
V_LOAD_HEADER.WHERE_CONDITION||' AND '||V_SOURCE_FIELD_NAME||' IS NOT NULL '
|| ' AND '|| CASE WHEN V_FIELD_IS_CAPS ='Y' THEN '
UPPER('||V_SOURCE_FIELD_NAME||')' ELSE V_SOURCE_FIELD_NAME END ||' NOT IN (SELECT
'||J.REFERENCE2||' FROM '||J.REFERENCE1||')';
ELSE
V_SQL := 'SELECT COUNT(1) FROM '||
V_LOAD_HEADER.SOURCE_USER_ID||'.'||V_LOAD_HEADER.SOURCE_TABLE_NAME||' WHERE '||
V_SOURCE_FIELD_NAME ||' IS NOT NULL '
||' AND ' || CASE WHEN V_FIELD_IS_CAPS ='Y' THEN '
UPPER('||V_SOURCE_FIELD_NAME||')' ELSE V_SOURCE_FIELD_NAME END ||' NOT IN (SELECT
'||J.REFERENCE2||' FROM '||J.REFERENCE1||')';
END IF;
END IF;
COMMIT;
END IF;
END IF;--VALIDATION RULE END
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL ; ZZZ_TEST('SP_VERIFY_LOAD C2 CURSOR Validation
NDF :'||P_INTERFACE_ID||' -'||SQLERRM ||
DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
WHEN OTHERS THEN
NULL ; ZZZ_TEST('SP_VERIFY_LOAD C2 CURSOR Validation
OTH :'||P_INTERFACE_ID||' -'||SQLERRM ||
DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
END;
END LOOP;
FOR J IN C2 LOOP
DECLARE
V_SOURCE_FIELD_NAME VARCHAR2(1000);
V_DESTINATION_FIELD_NAME VARCHAR2(1000);
V_DESTINATION_FIELD_VALUE VARCHAR2(1000);
BEGIN
V_CNT:= 0;
V_SQL:=NULL;
ELSE
V_SOURCE_FIELD_NAME_TEMP:= 'A.'||V_SOURCE_FIELD_NAME;
END IF;
COMMIT;
END IF;
END IF;--MANDATORY
END;
--ZZZ_TEST('SP_VERIFY_LOAD C4 OTH: '||P_INTERFACE_ID||' -'||K.EXECUTE_SQLS||
SQLERRM ||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
END LOOP;
IF V_ERRORS_FOUND >0 THEN
V_ERRORS_FOUND_TOTAL := NVL(V_ERRORS_FOUND_TOTAL,0) + V_ERRORS_FOUND;
IF V_ERROR_LOGS IS NULL THEN V_ERROR_LOGS :=' Errors encountered
for missing Mandatory fields';
ELSE V_ERROR_LOGS:= V_ERROR_LOGS ||',missing
Mandatory fields';END IF;
END IF;
V_ERRORS_FOUND:=0;
V_SOURCE_FIELD_NAME_FORCLEANUP:= NULL;
-----------------------------------------------------------------------------------
-------------------------
--------------------------------------- IS NUMBER CHECKS
---------------------------------------------------
-----------------------------------------------------------------------------------
-------------------------
EXCEPTION
WHEN OTHERS THEN
NULL ;
END;
END LOOP;
IF V_ERRORS_FOUND>0 THEN
V_ERRORS_FOUND_TOTAL := NVL(V_ERRORS_FOUND_TOTAL,0) + V_ERRORS_FOUND;
IF V_ERROR_LOGS IS NULL THEN V_ERROR_LOGS :=' Errors encountered for numeric check
on data';
ELSE V_ERROR_LOGS:= V_ERROR_LOGS ||',Numeric check on data'; END IF;
END IF;
V_ERRORS_FOUND:=0;
V_SOURCE_FIELD_NAME_FORCLEANUP:= NULL;
-----------------------------------------------------------------------------------
-------------------------
--------------------------------------- IS DATE CHECKS
---------------------------------------------------
-----------------------------------------------------------------------------------
-------------------------
END IF;
END IF;
END;
ZZZ_TEST('SP_VERIFY_LOAD C7 Check lOOP :V_SQL '||
P_INTERFACE_ID||' -'||V_SQL);
IF V_SQL IS NOT NULL THEN
EXECUTE IMMEDIATE V_SQL INTO V_CNT;
END IF;
ELSE
V_SQL_STRING:= ' select listagg(check_col,'||
CHR(39)||','||CHR(39)||
') WITHIN GROUP (order by check_col) as
error_data from ( select distinct '
||X.SOURCE_FIELD_NAME|| ' as check_col
from '||X.SOURCE_TABLE_NAME
||' where ISDATE_FOR_LOADING('||
X.SOURCE_FIELD_NAME
||','||CHR(39)|| X.FORMAT_MODEL||CHR(39)
END IF;
ZZZ_TEST('SP_VERIFY_LOAD C7 Check
lOOP :v_sql_string '||P_INTERFACE_ID||' -'||V_SQL_STRING);
EXCEPTION
WHEN OTHERS THEN
NULL ;
END;
PKG_DATA_LOAD.SP_INSERT_ERROR_LOG_SUM(P_INTERFACE_ID,'Use Date Format
mask <font color= "Blue">( DD-MON-YYYY accepted by default )</font> for <font
color= "Red"><B>'||X.SOURCE_FIELD_NAME ||'</B></font> ('||
V_SQL_STRING_RESULT||')',V_CNT, V_SQL );
V_ERRORS_FOUND := NVL(V_ERRORS_FOUND,0)+1;
--ZZZ_TEST('SP_VERIFY_LOAD C7 Check lOOP :V_SQL
'||P_INTERFACE_ID||' -'||V_SQL||' ;'||v_errors_found);
COMMIT;
END IF; -- number field
END;
END LOOP;
-----------------------------------------------------------------------------------
-------------------------
-----------------------------------------------------------------------------------
-------------------------
-----------------------------------------------------------------------------------
-------------------------
IF V_ERRORS_FOUND>0 THEN
V_ERRORS_FOUND_TOTAL := NVL(V_ERRORS_FOUND_TOTAL,0) + V_ERRORS_FOUND;
IF V_ERROR_LOGS IS NULL THEN V_ERROR_LOGS :=' Errors encountered for Date check on
data';
ELSE V_ERROR_LOGS:= V_ERROR_LOGS ||',Date check on data'; END IF;
END IF;
V_ERRORS_FOUND:=0;
V_SOURCE_FIELD_NAME_FORCLEANUP:= NULL;
SELECT NVL(MAX(LINE_NO),0)+1
INTO V_LINE_NO
FROM SYS_LOAD_INTERFACE_SUMMARY
WHERE INTERFACE_ID=P_INTERFACE_ID
AND SUMMARY_TYPE='DATA_LOADED_INFO';
V_LINE_NO , --LINE_NO,
'DATA_LOADED_INFO' ,--SUMMARY_TYPE,
P_USER_ID ,--CREATED_BY,
SYSDATE ,--CREATED_DATE,
NULL ,--CHANGED_BY,
NULL --CHANGED_DATE
);
COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
PKG_DATA_LOAD.SP_INSERT_ERROR_LOG_SUM(P_INTERFACE_ID,
'Field value/Field is Missing per Setup.',
NULL,
V_FLAG||CHR(10)||V_SQL||CHR(10)||V_INSERT||'
'||V_SELECT||CHR(10) ||SQLERRM||',' ||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE );