Code-review процедуры "Перевод платежа в ошибку"
Всем привет!
Задача в формате код-ревью 👍
Джун отправил код. Процедура в пакете - перевод платежа в статус "ошибка".
Пропустите ли вы такой код? Если нет, то почему? Есть ли в нем проблемы? Какие рекомендации дадите разработчику?
procedure fail_payment(p_payment_id payment.payment_id%type
,p_reason payment.status_change_reason%type)
is
v_status payment.status%type;
e_status_is_not_active exception;
begin
select status
into v_status
from payment
where payment_id = p_payment_id;
if v_status != c_active then
raise e_status_is_not_active;
end if;
update payment
set status = c_error
,status_change_reason = p_reason
where payment_id = p_payment_id;
exception
when e_status_is_not_active then
raise_application_error(c_err_code_status_is_not_active, 'Платеж не активный');
when no_data_found then
raise_application_error(c_err_code_payment_is_not_found, 'Платеж не найден');
end;
/
Уточнения (на самом деле, не сильно влияет на анализ задачи):
1️⃣ Константы определены в спецификации:
c_active constant payment.status%type := 0; — платеж активный
c_error constant payment.status%type := 2; — платеж в ошибке
c_err_code_status_is_not_active constant number(10) := -20101;
c_err_code_payment_is_not_found constant number(10) := -20102;
2️⃣ Определение таблицы можно посмотреть здесь.
3️⃣ Многосессионная среда, есть конкуренция за данные.
——-
Обсудить в нашем ламповом чатике.
Анализ, как всегда, в четверг 🎓
Для тех кто хочет подтянуться свои знания в PL/SQL, портал возможностей откроется с 13.01 - 8й поток курса Основы PL/SQL. Записывайтесь, пока еще, есть несколько мест 🔥
#задача
Oracle Developer