Cela ne fonctionnera pas réellement, car vous ne pouvez pas mettre le nom de la colonne entre guillemets. Ce que vous faites essentiellement, c'est que SQL compare deux chaînes qui seront toujours différentes, ce qui signifie que vous n'effectuerez jamais de mise à jour.
Si vous devez le faire de cette façon, vous devez avoir quelque chose comme...
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
En général, cependant, je déconseille cette pratique. Je ne suis pas fan du SQL dynamique généré dans une autre instruction SQL pour tout type de code de production. Très utile pour effectuer des tâches de développement ponctuelles, mais je n'aime pas ça pour du code qui pourrait être exécuté par un utilisateur.