我很感激第三眼。我有一个存储过程来执行,但是当我使用以下值执行它时,我收到错误将数据类型varchar转换为数字
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,'','',null,'',null,''null,'' null,'',1,1,'B5266344-286E-46FE-91D1-35DEEDCD6063',@ counter
答案 0 :(得分:0)
您有一些数字参数传递空字符串''
传递一个数值,就像您对PackagingIN参数一样,或传递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
避免传递空字符串(除非需要),因为它们会在某些地方绊倒你
答案 1 :(得分:0)
请注意,对于以下问题主题:“将数字类型的数据类型转换为数字时出错”。 (即使问题正文不同),使用与NUMERIC的precision不匹配的C#decimal
也会引起错误。
例如,将值为125.346的decimal
作为类型为NUMERIC(5,2)
的参数传递将失败,并显示上述错误消息。
答案 2 :(得分:0)
您可能试图从定义的模板中插入更大的数字 例如你正在运行
declare **@number numeric (9)**
exec get_next_number @number OUTPUT
虽然程序是这样定义的
procedure dbo.get_next_number **@number numeric(10)**=null OUTPUT