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