2010-08-04 11 views
8

मैं जानना चाहता हूं कि मैं SQL में CASE कथन में स्थानीय चर का उपयोग कैसे कर सकता हूं?एसक्यूएल केस और स्थानीय चर

यह स्क्रिप्ट मुझे एक त्रुटि देता है:

DECLARE @Test int; 
    DECLARE @Result char(10); 
    SET @Test = 10; 

    CASE @Test 
    WHEN @Test = 10 
    THEN SET @Result='OK test' 
    END 
    Print @Result; 

मैं एमएस एसक्यूएल 2008

+0

आप किस डेटाबेस का उपयोग कर रहे हैं? – Oded

+0

एमएस एसक्यूएल 2008 एमएस एसक्यूएल 2008 – GibboK

+0

क्या उन्होंने नाम के "सर्वर" भाग को छोड़ दिया? ;- पी –

उत्तर

19

MSSQL

DECLARE 
    @test int, 
    @result char(10) 

SET @test = 10 

SET @result = CASE @test 
    WHEN 10 THEN 
     'OK test' 
    ELSE 
     'Test is not OK' 
END 

PRINT @result; 

SET @result = CASE 
    WHEN @test = 10 THEN 
     'OK test' 
    ELSE 
     'Test is not OK' 
END 

PRINT @result 
1

का उपयोग एसक्यूएल सर्वर में मैं इसे इस तरह लिखना होगा:

DECLARE @Test int; 
DECLARE @Result char(10); 
SET @Test = 10; 

SET @Result = CASE @Test 
WHEN 10 
THEN 'OK test' 
END 
Print @Result; 

WHEN खंड नहीं है @Test = 10 है, @Test चर CASE खंड में कहा गया है।

SQL सर्वर के लिए CASE दस्तावेज़ देखें।

+0

यह मेरे एसक्यूएल 2005 डीबी में काम नहीं करता है। (कीवर्ड 'केस' के पास गलत वाक्यविन्यास)। (मेरे पास एक ही समाधान था, लेकिन यह काम नहीं किया)। – Tobiasopdenbrouw

+0

यह त्रुटियों को देता है – GibboK

+0

यहां वाक्यविन्यास गलत है। आप एक कथन कथन की तरह केस स्टेटमेंट का उपयोग नहीं कर सकते हैं। –

0

मामला @Test जब 10 तब

0
DECLARE @Test int; 
SET @Test = 10; 

SELECT 
CASE @Test 
WHEN 10 
THEN 'OK test' 
END 

साथ इस परिदृश्य में मामला उपयोग करने के लिए SQL सर्वर 2005

+0

anishmarokey का जवाब थोड़ा क्लीनर है क्योंकि यह आपके @result चर को बरकरार रखता है। – Tobiasopdenbrouw

2

इस कोशिश के दो तरीके:

DECLARE @Test int; 
DECLARE @Result char(10); 
SET @Test = 10; 

select @Result= 
CASE @Test 
WHEN 10 THEN 'OK test' 
END 

Print @Result; 
संबंधित मुद्दे