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

एक क्वेरी स्ट्रिंग के लिए चर घोषित करें

यह संभव है, लेकिन इसके लिए डायनेमिक SQL का उपयोग करना आवश्यक है। एसक्यूएल जारी रखने से पहले...

DECLARE @theDate varchar(60)
SET @theDate = '''2010-01-01'' AND ''2010-08-31 23:59:59'''

DECLARE @SQL VARCHAR(MAX)  
SET @SQL = 'SELECT AdministratorCode, 
                   SUM(Total) as theTotal, 
                   SUM(WOD.Quantity) as theQty, 
                   AVG(Total) as avgTotal, 
                  (SELECT SUM(tblWOD.Amount)
                     FROM tblWOD
                     JOIN tblWO on tblWOD.OrderID = tblWO.ID
                    WHERE tblWO.Approved = ''1''
                      AND tblWO.AdministratorCode = tblWO.AdministratorCode
                      AND tblWO.OrderDate BETWEEN '+ @theDate +')'

EXEC(@SQL)

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

  • एक आईएन क्लॉज के लिए अल्पविराम से अलग किए गए मानों की सूची का प्रतिनिधित्व करने के लिए एक एकल पैरामीटर
  • वैल्यू और SQL सिंटैक्स दोनों का प्रतिनिधित्व करने के लिए एक वैरिएबल (IE:आपके द्वारा प्रदान किया गया उदाहरण)

EXEC sp_executesql आपको बाइंड/तैयार स्टेटमेंट पैरामीटर का उपयोग करने की अनुमति देता है ताकि आपको 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. JDBC का उपयोग करके Microsoft SQL Server 2008 R2 में संग्रहीत प्रक्रिया में टेबल-वैल्यूड पैरामीटर्स (ऐरे-लाइक पैरामीटर) को कैसे पास करें?

  2. पंक्ति का चयन करें जिसका कॉलम अभिव्यक्ति मान मान्य है

  3. पता लगाएँ कि क्या तालिका SQL सर्वर (T-SQL) में विभाजित है

  4. एसएसआरएस में रिवर्स डेट सॉर्ट किए गए डेटा में पिछले () फ़ंक्शन का उपयोग?

  5. SQL सर्वर में डेटाटाइम फ़ील्ड का डिफ़ॉल्ट मान टाइमस्टैम्प में जोड़ें