2009-01-14 6 views

Répondre

1

AFAIK, vous ne pouvez le faire directement; quelque chose de mal avec quelque chose comme:

SET @Var = SELECT CASE @Counter WHEN 1 THEN @Num1 ELSE @Num2 END 

Si vous avez beaucoup de valeurs, pensez à utiliser un #table (table temporaire) ou @table (variable de table) - à savoir

DECLARE @Data TABLE ([Key] int NOT NULL, [Value] varchar(50)) 

puis juste INSERT/UPDATE en @DATA

SELECT @Var = [Value] FROM @Data WHERE [Key] = @Counter 
-1

La valeur de @ Num1 sera toujours 'Bonjour'. La raison en est que vous stockez juste une chaîne dans @Var.

+0

On peut supposer que le vrai problème est un peu plus complexe – erikkallen

2

Ce n'est pas une solution très élégante à votre problème, mais au moins il résout :)

Declare @Var varchar(50) 
Declare @Num1 varchar(50) 
Declare @Num2 varchar(50) 
Declare @Counter smallint 
Declare @text varchar(50) 

Set @Counter=1 
Set @Num1='Hello' 
Set @Num2='Hi' 

while (@Counter<3) 
begin 
SET @text = 
    CASE @Counter 
      WHEN 1 THEN @Num1 
      WHEN 2 THEN @Num2 
    END 
Set @[email protected]+1 
print @text 
end 
Questions connexes