sql server中如何为一个不确定的变量赋值
比如:declare@L1int,@L2int,@L3int,@L4int,@L5int,。。。。。。我想根据参数只一次性为上面变量中赋值,为@L1赋1,@L2赋2,@L...
比如:
declare @L1 int,@L2 int,@L3 int,@L4 int,@L5 int,。。。。。。
我想根据参数只一次性为上面变量中赋值,为@L1赋1,@L2赋2,@L3赋3。。。。。。
本来打算这样:
declare @sqlstr varchar(1000)
declare @count int
set @count=1
while @count<50
begin
set @sqlstr='set @L' + cast(@count as varchar(1)) + '=' + @count
exec (@sqlstr)
set @count=@count+1
end
但是不行 展开
declare @L1 int,@L2 int,@L3 int,@L4 int,@L5 int,。。。。。。
我想根据参数只一次性为上面变量中赋值,为@L1赋1,@L2赋2,@L3赋3。。。。。。
本来打算这样:
declare @sqlstr varchar(1000)
declare @count int
set @count=1
while @count<50
begin
set @sqlstr='set @L' + cast(@count as varchar(1)) + '=' + @count
exec (@sqlstr)
set @count=@count+1
end
但是不行 展开
2个回答
展开全部
需要在动态语句内部定义该变量,而且这个变量不能再其他地方调用的;
这是因为SQL在执行动态语句时,是临时生成执行计划的
declare @c int
set @c=1
while @c<50
begin
ecec('declare @l'+@c+' int set @l'+@c+' ='+@c +' print @l'+@c)
set @c=@c+1
end
这是因为SQL在执行动态语句时,是临时生成执行计划的
declare @c int
set @c=1
while @c<50
begin
ecec('declare @l'+@c+' int set @l'+@c+' ='+@c +' print @l'+@c)
set @c=@c+1
end
追问
嗯,我也是和你一样的思路,但是这些被赋值的变量只能在动态sql语句里用,外边的批处理用不了
追答
有了可以使用下面的代码
declare @sql nvarchar(100),@parminfo nvarchar(100) @l1 int ,@l2 int
set @sql='set @m=@i'--要执行的动态语句
set @parminfo=' @m int output,@i int'--动态语句中出现的参数
exec sp_executesql @sql,@parminfo,@i=@k,@m=@l1 output--从第3个参数开始,是对动态语句中出现的参数进行赋值,
print @l1
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询