Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

SP Data Load

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 30

set define off;

create or replace PROCEDURE SP_DATA_LOAD( P_INTERFACE_ID VARCHAR2,


P_USER_ID VARCHAR2 DEFAULT
'DATA_LOAD')
IS
--PRAGMA AUTONOMOUS_TRANSACTION;
CURSOR C2 IS SELECT *
FROM SYS_LOAD_INTERFACE_RULES
WHERE INTERFACE_ID =P_INTERFACE_ID
AND NVL(ACTIVE_FLAG,'N')='Y'
ORDER BY FIELD_NAME,RULE_EXECUTION_SEQ;

CURSOR C3 IS SELECT *
FROM SYS_LOAD_INTERFACE_DETAIL
WHERE INTERFACE_ID=P_INTERFACE_ID
AND NVL(IGNORE_DESTINATION,'N') ='N'
ORDER BY LINE_NO;

CURSOR C4 IS SELECT *
FROM SYS_LOAD_INTERFACE_POST_SQLS
WHERE INTERFACE_ID=P_INTERFACE_ID
AND NVL(ACTIVE_FLAG,'N') ='Y'
ORDER BY LINE_NO; --- post sqls

CURSOR C5 IS SELECT *
FROM SYS_LOAD_INTERFACE_SQLS
WHERE INTERFACE_ID=P_INTERFACE_ID
AND NVL(ACTIVE_FLAG,'N') ='Y'
ORDER BY LINE_NO; --- pre sqls

CURSOR C6 IS SELECT A.DESTINATION_TABLE_NAME,


A.DESTINATION_FIELD_NAME ,
A.DESTINATION_FIELD_VALUE,
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 C7 IS SELECT A.DESTINATION_TABLE_NAME,


A.DESTINATION_FIELD_NAME ,
A.DESTINATION_FIELD_VALUE,
A.DESTINATION_TYPE ,
B.SOURCE_TABLE_NAME ,
A.SOURCE_FIELD_NAME ,
A.SOURCE_FIELD_NAME_FOR_CLEANUP,
A.FORMAT_MODEL,
NVL(A.NON_DATABASE_SOURCE_COLUMN,'N') AS
NON_DATABASE_SOURCE_COLUMN,
A.FORMAT_MODEL_DEFAULT_VALUE
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 ('D')
and nvl(IGNORE_DESTINATION ,'N')='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;
CURSOR S2 IS
SELECT A.LINE_NO, A.SOURCE_FIELD_NAME
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.SOURCE_FIELD_NAME IS NOT NULL
AND NVL(IGNORE_DESTINATION,'N')='N'
AND NVL(A.NON_DATABASE_SOURCE_COLUMN ,'N')='N'
AND A.SOURCE_FIELD_NAME NOT IN (SELECT COLUMN_NAME
FROM USER_TAB_COLS
WHERE TABLE_NAME
=B.SOURCE_TABLE_NAME) ;
CURSOR S3 IS
SELECT A.FIELD_NAME ,
A.RULE_TYPE ,
B.SOURCE_FIELD_NAME ,
B.DESTINATION_FIELD_VALUE
FROM SYS_LOAD_INTERFACE_RULES A ,
SYS_LOAD_INTERFACE_DETAIL B
WHERE A.INTERFACE_ID = P_INTERFACE_ID
AND A.INTERFACE_ID = B.INTERFACE_ID
AND NVL(A.ACTIVE_FLAG,'N')= 'Y'
and rule_type <> 'Field is caps'
AND A.FIELD_NAME = B.DESTINATION_FIELD_NAME(+)
ORDER BY A.FIELD_NAME,
A.RULE_EXECUTION_SEQ;

CURSOR S4 IS
SELECT CASE WHEN NVL(N.NON_DATABASE_SOURCE_COLUMN,'N') ='Y'
THEN NVL(N.SOURCE_FIELD_NAME_FOR_CLEANUP,chr(39)||
N.DESTINATION_FIELD_VALUE||chr(39))
ELSE SOURCE_FIELD_NAME END as pkcheck,
O.SOURCE_TABLE_NAME,
M.COLUMN_NAME AS DB_PK_COLUMN
--, N.*
FROM (SELECT B.COLUMN_NAME, A.TABLE_NAME FROM ALL_CONSTRAINTS
A,ALL_CONS_COLUMNS B
WHERE A.CONSTRAINT_TYPE = 'P'
AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME) M,
SYS_LOAD_INTERFACE_DETAIL N ,
SYS_LOAD_INTERFACE_HEADER O
WHERE M.COLUMN_NAME = N.DESTINATION_FIELD_NAME (+)
AND N.INTERFACE_ID = P_INTERFACE_ID
AND n.INTERFACE_ID = O.INTERFACE_ID
AND M.TABLE_NAME = O.DESTINATION_TABLE_NAME
AND NVL(N.IGNORE_DESTINATION,'N')= 'N' ;

V_NAME SD_CUSTOMERS.NAME%TYPE;
V_DESTINATION_FIELD_NAME
SYS_LOAD_INTERFACE_DETAIL.DESTINATION_FIELD_NAME%TYPE ;
V_DFLT_DESTINATION_FIELD_VALUE
SYS_LOAD_INTERFACE_DETAIL.DESTINATION_FIELD_VALUE%TYPE;
V_DESTINATION_FIELD_VALUE
SYS_LOAD_INTERFACE_DETAIL.DESTINATION_FIELD_VALUE%TYPE;
V_DESTINATION_TABLE_NAME
SYS_LOAD_INTERFACE_DETAIL.DESTINATION_TABLE_NAME%TYPE;
V_DFLT_FORMAT_MODEL
SYS_LOAD_INTERFACE_DETAIL.FORMAT_MODEL_DEFAULT_VALUE%TYPE;
V_IGNORE_DESTINATION SYS_LOAD_INTERFACE_DETAIL.IGNORE_DESTINATION
%TYPE ;
V_NON_DATABASE_SOURCE_COLUMN
SYS_LOAD_INTERFACE_DETAIL.NON_DATABASE_SOURCE_COLUMN%TYPE;
V_SOURCE_FIELD_NAME SYS_LOAD_INTERFACE_DETAIL.SOURCE_FIELD_NAME
%TYPE;
V_SOURCE_FIELDNAME_FOR_CLEANUP
SYS_LOAD_INTERFACE_DETAIL.SOURCE_FIELD_NAME_FOR_CLEANUP%TYPE;
V_SOURCE_FIELD_NAME_FORCLEANUP
SYS_LOAD_INTERFACE_DETAIL.SOURCE_FIELD_NAME_FOR_CLEANUP%TYPE;
V_SOURCE_TABLE_NAME SYS_LOAD_INTERFACE_DETAIL.SOURCE_TABLE_NAME
%TYPE;
V_LOAD_HEADER SYS_LOAD_INTERFACE_HEADER%ROWTYPE;
V_OVERWRITE SYS_LOAD_INTERFACE_HEADER.OVERWRITE_REQUIRED
%TYPE;
V_SNO SYS_LOAD_INTERFACE_LOG.SNO%TYPE;
V_DEST_DATA_TYPE USER_TAB_COLUMNS.DATA_TYPE%TYPE;
V_IGNORE_PK_CHECK number(20);
V_IGNORE_NUM_CHECK number(20);

V_NO_OF_RECORDS NUMBER(20) ;
V_ERRORS_FOUND_TOTAL NUMBER(20) ;
V_ERRORS_FOUND NUMBER(20) ;
V_MAX_PADDING NUMBER(20) :=30;
V_CNT NUMBER(20) ;
V_CAPS NUMBER(20) ;
V_LINE_NO NUMBER(20) ;
V_FIELD_IS_CAPS VARCHAR2(10) ;

V_SQL_STRING VARCHAR2(32667) ;
V_SQL_STRING_RESULT VARCHAR2(32666) ;
V_INSERT VARCHAR2(32666);
V_INSERT1 VARCHAR2(32666);
V_SELECT VARCHAR2(32000);
V_SQL VARCHAR2(32000);
V_WHERE_CONDITION VARCHAR2(4000) ;
V_ERROR_LOGS VARCHAR2(4000) ;
V_SOURCE_FIELD_NAME_TEMP VARCHAR2(4000) ;
V_DB_PK_COLUMN VARCHAR2(4000) ;
V_FIELD_TO_CHECK VARCHAR2(4000) ;
V_FLAG VARCHAR2(4000) ;
V_COUNT NUMBER(20) ;
V_RAISE_ERROR NUMBER(20) :=0;

V_LOG_FOOTPRINT VARCHAR2(200) :='SP_DATA_LOAD '||


P_INTERFACE_ID;

SETUP_ERRORS EXCEPTION;
SETUP_ERRORS_MISSING_MAPPING EXCEPTION;
OUT_ERRORS EXCEPTION;
TABLE_ERROR_DESTINATION EXCEPTION;
TABLE_ERROR_SOURCE EXCEPTION;
BEGIN

SELECT *
INTO V_LOAD_HEADER
FROM SYS_LOAD_INTERFACE_HEADER
WHERE INTERFACE_ID = P_INTERFACE_ID;

-- V_WHERE_CONDITION := V_LOAD_HEADER.WHERE_CONDITION

-----------------------------------------------------------------------------------
-------------------------
------------------------------------CLEAN UP THE LOGS/TARGET
TABLE------------------------------------------

