[英]Error converting data type varchar to numeric and overflow
declare @Commission decimal(18,2)
select @Commission=percentage from Commission
declare @qry varchar(Max)
set @qry='select 5 +'+@Commission +''
EXEC(@qry)
Here 这里
The Error converting data type varchar to numeric.
将数据类型varchar转换为数字时出错。
Don't pass values into dynamic SQL as strings. 不要将值作为字符串传递到动态SQL中。 Instead, learn to use
sp_executesql
: 相反,学习使用
sp_executesql
:
declare @Commission decimal(18, 2);
select @Commission = percentage
from Commission;
declare @qry varchar(Max);
set @qry='select 5 + @Commission';
exec sp_executesql @qry, 'N@Commission decimal(18, 2)', @Commission=@Commission;
set @qry='select 5 +'+convert(nvarchar(max),@FranchiseeCommission)+''
Try it like this: 像这样尝试:
SET @qry='select 5 +'+CAST(@FranchiseeCommission AS varchar(30))+''
Since your variable is a decimal, you have to cast it as varchar in order to combine it with your string. 由于您的变量是小数,因此必须将其强制转换为varchar才能将其与字符串结合使用。
SQL Server's implicit conversion rules makes it attempt to implicitly convert your varchar
to decimal
. SQL Server的隐式转换规则使其尝试将
varchar
隐式转换为decimal
。 You need to explicitly convert the decimal
to varchar
: 您需要将
decimal
明确转换为varchar
:
set @qry='select 5 +'+ CAST(@FranchiseeCommission as varchar(20))
如果2012+,总会有concat()
set @qry=concat('select 5 +',@Commission)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.