2013-12-17 53 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