Обложка канала

Oracle Developer👨🏻‍💻

Все о разработке в СУБД "Oracle" SQL, PL/SQL, оптимизация, архитектура, сертификации и многое другое.

Oracle Developer👨🏻‍💻

4 года назад
Открыть в
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