【问题标题】:SSIS- Set Multiple variables via a single SQL taskSSIS-通过单个 SQL 任务设置多个变量
【发布时间】:2013-09-16 12:48:37
【问题描述】:

我正在尝试将多个变量设置为 SQL 查询的结果,该查询返回包含多列的单行。 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)

【问题讨论】:

    标签: sql-server variables ssis


    【解决方案1】:

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

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

    SELECT 1 AS One, 2 AS Two
    

    【讨论】:

    • 这也很好用。与我出于好奇而发布的解决方案相比,这种方法有什么好处吗?
    • 哈哈够公平的。我会选择这个作为最佳答案然后(Y)
    • 顺便说一句,你想用 c = x + y 实现什么?在 select 语句中它没有意义(除非你影响局部变量)
    • 它只是另一种表达“AS”的方式。所以以下两个语句是同义词:SELECT x + y AS 'nameSELECT name = x + y :)
    • ResultName = 一、二等好吗?我以为我们应该改用 0,1,2,3 等。
    【解决方案2】:

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

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

    这种方法还可以让我的 SQL 语句保持不变。

    【讨论】:

      【解决方案3】:

      创建一个带有四个输出参数的存储过程:

      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中创建四个输出参数

      执行过程

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

      【讨论】:

      • 请查看我的答案,不需要存储过程
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-27
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      相关资源
      最近更新 更多