Процедура dif.getrequesttocancelnotconfirmeddelivery выбирает первую подходящую заявку на отмену слота доставки с определённым состоянием, обновляет её статус и возвращает данные.
CREATE OR ALTER PROCEDURE dif.get_request_to_cancel_not_confirmed_delivery
Процедура 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и содержимое.
Это типичная процедура для обработки очереди запросов с обновлением их статусов и выборкой данных для дальнейшей обработки.