2015-01-02 6 views
6

में एक चर में सेट करें मुझे एक वैरिएबल में एक गतिशील एसक्यूएल क्वेरी परिणाम सेट करना होगा। मेरे एसक्यूएल क्वेरी है:EXQUTE SP_executesql परिणाम एसक्यूएल

DECLARE @ResultString NVARCHAR(MAX) 
DECLARE @Qry NVARCHAR(MAX) 

SET @Qry='SELECT Test FROM MTest22Dec WHERE ID = 1'  
EXECUTE sp_executesql @Qry, N'@Result NVARCHAR(MAX) OUTPUT', @[email protected] OUTPUT 
PRINT @ResultString 

लेकिन @ResultString रिक्त स्ट्रिंग प्रिंट कर रहा है हालांकि वहां डेटाबेस तालिका में रिकार्ड है।

इस प्रश्न में क्या गलत है?

धन्यवाद

उत्तर

2

आपको आउटपुट चर कहीं कहीं सेट करना होगा, उदाहरण के लिए।

SET @Qry='SELECT @Result = Test FROM MTest22Dec WHERE ID = 1' 
+0

और चूंकि '@ Qry' एक' NVARCHAR' चर रहा है, तो आप वास्तव में ** ** का उपयोग करना चाहिए 'एन यह स्पष्ट करने के लिए उपसर्ग: 'SET @Qry = N'SELECT @Result = MTest22Dec से परीक्षण जहां आईडी = 1'' –

3

आप Dynamic statement अंदर variable करने के लिए चयन का परिणाम सौंपने होंगे।

इस तरह की क्वेरी को बदलें।

DECLARE @Result NVARCHAR(MAX) 
DECLARE @Qry NVARCHAR(MAX) 

SET @Qry='SELECT @Result = Test FROM MTest22Dec WHERE ID = 1' 

EXECUTE Sp_executesql @Qry, N'@Result NVARCHAR(MAX) OUTPUT', @Result OUTPUT 

PRINT @Result 
1

इस प्रयास करें:

DECLARE @ResultString NVARCHAR(MAX) 
DECLARE @Qry NVARCHAR(MAX) 

SET @Qry='SELECT @ResultString = Test FROM MTest22Dec WHERE ID = 1'  
EXECUTE sp_executesql @Qry, N'@ResultString NVARCHAR(MAX) OUTPUT', @ResultString OUTPUT 
PRINT @ResultString 
0

आज़माएं:

Declare @Query NVARCHAR(100) 
Declare @ResultString varchar(50) 

set @Query =N'select @ResultString=Test from dbo.MTest22Dec where id = @id' 

exec sp_executesql @Query, N'@id int,@ResultString varchar(20) output', 
@id = 1,@[email protected] output 

print @ResultString 
+0

मैं सुझाव दूंगा कि आप कोड के चारों ओर कुछ टिप्पणी जोड़ें, और कोड को कोड के रूप में प्रारूपित करें। (संपादक में बटन है जो आपके टेक्स्ट को उत्तर में कोड के रूप में चिह्नित करता है) –

+0

आप यह कोड जो आपकी मदद करेगा – AnantharajG

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