Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 创建字符串时,将nvarchar转换为数据类型numeric时出现算术溢出错误_Sql - Fatal编程技术网

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

Sql 创建字符串时,将nvarchar转换为数据类型numeric时出现算术溢出错误,sql,Sql,试图弄清楚为什么在创建要执行的字符串时会出现此错误 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 t

试图弄清楚为什么在创建要执行的字符串时会出现此错误

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)))
convert(数字(7,2),ltrim(rtrim(地板)(当r.calc_数量>99999时,则为99999其他r.calc_数量结束时的情况)/(当s.PLBCF_1为空或s.PLBCF_1=0时,则为1其他s.PLBCF_1结束时的情况);”,
转换(数字(7,2),ltrim(rtrim(楼层)(r.po_编号“无”时的情况,然后r.calc_数量,其他情况下r.adj_数量>9999时的情况,然后9999其他情况r.adj_数量结束)/(s.PLBCF_1为空或s.PLBCF_1=0时的情况,然后1其他s.PLBCF_1结束()),
转换(数字(9,4),ltrim(rtrim(当s.std_成本为空时,则为r.std_成本,否则为s.std_成本结束)),
转换(数字(9,4)、ltrim(rtrim(r.std_成本)))

我检查了使用的每个表,它们在列类型上是一致的。只有非数字的r.po_编号可以是“无”值。

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

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

它不会自动为您强制转换

如果我删除字符串连接,我不会收到任何错误。请验证您的所有数字是否在字段的正确位数内。例如,如果你有一个数字7,2是他们更多的数字。在我的经验中,“算术溢出”通常与此相关。谢谢,我不知道为什么我根本看不到这一点,因为我在提问之前尽可能多地研究。一旦它允许我这么做,我将接受这个答案。