Dette virker faktisk ikke, da du ikke kan have kolonnenavnet i anførselstegn. Det, du i bund og grund gør, er at få SQL til at sammenligne to strenge, der altid vil være forskellige, hvilket betyder, at du aldrig vil udføre en opdatering.
Hvis du skal gøre det på denne måde, skal du have noget som...
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
Generelt vil jeg dog fraråde denne praksis. Jeg er ikke fan af, at dynamisk SQL genereres inde i en anden SQL-sætning til nogen form for produktionskode. Meget nyttigt til at udføre engangsudviklingsopgaver, men jeg kan ikke lide det for kode, der kunne blive eksekveret af en bruger.