2013-12-17 98 views
6

我遇到问题,我不知道这是否可行。SSIS结果集,Foreachloop和变量

我有一个简单的SQL任务。

SELECT Name, email FROM table_name

使用结果集,我想将它传递给一个变量,并用它与foreach循环发送一个电子邮件的任务,但我有没有运气得到这个工作。如果我只做一列,它工作正常。我的问题是多列。

感谢您的帮助提前。

+2

请详细说明如何设置您的执行SQL任务,已声明的变量及其数据类型以及您如何配置ForEach循环 – billinkc

+0

SQL是OLE DB的“完整结果集”,结果名称0,1映射到两个变量User :: email和user :: Fullname。两者都是“对象”数据类型。 Foreach循环设置为ADO枚举器,Source变量设置为User :: email。 但在SQL任务上失败时,我添加多个列 – user3112621

+0

你得到的错误是什么?当我创建类似的查询并将其分配给结果集中的两个变量时,我在执行SQL任务本身中出错。 –

回答

9

我想出了我自己的问题。我会在这里添加它以防别人遇到同样的问题。

  1. 在SQL查询中,第一列应该是您的关键结果。例如我的电子邮件。

  2. SQL任务一般,设置结果集为 “Full结果休息”

  3. SQL任务结果集,以 “0” 设置变量结果名称,为电子邮件列创建一个变量作为“对象”数据类型,然后单击确定保存并退出。例如:email_Ob

  4. 通过转到变量窗口,创建其它列作为对象,因为我正在使用此电子邮件任务,我需要从对象到字符串转换更多的变量,所以我需要创建另一个变量作为字符串为每一个

    实施例:

     **Variable Name**  **Datatype** 
          email_Ob    Object 
          Name_Ob     Object 
          email_St    String 
          Name_St     String 
    
  5. Foreach循环任务收集变化如下:

    枚举:FOREACH ADO Enomator

    ADO对象源变量:选择的关键变量(email_Ob)

    选择在第一个表

  6. Foreach循环任务根据变量映射将变量添加到字符串数据类型与您的SQL查询中的顺序相同。点击确定保存并退出。

  7. 现在,您可以添加电子邮件任务Foreach循环,并使用这些字符串变量作为电子邮件的一部分,或者你可以将其用于任何其他任务。

希望这个帮助,如果你有任何问题随时问。这样做,我可以根据需要添加更多列。

+0

您的SQL任务结果集只需要一个Object变量。然后,您将它作为ADO对象源变量,并将每个结果集列按索引映射到变量(email_St,name_St)等。 –

+0

错误:分配给变量“User :: BaselineId”的值的类型不同当前的变量类型。变量在执行期间不能改变类型。变量类型是严格的,除了Object类型的变量。 – bilal