2009-04-30 57 views
0

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

回答

2

在我的情况下,SSIS变量设计器没有显示Decimal或Numeric数据类型来选择放置我的小数点(18,2)值。

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

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

2

你试过了吗? ?

+0

在ssis设计师中没有小数点或浮点数的选项 – Jeremy 2009-04-30 20:10:21

0

.NET小数具有方法decimal.ToInt64()decimal.ToInt32()

0

浮子或十进制将是我的建议。

+0

在ssis设计师中没有小数点或浮点数的选项 – Jeremy 2009-04-30 20:10:31

0

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

1

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

查看更多about数据类型here

+0

Where?在变量窗口中,我可以选择布尔,DBNull,Double,Int16,Int32,Int64,Object,SByte,String,UInt32,UInt64,但不支持小数或数字 – Jeremy 2009-04-30 22:44:58

0

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

作为一个输出参数,你如何得到它?

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

如果您试图直接映射来自执行SQL命令任务的输出参数,则可能必须使用临时对象包变量,然后将其转换为实际的Int64包变量。

相关问题