sql 循环给变量赋值

/*有变量从@m1......一直到@m80*//*现在要给它们赋值*//*怎么使用循环赋值*/declare@m1int,@m2int,@m3Intdeclare@nu... /*有变量从@m1......一直到@m80*/
/*现在要给它们赋值*/
/*怎么使用循环赋值*/
declare @m1 int,@m2 int ,@m3 Int
declare @num int
declare @sql varchar(8000)
set @num=1
while @num<4
begin
set @sql='select @m'+ convert(varchar(10),@num) +'=' +convert(varchar(10),@num)
print @sql
exec @sql
set @num=1 +@num
end

结果
select @m1=1
消息 2812,级别 16,状态 62,第 10 行
找不到存储过程 'select @m1=1'。
select @m2=2
消息 2812,级别 16,状态 62,第 10 行
找不到存储过程 'select @m2=2'。
select @m3=3
消息 2812,级别 16,状态 62,第 10 行
找不到存储过程 'select @m3=3'。

问题:如何使得“@m3=3”
展开
 我来答
lxny2008
2013-09-02 · TA获得超过164个赞
知道小有建树答主
回答量:185
采纳率:100%
帮助的人:87.5万
展开全部
exec 执行时SQL语句‘’之间不能带 @m变量

set @sql='select '+@m+ convert(varchar(10),@num) +'=' +convert(varchar(10),@num)
toshiojkx
2013-09-02 · TA获得超过492个赞
知道小有建树答主
回答量:260
采纳率:100%
帮助的人:104万
展开全部
exec (@sql)

执行的时候语句加上括号
更多追问追答
追问
结果
select @m1=1
消息 137,级别 15,状态 1,第 1 行
必须声明标量变量 "@m1"。
select @m2=2
消息 137,级别 15,状态 1,第 1 行
必须声明标量变量 "@m2"。
select @m3=3
消息 137,级别 15,状态 1,第 1 行
必须声明标量变量 "@m3"。
追答
你把declare @m1 int,@m2 int ,@m3 Int

加到@sql内容里面
set @sql='declare @m1 int,@m2 int ,@m3 Int '
set @sql+='select @m'+ convert(varchar(10),@num) +'=' +convert(varchar(10),@num)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式