2012-02-03 11 views
32

मैं ऐसा करना चाहते हैं:एक चयन कथन में दो स्केलर चर सेट करना?

Declare @a int; 
Declare @b int; 

SET @a,@b = (SELECT StartNum,EndNum FROM Users Where UserId = '1223') 

PRINT @a 
PRINT @b 

लेकिन इस अवैध वाक्य रचना है। मैं एक चयन कथन में एकाधिक स्केलर चर सेट कैसे करूं? मैं कर सकता हूं:

Declare @a int; 
Declare @b int; 

SET @a = (SELECT StartNum FROM Users Where UserId = '1223') 
SET @b = (SELECT EndNum FROM Users Where UserId = '1223') 

PRINT @a 
PRINT @b 

लेकिन इसमें दो गुना अधिक समय लगेगा। सबसे तेज़ तरीका क्या है?

उत्तर

68
DECLARE @a int; 
DECLARE @b int; 

SELECT @a = StartNum, @b = EndNum 
FROM Users 
WHERE UserId = '1223' 
+0

अच्छा है, धन्यवाद। मुझे एसक्यूएल के सिंटैक्स को काम करने में परेशानी है। ऐसे कई कीवर्ड और संरचनाएं हैं जिनका उपयोग कई अप्रत्याशित तरीकों से किया जा सकता है। – Oliver

+0

@ ओलिवर आपको वोट देना चाहिए और उत्तर में से एक को स्वीकार करना चाहिए :) –

+0

@ एएफ। माफ़ कीजिये! मैं विचलित हो गया और 12 मिनट की स्वीकृति सीमा समाप्त होने पर वापस जांचना भूल गया। – Oliver

10

इसे इस तरह कार्य करें:

Declare @a int; 
Declare @b int; 

SELECT @a=StartNum,@b=EndNum FROM Users Where UserId = '1223' 

PRINT @a 
PRINT @b 
1

आप एक संग्रहीत प्रक्रिया में यह कर रहे हैं और आप में शब्द का उपयोग करने की आवश्यकता होगी एक निर्गम resultset में चयन का परिणाम नहीं करना चाहते हैं ।

Declare @a int; 
Declare @b int; 

SELECT StartNum, EndNum 
FROM Users 
Where UserId = '1223' 
INTO @a, @b; 

यह भी इस तरह इस्तेमाल किया जा सकता:

SELECT StartNum, EndNum 
INTO @a, @b 
FROM Users 
Where UserId = '1223'; 
संबंधित मुद्दे