"sp_executesql" संग्रहीत खरीद एक स्ट्रिंग पैरामीटर @statement को निष्पादित करने की अपेक्षा करता है।
आपकी स्ट्रिंग यहां पूरी तरह से बेकार है ..... आपको यूनिकोड स्ट्रिंग बनाने के लिए किसी भी "निश्चित" स्ट्रिंग भागों को एन '......' के साथ उपसर्ग करने की आवश्यकता है, लेकिन यह निश्चित रूप से यहां ठीक से नहीं है।
मुझे लगता है कि आप इसे आजमाना चाहेंगे:
DECLARE @a INT
DECLARE @b VARCHAR(2)
SET @a = 1
DECLARE @statement NVARCHAR(500)
WHILE @a < 30
BEGIN
SET @b = CAST(@a AS VARCHAR(2))
SET @statement =
N'update source_temp set pmt_90_day = pmt_90_day + ' +
'convert(money, ''trans_total_' + @b + ''') ' +
'where convert(datetime, ''effective_date_' + @b + ''')' +
' <= DATEADD(DAY, 90, ORSA_CHARGE_OFF_DATE) ' +
'and DRC_FLAG_' + @b + ' = ''C'''
exec sp_executesql @statement
SET @a = @a + 1
END
क्या यह काम करता है और वही करता है जिसकी आप अपेक्षा करते हैं ??
स्पष्टीकरण:N'............' पूरे स्ट्रिंग को परिसीमित करता है जिसमें SQL कथन होता है। उसके अंदर किसी भी धर्मत्याग को दोहराया जाना चाहिए ("बच निकला")। मुझे आशा है कि मैं आपके तर्क को सही ढंग से समझ पाया हूँ।
मार्क