Ini tidak akan benar-benar berfungsi, karena Anda tidak dapat memasukkan nama kolom dalam tanda kutip. Yang pada dasarnya Anda lakukan adalah membuat SQL membandingkan dua string yang akan selalu berbeda, artinya Anda tidak akan pernah melakukan pembaruan.
Jika Anda harus melakukannya dengan cara ini, Anda harus memiliki sesuatu seperti...
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
Namun, secara umum, saya tidak menganjurkan praktik ini. Saya bukan penggemar SQL dinamis yang dihasilkan di dalam pernyataan SQL lain untuk segala jenis kode produksi. Sangat berguna untuk melakukan tugas pengembangan satu kali, tetapi saya tidak menyukainya untuk kode yang dapat dieksekusi oleh pengguna.