【问题标题】:get the value of variable name stored in SQL Sproc获取存储在 SQL Sproc 中的变量名的值
【发布时间】:2009-01-14 07:20:21
【问题描述】:
这就是我想做的事情
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
【问题讨论】:
标签:
sql-server
tsql
stored-procedures
【解决方案1】:
这不是解决您的问题的一个非常优雅的解决方案,但至少它解决了它:)
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
【解决方案2】:
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
【解决方案3】:
@Num1 的值将始终为“Hello”。
原因是您只是将一个字符串存储到@Var。