web-dev-qa-db-ja.com

SQL CASEとローカル変数

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;

MS SQL 2008を使用しています。

12
GibboK

MSSQLを使用したこのシナリオでCASEを使用する2つの方法

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
22
Evil Pigeon

これを試して:

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

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

Print @Result;
3
anishMarokey

SQL Serverでは、次のように記述します。

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変数が指定されているため、CASE句には@Testがありません。

SQL Serverの CASE ドキュメントを参照してください。

2
Oded

ケース@テスト10

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

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

SQL Server 2005の場合

0