2012-05-28 15 views
12
DECLARE @query as varchar(200); 
SET @query = 'SELECT COUNT(*) FROM table'; 

मैं @query कैसे निष्पादित कर सकता हूं, और इसके अतिरिक्त, चर निर्दिष्ट करते समय क्वेरी परिणाम को सीधे संग्रहीत करने का कोई तरीका है?टीएसक्यूएल - एक चर के रूप में एक क्वेरी निष्पादित करने के लिए कैसे?

उत्तर

23

स्केलर परिणाम पुनर्प्राप्त करने के लिए आप पैरामीटर के साथ sp_executesql का उपयोग कर सकते हैं।

DECLARE @query as nvarchar(200), @count int; 
SET @query = N'SELECT @count = COUNT(*) FROM table'; 

EXEC sp_executesql @query, 
        N'@count int OUTPUT', 
        @count = @count OUTPUT 

SELECT @count AS [@count] 
+0

धन्यवाद, सुनिश्चित नहीं है कि मैं संसाधित कोड को समझता हूं, क्या यह क्वेरी परिणाम को गिनती चर में आउटपुट करता है, OUTPUT द्वारा? – Malyo

+1

@Malyo - यह बाहरी दायरे में एक चर '@ गिनती' घोषित करता है। यह 'sp_executesql' कॉल में आउटपुट पैरामीटर के रूप में पारित हो जाता है जिसका अर्थ है कि आउटपुट पैरामीटर को असाइनमेंट उस चर के लिए प्रचारित किया जाता है। 'OUTPUT' पैरामीटर के बारे में अधिक जानकारी के लिए [टीएसक्यूएल बेसिक्स II - पैरामीटर पासिंग सेमेन्टिक्स] देखें (http://blogs.msdn.com/b/sqlprogrammability/archive/2006/06/09/624531.aspx)। –

9

आप इस तरह यह कर सकते हैं:

exec (@query) 

या, अधिमानतः, इस तरह:

execute sp_executesql @query 

अधिक जानकारी के लिए, this MSDN article की जाँच करें।

संबंधित मुद्दे