The following lines contain the word 'select', 'insert', 'update' or 'delete':
SELECT FND_ATTACHED_DOCUMENTS_S.nextval
FROM dual;
SELECT 1
FROM FND_ATTACHED_DOCUMENTS
WHERE document_id = l_id;
AMS_UTILITY_PVT.debug_message( 'Private API: Calling table handler fnd_documents_pkg.insert_row');
fnd_documents_pkg.insert_row(
X_rowid => l_row_id,
X_document_id => x_document_id,
X_creation_date => sysdate,
X_created_by => FND_GLOBAL.USER_ID,
X_last_update_date => sysdate,
X_last_updated_by => FND_GLOBAL.USER_ID,
X_last_update_login => FND_GLOBAL.CONC_LOGIN_ID,
X_datatype_id => p_Fnd_Attachment_rec.datatype_id,
X_category_id => p_Fnd_Attachment_rec.category_id,
X_security_type => p_Fnd_Attachment_rec.security_type,
X_publish_flag => p_Fnd_Attachment_rec.publish_flag,
X_usage_type => p_Fnd_Attachment_rec.usage_type,
X_language => p_Fnd_Attachment_rec.language,
X_description =>p_Fnd_Attachment_rec.description,
X_file_name => p_Fnd_Attachment_rec.file_name,
X_media_id => l_media_id
);
insert into
fnd_documents_short_text
(media_id,
short_text
)
values
(l_media_id,
p_Fnd_Attachment_rec.short_text
);
Update fnd_documents_tl because FND_API inserts newly generated
media_id into that table.
*/
update fnd_documents_tl
set media_id = p_Fnd_Attachment_rec.media_id
where document_id = x_document_id;
/* For File we have already generated a file id - the fnd_documents_pkg.insert_row
table handler has generated a fnd_lobs_s.nextval but that's not what shoule be the
reference to the FND_LOBS table - because the upload program has already generated a
sequence */
/**
update fnd_documents_tl
set media_id = p_Fnd_Attachment_rec.media_id
where document_id = l_document_id;
fnd_attached_documents_pkg.Insert_Row
( x_rowid => l_row_id,
X_attached_document_id => l_attached_document_ID,
X_document_id => x_document_ID,
X_creation_date => sysdate,
X_created_by => FND_GLOBAL.USER_ID,
X_last_update_date => sysdate,
X_last_updated_by => FND_GLOBAL.USER_ID,
X_last_update_login => FND_GLOBAL.CONC_LOGIN_ID,
X_seq_num => l_seq_num,
X_entity_name => p_Fnd_Attachment_rec.entity_name,
x_column1 => null,
X_pk1_value => p_Fnd_Attachment_rec.pk1_value,
X_pk2_value => null,
X_pk3_value => null,
X_pk4_value => null,
X_pk5_value => null,
X_automatically_added_flag => p_Fnd_Attachment_rec.automatically_added_flag,
X_datatype_id => null,
X_category_id => null,
X_security_type => null,
X_publish_flag => null,
X_usage_type => p_Fnd_Attachment_rec.usage_type,
X_language => null,
X_media_id => l_media_id,
X_doc_attribute_Category => null,
X_doc_attribute1 => null,
X_doc_attribute2 => null,
X_doc_attribute3 => null,
X_doc_attribute4 => null,
X_doc_attribute5 => null,
X_doc_attribute6 => null,
X_doc_attribute7 => null,
X_doc_attribute8 => null,
X_doc_attribute9 => null,
X_doc_attribute10 => null,
X_doc_attribute11 => null,
X_doc_attribute12 => null,
X_doc_attribute13 => null,
X_doc_attribute14 => null,
X_doc_attribute15 => null
);
This procedure updates FND_DOCUMENTS,FND_DOCUMENTS_TL and FND_DOCUMENTS_SHORT_TEX T. FND_ATTACHED_DOCUMENTS is not updated because it maintains the link between
FND_DOCUMENTS and FND_DOCUMENT_ENTITIES. In Sales and Marketing the association cannot be updated.
**/
PROCEDURE Update_Fnd_Attachment(
p_api_version_number IN NUMBER,
p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
p_commit IN VARCHAR2 := FND_API.G_FALSE,
p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
x_return_status OUT NOCOPY VARCHAR2,
x_msg_count OUT NOCOPY NUMBER,
x_msg_data OUT NOCOPY VARCHAR2,
p_Fnd_Attachment_rec IN fnd_attachment_rec_type
)
IS
CURSOR c_get_Fnd_Documents(l_document_id NUMBER) IS
SELECT *
FROM fnd_documents
where document_id = l_document_id;
L_API_NAME CONSTANT VARCHAR2(30) := 'Update_Fnd_Attachment';
SAVEPOINT UPDATE_Fnd_Attachment_PVT;
AMS_UTILITY_PVT.debug_message('Private API: - Open Cursor to Select');
AMS_Utility_PVT.Error_Message(p_message_name => 'API_MISSING_UPDATE_TARGET',
p_token_name => 'INFO',
p_token_value => 'Fnd_Attachment') ;
IF (p_Fnd_Attachment_rec.concur_last_update_date <> l_ref_fnd_attachment_rec.last_update_date) THEN
AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RECORD_NOT_FOUND') ;
SELECT fnd_documents_short_text_s.nextval
INTO l_media_id
from dual;
fnd_documents_pkg.update_row(
X_document_id => p_Fnd_Attachment_rec.document_id,
X_last_update_date => sysdate,
X_last_updated_by => FND_GLOBAL.USER_ID,
X_last_update_login => FND_GLOBAL.CONC_LOGIN_ID,
X_datatype_id => p_Fnd_Attachment_rec.datatype_id,
X_category_id => p_Fnd_Attachment_rec.category_id,
X_security_type => p_Fnd_Attachment_rec.security_type,
X_security_id => null,
X_publish_flag => p_Fnd_Attachment_rec.publish_flag,
X_image_type => null,
X_storage_type => null,
X_usage_type => p_Fnd_Attachment_rec.usage_type,
X_start_date_active => null,
X_end_date_active => null,
X_language => p_Fnd_Attachment_rec.language,
X_description =>p_Fnd_Attachment_rec.description,
X_file_name => p_Fnd_Attachment_rec.file_name,
x_media_id => NVL(p_Fnd_Attachment_rec.media_id,l_media_id)
);
insert into
fnd_documents_short_text
(media_id,
short_text
)
values
(l_media_id,
p_Fnd_Attachment_rec.short_text
);
update fnd_documents_short_text
set short_text = p_Fnd_Attachment_rec.short_text
where media_id = p_Fnd_Attachment_rec.media_id;
p_message_name => 'API_MISSING_UPDATE_TARGET',
p_token_name => 'INFO',
p_token_value => 'Fnd_Documents_Short_Text') ;
ROLLBACK TO UPDATE_Fnd_Attachment_PVT;
ROLLBACK TO UPDATE_Fnd_Attachment_PVT;
ROLLBACK TO UPDATE_Fnd_Attachment_PVT;
End Update_Fnd_Attachment;
PROCEDURE Delete_Fnd_Attachment(
p_api_version_number IN NUMBER,
p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
p_commit IN VARCHAR2 := FND_API.G_FALSE,
p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
x_return_status OUT NOCOPY VARCHAR2,
x_msg_count OUT NOCOPY NUMBER,
x_msg_data OUT NOCOPY VARCHAR2,
p_document_id IN NUMBER,
p_datatype_id IN NUMBER,
p_delete_attachment_ref_flag IN VARCHAR2
)
IS
L_API_NAME CONSTANT VARCHAR2(30) := 'Delete_Fnd_Attachment';
select media_id
from fnd_documents_tl
where document_id= p_document_id
and language = userenv('LANG');
select 1
from dual
where exists
(select 1
from fnd_documents_tl tl
,fnd_documents b
where b.document_id=tl.document_id
and tl.media_id = p_media_id
and b.datatype_id = p_datatype_id
and b.document_id <> p_document_id
);
SAVEPOINT DELETE_Fnd_Attachment_PVT;
AMS_UTILITY_PVT.debug_message( 'Private API: Calling delete table handler');
if so not deleting the lob/text but otherwise delete the content as well
*/
if (l_media_exists is null) then
/* Call FND API to delete everything */
l_use_fnd_api := true;
FND_DOCUMENTS_PKG.Delete_Row(
X_document_id => p_document_id,
X_datatype_id => p_datatype_id,
delete_ref_Flag => p_delete_attachment_ref_flag
);
delete from fnd_documents
where document_id=p_document_id;
delete from fnd_documents_tl
where document_id=p_document_id;
delete from fnd_attached_documents
where document_id=p_document_id;
FND_DOCUMENTS_PKG.Delete_Row(
X_document_id => p_document_id,
X_datatype_id => p_datatype_id,
delete_ref_Flag => p_delete_attachment_ref_flag
);
ROLLBACK TO DELETE_Fnd_Attachment_PVT;
ROLLBACK TO DELETE_Fnd_Attachment_PVT;
ROLLBACK TO DELETE_Fnd_Attachment_PVT;
End Delete_Fnd_Attachment;
SELECT *
FROM fnd_d
WHERE prompt_id = p_Fnd_Attachment_rec.prompt_id;
IF p_Fnd_Attachment_rec.last_update_date = FND_API.g_miss_date THEN
x_complete_rec.last_update_date := l_Fnd_Attachment_rec.last_update_date;
IF p_Fnd_Attachment_rec.last_updated_by = FND_API.g_miss_num THEN
x_complete_rec.last_updated_by := l_Fnd_Attachment_rec.last_updated_by;
IF p_Fnd_Attachment_rec.last_update_login = FND_API.g_miss_num THEN
x_complete_rec.last_update_login := l_Fnd_Attachment_rec.last_update_login;