Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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--将数据类型numeric转换为numeric时出错。_Sql - Fatal编程技术网

SQL--将数据类型numeric转换为numeric时出错。

SQL--将数据类型numeric转换为numeric时出错。,sql,Sql,我希望在这里有第三只眼睛。我有一个要执行的存储过程,但是当我使用以下值执行它时,将数据类型varchar转换为numeric时,会收到一条错误消息 EXECUTE packaging @ID out, -- uniqueidentifier @ProductID, --uniqueidentifier @PackagingIN, --numeric(14,0)

我希望在这里有第三只眼睛。我有一个要执行的存储过程,但是当我使用以下值执行它时,将数据类型varchar转换为numeric时,会收到一条错误消息

            EXECUTE  packaging 
              @ID out,  -- uniqueidentifier
              @ProductID, --uniqueidentifier
              @PackagingIN,  --numeric(14,0)
              @BarCodeInd, --nchar(1)
              @GrossWeightperPack, --numeric(14,0)
              @UMPID,  --uniqueidentifier
              @Height, --numeric(8,0)
              @UMPID1, --uniqueidentifier
              @Width, --numeric(8,0)
              @UMPID2, -- uniqueidentifier
              @Length, --numeric(8,0)
              @UMPID3, --uniqueidentifier
              1,     --int
               1,  --int
              @statusid,  
              @counter out  --int

执行包装“0904AC11-7B0D-4326-A67B-49639DF6672C”、“57925472-5F79-424E-806A-47F8B73DAE02”、“57582682639272”、“空”、“空”、“空”、“空”、“空”、“空”、“1”、“B5266344-286E-46FE-91D1-35DEED6063”、“计数器”

您有一些数字参数被传递为空字符串“

像packaginging参数一样传递一个数值,或者传递null

例如:

Execute packaging '0904AC11-7B0D-4326-A67B-49639DF6672C', '57925472-5F79-424E-806A-47F8B73DAE02', 57582682639272, '', null, null, null, null, null,null, null,null,null, 1, 1, 'B5266344-286E-46FE-91D1-35DEEDCD6063', @counter

避免传递空字符串(除非需要),因为它们会使您在某个地方陷入困境

请注意,对于问题主题:“将数据类型数字转换为数字时出错。”(即使问题正文不同),使用与数字类型不匹配的C#
十进制
也会导致错误


例如,将值为125.346的
十进制
作为类型为
数值(5,2)
的参数传递将失败,并显示上述错误消息。

您可能试图从定义的模板中插入更大的数字 例如,你正在跑步

declare **@number numeric (9)**
exec get_next_number @number OUTPUT
而程序是这样定义的

procedure dbo.get_next_number **@number numeric(10)**=null OUTPUT

您正在将值
'
传递给参数
@GrossWeightperPack
,该参数定义为
数值(14,0)
。可能这就是问题所在。@GrossWightPerpack作为“”传递,它不会转换为数字(14,0)…我应该作为什么传递它?因为我是从前端发送值,如果它是null或空的,我应该发送什么呢?
null
将是一个不错的开始。