To ve skutečnosti nebude fungovat, protože nemůžete mít název sloupce v uvozovkách. V podstatě děláte to, že SQL porovnává dva řetězce, které se budou vždy lišit, což znamená, že nikdy neprovedete aktualizaci.
Pokud to musíte udělat tímto způsobem, museli byste mít něco jako...
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
Obecně bych však tuto praxi odrazoval. Nejsem fanouškem dynamického SQL generovaného v jiném SQL příkazu pro jakýkoli druh produkčního kódu. Velmi užitečné pro provádění jednorázových vývojových úkolů, ale nelíbí se mi to pro kód, který by mohl spustit uživatel.