Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

sp_executesql क्वेरी चलाना पैरामीटर @ कथन की अपेक्षा करता है

"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 कथन होता है। उसके अंदर किसी भी धर्मत्याग को दोहराया जाना चाहिए ("बच निकला")। मुझे आशा है कि मैं आपके तर्क को सही ढंग से समझ पाया हूँ।

मार्क



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर प्रबंधन स्टूडियो (SSMS) में टेम्प्लेट का उपयोग कैसे करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 16

  2. ग्रुप बाय क्लॉज की सूची के अनुसार ग्रुप के लिए इस्तेमाल किए गए एक्सप्रेशन में एग्रीगेट या सबक्वेरी का इस्तेमाल नहीं किया जा सकता

  3. संग्रहीत कार्यविधि के परिणामों को पिवट करें?

  4. क्या डायनामिक एसक्यूएल का उपयोग किए बिना उपयोगकर्ता द्वारा निर्दिष्ट कॉलम नाम से पूछताछ करना संभव है?

  5. PIVOT क्वेरी एकाधिक जॉइनिंग