2013-11-26 5 views
14

में एक चर सेट करें क्या किसी केस स्टेटमेंट में चर सेट करना संभव है? मेरा कोड काम नहीं करता है। सबको शुक्रीया।SQL सर्वर: CASE कथन

CREATE PROCEDURE spReport 
@q1 INT, 
@q2 INT 
AS 
BEGIN 

-- Dates for the 2 different quarters to be viewed 
DECLARE @StartDateQ1 DATETIME 
DECLARE @EndDateQ1 DATETIME 
DECLARE @StartDateQ2 DATETIME 
DECLARE @EndDateQ2 DATETIME 

SELECT 
CASE @q1 
    WHEN 1 THEN SET @StartDateQ1 = '20130401' 
END 
+2

T-SQL में, 'CASE' एक ** अभिव्यक्ति है ** एक मान देता है कि - आप अपने' मामले में कोड ब्लॉक नहीं हो सकता 'बयान मार्टिन के जवाब को उस से निपटने का तरीका देखें। –

उत्तर

32

आप

SET @StartDateQ1 = CASE @q1 
        WHEN 1 THEN '20130401' 
        END 

का प्रयोग कर एक CASE अभिव्यक्ति के अनुसार एक भी चर के मूल्य निर्धारित करने के लिए कर सकते हैं।

यदि आपका असली तर्क अधिक जटिल है (उदा। किसी शर्त के अंदर एकाधिक चर सेट करने की आवश्यकता है) तो इसके बजाय IF ... ELSE देखें।

CASE एक अभिव्यक्ति नियंत्रण संरचना का प्रवाह नहीं है।

+0

आप स्मार्ट हैं और यह काम किया। शुभ दिवस गुरूजी। – Chris

0

यहाँ एक IF कथन का उपयोग इस हल करने के लिए एक और तरीका है:

IF @q1 = 1 
BEGIN 
    SET @StartDateQ1 = '20130401' 
END