В вашем выражении update
нет положения where.
В более общем смысле для этого следует использовать одно предложение update
, а не курсор:
exec usp_Gent @valback OUTPUT;
update Terr set
Text = @valback
where
Text = 'RightT';
Если вы не usp_Gent
делаете то, что мне не хватает.
Причина, по которой вам нужно одно предложение вместо одного для каждой строки , заключается в том, что SQL лучше мыслит в наборах. Каждый update
имеет свои накладные расходы - он открывает транзакцию, записывает, что он делает, и затем фиксирует эту транзакцию. Это очень медленно, если вам приходится делать тысячи таких. То, что вы действительно хотите сделать, это просто обновить тысячи строк одновременно - это то, что базы данных делают с реляционной алгеброй, и они действительно, действительно хороши в этом. Думай по сетам, а не по порядку.