2011-01-10 12 views
34

का उपयोग कर एसक्यूएल संग्रहीत प्रक्रिया सेट वैरिएबल मेरे पास एकाधिक चर के साथ SQL सर्वर 2005 में संग्रहीत प्रक्रिया है और मैं एक चयन कथन का उपयोग करके इन चर के मान सेट करना चाहता हूं। सभी तीन चर एक ही टेबल से आते हैं और वर्तमान में नीचे दिखाए गए तरीके के बजाय एक चयन कथन का उपयोग करके उन्हें सेट करने का एक तरीका होना चाहिए। कृपया इसे समझने में मेरी मदद करें।एसक्यूएल

DECLARE @currentTerm nvarchar(max) 

DECLARE @termID int 

DECLARE @endDate datetime 

SET @currentTerm = 
(
    Select CurrentTerm from table1 where IsCurrent = 1 
) 

SET @termID = 
(
    Select TermID from table1 where IsCurrent = 1 
) 

SET @endDate = 
(
    Select EndDate from table1 where IsCurrent = 1 
) 

उत्तर

66
select @currentTerm = CurrentTerm, @termID = TermID, @endDate = EndDate 
    from table1 
    where IsCurrent = 1 
+0

मैं इसी तरह के बयान लिख दिया गया है। इस के साथ मेरे बयान की तुलना में, मुझे एक चर के रूप में @currentTerm = CurrentTerm प्राप्त हो रहा है और लौटाया गया मूल्य शून्य है। कोई सुझाव? – srbhattarai

12

आपके वर्तमान दृष्टिकोण का एक लाभ यह है कि यदि भविष्य में एकाधिक पंक्तियां वापस आती हैं तो यह एक त्रुटि उत्पन्न करेगा। पुन: पेश करने के लिए आप इसका उपयोग कर सकते हैं।

SELECT @currentTerm = currentterm, 
     @termID = termid, 
     @endDate = enddate 
FROM table1 
WHERE iscurrent = 1 

IF(@@ROWCOUNT <> 1) 
    BEGIN 
     RAISERROR ('Unexpected number of matching rows', 
       16, 
       1) 

     RETURN 
    END