SQL 使用字符串变量 给 整型变量赋值 10

declare@iint,@表1nvarchar(10)set@表1='sheet1'select@number=max(id)from@表1--------发生错误se... declare @i int,@表1 nvarchar(10)
set @表1='sheet1'
select @number = max(id) from @表1 --------发生错误
select @number = max(id) from sheet1 --------即可实现

为什么???应该怎么写?谢谢
展开
 我来答
百度网友1f1a785cf
2012-12-24 · 超过18用户采纳过TA的回答
知道答主
回答量:88
采纳率:0%
帮助的人:56.3万
展开全部
select语句后面的from应该是表名,不该写变量名,如果要用变量名,就用exec(sql语句)在sql语句中可以用变量名
exec('select '+ @number +' = max(id) from '+ @表1)
追问
第 1 行: '=' 附近有语法错误。

这个不行 提示错误
szm341
2012-12-19 · TA获得超过6725个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5091万
展开全部
exec sp_executesql N'select @max = max(id) from @table'
,'@max int output,@table nvarchar(10)',@number output,@表1
追问
没有看懂,@max没有定义可以吗?
运行提示:过程需要参数 '@parameters' 为 'ntext/nchar/nvarchar' 类型。
追答
sql语句中,字段名及表名不允许用变量,所以要用动态拼接sql语句的方法执行
动态拼接语句若想进行赋值操作需要用sp_executesql存储过程执行
其中@max是内部参数,由@max int output这句定义
@number为外部参数,由declare @number int外部定义,且作为内部参数@max的接收参数
也就是内部执行语句将结果赋值给@max,然后传出给@number
我写的有问题了,即便sp_executesql好像也不能用内部参数传递表名
exec sp_executesql N'select @max = max(id) from '+@表1
,N'@max int output',@number output
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式