The following lines contain the word 'select', 'insert', 'update' or 'delete':
/* The following delete and update statements are commented out */
/* as a quick workaround to fix the time-consuming table handler issue */
/* Eventually we'll need to turn them into a separate fix_language procedure */
/* Refer Bugs 3723612, 4210278 and 5261743
DELETE FROM OKC_CHANGES_TL T
WHERE NOT EXISTS (
SELECT NULL
FROM OKC_CHANGES_B B
WHERE B.ID = T.ID
);
UPDATE OKC_CHANGES_TL T SET (
SHORT_DESCRIPTION,
CHANGE_TEXT) = (SELECT
B.SHORT_DESCRIPTION,
B.CHANGE_TEXT
FROM OKC_CHANGES_TL B
WHERE B.ID = T.ID
AND B.LANGUAGE = T.SOURCE_LANG)
WHERE (
T.ID,
T.LANGUAGE)
IN (SELECT
SUBT.ID,
SUBT.LANGUAGE
FROM OKC_CHANGES_TL SUBB, OKC_CHANGES_TL SUBT
WHERE SUBB.ID = SUBT.ID
AND SUBB.LANGUAGE = SUBT.SOURCE_LANG
AND (SUBB.SHORT_DESCRIPTION <> SUBT.SHORT_DESCRIPTION
-- Commented in favor of handcode
--- OR SUBB.CHANGE_TEXT <> SUBT.CHANGE_TEXT
--+Hand code start
OR ( (SUBB.CHANGE_TEXT IS NOT NULL AND SUBT.CHANGE_TEXT IS NOT NULL)
AND (DBMS_LOB.COMPARE(SUBB.CHANGE_TEXT,SUBT.CHANGE_TEXT) <> 0))
--+Hand code end
OR (SUBB.SHORT_DESCRIPTION IS NULL AND SUBT.SHORT_DESCRIPTION IS NOT NULL)
OR (SUBB.SHORT_DESCRIPTION IS NOT NULL AND SUBT.SHORT_DESCRIPTION IS NULL)
OR (SUBB.CHANGE_TEXT IS NULL AND SUBT.CHANGE_TEXT IS NOT NULL)
OR (SUBB.CHANGE_TEXT IS NOT NULL AND SUBT.CHANGE_TEXT IS NULL)
));
/* Modifying Insert as per performance guidelines given in bug 3723874 */
INSERT /*+ append parallel(tt) */ INTO OKC_CHANGES_TL tt(
ID,
LANGUAGE,
SOURCE_LANG,
SFWT_FLAG,
SHORT_DESCRIPTION,
CHANGE_TEXT,
CREATED_BY,
CREATION_DATE,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
LAST_UPDATE_LOGIN)
SELECT /*+ parallel(v) parallel(t) use_nl(t) */ v.* FROM
(SELECT /*+ no_merge ordered parallel(b) */
B.ID,
L.LANGUAGE_CODE,
B.SOURCE_LANG,
B.SFWT_FLAG,
B.SHORT_DESCRIPTION,
B.CHANGE_TEXT,
B.CREATED_BY,
B.CREATION_DATE,
B.LAST_UPDATED_BY,
B.LAST_UPDATE_DATE,
B.LAST_UPDATE_LOGIN
FROM OKC_CHANGES_TL B, FND_LANGUAGES L
WHERE L.INSTALLED_FLAG IN ('I', 'B')
AND B.LANGUAGE = USERENV('LANG')
) v, OKC_CHANGES_TL T
WHERE T.ID(+) = v.ID
AND T.LANGUAGE(+) = v.LANGUAGE_CODE
AND T.ID IS NULL;
SELECT
ID,
CRT_ID,
CHANGE_SEQUENCE,
OBJECT_VERSION_NUMBER,
CREATED_BY,
CREATION_DATE,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
DATETIME_INEFFECTIVE,
LAST_UPDATE_LOGIN,
ATTRIBUTE_CATEGORY,
ATTRIBUTE1,
ATTRIBUTE2,
ATTRIBUTE3,
ATTRIBUTE4,
ATTRIBUTE5,
ATTRIBUTE6,
ATTRIBUTE7,
ATTRIBUTE8,
ATTRIBUTE9,
ATTRIBUTE10,
ATTRIBUTE11,
ATTRIBUTE12,
ATTRIBUTE13,
ATTRIBUTE14,
ATTRIBUTE15
FROM Okc_Changes_B
WHERE okc_changes_b.id = p_id;
l_cor_rec.LAST_UPDATED_BY,
l_cor_rec.LAST_UPDATE_DATE,
l_cor_rec.DATETIME_INEFFECTIVE,
l_cor_rec.LAST_UPDATE_LOGIN,
l_cor_rec.ATTRIBUTE_CATEGORY,
l_cor_rec.ATTRIBUTE1,
l_cor_rec.ATTRIBUTE2,
l_cor_rec.ATTRIBUTE3,
l_cor_rec.ATTRIBUTE4,
l_cor_rec.ATTRIBUTE5,
l_cor_rec.ATTRIBUTE6,
l_cor_rec.ATTRIBUTE7,
l_cor_rec.ATTRIBUTE8,
l_cor_rec.ATTRIBUTE9,
l_cor_rec.ATTRIBUTE10,
l_cor_rec.ATTRIBUTE11,
l_cor_rec.ATTRIBUTE12,
l_cor_rec.ATTRIBUTE13,
l_cor_rec.ATTRIBUTE14,
l_cor_rec.ATTRIBUTE15;
SELECT
ID,
LANGUAGE,
SOURCE_LANG,
SFWT_FLAG,
SHORT_DESCRIPTION,
CHANGE_TEXT,
CREATED_BY,
CREATION_DATE,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
LAST_UPDATE_LOGIN
FROM Okc_Changes_Tl
WHERE okc_changes_tl.id = p_id
AND okc_changes_tl.language = p_language;
l_okc_changes_tl_rec.LAST_UPDATED_BY,
l_okc_changes_tl_rec.LAST_UPDATE_DATE,
l_okc_changes_tl_rec.LAST_UPDATE_LOGIN;
SELECT
ID,
OBJECT_VERSION_NUMBER,
SFWT_FLAG,
CRT_ID,
CHANGE_SEQUENCE,
CHANGE_TEXT,
SHORT_DESCRIPTION,
ATTRIBUTE_CATEGORY,
ATTRIBUTE1,
ATTRIBUTE2,
ATTRIBUTE3,
ATTRIBUTE4,
ATTRIBUTE5,
ATTRIBUTE6,
ATTRIBUTE7,
ATTRIBUTE8,
ATTRIBUTE9,
ATTRIBUTE10,
ATTRIBUTE11,
ATTRIBUTE12,
ATTRIBUTE13,
ATTRIBUTE14,
ATTRIBUTE15,
CREATED_BY,
CREATION_DATE,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
LAST_UPDATE_LOGIN
FROM Okc_Changes_V
WHERE okc_changes_v.id = p_id;
l_corv_rec.LAST_UPDATED_BY,
l_corv_rec.LAST_UPDATE_DATE,
l_corv_rec.LAST_UPDATE_LOGIN;
IF (l_corv_rec.last_updated_by = OKC_API.G_MISS_NUM) THEN
l_corv_rec.last_updated_by := NULL;
IF (l_corv_rec.last_update_date = OKC_API.G_MISS_DATE) THEN
l_corv_rec.last_update_date := NULL;
IF (l_corv_rec.last_update_login = OKC_API.G_MISS_NUM) THEN
l_corv_rec.last_update_login := NULL;
select 'x'
from OKC_change_requests_B
where id = p_corv_rec.crt_id;
p_to.last_updated_by := p_from.last_updated_by;
p_to.last_update_date := p_from.last_update_date;
p_to.last_update_login := p_from.last_update_login;
p_to.last_updated_by := p_from.last_updated_by;
p_to.last_update_date := p_from.last_update_date;
p_to.last_update_login := p_from.last_update_login;
p_to.last_updated_by := p_from.last_updated_by;
p_to.last_update_date := p_from.last_update_date;
p_to.last_update_login := p_from.last_update_login;
p_to.last_updated_by := p_from.last_updated_by;
p_to.last_update_date := p_from.last_update_date;
p_to.last_update_login := p_from.last_update_login;
PROCEDURE insert_row(
p_init_msg_list IN VARCHAR2 ,
x_return_status OUT NOCOPY VARCHAR2,
x_msg_count OUT NOCOPY NUMBER,
x_msg_data OUT NOCOPY VARCHAR2,
p_cor_rec IN cor_rec_type,
x_cor_rec OUT NOCOPY cor_rec_type) IS
l_api_version CONSTANT NUMBER := 1;
l_api_name CONSTANT VARCHAR2(30) := 'B_insert_row';
INSERT INTO OKC_CHANGES_B(
id,
crt_id,
change_sequence,
object_version_number,
created_by,
creation_date,
last_updated_by,
last_update_date,
datetime_ineffective,
last_update_login,
attribute_category,
attribute1,
attribute2,
attribute3,
attribute4,
attribute5,
attribute6,
attribute7,
attribute8,
attribute9,
attribute10,
attribute11,
attribute12,
attribute13,
attribute14,
attribute15)
VALUES (
l_cor_rec.id,
l_cor_rec.crt_id,
l_cor_rec.change_sequence,
l_cor_rec.object_version_number,
l_cor_rec.created_by,
l_cor_rec.creation_date,
l_cor_rec.last_updated_by,
l_cor_rec.last_update_date,
l_cor_rec.datetime_ineffective,
l_cor_rec.last_update_login,
l_cor_rec.attribute_category,
l_cor_rec.attribute1,
l_cor_rec.attribute2,
l_cor_rec.attribute3,
l_cor_rec.attribute4,
l_cor_rec.attribute5,
l_cor_rec.attribute6,
l_cor_rec.attribute7,
l_cor_rec.attribute8,
l_cor_rec.attribute9,
l_cor_rec.attribute10,
l_cor_rec.attribute11,
l_cor_rec.attribute12,
l_cor_rec.attribute13,
l_cor_rec.attribute14,
l_cor_rec.attribute15);
END insert_row;
PROCEDURE insert_row(
p_init_msg_list IN VARCHAR2 ,
x_return_status OUT NOCOPY VARCHAR2,
x_msg_count OUT NOCOPY NUMBER,
x_msg_data OUT NOCOPY VARCHAR2,
p_okc_changes_tl_rec IN okc_changes_tl_rec_type,
x_okc_changes_tl_rec OUT NOCOPY okc_changes_tl_rec_type) IS
l_api_version CONSTANT NUMBER := 1;
l_api_name CONSTANT VARCHAR2(30) := 'TL_insert_row';
SELECT *
FROM FND_LANGUAGES
WHERE INSTALLED_FLAG IN ('I', 'B');
INSERT INTO OKC_CHANGES_TL(
id,
language,
source_lang,
sfwt_flag,
short_description,
change_text,
created_by,
creation_date,
last_updated_by,
last_update_date,
last_update_login)
VALUES (
l_okc_changes_tl_rec.id,
l_okc_changes_tl_rec.language,
l_okc_changes_tl_rec.source_lang,
l_okc_changes_tl_rec.sfwt_flag,
l_okc_changes_tl_rec.short_description,
l_okc_changes_tl_rec.change_text,
l_okc_changes_tl_rec.created_by,
l_okc_changes_tl_rec.creation_date,
l_okc_changes_tl_rec.last_updated_by,
l_okc_changes_tl_rec.last_update_date,
l_okc_changes_tl_rec.last_update_login);
END insert_row;
PROCEDURE insert_row(
p_api_version IN NUMBER,
p_init_msg_list IN VARCHAR2 ,
x_return_status OUT NOCOPY VARCHAR2,
x_msg_count OUT NOCOPY NUMBER,
x_msg_data OUT NOCOPY VARCHAR2,
p_corv_rec IN corv_rec_type,
x_corv_rec OUT NOCOPY corv_rec_type) IS
l_api_version CONSTANT NUMBER := 1;
l_api_name CONSTANT VARCHAR2(30) := 'V_insert_row';
l_corv_rec.LAST_UPDATE_DATE := SYSDATE;
l_corv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
l_corv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
insert_row(
p_init_msg_list,
x_return_status,
x_msg_count,
x_msg_data,
l_cor_rec,
lx_cor_rec
);
insert_row(
p_init_msg_list,
x_return_status,
x_msg_count,
x_msg_data,
l_okc_changes_tl_rec,
lx_okc_changes_tl_rec
);
END insert_row;
PROCEDURE insert_row(
p_api_version IN NUMBER,
p_init_msg_list IN VARCHAR2 ,
x_return_status OUT NOCOPY VARCHAR2,
x_msg_count OUT NOCOPY NUMBER,
x_msg_data OUT NOCOPY VARCHAR2,
p_corv_tbl IN corv_tbl_type,
x_corv_tbl OUT NOCOPY corv_tbl_type) IS
l_api_version CONSTANT NUMBER := 1;
l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
insert_row (
p_api_version => p_api_version,
p_init_msg_list => OKC_API.G_FALSE,
x_return_status => x_return_status,
x_msg_count => x_msg_count,
x_msg_data => x_msg_data,
p_corv_rec => p_corv_tbl(i),
x_corv_rec => x_corv_tbl(i));
END insert_row;
SELECT OBJECT_VERSION_NUMBER
FROM OKC_CHANGES_B
WHERE ID = p_cor_rec.id
AND OBJECT_VERSION_NUMBER = p_cor_rec.object_version_number
FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
SELECT OBJECT_VERSION_NUMBER
FROM OKC_CHANGES_B
WHERE ID = p_cor_rec.id;
OKC_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
OKC_API.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
SELECT *
FROM OKC_CHANGES_TL
WHERE ID = p_okc_changes_tl_rec.id
FOR UPDATE NOWAIT;
OKC_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
PROCEDURE update_row(
p_init_msg_list IN VARCHAR2 ,
x_return_status OUT NOCOPY VARCHAR2,
x_msg_count OUT NOCOPY NUMBER,
x_msg_data OUT NOCOPY VARCHAR2,
p_cor_rec IN cor_rec_type,
x_cor_rec OUT NOCOPY cor_rec_type) IS
l_api_version CONSTANT NUMBER := 1;
l_api_name CONSTANT VARCHAR2(30) := 'B_update_row';
IF (x_cor_rec.last_updated_by = OKC_API.G_MISS_NUM)
THEN
x_cor_rec.last_updated_by := l_cor_rec.last_updated_by;
IF (x_cor_rec.last_update_date = OKC_API.G_MISS_DATE)
THEN
x_cor_rec.last_update_date := l_cor_rec.last_update_date;
IF (x_cor_rec.last_update_login = OKC_API.G_MISS_NUM)
THEN
x_cor_rec.last_update_login := l_cor_rec.last_update_login;
UPDATE OKC_CHANGES_B
SET CRT_ID = l_def_cor_rec.crt_id,
CHANGE_SEQUENCE = l_def_cor_rec.change_sequence,
OBJECT_VERSION_NUMBER = l_def_cor_rec.object_version_number,
CREATED_BY = l_def_cor_rec.created_by,
CREATION_DATE = l_def_cor_rec.creation_date,
LAST_UPDATED_BY = l_def_cor_rec.last_updated_by,
LAST_UPDATE_DATE = l_def_cor_rec.last_update_date,
DATETIME_INEFFECTIVE = l_def_cor_rec.datetime_ineffective,
LAST_UPDATE_LOGIN = l_def_cor_rec.last_update_login,
ATTRIBUTE_CATEGORY = l_def_cor_rec.attribute_category,
ATTRIBUTE1 = l_def_cor_rec.attribute1,
ATTRIBUTE2 = l_def_cor_rec.attribute2,
ATTRIBUTE3 = l_def_cor_rec.attribute3,
ATTRIBUTE4 = l_def_cor_rec.attribute4,
ATTRIBUTE5 = l_def_cor_rec.attribute5,
ATTRIBUTE6 = l_def_cor_rec.attribute6,
ATTRIBUTE7 = l_def_cor_rec.attribute7,
ATTRIBUTE8 = l_def_cor_rec.attribute8,
ATTRIBUTE9 = l_def_cor_rec.attribute9,
ATTRIBUTE10 = l_def_cor_rec.attribute10,
ATTRIBUTE11 = l_def_cor_rec.attribute11,
ATTRIBUTE12 = l_def_cor_rec.attribute12,
ATTRIBUTE13 = l_def_cor_rec.attribute13,
ATTRIBUTE14 = l_def_cor_rec.attribute14,
ATTRIBUTE15 = l_def_cor_rec.attribute15
WHERE ID = l_def_cor_rec.id;
END update_row;
PROCEDURE update_row(
p_init_msg_list IN VARCHAR2 ,
x_return_status OUT NOCOPY VARCHAR2,
x_msg_count OUT NOCOPY NUMBER,
x_msg_data OUT NOCOPY VARCHAR2,
p_okc_changes_tl_rec IN okc_changes_tl_rec_type,
x_okc_changes_tl_rec OUT NOCOPY okc_changes_tl_rec_type) IS
l_api_version CONSTANT NUMBER := 1;
l_api_name CONSTANT VARCHAR2(30) := 'TL_update_row';
IF (x_okc_changes_tl_rec.last_updated_by = OKC_API.G_MISS_NUM)
THEN
x_okc_changes_tl_rec.last_updated_by := l_okc_changes_tl_rec.last_updated_by;
IF (x_okc_changes_tl_rec.last_update_date = OKC_API.G_MISS_DATE)
THEN
x_okc_changes_tl_rec.last_update_date := l_okc_changes_tl_rec.last_update_date;
IF (x_okc_changes_tl_rec.last_update_login = OKC_API.G_MISS_NUM)
THEN
x_okc_changes_tl_rec.last_update_login := l_okc_changes_tl_rec.last_update_login;
UPDATE OKC_CHANGES_TL
SET SHORT_DESCRIPTION = l_def_okc_changes_tl_rec.short_description,
CHANGE_TEXT = l_def_okc_changes_tl_rec.change_text,
CREATED_BY = l_def_okc_changes_tl_rec.created_by,
CREATION_DATE = l_def_okc_changes_tl_rec.creation_date,
LAST_UPDATED_BY = l_def_okc_changes_tl_rec.last_updated_by,
LAST_UPDATE_DATE = l_def_okc_changes_tl_rec.last_update_date,
LAST_UPDATE_LOGIN = l_def_okc_changes_tl_rec.last_update_login,
SOURCE_LANG = l_def_okc_changes_tl_rec.source_lang
WHERE ID = l_def_okc_changes_tl_rec.id
AND USERENV('LANG') in (SOURCE_LANG,LANGUAGE);
UPDATE OKC_CHANGES_TL
SET SFWT_FLAG = 'Y'
WHERE ID = l_def_okc_changes_tl_rec.id
AND SOURCE_LANG <> USERENV('LANG');
END update_row;
PROCEDURE update_row(
p_api_version IN NUMBER,
p_init_msg_list IN VARCHAR2 ,
x_return_status OUT NOCOPY VARCHAR2,
x_msg_count OUT NOCOPY NUMBER,
x_msg_data OUT NOCOPY VARCHAR2,
p_corv_rec IN corv_rec_type,
x_corv_rec OUT NOCOPY corv_rec_type) IS
l_api_version CONSTANT NUMBER := 1;
l_api_name CONSTANT VARCHAR2(30) := 'V_update_row';
l_corv_rec.LAST_UPDATE_DATE := SYSDATE;
l_corv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
l_corv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
IF (x_corv_rec.last_updated_by = OKC_API.G_MISS_NUM)
THEN
x_corv_rec.last_updated_by := l_corv_rec.last_updated_by;
IF (x_corv_rec.last_update_date = OKC_API.G_MISS_DATE)
THEN
x_corv_rec.last_update_date := l_corv_rec.last_update_date;
IF (x_corv_rec.last_update_login = OKC_API.G_MISS_NUM)
THEN
x_corv_rec.last_update_login := l_corv_rec.last_update_login;
update_row(
p_init_msg_list,
x_return_status,
x_msg_count,
x_msg_data,
l_okc_changes_tl_rec,
lx_okc_changes_tl_rec
);
update_row(
p_init_msg_list,
x_return_status,
x_msg_count,
x_msg_data,
l_cor_rec,
lx_cor_rec
);
END update_row;
PROCEDURE update_row(
p_api_version IN NUMBER,
p_init_msg_list IN VARCHAR2 ,
x_return_status OUT NOCOPY VARCHAR2,
x_msg_count OUT NOCOPY NUMBER,
x_msg_data OUT NOCOPY VARCHAR2,
p_corv_tbl IN corv_tbl_type,
x_corv_tbl OUT NOCOPY corv_tbl_type) IS
l_api_version CONSTANT NUMBER := 1;
l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
update_row (
p_api_version => p_api_version,
p_init_msg_list => OKC_API.G_FALSE,
x_return_status => x_return_status,
x_msg_count => x_msg_count,
x_msg_data => x_msg_data,
p_corv_rec => p_corv_tbl(i),
x_corv_rec => x_corv_tbl(i));
END update_row;
PROCEDURE delete_row(
p_init_msg_list IN VARCHAR2 ,
x_return_status OUT NOCOPY VARCHAR2,
x_msg_count OUT NOCOPY NUMBER,
x_msg_data OUT NOCOPY VARCHAR2,
p_cor_rec IN cor_rec_type) IS
l_api_version CONSTANT NUMBER := 1;
l_api_name CONSTANT VARCHAR2(30) := 'B_delete_row';
DELETE FROM OKC_CHANGES_B
WHERE ID = l_cor_rec.id;
END delete_row;
PROCEDURE delete_row(
p_init_msg_list IN VARCHAR2 ,
x_return_status OUT NOCOPY VARCHAR2,
x_msg_count OUT NOCOPY NUMBER,
x_msg_data OUT NOCOPY VARCHAR2,
p_okc_changes_tl_rec IN okc_changes_tl_rec_type) IS
l_api_version CONSTANT NUMBER := 1;
l_api_name CONSTANT VARCHAR2(30) := 'TL_delete_row';
DELETE FROM OKC_CHANGES_TL
WHERE ID = l_okc_changes_tl_rec.id;
END delete_row;
PROCEDURE delete_row(
p_api_version IN NUMBER,
p_init_msg_list IN VARCHAR2 ,
x_return_status OUT NOCOPY VARCHAR2,
x_msg_count OUT NOCOPY NUMBER,
x_msg_data OUT NOCOPY VARCHAR2,
p_corv_rec IN corv_rec_type) IS
l_api_version CONSTANT NUMBER := 1;
l_api_name CONSTANT VARCHAR2(30) := 'V_delete_row';
delete_row(
p_init_msg_list,
x_return_status,
x_msg_count,
x_msg_data,
l_okc_changes_tl_rec
);
delete_row(
p_init_msg_list,
x_return_status,
x_msg_count,
x_msg_data,
l_cor_rec
);
END delete_row;
PROCEDURE delete_row(
p_api_version IN NUMBER,
p_init_msg_list IN VARCHAR2 ,
x_return_status OUT NOCOPY VARCHAR2,
x_msg_count OUT NOCOPY NUMBER,
x_msg_data OUT NOCOPY VARCHAR2,
p_corv_tbl IN corv_tbl_type) IS
l_api_version CONSTANT NUMBER := 1;
l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
delete_row (
p_api_version => p_api_version,
p_init_msg_list => OKC_API.G_FALSE,
x_return_status => x_return_status,
x_msg_count => x_msg_count,
x_msg_data => x_msg_data,
p_corv_rec => p_corv_tbl(i));
END delete_row;