十进制的适当.Net数据类型(20,0)

时间:2009-04-30 19:59:37

标签: .net sql-server ssis types

我有一些sql返回十进制(20,0)数据类型。在SSIS中,我有一个包含foreach循环的包。在我的变量映射中,我将它映射到哪种类型的变量?我已经尝试过Int32,Int64,double,但仍然得到错误“赋值给变量的值的类型”User :: iID“与当前变量类型不同......”

7 个答案:

答案 0 :(得分:2)

你尝试过Decimal吗?

答案 1 :(得分:2)

在我的例子中,SSIS变量设计器没有显示要选择的十进制或数字数据类型以将我的小数(18,2)值放入。

我将变量更改为Object,并且能够从一个存储过程的结果集中读取Decimal(18,2)值,并将其作为Money类型的参数传递给第二个SP。

如果你在变量列表中找不到适合你的类型,我会使用“对象”。

答案 2 :(得分:1)

SSIS确实有十进制和数字类型。您可以使用其中任何一个,它将会通过(除了可能在Union All上,您应该确保它们具有相同的精度和比例)。

详细了解数据类型here

答案 3 :(得分:0)

.NET十进制有方法 decimal.ToInt64() decimal.ToInt32()等。

答案 4 :(得分:0)

我的推荐是浮点​​数或小数。

答案 5 :(得分:0)

SQL十进制(20,0)的精度为20,相当于13个字节的存储空间。 .Net十进制是16个字节,应该可以工作。

答案 6 :(得分:0)

在将SQL数据类型放入Int64包变量之前,您需要将其转换为Int64。

如何获得它作为输出参数?

在数据流中,您显然会将其读入十进制/数字,然后在数据转换组件中转换为Int64。

如果您尝试直接从Execute SQL Command任务映射输出参数,则可能必须使用临时对象包变量,然后将脚本任务中的转换为真正的Int64包变量。