SCD模块中的参数 - 历史类型

时间:2014-09-10 11:30:38

标签: tsql ssis

在SCD组件类型历史记录中添加新记录时,OLE DB命令执行查询:

UPDATE [table] SET [ExpirationDate] = ? WHERE [ID] = ? AND [ExpirationDate] = '9999-12-31'

如何修改该查询以便在发生更改时设置[ExpirationDate] = [ImportDate]。 查询:

UPDATE [table] SET [ExpirationDate] = [ImportDate] WHERE [ID] = ? AND [ExpirationDate] = '9999-12-31'

生成错误:

OLE DB provider used by the OLE DB adapter cannot convert between 
types DT_DBTIMESTAMP2 and DT_NUMERIC for Param_0

我不理解它,因为[ExpirationDate]和[ImportDate]具有相同的类型(datetime2)。历史更改发生时如何实现此更新?

1 个答案:

答案 0 :(得分:0)

OLEDB cmd中的错误消息是指“?”被映射。 ID是数字,是映射到日期字段的下一个选项卡上的param_0吗?

您应该设置此命令的方式如下:

UPDATE [table] SET [ExpirationDate] = ? WHERE [ID] = ? AND [ExpirationDate] = '9999-12-31'

在下面的选项卡上,您将有两个参数,第一个映射到[ImportDate],第二个映射到ID字段。参数按顺序排列。