2011-05-27 5 views
7

में केस स्टेटमेंट में ब्रेक mssql में केस स्टेटमेंट में ब्रेक कमांड का उपयोग करना संभव है?टी-एसक्यूएल

क्योंकि स्थिति को सत्यापित किया गया है कि अभिव्यक्ति GO, अगले CASE के संक्रमण को करने के बजाय अभिव्यक्ति है। ssip_miktar 5, ssip_teslim_miktar 0 और S74MIKTAR यह आवश्यक नहीं है 5

update set ssip_teslim_miktar= ssip_teslim_miktar+ 
CASE WHEN ssip_miktar<@S74MIKTAR AND ssip_teslim_miktar=0 THEN @S74MIKTAR-ssip_miktar 
WHEN ssip_miktar<@S74MIKTAR AND ssip_teslim_miktar>0 THEN @S74MIKTAR-(ssip_miktar+ssip_teslim_miktar) 
WHEN [email protected] AND ssip_teslim_miktar=0 THEN @S74MIKTAR 
WHEN [email protected] AND ssip_teslim_miktar>0 THEN @S74MIKTAR-ssip_teslim_miktar 
WHEN ssip_miktar>@S74MIKTAR AND ssip_teslim_miktar=0 THEN @S74MIKTAR 
WHEN ssip_miktar>@S74MIKTAR AND ssip_teslim_miktar>0 THEN @S74MIKTAR 
END, 
@[email protected] 
     WHEN ssip_miktar<@S74MIKTAR AND ssip_teslim_miktar=0 THEN @S74MIKTAR-ssip_miktar 
     WHEN ssip_miktar<@S74MIKTAR AND ssip_teslim_miktar>0 THEN @S74MIKTAR-(ssip_miktar+ssip_teslim_miktar) 
     WHEN [email protected] AND ssip_teslim_miktar=0 THEN @S74MIKTAR 
     WHEN [email protected] AND ssip_teslim_miktar>0 THEN @S74MIKTAR-ssip_teslim_miktar 
     WHEN ssip_miktar>@S74MIKTAR AND ssip_teslim_miktar=0 THEN @S74MIKTAR 
     WHEN ssip_miktar>@S74MIKTAR AND ssip_teslim_miktar>0 THEN @S74MIKTAR 
        ELSE 0 
     END 
where ssip_teslim_miktar<ssip_miktar 
+0

कृपया फ़ॉलो करें .. मैंने अपना कोड टिप्पणी के रूप में लिखा है। – esquare

+0

आपको क्या आउटपुट मिल रहा है? –

उत्तर

4

है। THEN प्रभावी रूप से वापसी या ब्रेक के रूप में कार्य करता है, इसलिए कथन संक्षिप्त-सर्किट होता है।

+0

क्या आप निश्चित हैं? मैंने कोशिश की लेकिन यह नहीं है। – esquare

+4

शायद अगर आपने उपरोक्त प्रश्न में कोड पोस्ट किया है? –

+0

सेट ssip_teslim_miktar = ssip_teslim_miktar + मामला है जब ssip_miktar <@ S74MIKTAR और 0 ssip_teslim_miktar = तब @ S74MIKTAR-ssip_miktar जब ssip_miktar <@ S74MIKTAR और 0 ssip_teslim_miktar> तब @ S74MIKTAR- (ssip_miktar + ssip_teslim_miktar) जब ssip_miktar = @ S74MIKTAR और ssip_teslim_miktar = 0 तब @ S74MIKTAR जब ssip_miktar = @ S74MIKTAR और 0 ssip_teslim_miktar> तब @ S74MIKTAR-ssip_teslim_miktar जब ssip_miktar> @ S74MIKTAR और 0 ssip_teslim_miktar = तब @ S74MIKTAR जब ssip_miktar> @ S74MIKTAR और 0 ssip_teslim_miktar> तब @ S74MIKTAR जहां ssip_teslim_miktar esquare

5

यह लेनदेन एसक्यूएल है और यह पुनरावृत्त नहीं है। इसे ब्रेक की आवश्यकता नहीं होती है क्योंकि जब/अन्य खंडों में से केवल एक ही विकसित किया जाएगा।

निम्नलिखित का प्रयास करें:

declare @test int 
set @test=1 
select @test = @test + 
    case 
     when 1=1 then 1 
     when 2=2 then 1 
     when 3=3 then 1 
     when 4=4 then 1 
     when 5=5 then 1 
     when 6=6 then 1 
     when 7=7 then 1 
     when 8=8 then 1 
     else 1 
     end 
select @test 

@test ही कभी 2

+0

क्या आपका मतलब "नहीं" था? –

+0

@ फिल। धन्यवाद। तदनुसार संपादित करें। –

8

आप क्योंकि एसक्यूएल मामला बयानों के माध्यम से गिर नहीं है एक break उपयोग करने की आवश्यकता नहीं मानना ​​चाहिए।

DECLARE @x int 

SET @x = 0 

SELECT CASE 
    WHEN @x = 0 THEN 'zero'  -- Only this line of the expression is evaluated 
    WHEN @x <> 0 THEN 'not-zero' 
    END 
संबंधित मुद्दे