-----------------------------------------------------------------------------------
-------------------------
BEGIN
DELETE FROM SYS_LOAD_INTERFACE_LOG_DETAIL WHERE SNO IN (SELECT SNO FROM
SYS_LOAD_INTERFACE_LOG WHERE INTERFACE_ID = P_INTERFACE_ID);
DELETE FROM SYS_LOAD_INTERFACE_LOG_DETAIL WHERE SNO NOT IN (SELECT SNO FROM
SYS_LOAD_INTERFACE_LOG ) ; -- REMOVE OTHER JUNKS.
DELETE FROM SYS_LOAD_INTERFACE_LOG WHERE INTERFACE_ID =
P_INTERFACE_ID;
DELETE FROM SYS_LOAD_INTERFACE_SUMMARY WHERE INTERFACE_ID =
P_INTERFACE_ID;
/*
SUMMARY_TYPE='Data Setup Checks';
SUMMARY_TYPE='Destination Table Setup Checks';
SUMMARY_TYPE='Source Table Setup Checks';
SUMMARY_TYPE='DATA_LOADED_INFO';
*/
EXCEPTION
WHEN OTHERS THEN NULL;
END;

V_FLAG := '1';

DECLARE
V_AVL NUMBER;
BEGIN
SELECT COUNT(*) INTO V_AVL FROM TAB WHERE TNAME =
V_LOAD_HEADER.DESTINATION_TABLE_NAME;
IF V_AVL = 0 THEN
-- Exception TABLE_ERROR_DESTINATION --
ZZZ_TEST(' END TABLE_ERROR_DESTIN:'||SQLERRM ||
DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,V_LOG_FOOTPRINT);
SP_INSERT_INTERFACE_LOG(P_INTERFACE_ID,
CHR(10)||' Pl. complete the Setups for Loading
Process.'
||CHR(10)||' Check for field with label '

||CHR(39)||'Destination Table Name'


||CHR(39)||' ,on the First Tab('
||CHR(39)||'Interface Setup'
||CHR(39)||'), and in the Region: '
||CHR(39)||'Load Interface Setup'
||CHR(39)
,NULL,
'<font color= "Red"><B>Incomplete Setup.</B> </font>
Destination Table <B>'
||V_LOAD_HEADER.DESTINATION_TABLE_NAME
||'</B> does not Exist.');
DELETE FROM SYS_LOAD_INTERFACE_SUMMARY WHERE INTERFACE_ID=P_INTERFACE_ID
AND SUMMARY_TYPE='Destination Table Setup Checks';

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='Destination Table Setup
Checks';

INSERT INTO SYS_LOAD_INTERFACE_SUMMARY( INTERFACE_ID,LINE_NO, SUMMARY_TYPE,


SUMMARY_RESULTS, NOTES, CREATED_BY,CREATED_DATE)
VALUES( P_INTERFACE_ID ,V_LINE_NO ,'Destination Table Setup
Checks','Data Processed by ' || P_USER_ID || ' on ' || SYSDATE,
'<font color= "Red">Data load Setup incomplete wrt Destination
Table.</font>' ,
P_USER_ID,SYSDATE);
COMMIT;

v_raise_error:=001;-- RAISE OUT_ERRORS;


END IF;
EXCEPTION
WHEN OTHERS THEN
v_raise_error:=001;
-- RAISE TABLE_ERROR_DESTINATION; --OUT_ERRORS to change this
null;

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
---TABLE_ERROR_SOURCE
ZZZ_TEST(' END TABLE_ERROR_SOURCE:'||SQLERRM ||
DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,V_LOG_FOOTPRINT);
SP_INSERT_INTERFACE_LOG(P_INTERFACE_ID, CHR(10)||' Pl. complete the Setups
for Loading Process.'
||CHR(10)||' Check for field with label '

||CHR(39)||'Source Table Name'||


CHR(39)||' ,on the First Tab('
||CHR(39)||'Interface Setup'||
CHR(39)||'), and in the Region: '
||CHR(39)||'Load Interface Setup'||
CHR(39)
,NULL,
'<font color= "Red"><B>Incomplete
Setup.</B> </font>Source Table <B>'||V_LOAD_HEADER.SOURCE_TABLE_NAME||'</B> does
not Exist.');
DELETE FROM SYS_LOAD_INTERFACE_SUMMARY WHERE INTERFACE_ID=P_INTERFACE_ID
AND SUMMARY_TYPE='Source Table Setup Checks';
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='Source Table Setup
Checks';
INSERT INTO SYS_LOAD_INTERFACE_SUMMARY( INTERFACE_ID,LINE_NO, SUMMARY_TYPE,
SUMMARY_RESULTS, NOTES, CREATED_BY,CREATED_DATE)
VALUES( P_INTERFACE_ID ,V_LINE_NO ,'Source Table Setup Checks','Data
Processed by ' || P_USER_ID || ' on ' || SYSDATE,
'<font color= "Red">Data load Setup incomplete wrt Source
Table.</font>' ,
P_USER_ID,SYSDATE);
COMMIT;
v_raise_error:=0;
--- RAISE OUT_ERRORS;
END IF;
EXCEPTION
WHEN OTHERS THEN
v_raise_error:=0;
--RAISE TABLE_ERROR_SOURCE; --OUT_ERRORS to change this
null;

END;
-----------------------------------------------------------------------------------
-------------------------
---------------------------------------SETUP CHECKS DESTINATION Table columns
------------------------------
-----------------------------------------------------------------------------------
-------------------------
ZZZ_TEST('S1 CURSOR Desti col LOOP STARTS : ',V_LOG_FOOTPRINT);
FOR X IN S1 LOOP
IF X.COLUMN_NAME IS NULL THEN
V_SQL:='Check "Load Interface Setup Detail" tab ';
v_raise_error:= 1;
SP_INSERT_INTERFACE_LOG(P_INTERFACE_ID,
V_SQL,
V_CNT,
'Destination Field Name : <font
color= "Red"><B>'|| X.DESTINATION_FIELD_NAME||'</B></font> at line no:'||
x.line_no||' not Found');
V_ERRORS_FOUND := NVL(V_ERRORS_FOUND,0)+1;
END IF;

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 :='Data load Setup incorrect wrt
destination columns';
ELSE V_ERROR_LOGS:= V_ERROR_LOGS ||',Data
load Setup incorrect wrt Destination Field Names';
END IF;
END IF;
V_ERRORS_FOUND :=0;
V_SOURCE_FIELD_NAME_FORCLEANUP:= NULL;

-----------------------------------------------------------------------------------
-------------------------
---------------------------------------SETUP CHECKS SOURCE TABLE columns
-----------------------------------
-----------------------------------------------------------------------------------
-------------------------
ZZZ_TEST('S2 CURSOR Source col LOOP STARTS : ',V_LOG_FOOTPRINT);
FOR X IN S2 LOOP
V_SQL:='Check "Load Interface Setup Detail" tab ';
v_raise_error:= 2;
SP_INSERT_INTERFACE_LOG(P_INTERFACE_ID,
V_SQL,
V_CNT,
'Source Field Name : <font color=
"Red"><B>'|| X.SOURCE_FIELD_NAME||'</B></font> at line no:'||x.line_no||' not
Found');
V_ERRORS_FOUND := NVL(V_ERRORS_FOUND,0)+1;
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 :='Data load Setup incorrect wrt
Source columns';
ELSE V_ERROR_LOGS:= V_ERROR_LOGS ||',Data
load Setup incorrect wrt Source Field Names';
END IF;
END IF;
V_ERRORS_FOUND :=0;
V_SOURCE_FIELD_NAME_FORCLEANUP:= NULL;

-----------------------------------------------------------------------------------
-------------------------
---------------------------------------business rules CHECKS
--------------------------------------------------
-----------------------------------------------------------------------------------
-------------------------
ZZZ_TEST('S3 CURSOR BR check LOOP STARTS : ',V_LOG_FOOTPRINT);

SELECT max( length(A.FIELD_NAME )) into v_max_padding


FROM SYS_LOAD_INTERFACE_RULES A ,
SYS_LOAD_INTERFACE_DETAIL B
WHERE A.INTERFACE_ID = P_INTERFACE_ID
AND A.INTERFACE_ID = B.INTERFACE_ID
AND NVL(A.ACTIVE_FLAG,'N')= 'Y'
AND A.FIELD_NAME = B.DESTINATION_FIELD_NAME(+)
and rule_type <> 'Field is caps';

FOR X IN S3 LOOP
V_SQL:='Check "Load Interface Setup Detail" tab and "Load Interface Rules"
region on "Interface Rule" tab'||CHR(10)||' Disable the rule or fix the Requried
setups columns';
if nvl(x.SOURCE_FIELD_NAME, x.DESTINATION_FIELD_VALUE) is null then
SP_INSERT_INTERFACE_LOG(P_INTERFACE_ID,
V_SQL,
V_CNT,
'Source Field Name : <font
face="Courier New" color= "Red"><B>'|| X.FIELD_NAME||Rpad(' ',((v_max_padding-
length(x.field_name))*5)-4,'&nbsp')||'</B></font> is required for Rule:'||
x.RULE_TYPE||'. ');
V_ERRORS_FOUND := NVL(V_ERRORS_FOUND,0)+1;
end if;
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 :='Data load Setup incomplete wrt
Business Rules';
ELSE V_ERROR_LOGS:= V_ERROR_LOGS ||',Data
load Setup incomplete wrt Business Rules';
END IF;
--SETUP_ERRORS
ZZZ_TEST(' END SETUP_ERRORS:'||SQLERRM ||
DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,V_LOG_FOOTPRINT);
DELETE FROM SYS_LOAD_INTERFACE_SUMMARY WHERE INTERFACE_ID=P_INTERFACE_ID
AND SUMMARY_TYPE='Data Setup Checks';
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 Setup Checks';
INSERT INTO SYS_LOAD_INTERFACE_SUMMARY( INTERFACE_ID,LINE_NO, SUMMARY_TYPE,
SUMMARY_RESULTS, NOTES, CREATED_BY,CREATED_DATE)
VALUES( P_INTERFACE_ID ,V_LINE_NO ,'Data Setup Checks','Data Processed
by ' || P_USER_ID || ' on ' || SYSDATE,
'<font color= "Red">Data load Setup incomplete wrt Business
Rules.</font>' ,
P_USER_ID,SYSDATE);
COMMIT;
v_raise_error:=3;
--RAISE OUT_ERRORS ;

