CREATE OR ALTER PROCEDURE dif.get_request_to_cancel_not_confirmed_delivery

Процедура dif.getrequesttocancelnotconfirmeddelivery выбирает первую подходящую заявку на отмену слота доставки с определённым состоянием, обновляет её статус и возвращает данные.

Короткий ответ

Что ответить на собеседовании

Процедура dif.getrequesttocancelnotconfirmeddelivery выбирает первую подходящую заявку на отмену слота доставки с определённым состоянием, обновляет её статус и возвращает данные.

Подробный разбор

Ответ с пояснениями

Условие

CREATE OR ALTER PROCEDURE dif.get_request_to_cancel_not_confirmed_delivery AS BEGIN SET NOCOUNT ON;

declare
    @delivery_id bigint
    , @request_queue_id bigint
    , @request_id bigint
    , @contents varchar(max)

select top 1
    @delivery_id = od.delivery_id
    , @request_queue_id = null
    , @request_id = odr.request_id
    , @contents = cn.contents
from opsapi.request rq
join ops.contents cn
    on cn.contents_uid = rq.contents_uid
join dif.ops_delivery_request odr
    on odr.request_id = rq.request_id
join dif.ops_delivery od
    on od.delivery_id = odr.delivery_id
where 1 = 1
    and rq.state_code = 200
    and rq.scheme_name = 'исх:опс.лк.отмена.слота.ффд'
    and od.state_code = 257
order by rq.request_id

update opsapi.request set
    state_code = 202
    , state_name = opsapi.get_state_name(202)
    , state_note = null
    , state_datetime = getdate()
    , updated_at = getdate()
where request_id = @request_id

select @request_queue_id request_queue_id, @request_id request_id, @contents contents

END GO

Ответ

Процедура dif.get_request_to_cancel_not_confirmed_delivery выбирает первую подходящую заявку на отмену слота доставки с определённым состоянием, обновляет её статус и возвращает данные.

Она делает следующее:

  • Ищет первую заявку (request) с состоянием 200 и схемой 'исх:опс.лк.отмена.слота.ффд', у которой связанная доставка находится в состоянии 257.
  • Извлекает delivery_id, request_id и содержимое заявки.
  • Обновляет состояние заявки на 202, обновляет время и очищает заметки.
  • Возвращает request_queue_id (null), request_id и содержимое.

Это типичная процедура для обработки очереди запросов с обновлением их статусов и выборкой данных для дальнейшей обработки.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее