У меня есть функция, которая принимает несколько аргументов, после чего будет выполнен запрос на удаление. Сразу после этого я вызываю другую функцию, которая обновит таблицу с отметкой времени и идентификатором пользователя. Код, который я использую, выглядит следующим образом:
remote function deleteComment(required string storeID, required string recID) returnFormat="JSON" {
local.fnResults = structNew();
local.runProcess = true;
try {
if ( !len(arguments.recID) ) {
local.runProcess = false;
local.fnResults = {status: 400, message: "Error! Incomplete or invalid data."};
}
if ( runProcess ) {
local.qryParams = {rec_id: {cfsqltype: "cf_sql_numeric", value: "#arguments.recID#"}};
local.deleteSQL = "DELETE FROM Articles WHERE rec_id = :rec_id";
queryExecute(deleteSQL, qryParams, {datasource: "#application.datasource#", result: "deleteResult"});
local.updateResult = updateProfile(arguments.agencyID);
if ( deleteResult.recordcount && updateResult.recordcount ) {
local.fnResults = {status: 200, message: "Record successfully removed."};
} else {
local.fnResults = {status: 400, message: "Error! Query failed."};
}
}
} catch ( any e) {
local.fnResults = {status: 400, message: "Error! Please contact your administrator"};
}
return fnResults;
}
Вот пример функции updateProfile
:
public struct function updateAgencyProfile(required string storeID) {
try {
local.qryParams = {
storeID: {cfsqltype: "cf_sql_numeric", value: "#arguments.storeID#"},
user_id: client.userid
};
local.Profile_SQL = "
UPDATE profile
SET last_update = getDate(),
user_id = :user_id
WHERE store_id = :storeID
";
queryExecute(Profile_SQL, qryParams, {datasource: "#application.datasource#", result: "updateResult"});
return updateResult;
} catch ( any e) {
return {status: 400};
}
}
Как вы можете видеть в моем примере выше, запрос на удаление выполняется первым и сразу после того, как я вызываю публичную функцию updateProfile
, которая обновит таблицу профиля и вернет результат запроса. Я использовал этот блок кода, чтобы проверить, успешно ли выполнены оба запроса:
if ( deleteResult.recordcount && updateResult.recordcount ) {
local.fnResults = {status: 200, message: "Record successfully removed."};
} else {
local.fnResults = {status: 400, message: "Error! Query failed."};
}
Мне интересно, если это необходимо, или я могу позволить попробовать блок catch для обнаружения каких-либо ошибок в этой функции? Кроме того, это хорошо подходит для хранимой процедуры? У меня есть другие функции, которые нужно будет вызвать updateProfile
, чтобы обновить записи. Если у вас есть какие-либо вопросы, пожалуйста, дайте мне знать.