如何使用在优先约束编辑器中的“执行SQL任务”中创建的变量值?

时间:2019-01-28 12:31:35

标签: sql-server visual-studio ssis execute-sql-task

enter image description here我需要基于n倍变量值(isnull tr​​ue或false)运行n倍执行SQL任务。该变量是在先前的执行sql任务(条件查询)中的ssms脚本中创建的。如何将ssms脚本中的变量值输出到ssis中的条件表达式?

我的两个变量是@beneficiary@gempar。它们存储日期类型值或为null。

enter image description here

3 个答案:

答案 0 :(得分:1)

除了map result set to variable,您可能还需要使用ExecValueVariable.

将任务的执行结果设置为变量

附加的是我的SSIS软件包之一,带有一个名为HasRecord的变量。单击Execute SQL Task,然后将ExecValueVariable设置为所需的变量User::HasRecord

enter image description here

enter image description here

答案 1 :(得分:0)

您可以在执行SQL任务中指定一个ResultSet,然后按照以下步骤将结果映射到变量:

  1. 在SQL语句的末尾添加以下行

    SELECT @benefeciary as benefeciary, @gempar as gempar
    
  2. 在“执行SQL任务”中,将ResultSet选项更改为single Row

  3. 转到结果集标签
  4. 将列索引(从0开始)映射到相关变量

    0 >> benefeciary
    1 >> gempar
    

有关更多详细信息,有许多文章描述了此过程:

  1. SSIS Basics: Using the Execute SQL Task to Generate Result Sets
  2. Map Result Sets to Variables in an Execute SQL Task
  3. How To Set and Use Variables in SSIS Execute SQL Task

答案 2 :(得分:0)

您的条件查询任务应将“结果集”设置为“单行”,就像截图一样:

enter image description here

然后只需将变量分配给输出列:

enter image description here

如果查询返回两个值,则可以使用顺序位置,

因此ResultName = 0,可以映射到lw,而ResultName 1可以映射到@beneficiary

更多详细信息:SSIS Basics: Using the Execute SQL Task to Generate Result Sets


更新: T-SQL任务中使用的脚本应通过SELECT而不是PRINT返回值:

@gempar