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

SQL सर्वर संग्रहीत कार्यविधि में एक डायनेमिक जहाँ क्लॉज़ बनाना

कम से कम एक समस्या:आपको अपने स्ट्रिंग मान को सिंगल कोट्स से घेरना चाहिए, और एक स्ट्रिंग के अंदर से बचने के लिए आपको उन्हें दोगुना करना होगा:

WHERE ' + @pi_colName + ' = ''' + @pi_colValue + ''' AND ...

आप अपने @sql चर को 100 वर्णों से बड़ा घोषित करना चाह सकते हैं! ऐसा लगता है कि आपका तार छोटा हो रहा है।

यदि @pi_colName के लिए संभावित मान सीमित हैं, डेटा प्रकार हमेशा स्ट्रिंग है, और कॉलम संयोजन संगत हैं, तो आप ऐसा कुछ कर सकते हैं और गतिशील SQL से बच सकते हैं:

SELECT ...
WHERE CASE @pi_colName 
  WHEN 'col1' THEN col1
  WHEN 'col2' THEN col2
END = @pi_ColValue;



  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 सर्वर 2016 SP1 में मेमोरी लिमिट

  2. मैं संग्रहीत प्रक्रिया में पैरामीटर के रूप में सूची कैसे पास करूं?

  3. वर्चर के रूप में संग्रहीत तिथियों की तुलना करना

  4. SQL सर्वर से पासवर्ड कैसे डिक्रिप्ट करें?

  5. विंडोज़ प्रमाणीकरण का उपयोग कर SQL सर्वर से कनेक्ट करना