日期:2014-05-17  浏览次数:20500 次

用变量代替id1,id2,---,idn
输入函数@id1,@id2,@id3
想用一个变量名代替

while @n<=3
begin
set @sql='select @id'+@n
exec(@sql)
end

不知道怎样能够通过循环实现
select @id1
select @id2
select @id3
的功能,exec(@sql)不能够执行,请教有什么办法?谢谢啦!
------最佳解决方案--------------------

while @n<=3
begin
set @sql='select '+ltrim(@id)+ltrim(@n)
exec(@sql)
end

------其他解决方案--------------------
while @n<=3
 begin
 set @sql=@sql+'select @id'+@n+';'
 end
 exec(@sql)
------其他解决方案--------------------
declare @campaign1 varchar(3),@campaign2 varchar(3),@id int,@n varchar(1),@sql varchar(100),@campaign varchar(10)
set @campaign1='T2m'
set @campaign2='T3m'
set @id=1
set @campaign='@campaign'

while @id<=3 
begin
set @n=@id
set @sql='select @campaign='+ltrim(@campaign)+ltrim(@n)
exec(@sql) 
set @id=@id+1
end

消息 137,级别 15,状态 2,第 1 行
必须声明标量变量 "@campaign1"。
消息 137,级别 15,状态 2,第 1 行
必须声明标量变量 "@campaign2"。
消息 137,级别 15,状态 2,第 1 行
必须声明标量变量 "@campaign3"。

------其他解决方案--------------------
引用:
declare @campaign1 varchar(3),@campaign2 varchar(3),@id int,@n varchar(1),@sql varchar(100),@campaign varchar(10)
set @campaign1='T2m'
set @campaign2='T3m'
set @id=1
set @campaign='@c……


动态的时候需要把变量声明部分放在拼接语句中