我正在使用SQL Server 2008 w / SP2。
我有一个输入的十进制(9,2)字段通过我的 OLE DB转换传入我的记录集目标转换。我看到当我单击目标转换的输入和输出属性选项卡时,由于某种原因,它将此特定字段显示为DT_NUMERIC类型。这就像是把它读成小数以外的东西?我不知道......我不是SSIS的大师。
所以继续...我的问题从这里开始,我试图将值填充到此十进制字段的变量中。在 foreach循环中,我有一个变量来表示此十进制字段,因此我可以使用它。
我认为第一个众所周知的问题是 SSIS变量没有小数类型。根据我自己的测试以及我在那里读到的内容,人们使用类型对象作为变量,使SSIS“满意”的十进制值?这让我高兴。
但是,在我的foreach循环中,我有一个for循环。在里面,我正在使用E * xecute SQL任务转换 *。在其中,我需要创建一个参数映射到我的变量,这样我就可以在这里的T-SQL调用中使用该十进制字段。所以现在我看到参数的十进制类型并使用它并将其设置为指向我的变量。
当我运行SSIS并且它访问我的SQL调用时,我在输出窗口中显示它。:
The type is not supported.DBTYPE_DECIMAL
所以我在这里撞墙。我想做的就是用十进制工作!!!
答案 0 :(得分:3)
我会尝试将值转换为数据流任务中的double或varchar而不是对象。请注意,您可能必须在execute sql任务中使用强制转换或转换语句,以在transact sql语句中将类型更改回十进制。
答案 1 :(得分:0)
我遇到过类似的问题,而对于我的解决方案,我使用了十进制到Int转换器。