The following lines contain the word 'select', 'insert', 'update' or 'delete':
SELECT table_name, application_id
FROM fnd_tables
WHERE table_id IN (SELECT table_id FROM ita_setup_groups_b WHERE audit_end_date IS NULL);
SELECT application_id
INTO l_app_id
FROM fnd_tables
WHERE table_name = p_table_name;
select setup_gp.SETUP_GROUP_CODE
INTO l_setup_gp_code
FROM ITA_SETUP_GROUPS_B setup_gp, FND_TABLES ft
WHERE setup_gp.TABLE_APP_ID = p_application_id and setup_gp.TABLE_ID = ft.table_id and
ft.application_id = setup_gp.table_app_id and ft.table_name = UPPER(p_table_name);
UPDATE ita_setup_groups_b SET audit_start_date = sysdate
WHERE setup_group_code = l_setup_gp_code;
select distinct
PARAMETER_CODE,
PARAMETER_NAME,
SETUP_GROUP_CODE,
COLUMN_ID,
(
select COLUMN_NAME
from FND_COLUMNS fc
where
(APPLICATION_ID, TABLE_ID) = (
select TABLE_APP_ID, TABLE_ID
from ITA_SETUP_GROUPS_B
where SETUP_GROUP_CODE = ispv.SETUP_GROUP_CODE) and
COLUMN_ID = ispv.COLUMN_ID
) COLUMN_NAME,
AUDIT_ENABLED_FLAG
from ITA_SETUP_PARAMETERS_VL ispv
where ispv.SETUP_GROUP_CODE in
(select distinct
setup_gp.SETUP_GROUP_CODE
from
ITA_SETUP_GROUPS_VL setup_gp,
FND_TABLES fnd_table ,
FND_APPLICATION_VL FND_APP
where
fnd_table.APPLICATION_ID (+) = setup_gp.TABLE_APP_ID and
fnd_table.TABLE_ID (+) = setup_gp.TABLE_ID and
setup_gp.TABLE_APP_ID = FND_APP.application_id
and setup_gp.TABLE_APP_ID = setup_gp.TABLE_APP_ID
and setup_gp.table_app_id = p_application_id
and table_name = p_table_name
)
and exists --- query to find existance in audit schema tables(R12 only)
(
select COLUMN_id
from FND_AUDIT_COLUMNS
where
(TABLE_APP_ID, TABLE_ID) = (
select TABLE_APP_ID, TABLE_ID
from ITA_SETUP_GROUPS_B
where SETUP_GROUP_CODE = ispv.SETUP_GROUP_CODE)
and ispv.Column_id = column_id
)
;
'after insert or update ' ||
'on ' || l_shadow_table_name || ' ' ||
'referencing new as n ' ||
'for each row ' ||
'declare l_item_key WF_ITEMS.ITEM_KEY%type; ' ||
l_select_clause ITA_SETUP_PARAMETERS_B.SELECT_CLAUSE%TYPE;
SELECT fnd.column_name, isp.parameter_code
from fnd_columns fnd, ita_setup_parameters_b isp
WHERE isp.setup_group_code = p_setup_group_code AND
isp.column_id = fnd.column_id;
SELECT fnd_table.TABLE_ID
INTO l_table_id
FROM FND_TABLES fnd_table
WHERE fnd_table.APPLICATION_ID = p_application_id AND fnd_table.TABLE_NAME = UPPER(p_table_name);
select setup_gp.SETUP_GROUP_CODE, setup_gp.AUDIT_START_DATE,
setup_gp.CONTEXT_PARAMETER_CODE, setup_gp.HIERARCHY_LEVEL hierarchy_level_code,
setup_gp.context_parameter_code2,
(SELECT column_id FROM ita_setup_parameters_b WHERE parameter_code = setup_gp.CONTEXT_PARAMETER_CODE) column_id,
(SELECT column_id FROM ita_setup_parameters_b WHERE parameter_code = setup_gp.CONTEXT_PARAMETER_CODE2) column_id1
INTO l_setup_gp_code, l_audit_start_date, l_context_param_code, l_hier_level_code, l_context_param_code2,
l_column_id, l_column_id1
FROM ITA_SETUP_GROUPS_B setup_gp
WHERE setup_gp.TABLE_APP_ID = p_application_id and
setup_gp.TABLE_ID = l_table_id;
select COLUMN_NAME
INTO l_column_name
from FND_COLUMNS
where (APPLICATION_ID, TABLE_ID) = (select TABLE_APP_ID, TABLE_ID
from ITA_SETUP_GROUPS_B
where SETUP_GROUP_CODE = l_setup_gp_code) and
COLUMN_ID = l_column_id;
l_del_sql := 'delete from ITA_SETUP_CHANGE_HISTORY where INSTANCE_CODE = ''CURRENT'' and SETUP_GROUP_CODE =''' || l_setup_gp_code || '''';
SELECT INSTANCE_CODE INTO l_inst_code FROM ITA_SETUP_INSTANCES_B WHERE CURRENT_FLAG='Y';
SELECT select_clause, from_clause, where_clause
INTO l_select_clause, l_from_clause, l_where_clause
FROM ita_setup_parameters_b
WHERE parameter_code = l_param_rec.parameter_code;
IF l_select_clause IS NOT NULL
THEN
l_select_clause := RTRIM(l_select_clause);
IF LENGTH(l_select_clause) IS NOT NULL and LENGTH(l_from_clause) IS NOT NULL
THEN
l_select_clause := CONCAT(l_select_clause, ' ');
l_select_clause := CONCAT(l_select_clause, l_from_clause);
l_select_clause := CONCAT(l_select_clause, ' ');
l_select_clause := CONCAT(l_select_clause, l_where_clause);
IF LENGTH(l_select_clause) IS NOT NULL
THEN
l_curr_sql := REPLACE(l_select_clause, ''':1''', 'bt.' || l_param_rec.column_name);
l_curr_sql := REPLACE(l_curr_sql, ':2', '(SELECT ORG_ID FROM AP_SUPPLIER_SITES_ALL WHERE VENDOR_SITE_ID = bt.' || l_column_name || ')');
l_ins_sql := 'INSERT INTO ITA_SETUP_CHANGE_HISTORY(INSTANCE_CODE, CHANGE_ID, PARAMETER_CODE, ' ||
'SETUP_GROUP_CODE, CHANGE_AUTHOR, CHANGE_DATE, PK2_VALUE, PK3_VALUE, PK1_VALUE, ' ||
'PK5_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_LOGIN, ' ||
'LAST_UPDATE_DATE, CURRENT_VALUE, OBJECT_VERSION_NUMBER) ' ||
'(SELECT ''' || l_inst_code || ''', ' ||
'ITA_SETUP_CHANGE_HISTORY_S1.NEXTVAL, ''' || l_param_rec.parameter_code || ''', ''' || l_setup_gp_code || ''', ' ||
'(SELECT USER_NAME FROM FND_USER WHERE USER_ID=bt.LAST_UPDATED_BY), bt.LAST_UPDATE_DATE, ' ||
'bt.' || l_column_name || ', bt.' || l_param_rec.column_name || ', ' ||
'(SELECT VENDOR_NAME FROM AP_SUPPLIERS WHERE VENDOR_ID = bt.' || l_column_name || '), ' ||
'to_char(null), ' || l_user_id || ', sysdate, ' || l_user_id || ', ' || l_login_id || ', sysdate, (' || l_curr_sql || '), 1 obj_ver FROM ' || p_table_name || ' bt WHERE ' ||
l_param_rec.column_name || ' IS NOT NULL)';
l_ins_sql := 'INSERT INTO ITA_SETUP_CHANGE_HISTORY(INSTANCE_CODE, CHANGE_ID, PARAMETER_CODE, ' ||
'SETUP_GROUP_CODE, CHANGE_AUTHOR, CHANGE_DATE, PK9_VALUE, PK3_VALUE, PK8_VALUE, ' ||
'PK5_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_LOGIN, ' ||
'LAST_UPDATE_DATE, PK1_VALUE, PK7_VALUE, PK6_VALUE, PK2_VALUE, CURRENT_VALUE, ' ||
'OBJECT_VERSION_NUMBER) ' ||
'(SELECT ''' || l_inst_code || ''', ' ||
'ITA_SETUP_CHANGE_HISTORY_S1.NEXTVAL, ''' || l_param_rec.parameter_code || ''', ''' || l_setup_gp_code || ''', ' ||
'(SELECT USER_NAME FROM FND_USER WHERE USER_ID=bt.LAST_UPDATED_BY), bt.LAST_UPDATE_DATE, ' ||
'bt.' || l_column_name || ', bt.' || l_param_rec.column_name || ', ' ||
'(SELECT VENDOR_SITE_CODE FROM AP_SUPPLIER_SITES_ALL WHERE VENDOR_SITE_ID = bt.' || l_column_name || '), ' ||
'to_char(null), ' || l_user_id || ', sysdate, ' || l_user_id || ', ' || l_login_id || ', sysdate, ' ||
'(SELECT name FROM ((select distinct org.ORGANIZATION_ID, org.NAME, org_info.ORG_INFORMATION1 type ' ||
'from HR_ALL_ORGANIZATION_UNITS org, HR_ORGANIZATION_INFORMATION org_info ' ||
'where org_info.ORGANIZATION_ID = org.ORGANIZATION_ID and ' ||
'org_info.ORG_INFORMATION_CONTEXT = ''CLASS'') ' ||
'union ' ||
'(select distinct SET_OF_BOOKS_ID organization_id, NAME, ''SET_BOOKS'' type ' ||
'from GL_SETS_OF_BOOKS ' ||
')) WHERE organization_id = (SELECT ORG_ID FROM AP_SUPPLIER_SITES_ALL WHERE VENDOR_SITE_ID=bt.' || l_column_name || ') and type = ''' || l_hier_level_code || ''') org_name , ' ||
'(SELECT VENDOR_ID FROM AP_SUPPLIER_SITES_ALL WHERE VENDOR_SITE_ID = bt.' || l_column_name || ')vendor_id, ' ||
'(SELECT VENDOR_NAME FROM AP_SUPPLIERS v, AP_SUPPLIER_SITES_ALL vs WHERE v.VENDOR_ID = vs.VENDOR_ID and VENDOR_SITE_ID = bt.' || l_column_name || ')vendor_name, ' ||
'(SELECT ORG_ID FROM AP_SUPPLIER_SITES_ALL WHERE VENDOR_SITE_ID = bt.' || l_column_name || ') org_id, ' ||
'(' || l_curr_sql || ') , 1 obj_ver FROM ' || p_table_name || ' bt WHERE ' ||
l_param_rec.column_name || ' IS NOT NULL)';
l_rec_val_code_sql := '((select recommended_value from ita_setup_rec_values_vl where parameter_code = '''
|| l_param_rec.parameter_code || ''' and pk1_value = to_char(bt.' || l_column_name ||
')) union (select recommended_value from ita_setup_rec_values_vl where parameter_code = '''
|| l_param_rec.parameter_code || ''' and default_flag = ''Y'' and not exists (select recommended_value ' ||
' from ita_setup_rec_values_vl where parameter_code = ''' || l_param_rec.parameter_code || ''' and pk1_value = to_char(bt.' ||
l_column_name || ')))) ';
l_ins_sql := 'INSERT INTO ITA_SETUP_CHANGE_HISTORY(INSTANCE_CODE, CHANGE_ID, PARAMETER_CODE, ' ||
'SETUP_GROUP_CODE, CHANGE_AUTHOR, CHANGE_DATE, PK2_VALUE, PK3_VALUE, PK1_VALUE, ' ||
'PK5_VALUE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_LOGIN, ' ||
'LAST_UPDATE_DATE, CURRENT_VALUE, RECOMMENDED_VALUE, OBJECT_VERSION_NUMBER) ' ||
'(SELECT ''' || l_inst_code || ''', ' ||
'ITA_SETUP_CHANGE_HISTORY_S1.NEXTVAL, ''' || l_param_rec.parameter_code || ''', ''' || l_setup_gp_code || ''', ' ||
'(SELECT USER_NAME FROM FND_USER WHERE USER_ID=bt.LAST_UPDATED_BY), bt.LAST_UPDATE_DATE, ' ||
'bt.' || l_column_name || ', bt.' || l_param_rec.column_name || ', ' ||
'(SELECT name FROM ((select distinct org.ORGANIZATION_ID, org.NAME, org_info.ORG_INFORMATION1 type ' ||
'from HR_ALL_ORGANIZATION_UNITS org, HR_ORGANIZATION_INFORMATION org_info ' ||
'where org_info.ORGANIZATION_ID = org.ORGANIZATION_ID and ' ||
'org_info.ORG_INFORMATION_CONTEXT = ''CLASS'') ' ||
'union ' ||
'(select distinct SET_OF_BOOKS_ID organization_id, NAME, ''SET_BOOKS'' type ' ||
'from GL_SETS_OF_BOOKS ' ||
')) WHERE organization_id = bt.' || l_column_name || ' and type = ''' ||
l_hier_level_code || ''') org_name , ' ||
l_rec_val_code_sql || 'recomm_code, ' || l_user_id || ', sysdate, ' || l_user_id || ', ' || l_login_id || ', sysdate, ' ||
'(' || l_curr_sql || '), ' || l_rec_sql || ' , 1 obj_ver FROM ' || p_table_name || ' bt WHERE ' ||
l_param_rec.column_name || ' IS NOT NULL)';
l_select_clause ITA_SETUP_PARAMETERS_B.SELECT_CLAUSE%TYPE;
SELECT isch.CHANGE_ID, isp.SELECT_CLAUSE, isch.CURRENT_VALUE
FROM ITA_SETUP_CHANGE_HISTORY isch, ITA_SETUP_PARAMETERS_B isp
WHERE
isch.SETUP_GROUP_CODE = p_setup_group_code and
isch.CURRENT_VALUE is not null and
isch.PARAMETER_CODE = isp.PARAMETER_CODE and
isp.SELECT_CLAUSE is not null and
LTRIM(isp.SELECT_CLAUSE) is not null; -- cpetriuc - bug 5638086
l_update_sql VARCHAR2(3000);
SELECT fnd_table.TABLE_ID
INTO l_table_id
FROM FND_TABLES fnd_table
WHERE fnd_table.APPLICATION_ID = p_application_id AND fnd_table.TABLE_NAME = UPPER(p_table_name);
select setup_gp.SETUP_GROUP_CODE, setup_gp.AUDIT_START_DATE,
setup_gp.CONTEXT_PARAMETER_CODE, setup_gp.HIERARCHY_LEVEL hierarchy_level_code,
setup_gp.context_parameter_code2,
(SELECT column_id FROM ita_setup_parameters_b WHERE parameter_code = setup_gp.CONTEXT_PARAMETER_CODE) column_id,
(SELECT column_id FROM ita_setup_parameters_b WHERE parameter_code = setup_gp.CONTEXT_PARAMETER_CODE2) column_id1
INTO l_setup_gp_code, l_audit_start_date, l_context_param_code, l_hier_level_code, l_context_param_code2,
l_column_id, l_column_id1
FROM ITA_SETUP_GROUPS_B setup_gp
WHERE setup_gp.TABLE_APP_ID = p_application_id and
setup_gp.TABLE_ID = l_table_id;
select COLUMN_NAME
INTO l_column_name
from FND_COLUMNS
where (APPLICATION_ID, TABLE_ID) = (select TABLE_APP_ID, TABLE_ID
from ITA_SETUP_GROUPS_B
where SETUP_GROUP_CODE = l_setup_gp_code)
and COLUMN_ID = l_column_id;
select COLUMN_NAME
INTO l_column_name1
from FND_COLUMNS
where (APPLICATION_ID, TABLE_ID) = (select TABLE_APP_ID, TABLE_ID
from ITA_SETUP_GROUPS_B
where SETUP_GROUP_CODE = l_setup_gp_code)
and COLUMN_ID = l_column_id1;
l_del_sql := 'delete from ITA_SETUP_CHANGE_HISTORY where INSTANCE_CODE = ''CURRENT'' and SETUP_GROUP_CODE =''' || l_setup_gp_code || '''';
SELECT INSTANCE_CODE INTO l_inst_code FROM ITA_SETUP_INSTANCES_B WHERE CURRENT_FLAG='Y';
l_ins_sql := 'INSERT INTO ITA_SETUP_CHANGE_HISTORY(INSTANCE_CODE, CHANGE_ID, PARAMETER_CODE,' ||
'SETUP_GROUP_CODE, CHANGE_AUTHOR, CHANGE_DATE, PK2_VALUE, PK3_VALUE, PK1_VALUE, ' ||
'CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_LOGIN, ' ||
'LAST_UPDATE_DATE, PK6_VALUE, OBJECT_VERSION_NUMBER, CURRENT_VALUE, RECOMMENDED_VALUE, PK5_VALUE, PK10_VALUE) ' ||
'(SELECT /*+ PARALLEL(bt) */''' || l_inst_code || ''', ' || 'ITA_SETUP_CHANGE_HISTORY_S1.NEXTVAL, ''' ||
l_setup_gp_code || '.''|| (SELECT profile_option_name FROM fnd_profile_options WHERE application_id=bt.application_id and profile_option_id=bt.profile_option_id), ''' ||
l_setup_gp_code || ''', ' ||
'(SELECT USER_NAME FROM FND_USER WHERE USER_ID=bt.LAST_UPDATED_BY) change_author, bt.LAST_UPDATE_DATE, ' ||
'bt.LEVEL_VALUE, bt.PROFILE_OPTION_VALUE, bt.LEVEL_ID, ' ||
l_user_id || ', sysdate, ' || l_user_id || ', ' || l_login_id ||
', sysdate, ' ||
'(DECODE(bt.LEVEL_ID, 10002, (SELECT application_name FROM fnd_application_tl WHERE application_id=bt.LEVEL_VALUE AND language = USERENV(''LANG'')),' ||
'(DECODE(bt.LEVEL_ID, 10003, (SELECT RESPONSIBILITY_NAME FROM fnd_responsibility_tl WHERE ' ||
'RESPONSIBILITY_ID=bt.LEVEL_VALUE and APPLICATION_ID=bt.LEVEL_VALUE_APPLICATION_ID AND language = USERENV(''LANG'')), (DECODE(bt.LEVEL_ID, 10004, (SELECT user_name FROM fnd_user ' ||
'WHERE user_id=bt.LEVEL_VALUE), (DECODE(bt.LEVEL_ID, 10005, (SELECT node_name from fnd_nodes where node_id=bt.LEVEL_VALUE), ' ||
'(DECODE(bt.LEVEL_ID, 10006, (SELECT name from HR_ALL_ORGANIZATION_UNITS_TL where organization_id=bt.LEVEL_ID AND language = USERENV(''LANG'')), null))) ' ||
'))))))) level_value_name, 1 obj_ver, bt.profile_option_value, ' ||
'(SELECT recommended_value FROM ita_setup_rec_values_vl WHERE default_flag=''Y'' and ' ||
'parameter_code=''' || l_setup_gp_code || '.''|| (SELECT profile_option_name FROM ' ||
'fnd_profile_options WHERE application_id=bt.application_id and profile_option_id=bt.profile_option_id)) rec_value, ' ||
'(SELECT recommended_value FROM ita_setup_rec_values_vl WHERE default_flag=''Y'' and ' ||
'parameter_code=''' || l_setup_gp_code || '.''|| (SELECT profile_option_name FROM ' ||
'fnd_profile_options WHERE application_id=bt.application_id and profile_option_id=' ||
'bt.profile_option_id)) rec_code, bt.LEVEL_VALUE_APPLICATION_ID FROM ' || p_table_name || ' bt WHERE bt.profile_option_value is NOT NULL)';
l_ins_param_sql := 'INSERT INTO ita_setup_parameters_b (PARAMETER_CODE, SETUP_GROUP_CODE, COLUMN_ID, AUDIT_ENABLED_FLAG, COLUMN_REFERENCE1, COLUMN_REFERENCE2, CREATED_BY, CREATION_DATE, LAST_UPDATE_DATE,' ||
'LAST_UPDATED_BY, LAST_UPDATE_LOGIN, OBJECT_VERSION_NUMBER, SELECT_CLAUSE)' ||
'(SELECT ''' || l_setup_gp_code || '.' || ''' || bt.profile_option_name, ''' || l_setup_gp_code || ''', bt.profile_option_id' || ', ''Y'',' ||
'bt.profile_option_id, bt.application_id, ' || l_user_id || ', sysdate, sysdate, ' || l_user_id ||
', ' || l_login_id || ', 1, ' ||
-- '(UPPER(REPLACE(substr(sql_validation, instr(upper(sql_validation), ''SELECT ''),
-- (instr(upper(sql_validation), ''"'' || chr(10) || ''COLUMN='') - instr(upper(sql_validation),
-- ''SELECT ''))), substr(sql_validation, instr(sql_validation, ''\"''), instr(sql_validation,
-- ''\"'', 1, 2) - instr(sql_validation, ''\"'') + 2), ''visible_option_value''))) select_cl ' ||
-- cpetriuc start - bug 5638086
-- Removed the space character after "SELECT".
-- Introduced call to LENGTH.
-- '(UPPER(REPLACE(substr(sql_validation, instr(upper(sql_validation), ''SELECT ''), (instr(upper(sql_validation), ''"'' || chr(10) || ''COLUMN='') - instr(upper(sql_validation), ''SELECT ''))), ''\"'', ''"''))) select_cl ' ||
'(UPPER(REPLACE(substr(sql_validation, instr(upper(sql_validation), ''SELECT''), (1 + length(upper(sql_validation)) - instr(upper(sql_validation), ''SELECT''))), ''\"'', ''"''))) select_cl ' ||
-- cpetriuc end - bug 5638086
'FROM fnd_profile_options bt WHERE ''' || l_setup_gp_code || '.' || ''' || bt.profile_option_name NOT IN ' ||
'(SELECT parameter_code FROM ita_setup_parameters_b) AND (bt.profile_option_id, bt.application_id) ' ||
'IN (SELECT profile_option_id, application_id from fnd_profile_option_values))';
l_ins_param_sql := 'INSERT INTO ita_setup_parameters_tl (PARAMETER_CODE, CREATED_BY, CREATION_DATE, LAST_UPDATE_DATE,' ||
'LAST_UPDATED_BY, LAST_UPDATE_LOGIN, OBJECT_VERSION_NUMBER, LANGUAGE, SOURCE_LANG, PARAMETER_NAME)' ||
'(SELECT PARAMETER_CODE, isp.CREATED_BY, isp.CREATION_DATE, isp.LAST_UPDATE_DATE, isp.LAST_UPDATED_BY, isp.LAST_UPDATE_LOGIN, 1, prof.language, prof.source_lang, prof.user_profile_option_name ' ||
'FROM ita_setup_parameters_b isp, fnd_profile_options_tl prof WHERE ''' || l_setup_gp_code || '.' || ''' || prof.profile_option_name = isp.parameter_code ' ||
'AND (isp.parameter_code, prof.language) NOT IN (SELECT parameter_code, language from ita_setup_parameters_tl))';
l_profile_sql := UPPER(l_profile_change.SELECT_CLAUSE);
l_profile_sql := 'SELECT meaning FROM ( ' || l_profile_sql || ' ) WHERE code = ''' || l_profile_value_code || '''';
l_update_sql := 'UPDATE ITA_SETUP_CHANGE_HISTORY SET CURRENT_VALUE = ''' || l_profile_value_meaning || ''' WHERE CHANGE_ID = ' || l_change_id;
EXECUTE IMMEDIATE l_update_sql;
l_profile_sql := 'SELECT value_meaning FROM ( ' || l_profile_sql || ' ) WHERE value_code = ''' || p_profile_value_code || '''';
l_profile_sql := 'SELECT value_meaning, value_code FROM ( ' || l_profile_sql || ' )';
l_index_select NUMBER;
l_index_select := INSTR(l_profile_sql, 'SELECT');
l_index_mark := l_index_select + 6;