比如:
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
但是不行
sql server中如何为一个不确定的变量赋值
关注:53 答案:2 手机版
解决时间 2021-01-16 15:10
- 提问者网友: 侑點尐悲伤
- 2021-01-15 23:25
最佳答案
- 二级知识专家网友:可爱暴击
- 2021-01-16 00:23
需要在动态语句内部定义该变量,而且这个变量不能再其他地方调用的;
这是因为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
全部回答
- 1楼网友:俄終釪笑著迴憶迩
- 2021-01-16 00:30
需要在动态语句内部定义该变量,而且这个变量不能再其他地方调用的; 这是因为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
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!