यह वास्तव में काम नहीं करेगा, क्योंकि आपके पास उद्धरणों में कॉलम नाम नहीं हो सकता है। आप जो अनिवार्य रूप से कर रहे हैं वह यह है कि 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 उत्पन्न होने का प्रशंसक नहीं हूं। एकबारगी विकास कार्यों को करने के लिए बहुत उपयोगी है, लेकिन मुझे यह कोड के लिए पसंद नहीं है जो एक उपयोगकर्ता द्वारा निष्पादित किया जा सकता है।