Это то, что я пытаюсь сделать
Declare @Var varchar(50)
Declare @Num1 varchar(50)
Declare @Num2 varchar(50)
Declare @Counter smallint
Set @Counter=1
Set @Num1='Hello'
Set @Num2='Hi'
while (@Counter<2)
begin
Set @Var=N'@Num'+convert(varchar,@Counter)
//Now I want to get the value of '@Num1' that is stored in @Var when @Counter=1
//Help Needed
Set @Counter=@Counter+1
end





AFAIK, вы не можете сделать это напрямую; что-то не так с чем-то вроде:
SET @Var = SELECT CASE @Counter WHEN 1 THEN @Num1 ELSE @Num2 END
Если у вас много значений, рассмотрите возможность использования #table (временная таблица) или @table (табличная переменная), т.е.
DECLARE @Data TABLE ([Key] int NOT NULL, [Value] varchar(50))
затем просто INSERT / UPDATE в @DATA
SELECT @Var = [Value] FROM @Data WHERE [Key] = @Counter
Значение @ Num1 всегда будет «Hello». Причина в том, что вы сохраняете в @Var только строку.
Это не очень изящное решение вашей проблемы, но, по крайней мере, оно решает :)
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 @Counter=@Counter+1
print @text
end
Предположительно настоящая проблема немного сложнее