Я пытаюсь понять, как реализовать это в TSQL
do
update stuff set col = 'blah' where that_row = 'the right one'
select trash from stuff ...
until some_condition
Единственное предложение итеративного потока управления, предоставляемое Transact-SQL, - это while (condition) sentences
, который сначала оценивает условие, а если это условие истинно, то выполняет предложение.
Я думаю, что в сценарии, подобном выполнению инструкции UPDATE над таблицей, пока не будет выполнено какое-либо условие, при котором будет выполнено последнее выполненное UPDATE.
Самое главное, я ищу менее грязный подход к этой проблеме (дублирование UPDATE до WHILE не имеет для меня особого смысла, поскольку предложение UPDATE может быть произвольно длинным и сложным)
РЕДАКТИРОВАТЬ : Проблема, которую я пытаюсь решить, включает несколько операторов UPDATE под одной и той же таблицей, каждый из которых принимает и преобразовывает значения из предыдущих итераций. Это невозможно сделать только в одном большом операторе UPDATE, поскольку каждая строка будет оцениваться и обновляться только один раз, поэтому цикл - единственный способ выяснить, как этот беспорядок должен работать.