3

我正在使用带有 SP2 的 SQL Server 2008。

我有一个传入的 decimal(9,2) 字段通过我的OLE DB 转换传入我的记录集目标转换。而且我看到,当我单击目标转换的输入和输出属性选项卡时,出于某种原因,它将此特定字段显示为类型 DT_NUMERIC。就好像它把它当作小数以外的东西来读?我不知道..我不是 SSIS 大师。

所以继续......我遇到的问题从我试图将值填充到这个十进制字段的变量中开始。在foreach 循环中,我有一个变量来表示这个十进制字段,所以我可以使用它。

我认为众所周知的第一个问题是SSIS 变量没有小数类型。从我自己的测试和我在那里读到的内容来看,人们正在使用类型对象作为变量来使 SSIS 对十进制值“满意”?这让我很开心。

但是,然后在我的 foreach 循环中,我有一个 for 循环。在里面我使用了一个 E* xecute SQL Task transformation *. 在其中,我需要创建一个到我的变量的参数映射,以便我可以在此处的 T-SQL 调用中使用该十进制字段。所以现在我看到参数的类型小数并使用它并将其设置为指向我的变量。

当我运行 SSIS 并遇到我的 SQL 调用时,我会在输出窗口中看到它。

   The type is not supported.DBTYPE_DECIMAL 

所以我在这里碰壁。我想做的就是使用小数!!!

4

2 回答 2

3

我会尝试在数据流任务中将值转换为 double 或 varchar 而不是对象。请注意,您可能必须在执行 sql 任务中使用 cast 或 convert 语句才能在您的事务处理 sql 语句中将类型更改回十进制。

于 2012-09-17T03:43:53.350 回答
0

我遇到过类似的问题,对于我的解决方案,我使用了十进制到 Int 转换器。

于 2016-09-01T01:15:54.527 回答