SSIS-通过单个SQL任务设置多个变量

时间:2013-09-16 12:48:38

标签: sql-server variables ssis

我正在尝试将多个变量设置为SQL Query的结果,该SQL Query返回包含多个列的单个行。 SQL语句的格式为:

SELECT top 1 
    a,
    b, 
    c = x + y,
    d  
FROM tablename
WHERE aSwitch = 1

所以我希望使用'执行SQL查询'任务,它将使用查询结果设置4个包变量。

例如,如果查询结果为:

|    a    |     b   |    c    |  d  |
-------------------------------------
|   duck  |   cow   | rabbit  |  42 |

然后执行后的变量状态为:

var1 = duck
var2 = cow
var3 = rabbit
var4 = 42

有什么想法吗?

(使用VS / SQL 2005)

3 个答案:

答案 0 :(得分:14)

在SQL任务中,在常规菜单下,将 ResultSet 属性设置为 SingleRow

然后,在 ResultSet 菜单中,按照select子句的顺序添加变量,并使用变量映射别名。例如:

SELECT 1 AS One, 2 AS Two

enter image description here

答案 1 :(得分:0)

我通过将结果集映射为从零开始的序数集找到了解决方案。例如。在任务属性中的“结果集”下:

result name   |   variable name
-------------------------------
     0        |       a
     1        |       b
     3        |       c
     4        |       d

此方法允许我保持我的SQL语句不变。

答案 2 :(得分:-1)

创建一个包含四个输出参数的存储过程:

CREATE SP_data(
  @x INT,
  @a int OUTPUT,
  @b int OUTPUT,
  @c int OUTPUT 
  @d int output
)
AS
  SELECT top 1 
    @a = a,
    @b= b, 
    @c  = x + y,
    @d= @d  
FROM tablename
WHERE Switch = @x

在参数映射选项卡的Execute SQL Query中创建四个输出参数

执行proc

EXEXCUT SP_data 1,? OUTPUT,? OUTPUT,? OUTPUT, ? OUTPUT