Здесь есть просьба:Обновление с приоритетом
UPDATE TOP (1) InnerPortal.Feedback.QueueFeedback
SET Busy = 1, BusyBy = @uid
Output inserted.*
WHERE (
AccountCode = @account and
(Done is null or Done = 0) and
(Busy is NULL or Busy = 0) and
((DATEPART(hour, DATEADD(HOUR, Utc, @utcNow)) >= 9) and
(DATEPART(hour, DATEADD(HOUR, Utc, @utcNow)) <= 20))
)
Он получает первый основан «не занято» запись, где ключевое поле является AccountCode
.
Если запись не найдена, то ничего не возвращается.
Далее У меня есть упорядоченный список AccountCode
, и цель должна выпустить специальную логику:
Мне нужно создать что-то вроде цикла в этом запросе.
Он получит первый AccountCode
из списка и попробует обновить.
- если успех - он остановится и вернется
Output inserted.*
- Если обновление не было успешный запрос получит вторую запись из моего списка счетов и попытаться снова обновить.
Если цикл завершен и ничего не обновлено - Output inserted.*
ничего не возвращает (как сейчас).
Можно ли выпустить один запрос? Благодаря!
Какую базу данных и версии были вы используете? Пожалуйста, отметьте соответствующую версию базы данных, так как ответы могут различаться в зависимости от сервера базы данных (и ее версии), которую вы использовали. – Sathish
'• если успех - он остановится и вернется. Выход вставлен. *' И цикл должен остановиться здесь или продолжить? –
цикл должен быть остановлен – user2598575