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 --------即可实现
为什么???应该怎么写?谢谢 展开
set @表1='sheet1'
select @number = max(id) from @表1 --------发生错误
select @number = max(id) from sheet1 --------即可实现
为什么???应该怎么写?谢谢 展开
2个回答
展开全部
exec sp_executesql N'select @max = max(id) from @table'
,'@max int output,@table nvarchar(10)',@number output,@表1
,'@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
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询