получить значение имени переменной, хранящейся в SQL Sproc - PullRequest
1 голос
/ 14 января 2009

Это то, что я пытаюсь сделать

  
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

Ответы [ 3 ]

2 голосов
/ 21 ноября 2011

Это не очень элегантное решение вашей проблемы, но, по крайней мере, оно решает ее:)

 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
1 голос
/ 14 января 2009

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
0 голосов
/ 14 января 2009

Значение @ Num1 всегда будет «Привет». Причина в том, что вы сохраняете только строку в @ Var.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...