19: -- main body
20: BEGIN
21: NULL; -- allow compilation
22:
23: mth_util_pkg.log_msg('UPDATE_TO_PRIMARY_KEY start', mth_util_pkg.G_DBG_PROC_FUN_START);
24: mth_util_pkg.log_msg('P_ENTITY = ' || P_ENTITY , mth_util_pkg.G_DBG_PARAM_VAL);
25:
26:
27: -- Get the pk key
20: BEGIN
21: NULL; -- allow compilation
22:
23: mth_util_pkg.log_msg('UPDATE_TO_PRIMARY_KEY start', mth_util_pkg.G_DBG_PROC_FUN_START);
24: mth_util_pkg.log_msg('P_ENTITY = ' || P_ENTITY , mth_util_pkg.G_DBG_PARAM_VAL);
25:
26:
27: -- Get the pk key
28: v_pk_column := MTH_UDA_PKG.Get_Mst_Pk_Name(p_entity);
56: null.
57: */
58:
59: v_stmt := 'UPDATE MTH_EXT_ATTR_T_STG SET ATTR_NAME = '||''''||v_pk_column||''''||' WHERE DB_COL IS NULL';
60: mth_util_pkg.log_msg('v_stmt : '||v_stmt,mth_util_pkg.G_DBG_DYN_SQL);
61: EXECUTE IMMEDIATE v_stmt;
62: COMMIT;
63: mth_util_pkg.log_msg('UPDATE_TO_PRIMARY_KEY end', mth_util_pkg.G_DBG_PROC_FUN_END);
64:
59: v_stmt := 'UPDATE MTH_EXT_ATTR_T_STG SET ATTR_NAME = '||''''||v_pk_column||''''||' WHERE DB_COL IS NULL';
60: mth_util_pkg.log_msg('v_stmt : '||v_stmt,mth_util_pkg.G_DBG_DYN_SQL);
61: EXECUTE IMMEDIATE v_stmt;
62: COMMIT;
63: mth_util_pkg.log_msg('UPDATE_TO_PRIMARY_KEY end', mth_util_pkg.G_DBG_PROC_FUN_END);
64:
65: EXCEPTION
66: WHEN e_tname_not_found THEN
67: mth_util_pkg.log_msg('Exception in UPDATE_TO_PRIMARY_KEY', mth_util_pkg.G_DBG_EXCEPTION);
63: mth_util_pkg.log_msg('UPDATE_TO_PRIMARY_KEY end', mth_util_pkg.G_DBG_PROC_FUN_END);
64:
65: EXCEPTION
66: WHEN e_tname_not_found THEN
67: mth_util_pkg.log_msg('Exception in UPDATE_TO_PRIMARY_KEY', mth_util_pkg.G_DBG_EXCEPTION);
68: RAISE_APPLICATION_ERROR(-20001,'Incorrect Entity provided');
69: WHEN e_issue_with_data THEN
70: mth_util_pkg.log_msg('Exception in UPDATE_TO_PRIMARY_KEY', mth_util_pkg.G_DBG_EXCEPTION);
71: RAISE_APPLICATION_ERROR(-20002,'There is an issue with data, one or more columns except primary key have NO meta data defined. Please recheck');
66: WHEN e_tname_not_found THEN
67: mth_util_pkg.log_msg('Exception in UPDATE_TO_PRIMARY_KEY', mth_util_pkg.G_DBG_EXCEPTION);
68: RAISE_APPLICATION_ERROR(-20001,'Incorrect Entity provided');
69: WHEN e_issue_with_data THEN
70: mth_util_pkg.log_msg('Exception in UPDATE_TO_PRIMARY_KEY', mth_util_pkg.G_DBG_EXCEPTION);
71: RAISE_APPLICATION_ERROR(-20002,'There is an issue with data, one or more columns except primary key have NO meta data defined. Please recheck');
72: WHEN e_no_pk_key THEN
73: mth_util_pkg.log_msg('Exception in UPDATE_TO_PRIMARY_KEY', mth_util_pkg.G_DBG_EXCEPTION);
74: RAISE_APPLICATION_ERROR(-20003,'No primary Key column has been provided: A primary key column should not have meta data defined');
69: WHEN e_issue_with_data THEN
70: mth_util_pkg.log_msg('Exception in UPDATE_TO_PRIMARY_KEY', mth_util_pkg.G_DBG_EXCEPTION);
71: RAISE_APPLICATION_ERROR(-20002,'There is an issue with data, one or more columns except primary key have NO meta data defined. Please recheck');
72: WHEN e_no_pk_key THEN
73: mth_util_pkg.log_msg('Exception in UPDATE_TO_PRIMARY_KEY', mth_util_pkg.G_DBG_EXCEPTION);
74: RAISE_APPLICATION_ERROR(-20003,'No primary Key column has been provided: A primary key column should not have meta data defined');
75:
76: WHEN OTHERS THEN
77: mth_util_pkg.log_msg('Exception in UPDATE_TO_PRIMARY_KEY', mth_util_pkg.G_DBG_EXCEPTION);
73: mth_util_pkg.log_msg('Exception in UPDATE_TO_PRIMARY_KEY', mth_util_pkg.G_DBG_EXCEPTION);
74: RAISE_APPLICATION_ERROR(-20003,'No primary Key column has been provided: A primary key column should not have meta data defined');
75:
76: WHEN OTHERS THEN
77: mth_util_pkg.log_msg('Exception in UPDATE_TO_PRIMARY_KEY', mth_util_pkg.G_DBG_EXCEPTION);
78: RAISE_APPLICATION_ERROR(-20006, SQLERRM||v_stmt);
79:
80: END;
81: -- End of UPDATE_TO_PRIMARY_KEY;
233:
234: -- main body
235: BEGIN
236: NULL; -- allow compilation
237: mth_util_pkg.log_msg('NTB_UPLOAD start', mth_util_pkg.G_DBG_PROC_FUN_START);
238: mth_util_pkg.log_msg('P_TARGET = ' || P_TARGET , mth_util_pkg.G_DBG_PARAM_VAL);
239: -- Call the procedure to rename columns to the pkey columns
240: MTH_UDA_PKG.Update_To_Primary_Key(v_entity);
241:
234: -- main body
235: BEGIN
236: NULL; -- allow compilation
237: mth_util_pkg.log_msg('NTB_UPLOAD start', mth_util_pkg.G_DBG_PROC_FUN_START);
238: mth_util_pkg.log_msg('P_TARGET = ' || P_TARGET , mth_util_pkg.G_DBG_PARAM_VAL);
239: -- Call the procedure to rename columns to the pkey columns
240: MTH_UDA_PKG.Update_To_Primary_Key(v_entity);
241:
242:
246: IF (v_tname is NULL) THEN
247: RAISE e_tname_not_found;
248: END IF;
249:
250: mth_util_pkg.log_msg('The target table is '||v_tname, mth_util_pkg.G_DBG_VAR_VAL);
251: /*
252: Select the different row ids present, each different row id refers to the data for a single
253: row. It is possible to have one to many relationship between row id and attribute group.
254: */
260: Changing the statement to select max group_id allows complete iteration through
261: discontinous set.
262: */
263: SELECT NVL(MAX(GROUP_ID),0) INTO v_cnt_rows FROM MTH_EXT_ATTR_T_STG; --Added NVL for bug 14465600
264: mth_util_pkg.log_msg('v_cnt_rows = ' || v_cnt_rows , mth_util_pkg.G_DBG_VAR_VAL);
265: /* Loop through each row of data. A row of data is identified as having the
266: same row id.
267: */
268: --DBMS_OUTPUT.PUT_LINE('Entering logic to process one set of rows with same row id');
276: */
277: FOR A_ID IN c_row_iterator1(VAR)
278: LOOP
279: v_attr_group:= A_ID.ATTR_GROUP_ID; --Get the attribute group id in a variable
280: mth_util_pkg.log_msg('The attribute group is '||v_attr_group, mth_util_pkg.G_DBG_VAR_VAL);
281: mth_util_pkg.log_msg('Processing Row '||VAR, mth_util_pkg.G_DBG_VAR_VAL);
282: mth_util_pkg.g_debug_indent_level := mth_util_pkg.g_debug_indent_level + 1;
283:
284: /*
277: FOR A_ID IN c_row_iterator1(VAR)
278: LOOP
279: v_attr_group:= A_ID.ATTR_GROUP_ID; --Get the attribute group id in a variable
280: mth_util_pkg.log_msg('The attribute group is '||v_attr_group, mth_util_pkg.G_DBG_VAR_VAL);
281: mth_util_pkg.log_msg('Processing Row '||VAR, mth_util_pkg.G_DBG_VAR_VAL);
282: mth_util_pkg.g_debug_indent_level := mth_util_pkg.g_debug_indent_level + 1;
283:
284: /*
285: This variable helps to prepare statement to get the EXT ID value
278: LOOP
279: v_attr_group:= A_ID.ATTR_GROUP_ID; --Get the attribute group id in a variable
280: mth_util_pkg.log_msg('The attribute group is '||v_attr_group, mth_util_pkg.G_DBG_VAR_VAL);
281: mth_util_pkg.log_msg('Processing Row '||VAR, mth_util_pkg.G_DBG_VAR_VAL);
282: mth_util_pkg.g_debug_indent_level := mth_util_pkg.g_debug_indent_level + 1;
283:
284: /*
285: This variable helps to prepare statement to get the EXT ID value
286: for a particular row
302: SELECT COUNT(1) INTO v_cnt_existing FROM MTH_EXT_ATTR_T_STG
303: WHERE DB_COL IS NULL AND
304: ATTR_GROUP_ID = v_attr_group AND
305: GROUP_ID = VAR;
306: mth_util_pkg.log_msg('No of primary key columns = '||v_cnt_existing, mth_util_pkg.G_DBG_VAR_VAL);
307:
308: /*
309: This cursor first gets all the rows for which DB_COL is null.
310: Essentially, these are going to be the ones which are the primary
340: SELECT MULTI_ROW_CODE INTO v_mrc FROM EGO_ATTR_GROUPS_V
341: WHERE ATTR_GROUP_ID = v_attr_group;
342:
343: IF v_mrc = 'Y' THEN
344: mth_util_pkg.log_msg('Attribute group is MULTI ROW',mth_util_pkg.G_DBG_OTH);
345: /* LOGIC FOR multi row attribute groups */
346: SELECT COUNT(1) INTO v_cnt_existing FROM MTH_EXT_ATTR_T_STG
347: WHERE UNIQUE_KEY_FLAG='Y' AND
348: ATTR_GROUP_ID = v_attr_group AND
346: SELECT COUNT(1) INTO v_cnt_existing FROM MTH_EXT_ATTR_T_STG
347: WHERE UNIQUE_KEY_FLAG='Y' AND
348: ATTR_GROUP_ID = v_attr_group AND
349: GROUP_ID = VAR;
350: mth_util_pkg.log_msg('No of unique columns = '||v_cnt_existing, mth_util_pkg.G_DBG_VAR_VAL);
351:
352: FOR C IN c_unique_key_flag(VAR, v_attr_group)
353: LOOP
354: -- DBMS_OUTPUT.PUT_LINE('Adding MULTI ROW column where clause to the earlier query');
389: If the count is 0, it means the row with these values
390: of pkeys are not present. So proceed with inserting a
391: new surrogate key value
392: */
393: mth_util_pkg.log_msg(v_stmt,mth_util_pkg.G_DBG_DYN_SQL);
394: EXECUTE IMMEDIATE v_stmt INTO v_if_row_exists ;
395:
396: IF v_if_row_exists = 0 THEN
397: --DBMS_OUTPUT.PUT_LINE('This row is not present in the EXT table');
405: v_stmt := 'INSERT INTO '||v_tname||' (EXTENSION_ID, ATTR_GROUP_ID, LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE) VALUES (:1, :2, '||''''||SYSDATE||''''||', -1, -1,'||''''||SYSDATE||''''||' )';
406: --DBMS_OUTPUT.PUT_LINE('The new EXT ID is'||v_extId);
407: --DBMS_OUTPUT.PUT_LINE('The new EXT ID is'||v_stmt);
408: v_stmt_no := 80;
409: mth_util_pkg.log_msg(v_stmt,mth_util_pkg.G_DBG_DYN_SQL);
410: EXECUTE IMMEDIATE v_stmt USING v_extId, v_attr_group ;
411: --COMMIT;
412:
413: ELSE
413: ELSE
414: -- DBMS_OUTPUT.PUT_LINE('This data is already present in the EXT table');
415: -- DBMS_OUTPUT.PUT_LINE('UPDATE THE DATA');
416: v_stmt_no := 90;
417: mth_util_pkg.log_msg(v_stmt_var,mth_util_pkg.G_DBG_DYN_SQL);
418: EXECUTE IMMEDIATE v_stmt_var INTO v_extId;
419: --DBMS_OUTPUT.PUT_LINE('The EXT ID for this data is '||v_extId);
420: END IF;
421:
456:
457: --DBMS_OUTPUT.PUT_LINE('The statement to be executed is '||v_stmt);
458:
459: v_stmt_no := 100;
460: mth_util_pkg.log_msg(v_stmt,mth_util_pkg.G_DBG_DYN_SQL);
461: EXECUTE IMMEDIATE v_stmt;
462:
463: END LOOP; -- Completing insertion or updating a single row
464:
464:
465: --Commit after all the attributes for one group id is
466: --updated
467: COMMIT;
468: mth_util_pkg.g_debug_indent_level := mth_util_pkg.g_debug_indent_level - 1;
469: mth_util_pkg.log_msg('Processed Row '||VAR, mth_util_pkg.G_DBG_VAR_VAL);
470:
471: /*
472: call procedure to update standard who columns
465: --Commit after all the attributes for one group id is
466: --updated
467: COMMIT;
468: mth_util_pkg.g_debug_indent_level := mth_util_pkg.g_debug_indent_level - 1;
469: mth_util_pkg.log_msg('Processed Row '||VAR, mth_util_pkg.G_DBG_VAR_VAL);
470:
471: /*
472: call procedure to update standard who columns
473: */
480: MTH_UDA_PKG.NTB_UploadTL(v_entity,v_extId,v_if_row_exists);
481:
482: END LOOP;
483: END LOOP;
484: mth_util_pkg.log_msg('NTB_UPLOAD end', mth_util_pkg.G_DBG_PROC_FUN_END);
485:
486:
487:
488: EXCEPTION
486:
487:
488: EXCEPTION
489: WHEN NO_DATA_FOUND THEN
490: mth_util_pkg.log_msg('Exception in NTB_UPLOAD', mth_util_pkg.G_DBG_EXCEPTION);
491: RAISE_APPLICATION_ERROR(-20002,'No data found at line number '||v_stmt_no);
492:
493: WHEN e_tname_not_found THEN
494: mth_util_pkg.log_msg('Exception in NTB_UPLOAD', mth_util_pkg.G_DBG_EXCEPTION);
490: mth_util_pkg.log_msg('Exception in NTB_UPLOAD', mth_util_pkg.G_DBG_EXCEPTION);
491: RAISE_APPLICATION_ERROR(-20002,'No data found at line number '||v_stmt_no);
492:
493: WHEN e_tname_not_found THEN
494: mth_util_pkg.log_msg('Exception in NTB_UPLOAD', mth_util_pkg.G_DBG_EXCEPTION);
495: RAISE_APPLICATION_ERROR(-20001,'Incorrect Entity provided at '||v_stmt_no);
496:
497: WHEN OTHERS THEN
498: mth_util_pkg.log_msg('Exception in NTB_UPLOAD', mth_util_pkg.G_DBG_EXCEPTION);
494: mth_util_pkg.log_msg('Exception in NTB_UPLOAD', mth_util_pkg.G_DBG_EXCEPTION);
495: RAISE_APPLICATION_ERROR(-20001,'Incorrect Entity provided at '||v_stmt_no);
496:
497: WHEN OTHERS THEN
498: mth_util_pkg.log_msg('Exception in NTB_UPLOAD', mth_util_pkg.G_DBG_EXCEPTION);
499: RAISE_APPLICATION_ERROR(-20003,SQLERRM||' at '||v_stmt_no);
500: ROLLBACK;
501: END;
502: -- End of NTB_UPLOAD;
673: SELECT SYSDATE INTO v_last_update_date FROM DUAL;
674:
675: -- get the unassigned value for system id
676: v_l_stmt := 30;
677: SELECT MTH_UTIL_PKG.MTH_UA_GET_VAL() INTO v_last_update_system_id FROM DUAL;
678:
679:
680: -- Check whether the pre map operation has been run or not
681: v_l_stmt := 40;
775: v_last_update_date := v_to_date;
776:
777: -- get the unassigned value for system id
778: v_l_stmt := 15;
779: SELECT MTH_UTIL_PKG.MTH_UA_GET_VAL() INTO v_last_update_system_id FROM DUAL;
780:
781: -- Check whether the load is being run for the first time or not
782: v_l_stmt := 20;
783: SELECT COUNT(FACT_TABLE) INTO v_cnt