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

时间:2012-10-08 11:02:38

标签: sql

我很感激第三眼。我有一个存储过程来执行,但是当我使用以下值执行它时,我收到错误将数据类型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

3 个答案:

答案 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