将值存储到不同查询返回的执行SQL任务中的多个变量

时间:2013-03-20 07:30:25

标签: ssis

我有一种情况需要使用单个执行sql任务将2个不同查询返回的值存储到2个不同的变量中。我知道单行结果集类型允许我们存储多个值,但它应该以单行返回。任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

如果要将两个不同查询的结果合并为一行,但有两列,则必须确保两者中定义的字段类型相同,并且与输出变量的类型define匹配。也就是说,如下例所示,Row1必须与变量test1的类型相同,Row2必须与变量test2的类型相同。

我使用您的方案进行了测试,似乎有效。

1)设置以下查询,该查询组合了两个嵌套查询的结果。

SELECT
    (SELECT Row2 FROM Tests WHERE TestID = 4) AS Row1
    ,(SELECT Row2 FROM Tests WHERE TestID = 5) AS Row2

2)由于返回的结果都是varchar(或string)类型,我在SSIS包中设置了一个名为test1的数据类型为“String”的变量和一个名为test2的第二个变量。

3)创建了一个执行SQL任务,为SQLStatement定义了上述SQL语句,并将ResultSet设置为“Single row”。

4)对于结果集,我添加了两个新行。第一个是Result Name = 0,Variable Name是“User :: test1”,第二个是Result Name = 1,Variable Name是“User :: test2”。这里的想法是Query中的Row1的结果将转到test1,而Row2将转到test2。

我执行了任务并且成功了。

如果有帮助,请告诉我。

感谢。