END IF;
V_ERRORS_FOUND :=0;
V_SOURCE_FIELD_NAME_FORCLEANUP:= NULL;

-----------------------------------------------------------------------------------
-------------------------
---------------------------------------Check for Primary key data violation
--------------------------------
-----------------------------------------------------------------------------------
-------------------------

ZZZ_TEST('S4 CURSOR PK Check LOOP STARTS : ',V_LOG_FOOTPRINT);

declare
v_sql_pk_check varchar2(10000):= 'select ';
v_pk_columns varchar2(1000) ;
v_SOURCE_TABLE_NAME varchar2(1000);
v_count number(20);

v_sqlcode number(20);
begin

SELECT COUNT(*) INTO V_IGNORE_PK_CHECK


FROM SYS_LOAD_INTERFACE_RULES WHERE INTERFACE_ID =P_INTERFACE_ID
AND BUSINESS_RULE_ID = 'PK_CHECK'
AND RULE_TYPE ='IGNORE';
IF V_IGNORE_PK_CHECK =0 THEN

FOR X IN S4 LOOP
IF X.pkcheck IS not NULL THEN
v_SOURCE_TABLE_NAME := x.SOURCE_TABLE_NAME;
if v_pk_columns is null then
v_pk_columns := X.pkcheck ;
else
v_pk_columns := v_pk_columns ||','|| X.pkcheck ;
end if;
else
if v_db_pk_column is null then
v_db_pk_column := X.db_pk_column ;
else
v_db_pk_column := v_db_pk_column ||','|| X.db_pk_column ;
end if;

END IF;

END LOOP;
IF V_LOAD_HEADER.WHERE_CONDITION IS NOT NULL THEN
V_WHERE_CONDITION := ' WHERE '||V_LOAD_HEADER.WHERE_CONDITION;
END IF;

ZZZ_TEST('S4 CURSOR PK Check : '||v_pk_columns||';'||


v_sql_pk_check,V_LOG_FOOTPRINT);
if v_pk_columns is not null then
v_sql_pk_check:= v_sql_pk_check ||v_pk_columns || ' , count(*)
from '||
v_SOURCE_TABLE_NAME ||
V_WHERE_CONDITION || ' group by '||
v_pk_columns ||' having
count(*)>1' ;
ZZZ_TEST('S4 CURSOR PK Check STARTS : '||
v_sql_pk_check,V_LOG_FOOTPRINT);
begin
execute immediate 'select count(*) from ( ' ||v_sql_pk_check
||')' into v_count;
exception
when others then
v_sqlcode:= SQLCODE;
if v_sqlcode=-22818 then --- SQLERRM
v_count:= 1;
v_raise_error:=0;

