与参数一起使用的数据类型为数字(19,5)

时间:2018-07-31 18:14:17

标签: sql-server tsql ssis

具有从SSIS 2016程序包中调用的存储过程。参数之一是类型NUMERIC(19,5)。将用于填充此参数的SSIS变量定义为Decimal。

在大多数情况下,这似乎可以正常工作,但在一种情况下,它会导致下游错误。因此,我启动了SQL事件探查器,以查看发送过来的情况。

果然,不是我在调试时在SSIS中看到的184.96,而是被发送为184.96000671386719,是吗?这些多余的数字从哪里来?

甚至更奇怪的是,在通过sp_executesql通过SSIS执行的SQL语句中(如探查器所示),该参数定义为数据类型REAL。

提供定义为NUMERIC(19,5)的存储过程参数的最佳数据类型是什么?在上述情况下,那些多余的数字从何而来?

1 个答案:

答案 0 :(得分:1)

如果使用REAL数据类型,那是造成多余数字的原因,因为REAL等同于FLOAT而不是精确的数据类型。

与数字数据类型等效的SSIS为DT_NUMERIC, «precision», «scale»。如果那是您声明变量的方式,那么该程序包必须在您未向我们展示的程序包的某些部分将其转换为REAL (DT_R4)