0

我会很感激这里有第三只眼睛。我有一个要执行的存储过程,但是当我使用以下值执行它时,我收到消息将数据类型 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

4

3 回答 3

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

避免传递空字符串(除非需要),因为它们会沿着线路的某个地方绊倒你

于 2012-10-08T14:09:25.217 回答
0

您可能正在尝试从定义的模板中插入更大的数字,例如您正在运行

declare **@number numeric (9)**
exec get_next_number @number OUTPUT

虽然程序是这样定义的

procedure dbo.get_next_number **@number numeric(10)**=null OUTPUT
于 2021-01-24T07:24:23.910 回答
0

请注意,对于问题主题:“将数据类型数字转换为数字时出错。” (即使问题主体不同),错误也可能源于使用与 NUMERIC 的精度decimal不匹配的C# 。

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

于 2019-08-20T14:39:34.097 回答