[Home] [Help]
The following lines contain the word 'select', 'insert', 'update' or 'delete':
v_sql_user := 'select user from dual';
SELECT column_name
FROM all_tab_columns
WHERE owner = v_user
AND table_name = p_src_tbl_name
ORDER BY column_id;
v_err_select VARCHAR2(10000);
v_src_select VARCHAR2(10000);
v_src_select := v_src_select || ',' || v_src_col_list(v_count);
v_src_select := v_src_select || ',' || v_src_col_list(v_count);
v_src_select := LTRIM(v_src_select,',');
v_err_select:=v_src_select || ',LOAD_ID,ERR_REASON,ACTION_FLAG';
v_src_select:=v_src_select || ',' || p_load_id || ',''Duplicate Record;'',''N''';
v_err_select:=v_src_select || ',LOAD_ID,ERR_REASON,ACTION_FLAG,SRC_IDNT_FLAG';
v_src_select:=v_src_select || ',' || p_load_id || ',''Duplicate Record;'',''N'',''I''';
/* Creating the INSERT SQL statement */
EXECUTE IMMEDIATE 'INSERT INTO ' || p_err_tbl_name || ' ( ' || v_err_select || ') SELECT ' || v_src_select || ' FROM ' || p_src_tbl_name || ' WHERE ( ' ||
p_key_cols || ' ) IN ( SELECT ' || p_key_cols || ' FROM ' || p_src_tbl_name || ' GROUP BY ' || p_key_cols || ' HAVING COUNT(*) > 1 )';
/* Creating the DELETE SQL Statement */
EXECUTE IMMEDIATE 'DELETE FROM '||p_src_tbl_name||' WHERE ('||p_key_cols||') IN (SELECT '||p_key_cols||' FROM '||p_src_tbl_name||' GROUP BY '||p_key_cols||
' HAVING COUNT(*) > 1 )';
EXECUTE IMMEDIATE 'SELECT lkup_name FROM DDR_R_LKUP_MST WHERE lkup_typ_cd=''ERR'' AND lkup_cd=:c1' INTO v_err_msg USING p_error_cd;
v_update_stmt VARCHAR2(4000);
EXECUTE IMMEDIATE 'UPDATE '||p_src_tab||' SET err_reason = '' '' WHERE err_reason=''Generic Error'' AND load_id ='||p_load_id;
v_update_stmt := 'UPDATE '||p_src_tab||' SET err_reason = err_reason ||'''||v_err_reason_string||':''||ddr_odi.get_error('''||p_error_cd||
''')||'';'' WHERE load_id = '||p_load_id||' AND (('|| p_src_clm||') NOT IN (SELECT ' ||p_tgt_clm||' FROM '||p_tgt_tab||' WHERE (1=1) ';
v_sql := v_update_stmt || v_where_stmt || v_null_stmt;
EXECUTE IMMEDIATE 'UPDATE '||p_src_tab||' SET err_reason = '' '' WHERE err_reason=''Generic Error'' AND load_id='||p_load_id;
v_sql := 'UPDATE '||p_src_tab||' SET err_reason = err_reason ||'''||p_src_clm||':''||ddr_odi.get_error('''||p_error_cd||''')||'';'' WHERE '||p_src_clm||' IS NULL AND load_id='||p_load_id;
SELECT column_name
FROM all_tab_columns
WHERE owner = v_user
AND table_name = UPPER(p_src_tbl_name)
ORDER BY column_id;
v_err_select VARCHAR2(10000);
v_src_select VARCHAR2(10000);
v_src_select_after VARCHAR2(10000);
v_insert_sql VARCHAR2(10000);
v_insert_stmt VARCHAR2(10000);
v_insert_select_stmt VARCHAR2(10000);
v_delete_sql VARCHAR2(10000);
v_src_select := v_src_select || ', ' || v_src_col_list(v_count);
v_src_select := LTRIM(v_src_select,',');
v_src_select := REPLACE(v_src_select,', ALLOC_PARENT_IDNT','');
v_src_select := REPLACE(v_src_select,', SLS_AMOUNT','');
v_src_select := REPLACE(v_src_select,', RTRN_AMOUNT','');
v_src_select := REPLACE(v_src_select,', SLS_COST_AMOUNT','');
v_src_select := REPLACE(v_src_select,', RTRN_COST_AMOUNT','');
v_src_select := REPLACE(v_src_select,', RTL_BSNS_UNIT_CD','');
v_err_select:=v_src_select || ', LOAD_ID, ERR_REASON, ACTION_FLAG, SRC_IDNT_FLAG';
/* Select for the invalid ORG Alloc records */
/* Checking if it's generic error messages */
IF p_generic_err_msg = 'Y' THEN
v_err_msg:='Generic Error';
v_src_select_after:=v_src_select||', '||p_load_id||', '''||v_err_msg||''', ''N'', ''I''';
v_insert_stmt:='INSERT INTO '||p_err_tbl_name||' ( '||v_err_select||') SELECT '||v_src_select_after||' FROM '||p_src_tbl_name||' WHERE rowid IN';
v_insert_select_stmt:=' ((SELECT rowid FROM '||p_src_tbl_name||' WHERE LOC_IDNT_FLAG=''O'' AND PERIOD_TYP_FLAG=''D'' AND rowid NOT IN'||
' (SELECT ALLOC_PARENT_IDNT FROM '||p_src_tbl_name||' WHERE ALLOC_PARENT_IDNT IS NOT NULL ))'||
' UNION'||
' (SELECT rowid FROM '||p_src_tbl_name||' WHERE LOC_IDNT_FLAG NOT IN(''O'',''B'') AND PERIOD_TYP_FLAG IN(''D'',''W'') AND rowid NOT IN'||
' (SELECT ALLOC_PARENT_IDNT FROM '||p_src_tbl_name||' WHERE ALLOC_PARENT_IDNT IS NOT NULL)))';
v_insert_sql:=v_insert_stmt||v_insert_select_stmt;
EXECUTE IMMEDIATE v_insert_sql;
/* Union Select for Invalid Time Alloc records */
/* Checking if it's generic error messages */
IF p_generic_err_msg = 'Y' THEN
v_err_msg:='Generic Error';
v_src_select_after:=v_src_select||', '||p_load_id||', '''||v_err_msg||''', ''N'', ''I''';
v_insert_stmt:='INSERT INTO '||p_err_tbl_name||' ( '||v_err_select||') SELECT '||v_src_select_after||' FROM '||p_src_tbl_name||' WHERE rowid IN';
v_insert_select_stmt:=' ((SELECT rowid FROM '||p_src_tbl_name||' WHERE PERIOD_TYP_FLAG=''W'' AND LOC_IDNT_FLAG=''B'''||
' AND ALLOC_PARENT_IDNT IS NULL AND rowid NOT IN'||
' (SELECT ALLOC_PARENT_IDNT FROM '||p_src_tbl_name||' WHERE ALLOC_PARENT_IDNT IS NOT NULL))'||
' UNION'||
' (SELECT rowid FROM '||p_src_tbl_name||' WHERE PERIOD_TYP_FLAG NOT IN (''W'',''D'') AND LOC_IDNT_FLAG IN (''O'',''B'') AND'||
' ALLOC_PARENT_IDNT IS NULL AND rowid NOT IN'||
' (SELECT ALLOC_PARENT_IDNT FROM '||p_src_tbl_name||' WHERE ALLOC_PARENT_IDNT IS NOT NULL)))';
v_insert_sql:=v_insert_stmt||v_insert_select_stmt;
EXECUTE IMMEDIATE v_insert_sql;
/* Union Select for Parent of Invalid middle parent (has both org and time alloc) */
/* Checking if it's generic error messages */
IF p_generic_err_msg = 'Y' THEN
v_err_msg:='Generic Error';
v_src_select_after:=v_src_select||', '||p_load_id||', '''||v_err_msg||''', ''N'', ''I''';
v_insert_stmt:='INSERT INTO '||p_err_tbl_name||' ( '||v_err_select||') SELECT '||v_src_select_after||' FROM '||p_src_tbl_name||' WHERE rowid IN';
v_insert_select_stmt:=' (SELECT rowid FROM '||p_src_tbl_name||' WHERE rowid IN'||
' (SELECT ALLOC_PARENT_IDNT FROM '||p_src_tbl_name||' WHERE PERIOD_TYP_FLAG=''W'' AND rowid NOT IN'||
' (SELECT ALLOC_PARENT_IDNT FROM '||p_src_tbl_name||' WHERE ALLOC_PARENT_IDNT IS NOT NULL)))';
v_insert_sql:=v_insert_stmt||v_insert_select_stmt;
EXECUTE IMMEDIATE v_insert_sql;
V_INSERT_STMT:='INSERT INTO '||P_ERR_TBL_NAME||' ( '||V_ERR_SELECT||') SELECT '||V_SRC_SELECT_AFTER||' FROM '||P_SRC_TBL_NAME||' WHERE rowid IN';
v_insert_select_stmt:=' (SELECT rowid FROM '||p_src_tbl_name||' WHERE LOC_IDNT_FLAG IS NULL OR PERIOD_TYP_FLAG IS NULL)';
V_INSERT_SQL:=V_INSERT_STMT||V_INSERT_SELECT_STMT;
EXECUTE IMMEDIATE V_INSERT_SQL;
V_INSERT_STMT:='INSERT INTO '||P_ERR_TBL_NAME||' ( '||V_ERR_SELECT||') SELECT '||V_SRC_SELECT_AFTER||' FROM '||P_SRC_TBL_NAME||' WHERE rowid IN';
v_insert_select_stmt:=' (SELECT rowid FROM '||p_src_tbl_name||' WHERE LOC_IDNT_FLAG NOT IN (''O'',''B'') OR PERIOD_TYP_FLAG NOT IN (''W'',''D''))';
V_INSERT_SQL:=V_INSERT_STMT||V_INSERT_SELECT_STMT;
EXECUTE IMMEDIATE V_INSERT_SQL;
V_INSERT_STMT:='INSERT INTO '||P_ERR_TBL_NAME||' ( '||V_ERR_SELECT||') SELECT '||V_SRC_SELECT_AFTER||' FROM '||P_SRC_TBL_NAME||' WHERE rowid NOT IN';
V_INSERT_SELECT_STMT:=' (SELECT '||P_SRC_TBL_NAME||'.'||'rowid FROM '||P_SRC_TBL_NAME||','||'DDR_R_ORG_ALLOC '||' WHERE '||
P_SRC_TBL_NAME||'.'||'RTL_ORG_CD '||'= DDR_R_ORG_ALLOC.ORG_CD '|| 'AND '||P_SRC_TBL_NAME||'.'||'LOC_IDNT_CD' ||' =DECODE('||
P_SRC_TBL_NAME||'.'||'ALLOC_PARENT_IDNT, NULL,DDR_R_ORG_ALLOC.LOC_IDNT_CD,DDR_R_ORG_ALLOC.BSNS_UNIT_CD) '||
'AND '||p_src_tbl_name||'.'||'ORG_LVL_CD' ||' =DDR_R_ORG_ALLOC.ORG_LVL_CD ) AND '||p_src_tbl_name||'.'||'PERIOD_TYP_FLAG =''W'''||
'AND '||p_src_tbl_name||'.'||'LOC_IDNT_FLAG =''O''';
V_INSERT_SQL:=V_INSERT_STMT||V_INSERT_SELECT_STMT;
EXECUTE IMMEDIATE V_INSERT_SQL;
/* Creating the ORG DELETE SQL statement */
v_delete_sql:='DELETE FROM '||p_src_tbl_name||' WHERE rowid IN'||
/* Select for the invalid ORG Alloc records */
' ((SELECT rowid FROM '||p_src_tbl_name||' WHERE LOC_IDNT_FLAG=''O'' AND PERIOD_TYP_FLAG=''D'' AND rowid NOT IN'||
' (SELECT ALLOC_PARENT_IDNT FROM '||p_src_tbl_name||' WHERE ALLOC_PARENT_IDNT IS NOT NULL ))'||
/* Union Select for Invalid Time Alloc records */
' UNION'||
' (SELECT rowid FROM '||p_src_tbl_name||' WHERE PERIOD_TYP_FLAG=''W'' AND LOC_IDNT_FLAG=''B'' AND'||
' ALLOC_PARENT_IDNT IS NULL AND rowid NOT IN'||
' (SELECT ALLOC_PARENT_IDNT FROM '||p_src_tbl_name||' WHERE ALLOC_PARENT_IDNT IS NOT NULL))'||
' UNION'||
/* Union Select for Parent of Invalid middle parent (has both org and time alloc) */
' (SELECT rowid FROM '||p_src_tbl_name||' WHERE rowid IN'||
' (SELECT ALLOC_PARENT_IDNT FROM '||p_src_tbl_name||' WHERE PERIOD_TYP_FLAG=''W'' AND LOC_IDNT_FLAG=''B'' AND rowid NOT IN'||
' (SELECT ALLOC_PARENT_IDNT FROM '||p_src_tbl_name||' WHERE ALLOC_PARENT_IDNT IS NOT NULL)))'||
/* Union Select for Invalid middle parent (has both org and time alloc) */
' UNION'||
' (SELECT rowid FROM '||p_src_tbl_name||' WHERE PERIOD_TYP_FLAG=''W'' AND LOC_IDNT_FLAG=''B'' AND rowid NOT IN'||
' (SELECT ALLOC_PARENT_IDNT FROM '||p_src_tbl_name||' WHERE ALLOC_PARENT_IDNT IS NOT NULL))'||
/*Union Select for Invalid code for Org Allocation */
' UNION'||
' (SELECT rowid FROM '||p_src_tbl_name||' WHERE LOC_IDNT_FLAG NOT IN(''O'',''B'') AND PERIOD_TYP_FLAG IN(''D'',''W'') AND rowid NOT IN'||
' (SELECT ALLOC_PARENT_IDNT FROM DDR_I_RTL_SL_RTN_ITEM WHERE ALLOC_PARENT_IDNT IS NOT NULL))'||
/*Union Select for Invalid code for time allocation*/
' UNION'||
' (SELECT rowid FROM '||p_src_tbl_name||' WHERE PERIOD_TYP_FLAG NOT IN (''W'',''D'') AND LOC_IDNT_FLAG IN (''O'',''B'')'||
' AND ALLOC_PARENT_IDNT IS NULL AND rowid NOT IN'||
' (SELECT ALLOC_PARENT_IDNT FROM '||p_src_tbl_name||' WHERE ALLOC_PARENT_IDNT IS NOT NULL)))';
EXECUTE IMMEDIATE v_delete_sql;
v_src_select_after:=v_src_select||', '||p_load_id||', ''Generic Error'', ''N'', ''I''';
/* Creating the INSERT SQL statement */
/* Moving error records for records that had no allocation */
v_insert_sql:='INSERT INTO '||p_err_tbl_name||' ( '||v_err_select||') SELECT '||v_src_select_after||' FROM '||p_src_tbl_name||
' WHERE PERIOD_TYP_FLAG=''D'' AND LOC_IDNT_FLAG=''B'' AND ALLOC_PARENT_IDNT IS NULL AND NOT EXISTS'||
' ( SELECT REC_ID FROM '||v_stg_tbl_name||' WHERE '||v_stg_tbl_name||'.ROWID_INT = '||p_src_tbl_name||'.rowid )';
EXECUTE IMMEDIATE v_insert_sql;
v_insert_sql:='INSERT INTO '||p_err_tbl_name||' ( '||v_err_select||') SELECT '||v_src_select_after||' FROM '||p_src_tbl_name||
' WHERE rowid IN'||
' (SELECT rowid FROM '||p_src_tbl_name||' WHERE rowid IN'||
' (SELECT ALLOC_PARENT_IDNT FROM '||p_src_tbl_name||' WHERE ALLOC_PARENT_IDNT IS NOT NULL AND LOC_IDNT_FLAG=''B'' AND'||
' PERIOD_TYP_FLAG=''D'' AND rowid NOT IN '||
' (SELECT rowid_int from '||v_stg_tbl_name||' WHERE '||v_stg_tbl_name||'.rowid_int = '||p_src_tbl_name||'.rowid)))';
EXECUTE IMMEDIATE v_insert_sql;
v_insert_sql:='INSERT INTO '||p_err_tbl_name||' ( '||v_err_select||') SELECT '||v_src_select_after||' FROM '||p_src_tbl_name||
' WHERE rowid IN'||
' (SELECT rowid FROM '||p_src_tbl_name||' WHERE rowid IN'||
' (SELECT ALLOC_PARENT_IDNT FROM '||p_src_tbl_name||' WHERE ALLOC_PARENT_IDNT IS NOT NULL AND LOC_IDNT_FLAG=''B'' AND'||
' PERIOD_TYP_FLAG=''W'' AND rowid NOT IN '||
--' (SELECT rowid_int from '||v_stg_tbl_name||' WHERE '||v_stg_tbl_name||'.rowid_int = '||p_src_tbl_name||'.rowid)))';
' (SELECT ALLOC_PARENT_IDNT from '||V_STG_TBL_NAME||','|| P_SRC_TBL_NAME||' WHERE '||V_STG_TBL_NAME||'.rowid_int = '||P_SRC_TBL_NAME||'.rowid)))';
EXECUTE IMMEDIATE v_insert_sql;
SELECT ORG_HCHY_ID, HRCHY_CD, CHILD_ID BSNS_ENT_ID, LEVEL, CHILD_CD BSNS_ENT_CD,
SRC_SYS_DT, SRC_SYS_IDNT, EFF_FROM_DT, EFF_TO_DT
FROM
(
SELECT ORG_HCHY_ID, HRCHY_CD, PARENT_ID, PARENT_CD, CHILD_ID, CHILD_CD,
SRC_SYS_DT, SRC_SYS_IDNT, EFF_FROM_DT, EFF_TO_DT
FROM
(
SELECT t1.ORG_HCHY_ID ORG_HCHY_ID, t1.HRCHY_CD HRCHY_CD,
t1.ORG_BSNS_ENT_ID PARENT_ID, t1.BSNS_ENT_CD PARENT_CD,
t2.ORG_BSNS_ENT_ID CHILD_ID, t2.BSNS_ENT_CD CHILD_CD,
t2.SRC_SYS_DT SRC_SYS_DT, t2.SRC_SYS_IDNT SRC_SYS_IDNT,
t1.EFF_FROM_DT EFF_FROM_DT, t1.EFF_TO_DT, t2.EFF_FROM_DT FROM_DT_2, t2.EFF_TO_DT TO_DT_2
FROM DDR_R_ORG_BSNS_ENT t1 INNER JOIN DDR_R_ORG_BSNS_ENT t2
ON (t1.BSNS_ENT_CD = t2.BSNS_ENT_PRNT_CD AND t1.ORG_HCHY_ID = t2.ORG_HCHY_ID)
)
WHERE NOT ((TO_DT_2 is not null AND TO_DT_2 < EFF_FROM_DT) OR (EFF_TO_DT is not null AND FROM_DT_2 > EFF_TO_DT))
UNION
(
SELECT
ORG_HCHY_ID, HRCHY_CD,
CASE WHEN BSNS_ENT_PRNT_CD is null THEN null
ELSE ORG_BSNS_ENT_ID
END PARENT_ID,
BSNS_ENT_PRNT_CD PARENT_CD,
ORG_BSNS_ENT_ID CHILD_ID,
BSNS_ENT_CD CHILD_CD,
SRC_SYS_DT, SRC_SYS_IDNT,
EFF_FROM_DT, EFF_TO_DT
FROM DDR_R_ORG_BSNS_ENT
WHERE BSNS_ENT_PRNT_CD is null
)
)
START WITH PARENT_CD is null
CONNECT BY PARENT_ID = PRIOR CHILD_ID;
v_sql_hdr1 VARCHAR2(250) := 'INSERT INTO DDR_R_AOH_LVL_DTL (ORG_HCHY_ID,HRCHY_CD, BSNS_ENT_ID,BSNS_ENT_CD,BSNS_ENT_LEVEL,PRNT1_BSNS_ENT_CD,PRNT1_BSNS_ENT_ID,PRNT2_BSNS_ENT_CD, PRNT2_BSNS_ENT_ID,PRNT3_BSNS_ENT_CD,PRNT3_BSNS_ENT_ID,';
v_sql_hdr3 VARCHAR2(250) := 'SRC_SYS_IDNT,SRC_SYS_DT,LAST_UPDATE_DATE,LAST_UPDATED_BY,CREATION_DATE,CREATED_BY,CRTD_BY_DSR, LAST_UPDT_BY_DSR,LAST_UPDATE_LOGIN) VALUES(';
SELECT column_name
FROM all_tab_columns
WHERE owner = v_user
AND table_name = p_src_tbl_name
ORDER BY column_id;
v_err_select VARCHAR2(10000);
v_src_select VARCHAR2(10000);
v_insert_sql VARCHAR2(10000);
v_delete_sql VARCHAR2(10000);
v_src_select := v_src_select || ', ' || v_src_col_list(v_count);
v_src_select := LTRIM(v_src_select,',');
v_err_select:=v_src_select || ', LOAD_ID, ERR_REASON, ACTION_FLAG';
v_src_select:=v_src_select || ', ' || p_load_id || ', ''Generic Error'', ''N''';
v_err_select:=v_src_select || ', LOAD_ID, ERR_REASON, ACTION_FLAG, SRC_IDNT_FLAG';
v_src_select:=v_src_select || ', ' || p_load_id || ', ''Generic Error'', ''N'', ''I''';
v_err_select:=v_src_select || ', ERR_REASON, ACTION_FLAG, SRC_IDNT_FLAG';
v_src_select:='';
v_src_select:=v_src_select || ', ' || p_load_id;
v_src_select := v_src_select || ', ' || v_src_col_list(i);
v_src_select := LTRIM(v_src_select,',');
v_src_select:=v_src_select || ', ''Generic Error'', ''N'', ''S''';
v_src_select := REPLACE(v_src_select,', RTL_BSNS_UNIT_CD','');
v_err_select := REPLACE(v_err_select,', RTL_BSNS_UNIT_CD','');
/* Creating the INSERT SQL statement */
v_insert_sql:='INSERT INTO '||p_err_tbl_name||' ( '||v_err_select||') SELECT '||v_src_select||' FROM '||p_src_tbl_name||' WHERE NOT EXISTS ( '||
' SELECT ROWID_INT FROM '||v_stg_tbl_name||' WHERE '||v_stg_tbl_name||'.ROWID_INT = '||p_src_tbl_name||'.rowid ) AND '||v_src_filter;
EXECUTE IMMEDIATE v_insert_sql;
/* Creating the DELETE SQL statement for reference flows only*/
v_delete_sql:='DELETE FROM ' || p_src_tbl_name || ' WHERE (REC_ID) IN (SELECT REC_ID FROM ' || p_src_tbl_name ||
' WHERE NOT EXISTS ( SELECT REC_ID FROM ' || v_stg_tbl_name || ' WHERE ' || v_stg_tbl_name || '.REC_ID = ' || p_src_tbl_name || '.REC_ID ) AND '||v_src_filter||')';
EXECUTE IMMEDIATE v_delete_sql;