簡體   English   中英

將數據類型varchar轉換為數字並溢出時出錯

[英]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)

這里

將數據類型varchar轉換為數字時出錯。

不要將值作為字符串傳遞到動態SQL中。 相反,學習使用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)+''

像這樣嘗試:

SET @qry='select 5 +'+CAST(@FranchiseeCommission AS varchar(30))+''

由於您的變量是小數,因此必須將其強制轉換為varchar才能將其與字符串結合使用。

SQL Server的隱式轉換規則使其嘗試將varchar隱式轉換為decimal 您需要將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM