SSIS For Each循环基于记录

时间:2016-06-03 16:16:51

标签: ssis sql-server-2012

我想完成一项相当简单的任务(我想)。

我有一个带shiftid(INT),shiftstart(datetime),shiftend(datetime)的表。

我想查询该表,然后运行一个查询(在一个完全不同的数据库上),询问生产(以奇怪的方式计算 - 需要三个单独的查询)使用开始和结束时间,并存储在带有shiftid的原始数据库中和转移的生产量。

我尝试使用Foreach循环和构建包含查询的变量的脚本任务来执行此操作,但我不断在那里打砖墙。

Dts.Variables("User::SQLshiftstart").Value = "SELECT value FROM[dbo].[AnalogHistory] WHERE TagName = 'Z_HISTFMZ_P2_0004' AND DateTime = '" & Dts.Variables("User::shiftstart").ToString

我一直收到错误 - “没有为命令对象设置命令文本”。谷歌搜索该错误并没有让我更进一步。

帮助!

1 个答案:

答案 0 :(得分:0)

好吧,我决定采用不同的方式,而不是使用脚本对象来构建变量。我实际上在SELECT中创建了变量:

SELECT (CONCAT
('SELECT CAST(value AS DECIMAL(10,4)) AS beg FROM [dbo].[AnalogHistory] WHERE TagName = ''Z_HISTDATA_P1_0007'' AND DateTime = '' ', 
DateAdd(hh,-6,shiftstart),
' '' AND wwTimeZone = ''UTC'' ')) 

这样,我就可以避免构建中间脚本对象,并且可以根据FOREACH循环中的变量名直接查询。