SQL CASE et variables locales

Je voudrais savoir comment je peux utiliser des variables locales dans les instructions CASE en SQL?

Ce script me donne une erreur:

  DECLARE @Test int; DECLARE @Result char(10); SET @Test = 10; CASE @Test WHEN @Test = 10 THEN SET @Result='OK test' END Print @Result; 

J'utilise MS SQL 2008.

Deux façons d'utiliser CASE dans ce scénario avec 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 

essaye ça:

 DECLARE @Test int; DECLARE @Result char(10); SET @Test = 10; select @Result= CASE @Test WHEN 10 THEN 'OK test' END Print @Result; 

CASE @Test QUAND 10 ALORS

 DECLARE @Test int; SET @Test = 10; SELECT CASE @Test WHEN 10 THEN 'OK test' END 

Pour le server SQL 2005

Dans SQL Server, je l'écrirais comme ceci:

 DECLARE @Test int; DECLARE @Result char(10); SET @Test = 10; SET @Result = CASE @Test WHEN 10 THEN 'OK test' END Print @Result; 

La clause WHEN n'a pas @Test = 10 , car la variable @Test est indiquée dans la clause CASE .

Voir la documentation CASE pour SQL Server.