The following lines contain the word 'select', 'insert', 'update' or 'delete':
PROCEDURE HANDLE_DELETE(p_status OUT NOCOPY VARCHAR2 ,p_message OUT NOCOPY VARCHAR2)
IS
CURSOR c_delete IS
--EARLIER PERZed ,NOW NO_PERZ : part 1 of 3
SELECT CNMA.MESSAGE_ID,
CNMA.USER_ID
FROM CSM_NEW_MESSAGES_ACC CNMA
WHERE CNMA.LEVEL_ID=10001
AND CNMA.LEVEL_VALUE=0
AND NOT EXISTS (SELECT 1
FROM CSM_NEW_MESSAGES_PERZ CNMP
WHERE CNMP.MESSAGE_ID = CNMA.MESSAGE_ID
AND CNMP.LANGUAGE=CNMA.LANGUAGE
AND CNMP.LEVEL_ID=10001 )
UNION ALL
--EARLIER PERZed ,NOW NO_PERZ : part 2 of 3
SELECT CNMA.MESSAGE_ID,
CNMA.USER_ID
FROM CSM_NEW_MESSAGES_ACC CNMA
WHERE CNMA.LEVEL_ID=10003
AND NOT EXISTS (SELECT 1
FROM CSM_NEW_MESSAGES_PERZ CNMP,ASG_USER AU
WHERE CNMP.MESSAGE_ID = CNMA.MESSAGE_ID
AND CNMP.LANGUAGE=CNMA.LANGUAGE
AND CNMP.LEVEL_ID=10003
AND CNMA.USER_ID=AU.USER_ID
AND AU.RESPONSIBILITY_ID=CNMP.LEVEL_VALUE)
UNION ALL
--EARLIER PERZed ,NOW NO_PERZ : part 3 of 3
SELECT CNMA.MESSAGE_ID,
CNMA.USER_ID
FROM CSM_NEW_MESSAGES_ACC CNMA
WHERE CNMA.LEVEL_ID=10004
AND
NOT EXISTS (SELECT 1
FROM CSM_NEW_MESSAGES_PERZ CNMP
WHERE CNMP.MESSAGE_ID = CNMA.MESSAGE_ID
AND CNMP.LANGUAGE=CNMA.LANGUAGE
AND CNMP.LEVEL_ID=10004
AND CNMA.USER_ID=CNMP.LEVEL_VALUE)
UNION ALL
--EARLIER NO_PERZ,NOW PERZed
SELECT CNMA.MESSAGE_ID,
CNMA.USER_ID
FROM CSM_NEW_MESSAGES_ACC CNMA
WHERE CNMA.LEVEL_ID=0
AND EXISTS (SELECT 1
FROM CSM_NEW_MESSAGES_PERZ CNMP,ASG_USER AU
WHERE CNMP.MESSAGE_ID = CNMA.MESSAGE_ID
AND CNMA.USER_ID = AU.USER_ID
AND (
(CNMP.LEVEL_ID=10001
AND CNMP.LEVEL_VALUE=0)
OR
(CNMP.LEVEL_ID=10003
AND CNMP.LEVEL_VALUE=AU.RESPONSIBILITY_ID
/*AND CNMA.USER_ID=AU.USER_ID*/)
OR
(CNMP.LEVEL_ID=10004
/*AND CNMP.LEVEL_VALUE=CNMA.USER_ID*/
AND CNMP.LEVEL_VALUE=AU.USER_ID))
)
UNION ALL
--EARLIER PERZed ,BUT Now Inserted FINER LEVEL_ID : part 1 of 2
SELECT CNMA.MESSAGE_ID,
CNMA.USER_ID
FROM CSM_NEW_MESSAGES_ACC CNMA
WHERE CNMA.LEVEL_ID = 10001
AND CNMA.LEVEL_VALUE = 0
AND EXISTS (SELECT 1
FROM CSM_NEW_MESSAGES_PERZ CNMP,
ASG_USER AU
WHERE CNMP.MESSAGE_ID=CNMA.MESSAGE_ID
AND CNMP.LANGUAGE = CNMA.LANGUAGE
AND CNMA.USER_ID = AU.USER_ID
AND (
(CNMP.LEVEL_ID=10003
AND CNMP.LEVEL_VALUE = AU.RESPONSIBILITY_ID) --Site to Resp
OR (CNMP.LEVEL_ID=10004
AND CNMP.LEVEL_VALUE = AU.USER_ID) -- Site to User
))
UNION ALL
--EARLIER PERZed ,BUT Now Inserted FINER LEVEL_ID : part2 of 2
SELECT CNMA.MESSAGE_ID,
CNMA.USER_ID
FROM CSM_NEW_MESSAGES_ACC CNMA
WHERE CNMA.LEVEL_ID = 10003
AND EXISTS (SELECT 1
FROM CSM_NEW_MESSAGES_PERZ CNMP,
ASG_USER AU
WHERE CNMP.MESSAGE_ID=CNMA.MESSAGE_ID
AND CNMP.LANGUAGE = CNMA.LANGUAGE
AND CNMA.USER_ID = AU.USER_ID
AND CNMA.LEVEL_VALUE = AU.RESPONSIBILITY_ID
AND CNMP.LEVEL_ID=10004
AND CNMP.LEVEL_VALUE = AU.USER_ID) ; --Resp to User
CURSOR c_delete_fragment IS
--EARLIER PERZed/NO_PERZed BUT NOW REMOVED FROM BASE_TABLE
SELECT /*+index (cnma csm_new_messages_acc_u2) */
CNMA.MESSAGE_ID,
CNMA.USER_ID
FROM CSM_NEW_MESSAGES_ACC CNMA
WHERE CNMA.message_id is not null
AND NOT EXISTS (SELECT 1 FROM CSM_NEW_MESSAGES CNM
WHERE CNM.MESSAGE_ID=CNMA.MESSAGE_ID) ;
SELECT /*+index (cnma csm_new_messages_acc_u2) */
CNMA.ACCESS_ID
FROM CSM_NEW_MESSAGES_ACC CNMA
WHERE CNMA.MESSAGE_ID = b_msg_id
AND CNMA.USER_ID = b_user_id;
OPEN c_delete;
FETCH c_delete BULK COLLECT INTO l_tab;
CLOSE c_delete;
CSM_UTIL_PKG.LOG('Entering DELETE to remove ' || l_tab.count||' records',
'CSM_NEW_MESSAGES_EVENT_PKG.HANDLE_DELETE',FND_LOG.LEVEL_PROCEDURE);
DELETE FROM CSM_NEW_MESSAGES_ACC WHERE ACCESS_ID=l_ACCESS_ID;
l_tab.DELETE;
OPEN c_delete_fragment;
FETCH c_delete_fragment BULK COLLECT INTO l_tab;
CLOSE c_delete_fragment;
CSM_UTIL_PKG.LOG('Entering DELETE FRAGMENT to remove ' || l_tab.count||' records',
'CSM_NEW_MESSAGES_EVENT_PKG.HANDLE_DELETE',FND_LOG.LEVEL_PROCEDURE);
DELETE FROM CSM_NEW_MESSAGES_ACC WHERE ACCESS_ID=l_ACCESS_ID;
'CSM_NEW_MESSAGES_EVENT_PKG.HANDLE_DELETE',FND_LOG.LEVEL_PROCEDURE);
p_message :='DELETION in CSM_NEW_MESSAGES_EVENT_PKG.HANDLE_DELETE successful';
p_message := 'Error in CSM_NEW_MESSAGES_EVENT_PKG.HANDLE_DELETE: ' || l_sqlerrno || ':' || l_sqlerrmsg;
csm_util_pkg.log('CSM_NEW_MESSAGES_EVENT_PKG.HANDLE_DELETE ERROR : ' || l_sqlerrno || ':' || l_sqlerrmsg);
END HANDLE_DELETE;
SELECT NVL(LAST_RUN_DATE, to_date('1','J')) LAST_RUN_DATE
FROM JTM_CON_REQUEST_DATA
WHERE package_name = g_new_msg_pkg_name
AND procedure_name = g_new_msg_api_name;
CURSOR c_update(b_lastrundate DATE) IS
SELECT CNMA.MESSAGE_ID,
CNMA.LEVEL_ID,
CNMA.LEVEL_VALUE,
CNMA.LANGUAGE,
CNMP.MESSAGE_TEXT,
CNMP.DESCRIPTION,
CNMA.USER_ID,
CNMA.ACCESS_ID
FROM CSM_NEW_MESSAGES_ACC CNMA,
CSM_NEW_MESSAGES_PERZ CNMP
WHERE CNMA.MESSAGE_ID=CNMP.MESSAGE_ID
AND (CNMP.LEVEL_ID = CNMA.LEVEL_ID
AND CNMP.LEVEL_VALUE= CNMA.LEVEL_VALUE
AND CNMP.LANGUAGE = CNMA.LANGUAGE
AND CNMP.LAST_UPDATE_DATE>b_lastrundate )
UNION ALL
SELECT CNMA.MESSAGE_ID,
CNMA.LEVEL_ID,
CNMA.LEVEL_VALUE,
CNMA.LANGUAGE,
CNMT.MESSAGE_TEXT,
CNMT.DESCRIPTION,
CNMA.USER_ID,
CNMA.ACCESS_ID
FROM CSM_NEW_MESSAGES_ACC CNMA,
CSM_NEW_MESSAGES_TL CNMT
WHERE CNMT.MESSAGE_ID = CNMA.MESSAGE_ID
AND CNMT.LANGUAGE = CNMA.LANGUAGE
AND CNMT.LAST_UPDATE_DATE>b_lastrundate
AND CNMA.LEVEL_ID=0 --PREVIOUSLY AND NOW ALSO NOT PERSONALIZED
AND NOT EXISTS (SELECT 1 FROM CSM_NEW_MESSAGES_PERZ CNMP,ASG_USER AU
WHERE CNMA.MESSAGE_ID=CNMP.MESSAGE_ID
AND AU.USER_ID=AU.OWNER_ID
AND ( CNMP.LEVEL_ID=10001
OR ---IF SITE-LEVEL PERZ IS THERE THEN DON'T UPDATE ANY REC WITH TL-TABLE
(CNMP.LEVEL_ID=10003
AND CNMA.USER_ID=AU.USER_ID
AND AU.RESPONSIBILITY_ID=CNMP.LEVEL_VALUE)
OR ---IF RESP-LEVEL PERZ IS THERE THEN DON'T UPDATE THAT USER RECS WITH TL-TABLE
(CNMP.LEVEL_ID=10004
AND CNMA.USER_ID=CNMP.LEVEL_VALUE) )) ;
CURSOR c_insert IS
--PERZ EXISTS
SELECT CNM.MESSAGE_ID,
CNMP.LEVEL_ID,
CNMP.LEVEL_VALUE,
CNMP.LANGUAGE,
CNMP.MESSAGE_TEXT,
CNMP.DESCRIPTION,
AU.USER_ID,
1 ACCESS_ID
FROM CSM_NEW_MESSAGES CNM,
CSM_NEW_MESSAGES_PERZ CNMP,
ASG_USER AU
WHERE CNM.MESSAGE_ID=CNMP.MESSAGE_ID
AND CNMP.LANGUAGE =AU.LANGUAGE
AND AU.USER_ID=AU.OWNER_ID
AND ( (CNMP.LEVEL_VALUE = AU.USER_ID
AND CNMP.LEVEL_ID = 10004)
OR
(CNMP.LEVEL_VALUE = AU.RESPONSIBILITY_ID
AND CNMP.LEVEL_ID = 10003
AND NOT EXISTS (SELECT 1 FROM CSM_NEW_MESSAGES_PERZ CNMP1
WHERE AU.USER_ID = CNMP1.LEVEL_VALUE AND CNMP1.LEVEL_ID = 10004))
OR
(CNMP.LEVEL_VALUE=0
AND CNMP.LEVEL_ID = 10001
AND NOT EXISTS (SELECT 1 FROM CSM_NEW_MESSAGES_PERZ CNMP1
WHERE CNMP.MESSAGE_ID=CNMP1.MESSAGE_ID
AND CNMP.LANGUAGE=CNMP1.LANGUAGE
AND AU.RESPONSIBILITY_ID = CNMP1.LEVEL_VALUE
AND CNMP1.LEVEL_ID = 10003)
AND NOT EXISTS (SELECT 1 FROM CSM_NEW_MESSAGES_PERZ CNMP1
WHERE CNMP.MESSAGE_ID=CNMP1.MESSAGE_ID
AND CNMP.LANGUAGE=CNMP1.LANGUAGE
AND AU.USER_ID = CNMP1.LEVEL_VALUE
AND CNMP1.LEVEL_ID = 10004)
)
)
AND NOT EXISTS (SELECT 1
FROM CSM_NEW_MESSAGES_ACC ACC
WHERE ACC.MESSAGE_ID = CNMP.MESSAGE_ID
AND ACC.USER_ID = AU.USER_ID)
UNION ALL
--PERZ DOESN'T EXIST
SELECT CNM.MESSAGE_ID,
0 LEVEL_ID,
0 LEVEL_VALUE,
CNMT.LANGUAGE,
CNMT.MESSAGE_TEXT,
CNMT.DESCRIPTION,
AU.USER_ID,
1 ACCESS_ID
FROM CSM_NEW_MESSAGES CNM,
CSM_NEW_MESSAGES_TL CNMT,
ASG_USER AU
WHERE CNM.MESSAGE_ID = CNMT.MESSAGE_ID
AND AU.USER_ID=AU.OWNER_ID
AND CNMT.LANGUAGE = AU.LANGUAGE
AND NOT EXISTS (SELECT 1 FROM CSM_NEW_MESSAGES_PERZ CNMP
WHERE CNMP.MESSAGE_ID=CNM.MESSAGE_ID
AND(
CNMP.LEVEL_ID=10001
OR
(CNMP.LEVEL_ID=10003
AND CNMP.LEVEL_VALUE=AU.RESPONSIBILITY_ID)
OR
(CNMP.LEVEL_ID=10004
AND CNMP.LEVEL_VALUE=AU.USER_ID)))
AND NOT EXISTS (SELECT 1
FROM CSM_NEW_MESSAGES_ACC ACC
WHERE ACC.MESSAGE_ID = CNMT.MESSAGE_ID
AND ACC.USER_ID = AU.USER_ID);
SELECT CSM_NEW_MESSAGES_ACC_S.NEXTVAL
FROM DUAL;
l_max_update_date DATE;
l_checkupdates VARCHAR2(1) := 'N';
HANDLE_DELETE(p_status,p_message);
SELECT NVL(MAX(last_update_date), to_date('1', 'J')) INTO l_max_update_date
FROM CSM_NEW_MESSAGES_PERZ;
IF(l_max_update_date <= l_lastrundate.last_run_date) THEN
SELECT NVL(MAX(last_update_date), to_date('1', 'J')) INTO l_max_update_date
FROM CSM_NEW_MESSAGES_TL;
IF(l_max_update_date > l_lastrundate.last_run_date) THEN
l_checkupdates := 'Y';
l_checkupdates := 'Y';
IF(l_checkupdates = 'Y') THEN
OPEN c_update(l_lastrundate.LAST_RUN_DATE);
FETCH c_update BULK COLLECT INTO l_tab;
CLOSE c_update;
CSM_UTIL_PKG.LOG('Entering UPDATE to update ' || l_tab.count||' records',
'CSM_NEW_MESSAGES_EVENT_PKG.REFRESH_ACC',FND_LOG.LEVEL_PROCEDURE);
UPDATE CSM_NEW_MESSAGES_ACC
SET
MESSAGE_TEXT=L_TAB(I).MESSAGE_TEXT,
DESCRIPTION=L_TAB(I).DESCRIPTION,
LAST_UPDATE_DATE=SYSDATE,
LAST_UPDATED_BY=1,
LAST_UPDATE_LOGIN=1
WHERE ACCESS_ID=l_tab(I).ACCESS_ID;
CSM_UTIL_PKG.LOG('UPDATE Successful ',
'CSM_NEW_MESSAGES_EVENT_PKG.REFRESH_ACC',FND_LOG.LEVEL_PROCEDURE);
l_tab.DELETE;
OPEN c_insert;
FETCH c_insert BULK COLLECT INTO l_tab;
CLOSE c_insert;
CSM_UTIL_PKG.LOG('Entering INSERT to add ' || l_tab.count||' records',
'CSM_NEW_MESSAGES_EVENT_PKG.REFRESH_ACC',FND_LOG.LEVEL_PROCEDURE);
INSERT INTO CSM_NEW_MESSAGES_ACC
( ACCESS_ID,
MESSAGE_ID,
LEVEL_ID,
LEVEL_VALUE,
LANGUAGE,
USER_ID,
MESSAGE_TEXT,
DESCRIPTION,
COUNTER,
CREATED_BY,
CREATION_DATE,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
LAST_UPDATE_LOGIN
)
VALUES
( l_access_id,
l_tab(I).MESSAGE_ID,
l_tab(I).LEVEL_ID,
l_tab(I).LEVEL_VALUE,
l_tab(I).LANGUAGE,
l_tab(I).USER_ID,
l_tab(I).MESSAGE_TEXT,
l_tab(I).DESCRIPTION,
1,
1,
SYSDATE,
1,
SYSDATE,
1
);
CSM_UTIL_PKG.LOG('INSERTION Successful ',
'CSM_NEW_MESSAGES_EVENT_PKG.REFRESH_ACC',FND_LOG.LEVEL_PROCEDURE);
UPDATE JTM_CON_REQUEST_DATA
SET LAST_RUN_DATE = SYSDATE
WHERE package_name = g_new_msg_pkg_name
AND procedure_name = g_new_msg_api_name;
CURSOR c_insert(b_user_id NUMBER) IS
--PERZ EXISTS
SELECT CNM.MESSAGE_ID,
CNMP.LEVEL_ID,
CNMP.LEVEL_VALUE,
CNMP.LANGUAGE,
CNMP.MESSAGE_TEXT,
CNMP.DESCRIPTION,
AU.USER_ID,
1 ACCESS_ID
FROM CSM_NEW_MESSAGES CNM,
CSM_NEW_MESSAGES_PERZ CNMP,
ASG_USER AU
WHERE AU.USER_ID= b_user_id
AND AU.USER_ID=AU.OWNER_ID
AND CNM.MESSAGE_ID=CNMP.MESSAGE_ID
AND CNMP.LANGUAGE =AU.LANGUAGE
AND ( (CNMP.LEVEL_VALUE = AU.USER_ID
AND CNMP.LEVEL_ID = 10004)
OR
(CNMP.LEVEL_VALUE = AU.RESPONSIBILITY_ID
AND CNMP.LEVEL_ID = 10003
AND NOT EXISTS (SELECT 1 FROM CSM_NEW_MESSAGES_PERZ CNMP1
WHERE AU.USER_ID = CNMP1.LEVEL_VALUE AND CNMP1.LEVEL_ID = 10004))
OR
(CNMP.LEVEL_VALUE=0
AND CNMP.LEVEL_ID = 10001
AND NOT EXISTS (SELECT 1 FROM CSM_NEW_MESSAGES_PERZ CNMP1
WHERE CNMP.MESSAGE_ID=CNMP1.MESSAGE_ID
AND CNMP.LANGUAGE=CNMP1.LANGUAGE
AND AU.RESPONSIBILITY_ID = CNMP1.LEVEL_VALUE
AND CNMP1.LEVEL_ID = 10003)
AND NOT EXISTS (SELECT 1 FROM CSM_NEW_MESSAGES_PERZ CNMP1
WHERE CNMP.MESSAGE_ID=CNMP1.MESSAGE_ID
AND CNMP.LANGUAGE=CNMP1.LANGUAGE
AND AU.USER_ID = CNMP1.LEVEL_VALUE
AND CNMP1.LEVEL_ID = 10004)
)
)
UNION ALL
--PERZ DOESN'T EXIST
SELECT CNM.MESSAGE_ID,
0 LEVEL_ID,
0 LEVEL_VALUE,
CNMT.LANGUAGE,
CNMT.MESSAGE_TEXT,
CNMT.DESCRIPTION,
AU.USER_ID,
1 ACCESS_ID
FROM CSM_NEW_MESSAGES CNM,
CSM_NEW_MESSAGES_TL CNMT,
ASG_USER AU
WHERE AU.USER_ID= b_user_id
AND AU.USER_ID=AU.OWNER_ID
AND CNM.MESSAGE_ID = CNMT.MESSAGE_ID
AND CNMT.LANGUAGE = AU.LANGUAGE
AND NOT EXISTS (SELECT 1 FROM CSM_NEW_MESSAGES_PERZ CNMP
WHERE CNMP.MESSAGE_ID=CNM.MESSAGE_ID
AND(
CNMP.LEVEL_ID=10001
OR
(CNMP.LEVEL_ID=10003
AND CNMP.LEVEL_VALUE=AU.RESPONSIBILITY_ID)
OR
(CNMP.LEVEL_ID=10004
AND CNMP.LEVEL_VALUE=AU.USER_ID)));
SELECT CSM_NEW_MESSAGES_ACC_S.NEXTVAL
FROM DUAL;
DELETE FROM CSM_NEW_MESSAGES_ACC WHERE USER_ID=p_user_id;
OPEN c_insert(p_user_id);
FETCH c_insert BULK COLLECT INTO l_tab;
CLOSE c_insert;
CSM_UTIL_PKG.LOG('Entering INSERT to add ' || l_tab.count||' records for user',
'CSM_NEW_MESSAGES_EVENT_PKG.REFRESH_USER',FND_LOG.LEVEL_PROCEDURE);
INSERT INTO CSM_NEW_MESSAGES_ACC
( ACCESS_ID,
MESSAGE_ID,
LEVEL_ID,
LEVEL_VALUE,
LANGUAGE,
USER_ID,
MESSAGE_TEXT,
DESCRIPTION,
COUNTER,
CREATED_BY,
CREATION_DATE,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
LAST_UPDATE_LOGIN
)
VALUES
( l_access_id,
l_tab(I).MESSAGE_ID,
l_tab(I).LEVEL_ID,
l_tab(I).LEVEL_VALUE,
l_tab(I).LANGUAGE,
l_tab(I).USER_ID,
l_tab(I).MESSAGE_TEXT,
l_tab(I).DESCRIPTION,
1,
1,
SYSDATE,
1,
SYSDATE,
1
);
CSM_UTIL_PKG.LOG('INSERTION Successful ',
'CSM_NEW_MESSAGES_EVENT_PKG.REFRESH_USER',FND_LOG.LEVEL_PROCEDURE);