Decimal(20,0) 的适当 .Net 数据类型
-
03-07-2019 - |
题
我有一些返回小数(20,0) 数据类型的sql。在 SSIS 中,我有一个带有 foreach 循环的包。在我的变量映射中,我会将其映射到什么类型的变量?我尝试过 Int32、Int64、double,但仍然收到错误“分配给变量“User::iID”的值的类型与当前变量类型不同...”
解决方案
在我的例子中,SSIS变量设计器没有显示要选择的十进制或数字数据类型以将我的小数(18,2)值放入。
我将变量更改为Object,并且能够从一个存储过程的结果集中读取Decimal(18,2)值,并将其作为Money类型的参数传递给第二个SP。
所以我会使用“对象”如果你在变量列表中找不到适合你的类型。
其他提示
你尝试过Decimal吗?
SSIS确实有十进制和数字类型。您可以使用其中任何一个,它将会通过(除了可能在Union All上,您应该确保它们具有相同的精度和比例)。
有关数据类型的详情,请参阅此处。
.NET十进制有方法 decimal.ToInt64(), decimal.ToInt32()等。
我的建议是浮点数或小数。
SQL十进制(20,0)的精度为20,相当于13个字节的存储空间。 .Net十进制是16个字节,应该可以工作。
在将SQL数据类型放入Int64包变量之前,您需要将其转换为Int64。
如何获得它作为输出参数?
在数据流中,您显然会将其读入十进制/数字,然后在数据转换组件中转换为Int64。
如果您尝试直接映射执行SQL命令任务的输出参数,则可能必须使用临时对象包变量,然后将脚本任务中的转换为真实的Int64包变量。
不隶属于 StackOverflow