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

但是不行
展开
 我来答
帐号已注销
2013-11-05 · 超过49用户采纳过TA的回答
知道答主
回答量:118
采纳率:100%
帮助的人:114万
展开全部
需要在动态语句内部定义该变量,而且这个变量不能再其他地方调用的;
这是因为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
橙子苹果梨呀Dc
2013-11-05 · 超过17用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:40.6万
展开全部
set @sqlstr='set @L' + cast(@count as varchar(1)) + '=' + @count
里边的@L_变量根本没定义过
怎么可能实现?

可以先定义 这样也不是很麻烦
declare @L1 int
declare @L2 int
declare @L3 int

set @L1=1
set @L2=@L1+1
set @L3=@L2+1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式