SSIS - 派生列计算错误

时间:2013-10-07 11:39:47

标签: sql-server ssis

在SSIS的派生列中计算时遇到一些问题。

我正在尝试执行以下计算 -

4206 + ((4206 * 4206) * 0.000150000000000) + ((4206 * 4206 * 4206) * 0.000000010000000)

我收到错误 -

**The magnitude of the result of a binary operation overflows the maximum size for result data type**

将此计算粘贴到我的C#Web应用程序中会导致类似的问题 -

**The operation overflows at compile time in checked mode** 

有人在抱怨这个部分 - 4206 * 4206 * 4206。 它也可以在Web应用程序中通过更改4206 * 4206 * 4206L来解决,但我不知道如何在SSIS包中解决这个问题。

之前有没有人遇到过这个问题?任何想法都将不胜感激。

提前致谢。

修改

现在已解决溢出异常,但旧计算和新计算返回的值略有不同,例如:使用415作为输入值而不是4206 -

旧计算值= 419.014582 新计算值= 419.042100

确切的计算是 -

旧 - InputValue + ((InputValue * InputValue) * (DT_DECIMAL,20)@[User::SquaredValue]) + ((InputValue * InputValue * InputValue) * (DT_DECIMAL,20)@[User::CubicValue])

新增 - InputValue + (((DT_DECIMAL,20)@[User::SquaredValue] * InputValue * InputValue)) + (((DT_DECIMAL,20)@[User::CubicValue] * InputValue * InputValue * InputValue))

修改

关于计算中的细微差别的第二个问题是作为一个新问题开始的。

1 个答案:

答案 0 :(得分:5)

为什么不改变

((4206 * 4206 * 4206) * 0.000000010000000)

(0.000000010000000 * 4206 * 4206 * 4206)

避免内部行计算中的这么大的数字。我用

4206 + (0.00015 * 4206 * 4206) + (0.00000001 * 4206 * 4206 * 4206)