在创建字符串时将nvarchar转换为数据类型numeric的算术溢出错误

时间:2013-05-13 17:18:56

标签: sql

试图弄清楚为什么我在创建一个字符串exec

时会出现此错误
SET @SQLINSERTSTRINGFINAL = @SQLINSERTSTRING + @Suggested_Qty+''','''+
    @Required_Qty+''','''+
    @System_Cost+''','''+
    @Revised_Cost

这4个变量来自

convert(numeric(7,2),ltrim(rtrim(floor((case when r.calc_qty > 99999 then 99999 else r.calc_qty end)/(case when s.PLBCF_1 is null or s.PLBCF_1 =0 then 1 else s.PLBCF_1 end))))),
    convert(numeric(7,2),ltrim(rtrim(floor((case when r.po_number <> 'NONE' then r.calc_qty else case when r.adj_qty > 99999 then 99999 else r.adj_qty end end)/(case when s.PLBCF_1 is null or s.PLBCF_1 = 0 then 1 else s.PLBCF_1 end))))), 
    convert(numeric(9,4),ltrim(rtrim(case when s.std_cost is null then r.std_cost else s.std_cost end))),
    convert(numeric(9,4),ltrim(rtrim(r.std_cost)))

我检查了所使用的每个表,它们在列类型中是一致的。只有非数字的r.po_number可以是'NONE'的值

1 个答案:

答案 0 :(得分:1)

当您设置最终字符串值时,需要将每个数字转换为字符串:

SET @SQLINSERTSTRINGFINAL = @SQLINSERTSTRING + convert(nvarchar(max), @Suggested_Qty)+''','''+
    convert(nvarchar(max), @Required_Qty)+''','''+
    convert(nvarchar(max), @System_Cost)+''','''+
    convert(nvarchar(max), @Revised_Cost)

它不会自动播放