Това всъщност няма да работи, тъй като не можете да поставите името на колоната в кавички. Това, което по същество правите, е да накарате SQL да сравнява два низа, които винаги ще бъдат различни, което означава, че никога няма да извършите актуализация.
Ако трябва да го направите по този начин, ще трябва да имате нещо като...
DECLARE @a INT
DECLARE @b VARCHAR
SET @a = 1
WHILE @a < 30
BEGIN
set @b = @a
exec sp_executesql N'UPDATE source set h = h + 'x_'[email protected] + N'
where y_'[email protected] + N' = ''Sold'''
SET @a = @a + 1
END
Като цяло обаче бих обезсърчил тази практика. Не съм фен на динамичния SQL, който се генерира в друг SQL израз за какъвто и да е производствен код. Много полезно за извършване на еднократни задачи за разработка, но не ми харесва за код, който може да бъде изпълнен от потребител.