The following lines contain the word 'select', 'insert', 'update' or 'delete':
PROCEDURE UPDATE_TO_PRIMARY_KEY(P_ENTITY IN VARCHAR2) IS
--initialize variables here
v_entity_code NUMBER;
SELECT DISTINCT GROUP_ID FROM MTH_EXT_ATTR_T_STG;
mth_util_pkg.log_msg('UPDATE_TO_PRIMARY_KEY start', mth_util_pkg.G_DBG_PROC_FUN_START);
SELECT COUNT (1) INTO v_temp FROM MTH_EXT_ATTR_T_STG WHERE GROUP_ID = v_row.GROUP_ID
AND DB_COL IS NULL;
/* Once we have the column name, update those rows
in MTH_EXT_ATTR_T_STG, where db_col is null. This is
because, we expect only those rows to have db_col as null
which consists ATTR_VALUE as the primary key value. For
others since, meta data will be configured, db_col should not be
null.
*/
v_stmt := 'UPDATE MTH_EXT_ATTR_T_STG SET ATTR_NAME = '||''''||v_pk_column||''''||' WHERE DB_COL IS NULL';
mth_util_pkg.log_msg('UPDATE_TO_PRIMARY_KEY end', mth_util_pkg.G_DBG_PROC_FUN_END);
mth_util_pkg.log_msg('Exception in UPDATE_TO_PRIMARY_KEY', mth_util_pkg.G_DBG_EXCEPTION);
mth_util_pkg.log_msg('Exception in UPDATE_TO_PRIMARY_KEY', mth_util_pkg.G_DBG_EXCEPTION);
mth_util_pkg.log_msg('Exception in UPDATE_TO_PRIMARY_KEY', mth_util_pkg.G_DBG_EXCEPTION);
mth_util_pkg.log_msg('Exception in UPDATE_TO_PRIMARY_KEY', mth_util_pkg.G_DBG_EXCEPTION);
l_updated_by NUMBER := 15;
l_last_update_login NUMBER := 15;
Check whether we need to insert or update these values
by checking p_if_row_exists. if this is 0, we are inserting.
*/
IF (p_if_row_exists = 0) THEN
/* Row does not exists, assign values to creation_date
and created_by*/
v_stmt := 'UPDATE '||p_ext_tbl_name||' SET LAST_UPDATE_DATE = '||''''||SYSDATE||''''||', LAST_UPDATED_BY = '||l_updated_by||', LAST_UPDATE_LOGIN = ';
v_stmt := v_stmt||l_last_update_login||', CREATED_BY = '||l_updated_by||', CREATION_DATE = '||''''||SYSDATE||''''||' WHERE EXTENSION_ID = '||p_extension_id;
v_stmt := 'UPDATE '||p_ext_tbl_name||' SET LAST_UPDATE_DATE = '||''''||SYSDATE||''''||', LAST_UPDATED_BY = '||l_updated_by||', LAST_UPDATE_LOGIN = '||l_last_update_login||' WHERE EXTENSION_ID = '||p_extension_id;
RAISE_APPLICATION_ERROR(-20001,' in the procedure to update who columns');
Now, check if it was already existing, if not, we will insert a new row,
else call the upload who procedure to update who columns
*/
IF (p_if_row_exists = 0) THEN
-- INSERT A NEW ROW
--DBMS_OUTPUT.PUT_LINE('inserting the rows');
v_stmt := 'INSERT INTO '||v_tname_tl||'(EXTENSION_ID, ATTR_GROUP_ID, '||v_pk_column||',
SOURCE_LANG, LANGUAGE, LAST_UPDATE_DATE, LAST_UPDATED_BY, LAST_UPDATE_LOGIN, CREATED_BY, CREATION_DATE)
SELECT EXTENSION_ID, ATTR_GROUP_ID, '||v_pk_column||', ''US''SOURCE_LANG, ''US'' LANGUAGE, LAST_UPDATE_DATE, LAST_UPDATED_BY,LAST_UPDATE_LOGIN, CREATED_BY,CREATION_DATE FROM '||v_tname_b||' WHERE EXTENSION_ID = '||p_extId;
be filled in for a row. This helps to insert as well as
update a row in the EXT table.
*/
CURSOR c_row_iterator(R_ID NUMBER, ATTR_GRP NUMBER) IS
SELECT STG.ATTR_GROUP_ID,STG.ATTR_NAME, STG.ATTR_VALUE, STG.DB_COL FROM MTH_EXT_ATTR_T_STG STG
WHERE STG.GROUP_ID = R_ID AND STG.ATTR_GROUP_ID = ATTR_GRP;
SELECT DISTINCT ATTR_GROUP_ID FROM MTH_EXT_ATTR_T_STG WHERE GROUP_ID= GROUP_ID1;
whether we update or insert a new row.
*/
CURSOR c_row_iterator2(GROUP_ID2 NUMBER, AID NUMBER) IS
SELECT ATTR_NAME, ATTR_VALUE FROM MTH_EXT_ATTR_T_STG WHERE GROUP_ID = GROUP_ID2 AND DB_COL IS NULL AND ATTR_GROUP_ID = AID;
SELECT DB_COL, ATTR_VALUE FROM MTH_EXT_ATTR_T_STG WHERE GROUP_ID = GROUP_ID3 AND ATTR_GROUP_ID = AID3 AND UNIQUE_KEY_FLAG='Y';
MTH_UDA_PKG.Update_To_Primary_Key(v_entity);
Select the different row ids present, each different row id refers to the data for a single
row. It is possible to have one to many relationship between row id and attribute group.
*/
v_stmt_no:= 10;
/*Changed the following select statement
SELECT COUNT(DISTINCT GROUP_ID) INTO v_cnt_rows FROM MTH_EXT_ATTR_T_STG;
Changing the statement to select max group_id allows complete iteration through
discontinous set.
*/
SELECT NVL(MAX(GROUP_ID),0) INTO v_cnt_rows FROM MTH_EXT_ATTR_T_STG; --Added NVL for bug 14465600
v_stmt_var := 'SELECT EXTENSION_ID FROM '||v_tname||' WHERE ATTR_GROUP_ID ='||v_attr_group;
v_stmt := 'SELECT COUNT(1) FROM '||v_tname||' WHERE ATTR_GROUP_ID ='||v_attr_group;
SELECT COUNT(1) INTO v_cnt_existing FROM MTH_EXT_ATTR_T_STG
WHERE DB_COL IS NULL AND
ATTR_GROUP_ID = v_attr_group AND
GROUP_ID = VAR;
whether we update or insert a new row.
*/
--DBMS_OUTPUT.PUT_LINE('Preparing query using pkey columns');
SELECT MULTI_ROW_CODE INTO v_mrc FROM EGO_ATTR_GROUPS_V
WHERE ATTR_GROUP_ID = v_attr_group;
SELECT COUNT(1) INTO v_cnt_existing FROM MTH_EXT_ATTR_T_STG
WHERE UNIQUE_KEY_FLAG='Y' AND
ATTR_GROUP_ID = v_attr_group AND
GROUP_ID = VAR;
of pkeys are not present. So proceed with inserting a
new surrogate key value
*/
mth_util_pkg.log_msg(v_stmt,mth_util_pkg.G_DBG_DYN_SQL);
--DBMS_OUTPUT.PUT_LINE('INSERT THE NEW ROW');
v_stmt := 'SELECT EGO_EXTFWK_S.NEXTVAL FROM DUAL';
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||''''||' )';
-- DBMS_OUTPUT.PUT_LINE('UPDATE THE DATA');
to insert/update in the EXT Table
*/
--DBMS_OUTPUT.PUT_LINE('Iterate over all the columns to insert/update');
--DBMS_OUTPUT.PUT_LINE('The column name to be updated/inserted '||v_col_name);
v_stmt := 'UPDATE '||v_tname||' SET '||v_col_name||' = '||'TO_DATE('||''''||v_date_val||''''||',''MM/DD/YYYY HH24:MI:SS'')'||' WHERE EXTENSION_ID = '||v_extId;
v_stmt := 'UPDATE '||v_tname||' SET '||v_col_name||' = '||''''||v_col_val||''''||' WHERE EXTENSION_ID = '||v_extId;
END LOOP; -- Completing insertion or updating a single row
--updated
COMMIT;
call procedure to update standard who columns
*/
--DBMS_OUTPUT.PUT_LINE('calling who procedure');
Call the procedure to update TL Table
*/
MTH_UDA_PKG.NTB_UploadTL(v_entity,v_extId,v_if_row_exists);
v_last_update_date DATE; -- Standard WHO column
v_last_update_system_id NUMBER; -- Standard WHO column
SELECT SYSDATE INTO v_last_update_date FROM DUAL;
SELECT MTH_UTIL_PKG.MTH_UA_GET_VAL() INTO v_last_update_system_id FROM DUAL;
SELECT COUNT(FACT_TABLE) INTO v_count
FROM MTH_RUN_LOG
WHERE FACT_TABLE = v_fact_table;
SELECT TO_DATE INTO v_to_date
FROM MTH_RUN_LOG
WHERE FACT_TABLE = v_fact_table;
v_stmt := 'UPDATE MTH_RUN_LOG SET FROM_DATE = TO_DATE, LAST_UPDATE_DATE = :1, LAST_UPDATE_SYSTEM_ID =:2 WHERE
FACT_TABLE =:3';
EXECUTE IMMEDIATE v_stmt USING v_last_update_date, v_last_update_system_id, v_fact_table;
v_stmt := 'UPDATE MTH_RUN_LOG SET TO_DATE = NULL WHERE
FACT_TABLE =:1';
CREATION_DATE will be same as v_last_update_date if the load is run for the first time,
else if the load is being run again, CREATION_DATE would already be populated, so there is no
need for this variable
*/
v_last_update_date DATE; -- Standard WHO column
CREATION_SYSTEM_ID will be same as LAST_UPDATE_SYSTEM_ID if the load is run for the first time,
else if the load is being run again, CREATION_SYSTEM_ID would already be populated, so there is no
need for this variable
*/
v_last_update_system_id NUMBER; -- Standard WHO column
SELECT SYSDATE INTO v_to_date FROM DUAL;
v_last_update_date := v_to_date;
SELECT MTH_UTIL_PKG.MTH_UA_GET_VAL() INTO v_last_update_system_id FROM DUAL;
SELECT COUNT(FACT_TABLE) INTO v_cnt
FROM MTH_RUN_LOG
WHERE FACT_TABLE = v_fact_table;
v_stmt := 'INSERT INTO MTH_RUN_LOG (FACT_TABLE, FROM_DATE, TO_DATE, CREATION_DATE,
LAST_UPDATE_DATE, CREATION_SYSTEM_ID, LAST_UPDATE_SYSTEM_ID) VALUES (:1, :2, :3, :4, :5, :6, :7)';
EXECUTE IMMEDIATE v_stmt USING v_fact_table, v_from_date, v_to_date, v_last_update_date,
v_last_update_date, v_last_update_system_id, v_last_update_system_id;
v_stmt := 'UPDATE MTH_RUN_LOG SET TO_DATE = :1, LAST_UPDATE_DATE = :2, LAST_UPDATE_SYSTEM_ID =:3 WHERE
FACT_TABLE =:4';
EXECUTE IMMEDIATE v_stmt USING v_to_date, v_last_update_date, v_last_update_system_id, v_fact_table;
SELECT DISTINCT DB_COL FROM MTH_TAG_READINGS_T_STG;
SELECT * FROM MTH_TAG_READINGS_T_STG,(SELECT NVL(FND_GLOBAL.User_Id,-1)l_updated_by,NVL(FND_GLOBAL.Login_Id,-1)l_last_update_login FROM DUAL )D
WHERE DB_COL = '||''''||v_colname||''''||') TS
ON (';
UPDATE
SET ED.'||v_colname||' = TS.TAG_DATA,
ED.LAST_UPDATE_DATE = ''''||SYSDATE||'''',
ED.LAST_UPDATED_BY = TS.l_updated_by,';
v_stmt := v_stmt||'ED.LAST_UPDATE_LOGIN = TS.l_last_update_login
WHEN NOT MATCHED THEN
INSERT ('||v_colname||',EXTENSION_ID, EQUIPMENT_PK_KEY,WORKORDER_FK_KEY,SEGMENT_FK_KEY,SHIFT_WORKDAY_FK_KEY, HOUR_FK_KEY, ITEM_FK_KEY, READ_TIME, ATTR_GROUP_ID,LAST_UPDATE_DATE,LAST_UPDATED_BY,';
v_stmt||'LAST_UPDATE_LOGIN,CREATED_BY,CREATION_DATE,RECIPE_NUM,RECIPE_VERSION)
VALUES (TS.TAG_DATA,EGO_EXTFWK_S.NEXTVAL, TS.EQUIPMENT_FK_KEY, TS.WORKORDER_FK_KEY, TS.SEGMENT_FK_KEY,TS.SHIFT_WORKDAY_FK_KEY,TS.HOUR_FK_KEY, TS.ITEM_FK_KEY, TS.READ_TIME,';
v_stmt := v_stmt||'TS.ATTR_GROUP_ID,'||''''||SYSDATE||''''||',TS.l_updated_by,TS.l_last_update_login,TS.l_updated_by,'||''''||SYSDATE||''''||',TS.RECIPE_NUM, TS.RECIPE_VERSION)';
RAISE_APPLICATION_ERROR(-20008,'The Tag Data you are tyring to insert is of Character Data Type. A number is expected instead.');
PROCEDURE UPDATE_COMPOSITE_PRIMARY_KEY(P_ENTITY IN VARCHAR2) IS
--initialize variables here
v_entity_code NUMBER;
SELECT DISTINCT GROUP_ID FROM MTH_EXT_ATTR_T_STG;
SELECT COUNT (1) INTO v_temp FROM MTH_EXT_ATTR_T_STG WHERE GROUP_ID = v_row.GROUP_ID
AND DB_COL IS NULL;
/* Once we have the column name, update those rows
in MTH_EXT_ATTR_T_STG, where db_col is null. This is
because, we expect only those rows to have db_col as null
which consists ATTR_VALUE as the primary key value. For
others since, meta data will be configured, db_col should not be
null.
*/
--The assumption is the csv columns are in the same order as the primary key columns.
v_csv_ctr := v_csv_cols.FIRST;
v_stmt1 := 'UPDATE MTH_EXT_ATTR_T_STG SET ATTR_NAME = '||''''||v_mst_pk_column(ctr)||''''||' WHERE DB_COL IS NULL AND ATTR_NAME = ' || ''''|| v_csv_cols(v_csv_ctr) || '''';
END; -- End of UPDATE_TO_COMPOSITE_PRIMARY_KEY;
Now, check if it was already existing, if not, we will insert a new row,
else call the upload who procedure to update who columns
*/
IF (p_if_row_exists = 0) THEN
-- INSERT A NEW ROW
--DBMS_OUTPUT.PUT_LINE('inserting the rows');
v_stmt := 'INSERT INTO '||v_tname_tl||'(EXTENSION_ID, ATTR_GROUP_ID, ' || v_concat_pk_key || 'SOURCE_LANG, LANGUAGE, LAST_UPDATE_DATE, LAST_UPDATED_BY, LAST_UPDATE_LOGIN, CREATED_BY, CREATION_DATE) SELECT EXTENSION_ID, ATTR_GROUP_ID, ';
v_stmt := v_stmt ||v_concat_pk_key || ' ''US''SOURCE_LANG, ''US'' LANGUAGE, LAST_UPDATE_DATE, LAST_UPDATED_BY,LAST_UPDATE_LOGIN, CREATED_BY,CREATION_DATE FROM '||v_tname_b||' WHERE EXTENSION_ID = '||p_extId;
be filled in for a row. This helps to insert as well as
update a row in the EXT table.
*/
CURSOR c_row_iterator(R_ID NUMBER, ATTR_GRP NUMBER) IS
SELECT STG.ATTR_GROUP_ID,STG.ATTR_NAME, STG.ATTR_VALUE, STG.DB_COL FROM MTH_EXT_ATTR_T_STG STG
WHERE STG.GROUP_ID = R_ID AND STG.ATTR_GROUP_ID = ATTR_GRP;
SELECT DISTINCT ATTR_GROUP_ID FROM MTH_EXT_ATTR_T_STG WHERE GROUP_ID= GROUP_ID1;
whether we update or insert a new row.
*/
CURSOR c_row_iterator2(GROUP_ID2 NUMBER, AID NUMBER) IS
SELECT ATTR_NAME, ATTR_VALUE FROM MTH_EXT_ATTR_T_STG WHERE GROUP_ID = GROUP_ID2 AND DB_COL IS NULL AND ATTR_GROUP_ID = AID;
SELECT DB_COL, ATTR_VALUE FROM MTH_EXT_ATTR_T_STG WHERE GROUP_ID = GROUP_ID3 AND ATTR_GROUP_ID = AID3 AND UNIQUE_KEY_FLAG='Y';
MTH_UDA_PKG.UPDATE_COMPOSITE_PRIMARY_KEY(v_entity);
Select the different row ids present, each different row id refers to the data for a single
row. It is possible to have one to many relationship between row id and attribute group.
*/
v_stmt_no:= 10;
/*Changed the following select statement
SELECT COUNT(DISTINCT GROUP_ID) INTO v_cnt_rows FROM MTH_EXT_ATTR_T_STG;
Changing the statement to select max group_id allows complete iteration through
discontinous set.
*/
SELECT MAX(GROUP_ID) INTO v_cnt_rows FROM MTH_EXT_ATTR_T_STG;
v_stmt_var := 'SELECT EXTENSION_ID FROM '||v_tname||' WHERE ATTR_GROUP_ID ='||v_attr_group;
v_stmt := 'SELECT COUNT(1) FROM '||v_tname||' WHERE ATTR_GROUP_ID ='||v_attr_group;
SELECT COUNT(1) INTO v_cnt_existing FROM MTH_EXT_ATTR_T_STG
WHERE DB_COL IS NULL AND
ATTR_GROUP_ID = v_attr_group AND
GROUP_ID = VAR;
whether we update or insert a new row.
*/
--DBMS_OUTPUT.PUT_LINE('Preparing query using pkey columns');
SELECT MULTI_ROW_CODE INTO v_mrc FROM EGO_ATTR_GROUPS_V
WHERE ATTR_GROUP_ID = v_attr_group;
SELECT COUNT(1) INTO v_cnt_existing FROM MTH_EXT_ATTR_T_STG
WHERE UNIQUE_KEY_FLAG='Y' AND
ATTR_GROUP_ID = v_attr_group AND
GROUP_ID = VAR;
--DBMS_OUTPUT.PUT_LINE('The updated statements after unique key check are ');
of pkeys are not present. So proceed with inserting a
new surrogate key value
*/
EXECUTE IMMEDIATE v_stmt INTO v_if_row_exists ;
--DBMS_OUTPUT.PUT_LINE('INSERT THE NEW ROW');
v_stmt := 'SELECT EGO_EXTFWK_S.NEXTVAL FROM DUAL';
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||''''||' )';
-- DBMS_OUTPUT.PUT_LINE('UPDATE THE DATA');
to insert/update in the EXT Table
*/
--DBMS_OUTPUT.PUT_LINE('Iterate over all the columns to insert/update');
--DBMS_OUTPUT.PUT_LINE('The column name to be updated/inserted '||v_col_name);
v_stmt := 'UPDATE '||v_tname||' SET '||v_col_name||' = '||'TO_DATE('||''''||v_date_val||''''||',''MM/DD/YYYY HH24:MI:SS'')'||' WHERE EXTENSION_ID = '||v_extId;
v_stmt := 'UPDATE '||v_tname||' SET '||v_col_name||' = '||''''||v_col_val||''''||' WHERE EXTENSION_ID = '||v_extId;
END LOOP; -- Completing insertion or updating a single row
--updated
COMMIT;
call procedure to update standard who columns
*/
--DBMS_OUTPUT.PUT_LINE('calling who procedure');
Call the procedure to update TL Table
*/
MTH_UDA_PKG.NTB_Upload_COMPOSITETL(v_entity,v_extId,v_if_row_exists);