आप आउटपुट पैरामीटर के साथ sp_executesql का उपयोग कर सकते हैं।
declare @S nvarchar(max) = 'select @x = 1'
declare @xx int
set @xx = 0
exec sp_executesql @S, N'@x int out', @xx out
select @xx
परिणाम:
(No column name)
1
संपादित करें
मेरे नमूने में @S
आपके @template
. के बजाय है . जैसा कि आप देख सकते हैं कि मैं @x
. के लिए एक मान निर्दिष्ट करता हूं इसलिए आपको @template
. को संशोधित करने की आवश्यकता है इसलिए यह आंतरिक रूप से अल्पविराम से अलग की गई स्ट्रिंग को उस चर को निर्दिष्ट करता है जिसे आप अपने दूसरे तर्क में परिभाषित करते हैं sp_executesql
. मेरे नमूने में N'@x int out'
. आप शायद एक varchar(max)
. चाहते हैं आउटपुट पैरामीटर। कुछ इस तरह N'@Result varchar(max) out'
मास्टर से अल्पविराम से अलग स्ट्रिंग बनाने का एक और उदाहरण यहां दिया गया है..spt_values
declare @template nvarchar(max)
set @template =
'select @Result += cast(number as varchar(10))+'',''
from master..spt_values
where type = ''P''
'
declare @CommaString varchar(max)
set @CommaString = ''
exec sp_executesql @template, N'@Result varchar(max) out', @CommaString out
select @CommaString