SP_INSERT_INTERFACE_LOG(P_INTERFACE_ID,v_sql_pk_check,v_count,'<B>Not an Error
message :</B>'||'Primary key Check cannot be made as the fields are dynamic data
per Query used.');
-- V_ERRORS_FOUND := NVL(V_ERRORS_FOUND,0)+1; -- NOT TO
LOG AS ERROR.
end if;
END;

if v_count >1 then


v_raise_error:=4;
V_SQL:='Check "Load Interface Setup Detail" tab ';
SP_INSERT_INTERFACE_LOG(P_INTERFACE_ID,
v_sql_pk_check,
v_count,
'Primary key Violated
: <font color= "Red"><B>'|| v_pk_columns||'</B></font>');
V_ERRORS_FOUND := NVL(V_ERRORS_FOUND,0)+1;
end if;

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 :='Data Issues wrt
Primary Key Violation';
ELSE V_ERROR_LOGS:=
V_ERROR_LOGS ||',Data Issues wrt Primary Key Violation';
END IF;
END IF;
elsif v_pk_columns is null and v_db_pk_column is not null then
V_ERRORS_FOUND := NVL(V_ERRORS_FOUND,0)+1;
V_ERRORS_FOUND_TOTAL := NVL(V_ERRORS_FOUND_TOTAL,0) + V_ERRORS_FOUND;

v_raise_error:=41;
V_SQL:='Check "Load Interface Setup Detail" tab ';
SP_INSERT_INTERFACE_LOG(P_INTERFACE_ID,
v_db_pk_column||' should be
properly mapped to source.',
v_count,
'Primary key Setup not Found :
<font color= "Red"><B>'|| v_db_pk_column||'</B></font>');

end if;
END IF; -- IGNORE PK CHECK.
end;
V_ERRORS_FOUND :=0;
V_SOURCE_FIELD_NAME_FORCLEANUP:= NULL;

if v_raise_error>0 then
commit;
RAISE OUT_ERRORS; --- before starting to check data related issues
end if;
-----------------------------------------------------------------------------------
-------------------------
---------------------------------------VALIDATIONS CHECKS
--------------------------------------------------
-----------------------------------------------------------------------------------
-------------------------
ZZZ_TEST('C2 CURSOR Validation LOOP STARTS : ',V_LOG_FOOTPRINT);
V_SOURCE_FIELD_NAME_FORCLEANUP:= NULL;
FOR J IN C2 LOOP
BEGIN

SELECT IGNORE_DESTINATION
INTO V_IGNORE_DESTINATION
FROM SYS_LOAD_INTERFACE_DETAIL
WHERE INTERFACE_ID = P_INTERFACE_ID
AND DESTINATION_FIELD_NAME = J.FIELD_NAME;
EXCEPTION
WHEN NO_DATA_FOUND THEN
ZZZ_TEST('C2 CURSOR Validation LOOP STARTS :
SETUP_ERRORS_MISSING_MAPPING',V_LOG_FOOTPRINT);
RAISE SETUP_ERRORS_MISSING_MAPPING;
END;
IF V_IGNORE_DESTINATION ='N' THEN
BEGIN
V_CNT:= 0;
BEGIN
SELECT SOURCE_FIELD_NAME ,
SOURCE_TABLE_NAME ,
DESTINATION_TABLE_NAME ,
NVL(NON_DATABASE_SOURCE_COLUMN ,'N'),
SOURCE_FIELD_NAME_FOR_CLEANUP,
DESTINATION_FIELD_VALUE
INTO V_SOURCE_FIELD_NAME ,
V_SOURCE_TABLE_NAME ,
V_DESTINATION_TABLE_NAME ,
V_NON_DATABASE_SOURCE_COLUMN ,
V_SOURCE_FIELDNAME_FOR_CLEANUP,
V_DESTINATION_FIELD_VALUE
FROM SYS_LOAD_INTERFACE_DETAIL
WHERE INTERFACE_ID =J.INTERFACE_ID
AND DESTINATION_FIELD_NAME=J.FIELD_NAME;
EXCEPTION
WHEN NO_DATA_FOUND THEN
V_SOURCE_FIELD_NAME := NULL;
END;
BEGIN
SELECT 'Y'
INTO V_FIELD_IS_CAPS
FROM SYS_LOAD_INTERFACE_RULES
WHERE INTERFACE_ID =J.INTERFACE_ID
AND NVL(ACTIVE_FLAG,'N')='Y'
AND RULE_CATEGORY='Validation' AND RULE_TYPE='Field is caps'

AND FIELD_NAME =J.FIELD_NAME;


EXCEPTION
WHEN OTHERS THEN NULL;
V_FIELD_IS_CAPS:='N';
END;
IF V_NON_DATABASE_SOURCE_COLUMN ='Y' THEN
SELECT 'NVL('||NVL(V_SOURCE_FIELDNAME_FOR_CLEANUP,'NULL') ||','||
NVL2(V_DESTINATION_FIELD_VALUE,
CHR(39)||
V_DESTINATION_FIELD_VALUE||CHR(39),
'NULL')||')'
INTO V_FIELD_TO_CHECK
FROM DUAL;
ELSE

SELECT NVL(V_SOURCE_FIELD_NAME ,NVL2(V_DESTINATION_FIELD_VALUE,


CHR(39)||
V_DESTINATION_FIELD_VALUE||CHR(39),
'NULL'))
INTO V_FIELD_TO_CHECK
FROM DUAL;
END IF;

IF J.RULE_CATEGORY='Validation' AND J.RULE_TYPE='Check Field


Validation' THEN
IF V_FIELD_TO_CHECK IS NOT NULL THEN
IF J.REFERENCE3 IS NOT NULL THEN
IF V_LOAD_HEADER.WHERE_CONDITION IS NOT NULL THEN
V_SQL := 'SELECT COUNT(1) '||J.FIELD_NAME||' FROM '||
V_LOAD_HEADER.SOURCE_USER_ID||'.'||V_LOAD_HEADER.SOURCE_TABLE_NAME||' WHERE '||
V_LOAD_HEADER.WHERE_CONDITION||' AND '
|| V_FIELD_TO_CHECK||' IS NOT NULL ' || ' AND '
|| CASE WHEN V_FIELD_IS_CAPS ='Y' THEN ' UPPER('||
V_FIELD_TO_CHECK||')' ELSE V_FIELD_TO_CHECK END ||' NOT IN (SELECT '||
J.REFERENCE2||' FROM '||J.REFERENCE1||' WHERE '||
REPLACE(REPLACE(REPLACE ( UPPER(J.REFERENCE3 ),'" &
','' ),'.TEXT & "',''),V_DESTINATION_TABLE_NAME||'_','')||')';

ELSE
V_SQL := 'SELECT COUNT(1) '||J.FIELD_NAME||' FROM '||
V_LOAD_HEADER.SOURCE_USER_ID||'.'||V_LOAD_HEADER.SOURCE_TABLE_NAME||' WHERE '||
V_FIELD_TO_CHECK
||' IS NOT NULL ' ||' AND '
|| CASE WHEN V_FIELD_IS_CAPS ='Y' THEN ' UPPER('||
V_FIELD_TO_CHECK||')' ELSE V_FIELD_TO_CHECK 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) '||J.FIELD_NAME||' FROM '||
V_LOAD_HEADER.SOURCE_USER_ID||'.'||V_LOAD_HEADER.SOURCE_TABLE_NAME||' WHERE '||
V_LOAD_HEADER.WHERE_CONDITION||' AND '||V_FIELD_TO_CHECK||' IS NOT NULL '
|| ' AND '|| CASE WHEN V_FIELD_IS_CAPS ='Y' THEN '
UPPER('||V_FIELD_TO_CHECK||')' ELSE V_FIELD_TO_CHECK END ||' NOT IN (SELECT '||
J.REFERENCE2||' FROM '||J.REFERENCE1||')';
ELSE
V_SQL := 'SELECT COUNT(1) '||J.FIELD_NAME||' FROM '||
V_LOAD_HEADER.SOURCE_USER_ID||'.'||V_LOAD_HEADER.SOURCE_TABLE_NAME||' WHERE '||
V_FIELD_TO_CHECK ||' IS NOT NULL '
||' AND ' || CASE WHEN V_FIELD_IS_CAPS ='Y' THEN '
UPPER('||V_FIELD_TO_CHECK||')' ELSE V_FIELD_TO_CHECK END ||' NOT IN (SELECT '||
J.REFERENCE2||' FROM '||J.REFERENCE1||')';
END IF;
END IF;

ZZZ_TEST('C2 Validation Loop :V_SQL '||V_FIELD_IS_CAPS||';'||


V_SQL,V_LOG_FOOTPRINT);

EXECUTE IMMEDIATE V_SQL INTO V_CNT;


END IF;

IF V_CNT > 0 THEN


SP_INSERT_INTERFACE_LOG(P_INTERFACE_ID,
V_SQL,
V_CNT,
'Validation failed for
field <font color= "Red"><B>'|| J.FIELD_NAME||'</B></font>');
V_ERRORS_FOUND := NVL(V_ERRORS_FOUND,0)+1;

COMMIT;
END IF;
END IF;--VALIDATION RULE END

EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL ; ZZZ_TEST('C2 CURSOR Validation
NDF :'||SQLERRM ||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,V_LOG_FOOTPRINT);
WHEN OTHERS THEN
NULL ; ZZZ_TEST('C2 CURSOR Validation
OTH :'||SQLERRM ||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,V_LOG_FOOTPRINT);
END;
END IF; --- IGNORE DESTINATION

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
Validations';
ELSE V_ERROR_LOGS:= V_ERROR_LOGS
||',Validations';
END IF;
END IF;
V_ERRORS_FOUND :=0;
V_SOURCE_FIELD_NAME_FORCLEANUP:= NULL;
-----------------------------------------------------------------------------------
-------------------------
---------------------------------------MANDATORY CHECKS
----------------------------------------------------
-----------------------------------------------------------------------------------
-------------------------

ZZZ_TEST('C2 CURSOR Mandatory LOOP STARTS : ',V_LOG_FOOTPRINT);

FOR J IN C2 LOOP

SELECT IGNORE_DESTINATION
INTO V_IGNORE_DESTINATION
FROM SYS_LOAD_INTERFACE_DETAIL
WHERE INTERFACE_ID =P_INTERFACE_ID
AND DESTINATION_FIELD_NAME = J.FIELD_NAME;

IF V_IGNORE_DESTINATION ='N' THEN


DECLARE

AA VARCHAR2(100);
BB VARCHAR2(100);
BEGIN

V_CNT:= 0;
V_SQL:=NULL;

IF J.RULE_CATEGORY='Mandatory' AND J.RULE_TYPE='Mandatory' THEN


V_FLAG:= 'Begining Checks for Field Name: ' ||J.FIELD_NAME;
SELECT SOURCE_FIELD_NAME ,
SOURCE_FIELD_NAME_FOR_CLEANUP ,
DESTINATION_FIELD_NAME ,
DESTINATION_FIELD_VALUE ,
NVL(NON_DATABASE_SOURCE_COLUMN,'N')
INTO V_SOURCE_FIELD_NAME ,
V_SOURCE_FIELD_NAME_FORCLEANUP,
V_DESTINATION_FIELD_NAME ,
V_DESTINATION_FIELD_VALUE ,
V_NON_DATABASE_SOURCE_COLUMN
FROM SYS_LOAD_INTERFACE_DETAIL
WHERE INTERFACE_ID = P_INTERFACE_ID
AND DESTINATION_FIELD_NAME = J.FIELD_NAME;

AA := V_LOAD_HEADER.SOURCE_TABLE_NAME ;
BB := 'SYS_LOAD_INTERFACE_DETAIL' ;

IF V_SOURCE_FIELD_NAME_FORCLEANUP IS NOT NULL THEN


V_SOURCE_FIELD_NAME_TEMP:= REPLACE
(V_SOURCE_FIELD_NAME_FORCLEANUP,V_SOURCE_FIELD_NAME,AA||'.'||V_SOURCE_FIELD_NAME);

ELSE

SELECT NVL2(V_SOURCE_FIELD_NAME,AA||'.'||V_SOURCE_FIELD_NAME,'NULL')
INTO V_SOURCE_FIELD_NAME_TEMP
FROM DUAL;
END IF;

if V_NON_DATABASE_SOURCE_COLUMN ='Y' then


IF V_SOURCE_FIELD_NAME_FORCLEANUP IS NOT NULL THEN
V_SOURCE_FIELD_NAME_TEMP:= V_SOURCE_FIELD_NAME_FORCLEANUP;
ELSE
V_SOURCE_FIELD_NAME_TEMP:= 'NULL';
END IF;
end if;

V_SQL := 'SELECT count(1) '||J.FIELD_NAME||' FROM '||


V_LOAD_HEADER.SOURCE_USER_ID||'.'||V_LOAD_HEADER.SOURCE_TABLE_NAME
||' '||AA||' ,SYS_LOAD_INTERFACE_DETAIL '||BB ||' WHERE '||
BB||'.INTERFACE_ID ='||CHR(39)||J.INTERFACE_ID||CHR(39)||
' AND nvl('||V_SOURCE_FIELD_NAME_TEMP||',NVL2('||
BB||'.DESTINATION_FIELD_VALUE,CHR(39)||'||BB||'.DESTINATION_FIELD_VALUE||
CHR(39),NULL)) IS NULL '||
' AND '||BB||'.DESTINATION_FIELD_NAME = '||CHR(39)||J.FIELD_NAME||
CHR(39);

/* V_SQL := 'SELECT count(1) FROM '||V_LOAD_HEADER.SOURCE_USER_ID||'.'||


V_LOAD_HEADER.SOURCE_TABLE_NAME
||' A ,SYS_LOAD_INTERFACE_DETAIL b WHERE B.INTERFACE_ID ='||
CHR(39)||J.INTERFACE_ID||CHR(39)||
' AND nvl('||
V_SOURCE_FIELD_NAME_TEMP||',NVL2(B.DESTINATION_FIELD_VALUE,CHR(39)||
B.DESTINATION_FIELD_VALUE||CHR(39),NULL)) IS NULL '||
' AND B.DESTINATION_FIELD_NAME = '||CHR(39)||J.FIELD_NAME||CHR(39);

*/

IF V_LOAD_HEADER.WHERE_CONDITION IS NOT NULL THEN


IF INSTR (V_SQL,'WHERE') >1 THEN
V_SQL := V_SQL||' AND '||V_LOAD_HEADER.WHERE_CONDITION;
ELSE
V_SQL := V_SQL||' WHERE '||V_LOAD_HEADER.WHERE_CONDITION;
END IF;
END IF;

ZZZ_TEST('C2 Mandatory lOOP :V_SQL '||


V_SQL,V_LOG_FOOTPRINT);
EXECUTE IMMEDIATE V_SQL INTO V_CNT;

IF V_CNT > 0 THEN


SP_INSERT_INTERFACE_LOG(P_INTERFACE_ID,V_SQL,V_CNT,'Field value
cannot be null for <font color= "Red"><B>'|| J.FIELD_NAME ||'</B></font> / Default
values not set' );
V_ERRORS_FOUND := NVL(V_ERRORS_FOUND,0)+1;
-- ZZZ_TEST('C2 Mandatory lOOP :V_SQL '||
V_SQL,V_LOG_FOOTPRINT);

COMMIT;
END IF;
END IF;--MANDATORY
END;
--ZZZ_TEST('C4 OTH: '||K.EXECUTE_SQLS||SQLERRM ||
DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,V_LOG_FOOTPRINT);

END IF; -- COLUMN IS MARKED INACTIVE


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
---------------------------------------------------
-----------------------------------------------------------------------------------
-------------------------

ZZZ_TEST('C6 CURSOR Number check LOOP STARTS : ',V_LOG_FOOTPRINT);


FOR X IN C6 LOOP

SELECT COUNT(*) INTO V_IGNORE_NUM_CHECK


FROM SYS_LOAD_INTERFACE_RULES
WHERE INTERFACE_ID = P_INTERFACE_ID
AND BUSINESS_RULE_ID = 'NUMBER_CHECK'
AND RULE_TYPE ='IGNORE';

IF V_IGNORE_NUM_CHECK =0 THEN

BEGIN
V_CNT:= 0;
V_SQL:=NULL;
IF NVL(x.SOURCE_FIELD_NAME,x.DESTINATION_FIELD_VALUE) IS NOT NULL THEN
IF NVL(X.NON_DATABASE_SOURCE_COLUMN,'N') <> 'Y' THEN
IF X.SOURCE_FIELD_NAME_FOR_CLEANUP IS NOT NULL THEN
V_SQL := 'select count(1) '||
X.DESTINATION_FIELD_NAME||' from '||X.SOURCE_TABLE_NAME||' where ISNUMBER(NVL2('||
NVL(X.SOURCE_FIELD_NAME_FOR_CLEANUP,'NULL')||',' ||
NVL(X.SOURCE_FIELD_NAME_FOR_CLEANUP,'NULL')||','||
NVL(x.DESTINATION_FIELD_VALUE,'NULL')||') =0 and '

||'NVL2('||NVL(X.SOURCE_FIELD_NAME_FOR_CLEANUP,'NULL')||',' ||
NVL(X.SOURCE_FIELD_NAME_FOR_CLEANUP,'NULL')||','||
NVL(x.DESTINATION_FIELD_VALUE,'NULL') ||') is not null';
ELSE
V_SQL := 'select count(1) '||
X.DESTINATION_FIELD_NAME||' from '||X.SOURCE_TABLE_NAME||' where isnumber(NVL2('||
NVL(X.SOURCE_FIELD_NAME,'NULL')||','||NVL(X.SOURCE_FIELD_NAME,'NULL')||','||
NVL(x.DESTINATION_FIELD_VALUE,'NULL')||' )) =0 and '

||'NVL2('||NVL(X.SOURCE_FIELD_NAME,'NULL')||','||
NVL(X.SOURCE_FIELD_NAME,'NULL')||','||NVL(x.DESTINATION_FIELD_VALUE,'NULL')||' )is
not null';
END IF;
ELSE

V_SQL := 'select count(1) '||


X.DESTINATION_FIELD_NAME||' from '||X.SOURCE_TABLE_NAME||' where ISNUMBER(NVL2('||
NVL(X.SOURCE_FIELD_NAME_FOR_CLEANUP,'NULL')||',' ||
NVL(X.SOURCE_FIELD_NAME_FOR_CLEANUP,'NULL')||','||
NVL(x.DESTINATION_FIELD_VALUE,'NULL')||' )) =0 and '

||'NVL2('||NVL(X.SOURCE_FIELD_NAME_FOR_CLEANUP,'NULL')||',' ||
NVL(X.SOURCE_FIELD_NAME_FOR_CLEANUP,'NULL')||','||
NVL(x.DESTINATION_FIELD_VALUE,'NULL')||' ) is not null';
END IF;
ZZZ_TEST('C6 Check lOOP :V_SQL For Destination
field :'||x.DESTINATION_FIELD_NAME||'. '|| V_SQL,V_LOG_FOOTPRINT);
-- IF V_SQL IS NOT NULL THEN
EXECUTE IMMEDIATE V_SQL INTO V_CNT;
-- END IF;
IF V_CNT > 0 THEN
BEGIN
IF X.SOURCE_FIELD_NAME_FOR_CLEANUP IS NOT NULL THEN
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_FOR_CLEANUP|| ' as
check_col from '||X.SOURCE_TABLE_NAME
||' where isnumber('||
X.SOURCE_FIELD_NAME_FOR_CLEANUP|| ' ) =0 and '
||X.SOURCE_FIELD_NAME_FOR_CLEANUP|| ' is not null
) WHERE ROWNUM <=10';
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 isnumber('||X.SOURCE_FIELD_NAME|| ' )
=0 and '
||X.SOURCE_FIELD_NAME|| ' is not null ) WHERE
ROWNUM <=10';
END IF;
ZZZ_TEST('C6 numeric validations lOOP :v_sql_string '||
V_SQL_STRING,V_LOG_FOOTPRINT);

IF V_LOAD_HEADER.WHERE_CONDITION IS NOT NULL THEN


IF INSTR (V_SQL_STRING,'WHERE') >1 THEN
V_SQL_STRING := V_SQL_STRING||' AND '||V_LOAD_HEADER.WHERE_CONDITION;
ELSE
V_SQL_STRING := V_SQL_STRING||' WHERE '||V_LOAD_HEADER.WHERE_CONDITION;
END IF;
END IF;

EXECUTE IMMEDIATE V_SQL_STRING INTO V_SQL_STRING_RESULT;

EXCEPTION
WHEN OTHERS THEN
NULL ;
END;

SP_INSERT_INTERFACE_LOG(P_INTERFACE_ID,V_SQL,V_CNT,
X.SOURCE_FIELD_NAME ||' Field should be numeric.'||'( '||
V_SQL_STRING_RESULT||' )' );
V_ERRORS_FOUND := NVL(V_ERRORS_FOUND,0)+1;
ZZZ_TEST('C6 Check data lOOP :V_SQL '||
V_SQL,V_LOG_FOOTPRINT);
COMMIT;
END IF; -- number field
END IF; --IF NVL(X.SOURCE_FIELD_NAME,X.DESTINATION_FIELD_VALUE) IS NOT
NULL THEN

END;
END IF; -- IGNORE NUMCHECK
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
---------------------------------------------------
-----------------------------------------------------------------------------------
-------------------------
ZZZ_TEST('C7 CURSOR DATE check LOOP STARTS : ',V_LOG_FOOTPRINT);
FOR X IN C7 LOOP
BEGIN
V_CNT:= 0;
V_SQL:=NULL;
IF NVL(x.SOURCE_FIELD_NAME,x.DESTINATION_FIELD_VALUE) IS NOT NULL THEN
BEGIN
--V_SOURCE_FIELD_NAME_FORCLEANUP :=X.SOURCE_FIELD_NAME_FOR_CLEANUP;

IF X.NON_DATABASE_SOURCE_COLUMN ='Y' THEN


V_SQL := 'select count(1) '||X.DESTINATION_FIELD_NAME||' from
DUAL where ISDATE_FOR_LOADING('||CHR(39)||X.DESTINATION_FIELD_VALUE||CHR(39)||','||
CHR(39)||X.FORMAT_MODEL_DEFAULT_VALUE||CHR(39)||' ) =0 and '
||CHR(39)||
X.DESTINATION_FIELD_VALUE||CHR(39)|| ' is not null';
ELSE
IF X.SOURCE_FIELD_NAME_FOR_CLEANUP IS NOT NULL THEN
V_SQL := 'select count(1) '||X.DESTINATION_FIELD_NAME||'
from '||X.SOURCE_TABLE_NAME||' where ISDATE_FOR_LOADING('||
X.SOURCE_FIELD_NAME_FOR_CLEANUP||','||CHR(39)||X.FORMAT_MODEL||CHR(39)||' ) =0 and
'
||
X.SOURCE_FIELD_NAME_FOR_CLEANUP|| ' is not null';

ELSIF X.SOURCE_FIELD_NAME IS NOT NULL THEN


V_SQL := 'select count(1) '||X.DESTINATION_FIELD_NAME||'
from '||X.SOURCE_TABLE_NAME||' where ISDATE_FOR_LOADING('||
X.SOURCE_FIELD_NAME||','||CHR(39)||X.FORMAT_MODEL||CHR(39)||' ) =0 and '
||X.SOURCE_FIELD_NAME|| '
is not null';

ELSIF X.DESTINATION_FIELD_VALUE IS NOT NULL THEN


V_SQL := 'select count(1) '||X.DESTINATION_FIELD_NAME
||' from '||X.SOURCE_TABLE_NAME
||' where ISDATE_FOR_LOADING('||CHR(39)||
X.DESTINATION_FIELD_VALUE||CHR(39)||','||CHR(39)||X.FORMAT_MODEL_DEFAULT_VALUE||
CHR(39)||' ) =0 and '
||CHR(39)||X.DESTINATION_FIELD_VALUE||CHR(39)|| ' is not
null';

END IF;
END IF;
END;
ZZZ_TEST('C7 Check lOOP :V_SQL '||
V_SQL,V_LOG_FOOTPRINT);
IF V_SQL IS NOT NULL THEN
EXECUTE IMMEDIATE V_SQL INTO V_CNT;
END IF;

IF V_CNT > 0 THEN


BEGIN
IF X.SOURCE_FIELD_NAME_FOR_CLEANUP IS NOT NULL THEN
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_FOR_CLEANUP|| ' as
check_col from '||X.SOURCE_TABLE_NAME
||' where ISDATE_FOR_LOADING('||
X.SOURCE_FIELD_NAME_FOR_CLEANUP ||','||
CHR(39)|| X.FORMAT_MODEL||CHR(39)
|| ' ) =0 and '||
X.SOURCE_FIELD_NAME_FOR_CLEANUP
|| ' is not null ) WHERE ROWNUM <=2';

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)

|| ' ) =0 and '||X.SOURCE_FIELD_NAME

|| ' is not null ) WHERE ROWNUM <=2';

END IF;
ZZZ_TEST('C7 Check lOOP :v_sql_string '||
V_SQL_STRING,V_LOG_FOOTPRINT);

IF V_LOAD_HEADER.WHERE_CONDITION IS NOT NULL THEN


IF INSTR (V_SQL_STRING,'WHERE') >1 THEN
V_SQL_STRING := V_SQL_STRING||' AND '||V_LOAD_HEADER.WHERE_CONDITION;
ELSE
V_SQL_STRING := V_SQL_STRING||' WHERE '||V_LOAD_HEADER.WHERE_CONDITION;
END IF;
END IF;

EXECUTE IMMEDIATE V_SQL_STRING INTO V_SQL_STRING_RESULT;

EXCEPTION
WHEN OTHERS THEN
NULL ;
END;
SP_INSERT_INTERFACE_LOG(P_INTERFACE_ID,V_SQL,V_CNT,'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_ERRORS_FOUND := NVL(V_ERRORS_FOUND,0)+1;
--ZZZ_TEST('C7 Check lOOP :V_SQL '||
V_SQL||' ;'||v_errors_found,V_LOG_FOOTPRINT);
COMMIT;
END IF; -- number field
END IF; -- IF NVL(X.SOURCE_FIELD_NAME,X.DESTINATION_FIELD_VALUE) IS NOT
NULL THEN
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;

IF V_ERROR_LOGS IS NULL THEN


V_ERROR_LOGS := 'All Good';

-----------------------------------------------------------------------------------
-------------------------
--------------------------------------- PRE SQLS
----------------------------------------------------------
-----------------------------------------------------------------------------------
-------------------------

ZZZ_TEST('C5 CURSOR Pre sql LOOP STARTS : ',V_LOG_FOOTPRINT);


FOR L IN C5 LOOP

BEGIN

EXECUTE IMMEDIATE L.EXECUTE_SQLS;

EXCEPTION
WHEN OTHERS THEN
ZZZ_TEST('C5 OTH:'||SQLERRM ||
DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,V_LOG_FOOTPRINT);
SP_INSERT_INTERFACE_LOG(P_INTERFACE_ID,L.EXECUTE_SQLS,L.LINE_NO,'Error
in Pre Sql at line ' || L.LINE_NO );
V_ERRORS_FOUND := NVL(V_ERRORS_FOUND,0)+1;

COMMIT;
END;
ZZZ_TEST('C2 PRESQL Loop: '||L.LINE_NO,V_LOG_FOOTPRINT);
END LOOP;

/*********************************************************/
--
--- IF PRE SQL FAILS, STOP THE INSERT -----------------
--
/************************************************************/

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 Pre-
SQL scripts';
ELSE V_ERROR_LOGS:= V_ERROR_LOGS ||',Pre-SQL
scripts';END IF;
END IF;

V_ERRORS_FOUND:=0;

-----------------------------------------------------------------------------------
-------------------------
--------------------------------------- INSERT
BEGINS-------------------------------------------------------
-----------------------------------------------------------------------------------
-------------------------
ZZZ_TEST('C3 CURSOR Insert LOOP STARTS :'||V_INSERT,V_LOG_FOOTPRINT);

SELECT NVL(OVERWRITE_REQUIRED,'N')
INTO V_OVERWRITE
FROM SYS_LOAD_INTERFACE_HEADER
WHERE INTERFACE_ID =P_INTERFACE_ID;
IF V_OVERWRITE ='Y' THEN
BEGIN
EXECUTE IMMEDIATE 'TRUNCATE TABLE '||V_LOAD_HEADER.DESTINATION_TABLE_NAME;

EXCEPTION
WHEN OTHERS THEN
BEGIN
EXECUTE IMMEDIATE 'delete from '||V_LOAD_HEADER.DESTINATION_TABLE_NAME;
COMMIT;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
END;
END IF;
V_FLAG := '3';
V_INSERT := 'INSERT INTO '||V_LOAD_HEADER.DESTINATION_TABLE_NAME||'( ';
V_SELECT := 'SELECT ';

FOR K IN C3 LOOP
V_SOURCE_FIELD_NAME_FORCLEANUP:= null;
SELECT COUNT(1)
INTO V_CAPS
FROM SYS_LOAD_INTERFACE_RULES
WHERE INTERFACE_ID =P_INTERFACE_ID
AND NVL(ACTIVE_FLAG,'N')= 'Y'
AND RULE_CATEGORY = 'Validation'
AND RULE_TYPE = 'Field is caps'
AND FIELD_NAME = K.SOURCE_FIELD_NAME;

IF V_CAPS>0 THEN
V_SOURCE_FIELD_NAME := 'UPPER(' || K.SOURCE_FIELD_NAME || ')';
IF K.SOURCE_FIELD_NAME_FOR_CLEANUP IS NOT NULL THEN
V_SOURCE_FIELD_NAME_FORCLEANUP :='UPPER(' ||
K.SOURCE_FIELD_NAME_FOR_CLEANUP|| ')';
END IF;
ELSE
V_SOURCE_FIELD_NAME :=K.SOURCE_FIELD_NAME;
V_SOURCE_FIELD_NAME_FORCLEANUP :=K.SOURCE_FIELD_NAME_FOR_CLEANUP;
END IF;

IF K.SOURCE_FIELD_NAME LIKE 'DEFAULT(%' THEN


IF K.DESTINATION_TYPE LIKE 'NUMBER%' THEN
V_SOURCE_FIELD_NAME :=
RTRIM(LTRIM(LTRIM(K.SOURCE_FIELD_NAME,'DEFAULT'),'('),')');
ELSE
V_SOURCE_FIELD_NAME := ''''||
RTRIM(LTRIM(LTRIM(K.SOURCE_FIELD_NAME,'DEFAULT'),'('),')')||'''';
END IF;
END IF;

IF NVL(K.SOURCE_FIELD_NAME,K.DESTINATION_FIELD_VALUE) IS NOT NULL THEN

IF LENGTH(V_INSERT||K.DESTINATION_FIELD_NAME) <=32000 THEN

V_INSERT := V_INSERT||K.DESTINATION_FIELD_NAME||',';
ELSE

V_INSERT1 := NVL(V_INSERT1,' ')||K.DESTINATION_FIELD_NAME ||',' ;

END IF;

SELECT DATA_TYPE
INTO V_DEST_DATA_TYPE
FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = V_LOAD_HEADER.DESTINATION_TABLE_NAME
AND COLUMN_NAME = K.DESTINATION_FIELD_NAME;
SELECT DESTINATION_FIELD_VALUE,
FORMAT_MODEL_DEFAULT_VALUE,
NVL(NON_DATABASE_SOURCE_COLUMN,'N')
INTO V_DFLT_DESTINATION_FIELD_VALUE,
V_DFLT_FORMAT_MODEL,
V_NON_DATABASE_SOURCE_COLUMN
FROM SYS_LOAD_INTERFACE_DETAIL
WHERE INTERFACE_ID = P_INTERFACE_ID
AND DESTINATION_FIELD_NAME = K.DESTINATION_FIELD_NAME;

IF V_NON_DATABASE_SOURCE_COLUMN ='Y' THEN


IF V_SOURCE_FIELD_NAME_FORCLEANUP IS NOT NULL THEN
SELECT V_SELECT || ' NVL2('||
V_SOURCE_FIELD_NAME_FORCLEANUP||','
||
V_SOURCE_FIELD_NAME_FORCLEANUP||','
||
NVL2(V_DFLT_DESTINATION_FIELD_VALUE,
CHR(39)||
V_DFLT_DESTINATION_FIELD_VALUE||CHR(39),
'NULL'
)
||') AS '||
K.SOURCE_FIELD_NAME||','
INTO V_SELECT FROM DUAL;
ELSE
V_SELECT := V_SELECT || NVL(CHR(39)||
V_DFLT_DESTINATION_FIELD_VALUE||CHR(39),'NULL') ||' AS '||K.SOURCE_FIELD_NAME||',';

END IF;

ELSE
IF V_SOURCE_FIELD_NAME_FORCLEANUP IS NOT NULL THEN
IF V_DEST_DATA_TYPE ='NUMBER' THEN
V_SOURCE_FIELD_NAME := 'TO_NUMBER('||
V_SOURCE_FIELD_NAME_FORCLEANUP||')' ; -- V_SOURCE_FIELD_NAME_FORCLEANUP
ELSIF V_DEST_DATA_TYPE ='DATE' AND K.FORMAT_MODEL IS
NOT NULL THEN
V_SOURCE_FIELD_NAME := 'TO_DATE('||
V_SOURCE_FIELD_NAME_FORCLEANUP||','||CHR(39)||K.FORMAT_MODEL||CHR(39) ||')' ;
ELSE
NULL;
END IF;
ELSE
IF V_DEST_DATA_TYPE ='NUMBER' THEN
V_SOURCE_FIELD_NAME := 'TO_NUMBER('||
NVL(V_SOURCE_FIELD_NAME,'NULL')||')' ; -- V_SOURCE_FIELD_NAME_FORCLEANUP
ELSIF V_DEST_DATA_TYPE ='DATE' AND K.FORMAT_MODEL IS
NOT NULL THEN
V_SOURCE_FIELD_NAME := 'TO_DATE('||
NVL(V_SOURCE_FIELD_NAME,'NULL')||','||CHR(39)||K.FORMAT_MODEL||CHR(39) ||')' ;

ELSE
NULL;
END IF;
END IF;
IF V_SOURCE_FIELD_NAME_FORCLEANUP IS NOT NULL THEN
IF V_DFLT_DESTINATION_FIELD_VALUE IS NOT NULL THEN

V_SELECT := V_SELECT || 'NVL( '||


V_SOURCE_FIELD_NAME_FORCLEANUP||','
--V_SOURCE_COLUMN := 'NVL( '||
V_SOURCE_FIELD_NAME_FORCLEANUP||','
|| CASE WHEN V_DFLT_FORMAT_MODEL IS NOT
NULL THEN ' TO_DATE('||

CHR(39)||V_DFLT_DESTINATION_FIELD_VALUE||CHR(39)

||','||CHR(39)|| V_DFLT_FORMAT_MODEL ||CHR(39)||')'

ELSE CHR(39)||V_DFLT_DESTINATION_FIELD_VALUE||CHR(39)
END

||')' ||',';
ELSE
V_SELECT := V_SELECT ||
NVL(V_SOURCE_FIELD_NAME_FORCLEANUP,'NULL') ||',';
--V_SOURCE_COLUMN :=
NVL(V_SOURCE_FIELD_NAME_FORCLEANUP,'NULL') ||',';
END IF;
ELSE
IF V_DFLT_DESTINATION_FIELD_VALUE IS NOT NULL THEN

V_SELECT := V_SELECT || 'NVL( '||


NVL(V_SOURCE_FIELD_NAME,'NULL')||','||
--V_SOURCE_COLUMN :='NVL( '||
V_SOURCE_FIELD_NAME||','||
CASE WHEN V_DFLT_FORMAT_MODEL IS NOT
NULL THEN ' TO_DATE('||

CHR(39)||V_DFLT_DESTINATION_FIELD_VALUE||CHR(39)

||','||CHR(39)|| V_DFLT_FORMAT_MODEL ||CHR(39)||')'


ELSE CHR(39)||
V_DFLT_DESTINATION_FIELD_VALUE||CHR(39)
END

||')' ||',';

ELSE
V_SELECT := V_SELECT ||
NVL(V_SOURCE_FIELD_NAME,'NULL') ||',';
--V_SOURCE_COLUMN:=
NVL(V_SOURCE_FIELD_NAME,'NULL') ||',';
END IF;
END IF;
END IF; -- v_NON_DATABASE_SOURCE_COLUMN ='Y'
END IF;

--V_SELECT := V_SELECT || V_SOURCE_COLUMN ;


ZZZ_TEST('C3 Fields LOOP :'||K.LINE_NO||' - '||
K.SOURCE_FIELD_NAME|| ': '||V_SOURCE_FIELD_NAME ,V_LOG_FOOTPRINT);

/*

-----------------------------------------------------------------------------------
-------------------------
--------------------------------------- CHECK DATA SIZE ISSUES
--------------------------------------------

-----------------------------------------------------------------------------------
-------------------------
DECLARE
V_DATA_TYPE VARCHAR2(60);
V_DATA_LENGTH NUMBER(20,8);
V_NULLABLE VARCHAR2(1);
VSCRIPT VARCHAR2(4000);
V_DATASIZEISSUE NUMBER(20);
BEGIN

select case when substr(V_SOURCE_COLUMN,-1) =',' then


substr(V_SOURCE_COLUMN,1,length(V_SOURCE_COLUMN)-1 )
else V_SOURCE_COLUMN
end
into V_SOURCE_COLUMN
from dual;

SELECT DATA_TYPE , DATA_LENGTH , NULLABLE


INTO V_DATA_TYPE, V_DATA_LENGTH, V_NULLABLE
FROM USER_TAB_COLS
WHERE TABLE_NAME = V_LOAD_HEADER.DESTINATION_TABLE_NAME
AND COLUMN_NAME = K.DESTINATION_FIELD_NAME ;--
K.SOURCE_FIELD_NAME;
IF V_DATA_TYPE ='VARCHAR2' THEN
--VSCRIPT:= 'SELECT LENGTH('||V_SOURCE_COLUMN||') FROM '||
V_LOAD_HEADER.SOURCE_TABLE_NAME
VSCRIPT:= 'SELECT COUNT(1) FROM '||
V_LOAD_HEADER.SOURCE_TABLE_NAME
||' WHERE LENGTH('||V_SOURCE_COLUMN ||')>'|| V_DATA_LENGTH;
ZZZ_TEST('C3 DATA SIZE ISSUE ERROR :'||
VSCRIPT,V_LOG_FOOTPRINT);
EXECUTE IMMEDIATE VSCRIPT INTO V_DATASIZEISSUE;

IF V_DATASIZEISSUE >0 THEN

ZZZ_TEST('C3 DATA SIZE ISSUE ERROR :'||SQLERRM


||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,V_LOG_FOOTPRINT);

SP_INSERT_INTERFACE_LOG(P_INTERFACE_ID,VSCRIPT,NULL,V_DATA_LENGTH);
V_ERRORS_FOUND := NVL(V_ERRORS_FOUND,0)+1;

END IF;
END IF;
--exception
END;
*/
END LOOP;
--V_ERROR_LOGS :=' Data size issues encountered ';
--if V_ERRORS_FOUND =0 then

-----------------------------------------------------------------------------------
-------------------------

-----------------------------------------------------------------------------------
-------------------------

IF V_INSERT1 IS NULL THEN


V_INSERT := RTRIM(V_INSERT,',')||')';
ELSE
V_INSERT1 := RTRIM(V_INSERT1,',')||')';
END IF;
IF V_LOAD_HEADER.WHERE_CONDITION IS NOT NULL THEN
V_SELECT := RTRIM(V_SELECT,',')||' FROM '||
V_LOAD_HEADER.SOURCE_USER_ID||'.'||V_LOAD_HEADER.SOURCE_TABLE_NAME||' WHERE '||
V_LOAD_HEADER.WHERE_CONDITION;
ELSE
V_SELECT := RTRIM(V_SELECT,',')||' FROM '||
V_LOAD_HEADER.SOURCE_USER_ID||'.'||V_LOAD_HEADER.SOURCE_TABLE_NAME;
END IF;
V_FLAG := '8';

BEGIN

IF V_INSERT1 IS NULL THEN


V_FLAG := '9';
ZZZ_TEST('C3 Insert V_INSERT :'||
V_INSERT ,V_LOG_FOOTPRINT);
ZZZ_TEST('C3 Insert V_SELECT :'||
V_SELECT ,V_LOG_FOOTPRINT);
EXECUTE IMMEDIATE V_INSERT||' '|| V_SELECT;
ELSE
V_FLAG := '10';
ZZZ_TEST('C3 Insert V_INSERT1 :'||
V_INSERT1,V_LOG_FOOTPRINT);
ZZZ_TEST('C3 Insert V_SELECT :'||
V_SELECT,V_LOG_FOOTPRINT);
EXECUTE IMMEDIATE V_INSERT||V_INSERT1||' '||V_SELECT;
END IF;

EXCEPTION
WHEN OTHERS THEN

ZZZ_TEST('C3 Insert OTH ERROR :'||SQLERRM ||


DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,V_LOG_FOOTPRINT);
SP_INSERT_INTERFACE_LOG(P_INTERFACE_ID,V_INSERT||' '||
V_SELECT,NULL,V_FLAG||' '||SUBSTR(SQLERRM,1,2000));
V_ERRORS_FOUND := NVL(V_ERRORS_FOUND,0)+1;

COMMIT;
END;

IF V_ERRORS_FOUND >0 THEN


--if V_ERROR_LOGS is null then
V_ERROR_LOGS :=' Other Errors encountered ';

-- else V_ERROR_LOGS:= V_ERROR_LOGS ||chr(10)||'


Other Errors encountered';end if;
END IF;
---end if; --CHECK DATA SIZE ISSUES
V_ERRORS_FOUND := 0;

V_FLAG := '11';
COMMIT;

-----------------------------------------------------------------------------------
-------------------------
--------------------------------------- Post sql
-----------------------------------------------------------

-----------------------------------------------------------------------------------
-------------------------
ZZZ_TEST('C4 CURSOR Post sql LOOP STARTS :',V_LOG_FOOTPRINT);

FOR K IN C4 LOOP
BEGIN
EXECUTE IMMEDIATE K.EXECUTE_SQLS;
EXCEPTION
WHEN OTHERS THEN

ZZZ_TEST('C4 Post sql OTH ERROR : '||


K.EXECUTE_SQLS||SQLERRM ||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,V_LOG_FOOTPRINT);

SP_INSERT_INTERFACE_LOG(P_INTERFACE_ID,K.EXECUTE_SQLS,K.LINE_NO,'Error in Post Sql


at line ' || K.LINE_NO );
V_ERRORS_FOUND := NVL(V_ERRORS_FOUND,0)+1;

COMMIT;
END;
ZZZ_TEST('C4 Post Sql Loop : '||
K.EXECUTE_SQLS,V_LOG_FOOTPRINT);
END LOOP;
/*********************************************************/
--
--- IF POST SQL FAILS, NEED TO REVERT BACK INSERT ---
--
/*********************************************************/

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 Post-SQL scripts';
ELSE V_ERROR_LOGS:= V_ERROR_LOGS ||',Post-SQL
scripts';END IF;
END IF;
V_ERRORS_FOUND :=0;

-----------------------------------------------------------------------------------
-------------------------
--------------------------------------- SUMMARY
-----------------------------------------------------------
--- TO BE MOVED TO NEW PROGUNIT AND BE CALLED IN THE EXECPTION SECTIONS TOO

-----------------------------------------------------------------------------------
-------------------------
--else
-- Rollback; -- presqls if any
END IF;-- if V_ERROR_LOGS is null then

ZZZ_TEST(' SUMMARY : '||


P_INTERFACE_ID,V_LOG_FOOTPRINT);

DELETE FROM SYS_LOAD_INTERFACE_SUMMARY


WHERE INTERFACE_ID=P_INTERFACE_ID
AND SUMMARY_TYPE='DATA_LOADED_INFO';

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';

IF V_ERROR_LOGS = 'All Good' THEN

EXECUTE IMMEDIATE 'select count(*) from '|| V_LOAD_HEADER.DESTINATION_TABLE_NAME


INTO V_NO_OF_RECORDS;
V_ERROR_LOGS := '<font color= "BLUE"><B>'||V_ERROR_LOGS ||'</B></font>( '||
V_NO_OF_RECORDS||' rows inserted in '||V_LOAD_HEADER.DESTINATION_TABLE_NAME
||' )' ;
ELSE
V_ERROR_LOGS := '<font color= "Red">'||V_ERROR_LOGS ||'</font>' ;
END IF;

INSERT INTO SYS_LOAD_INTERFACE_SUMMARY( INTERFACE_ID,


LINE_NO,
SUMMARY_TYPE,
SUMMARY_RESULTS,
NOTES,
CREATED_BY,
CREATED_DATE,
CHANGED_BY,
CHANGED_DATE)
VALUES( P_INTERFACE_ID ,--INTERFACE_ID,

V_LINE_NO , --LINE_NO,
'DATA_LOADED_INFO' ,--SUMMARY_TYPE,

'Data Processed by ' || P_USER_ID || '


on ' || SYSDATE, --SUMMARY_RESULTS,
V_ERROR_LOGS , --NOTES,

P_USER_ID ,--CREATED_BY,
SYSDATE ,--CREATED_DATE,

NULL ,--CHANGED_BY,
NULL --CHANGED_DATE
);
COMMIT;

EXCEPTION

WHEN NO_DATA_FOUND THEN


SP_INSERT_INTERFACE_LOG(P_INTERFACE_ID, V_FLAG||CHR(10)||
V_SQL||CHR(10)||
V_INSERT||' '||V_SELECT||
CHR(10)||CHR(10)||CHR(10)||'Source Error
Details:'||CHR(10)||SQLERRM||',' ||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,
NULL,
'Field value/Field is Missing per Setup.');
WHEN SETUP_ERRORS_MISSING_MAPPING THEN
SP_INSERT_INTERFACE_LOG(P_INTERFACE_ID, --V_FLAG||CHR(10)||
'Click on Button "Refresh Fields from
Destination Table" and/or "Refresh Source Field List/Col Mappings" '||
' to auto-map source and destination
columns.'||chr(10)||'Use "Add New Line" Button for any missing columns mapping.' ||
'/Run the below query to check if any
Business Rules source, is missing'||
CHR(10)||
CHR(10)||
' select * from ('|| CHR(10)||
' SELECT LINE_NO,
BUSINESS_RULE_ID ,TABLE_NAME, FIELD_NAME, RULE_CATEGORY, RULE_TYPE,'|| CHR(10)||

' (SELECT IGNORE_DESTINATION


'|| CHR(10)||
' FROM
SYS_LOAD_INTERFACE_DETAIL '|| CHR(10)||
' WHERE INTERFACE_ID =
j.INTERFACE_ID '|| CHR(10)||
' AND
DESTINATION_FIELD_NAME = J.FIELD_NAME ) mising_setup '|| CHR(10)||
' FROM SYS_LOAD_INTERFACE_RULES j
'|| CHR(10)||
' WHERE j.INTERFACE_ID =
<P_INTERFACE_ID> '|| CHR(10)||
' AND NVL(j.ACTIVE_FLAG,'||
chr(39)||'N'||chr(39)||')='||chr(39)||'Y'||chr(39)||CHR(10)||
') where mising_setup is null;' ||
CHR(10)||
CHR(10)||
CHR(10)||

' Else Drill down and setup by clicking on


the fields name in the region "Load Interface Setup Detail".'||
CHR(10)||CHR(10)||CHR(10)||'Source Error
Details:'||CHR(10)||SQLERRM||',' ||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,
NULL,
'Source and Destination columns Setups are missing.');

WHEN TABLE_ERROR_SOURCE THEN


ZZZ_TEST(' END TABLE_ERROR_SOURCE:'||SQLERRM ||
DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,V_LOG_FOOTPRINT);
SP_INSERT_INTERFACE_LOG(P_INTERFACE_ID, CHR(10)||' Pl. complete the Setups for
Loading Process.'
||CHR(10)||' Check for field with label '

||CHR(39)||'Source Table Name'||


CHR(39)||' ,on the First Tab('
||CHR(39)||'Interface Setup'||
CHR(39)||'), and in the Region: '
||CHR(39)||'Load Interface Setup'||
CHR(10)||CHR(10)||CHR(10)||'Source Error
Details:'||CHR(10)||SQLERRM||',' ||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,
NULL,
'<font color= "Red"><B>Incomplete Setup.</B>
</font>Source Table <B>'||V_LOAD_HEADER.SOURCE_TABLE_NAME||'</B> does not Exist.');

DELETE FROM SYS_LOAD_INTERFACE_SUMMARY WHERE INTERFACE_ID=P_INTERFACE_ID


AND SUMMARY_TYPE='Source Table Setup Checks';
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='Source Table Setup
Checks';
INSERT INTO SYS_LOAD_INTERFACE_SUMMARY( INTERFACE_ID,LINE_NO, SUMMARY_TYPE,
SUMMARY_RESULTS, NOTES, CREATED_BY,CREATED_DATE)
VALUES( P_INTERFACE_ID ,V_LINE_NO ,'Source Table Setup Checks','Data
Processed by ' || P_USER_ID || ' on ' || SYSDATE,
'<font color= "Red">Data load Setup incomplete wrt Source
Table.</font>' ,
P_USER_ID,SYSDATE);
COMMIT;

WHEN TABLE_ERROR_DESTINATION THEN


ZZZ_TEST(' END TABLE_ERROR_DESTIN:'||SQLERRM ||
DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,V_LOG_FOOTPRINT);
SP_INSERT_INTERFACE_LOG(P_INTERFACE_ID, CHR(10)||' Pl. complete the Setups for
Loading Process.'
||CHR(10)||' Check for field with label '

||CHR(39)||'Destination Table Name'||


CHR(39)||' ,on the First Tab('
||CHR(39)||'Interface Setup'||
CHR(39)||'), and in the Region: '
||CHR(39)||'Load Interface Setup'||
CHR(10)||CHR(10)||CHR(10)||'Source Error
Details:'||CHR(10)||SQLERRM||',' ||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,
NULL,
'<font color= "Red"><B>Incomplete
Setup.</B> </font> Destination Table <B>'||
V_LOAD_HEADER.DESTINATION_TABLE_NAME||'</B> does not Exist.');
DELETE FROM SYS_LOAD_INTERFACE_SUMMARY WHERE INTERFACE_ID=P_INTERFACE_ID
AND SUMMARY_TYPE='Destination Table Setup Checks';
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='Destination Table Setup
Checks';
INSERT INTO SYS_LOAD_INTERFACE_SUMMARY( INTERFACE_ID,LINE_NO, SUMMARY_TYPE,
SUMMARY_RESULTS, NOTES, CREATED_BY,CREATED_DATE)
VALUES( P_INTERFACE_ID ,V_LINE_NO ,'Destination Table Setup
Checks','Data Processed by ' || P_USER_ID || ' on ' || SYSDATE,
'<font color= "Red">Data load Setup incomplete wrt Destination
Table.</font>' ,
P_USER_ID,SYSDATE);
COMMIT;

WHEN SETUP_ERRORS THEN


--RAISE_APPLICATION_ERROR(-20702,V_SELECT||'-'||SUBSTR(SQLERRM,1,190));
ZZZ_TEST(' END SETUP_ERRORS:'||SQLERRM ||
DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,V_LOG_FOOTPRINT);
DELETE FROM SYS_LOAD_INTERFACE_SUMMARY WHERE INTERFACE_ID=P_INTERFACE_ID
AND SUMMARY_TYPE='Data Setup Checks';
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 Setup Checks';
INSERT INTO SYS_LOAD_INTERFACE_SUMMARY( INTERFACE_ID,LINE_NO, SUMMARY_TYPE,
SUMMARY_RESULTS, NOTES, CREATED_BY,CREATED_DATE)
VALUES( P_INTERFACE_ID ,V_LINE_NO ,'Data Setup Checks','Data Processed
by ' || P_USER_ID || ' on ' || SYSDATE,
'<font color= "Red">Data load Setup incomplete wrt Business
Rules.</font>' ,
P_USER_ID,SYSDATE);
COMMIT;
WHEN OUT_ERRORS THEN
--RAISE_APPLICATION_ERROR(-20702,V_SELECT||'-'||SUBSTR(SQLERRM,1,190));
ZZZ_TEST(' END OUT_ERRORS:'||SQLERRM ||
DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,V_LOG_FOOTPRINT);
NULL;
WHEN OTHERS THEN
--RAISE_APPLICATION_ERROR(-20702,V_SELECT||'-'||SUBSTR(SQLERRM,1,190));
ZZZ_TEST(' END OTHERS :'||SQLERRM ||
DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,V_LOG_FOOTPRINT);
SP_INSERT_INTERFACE_LOG(P_INTERFACE_ID,
'V_FLAG-'||V_FLAG||CHR(10)||
V_SQL ||CHR(10)||
V_INSERT||' '||
V_SELECT,
NULL
,SQLERRM||' :: '||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);

COMMIT;
END SP_DATA_LOAD;

You might also like