可以使用C#的数组列表填充SSIS对象变量吗?

Jai*_*ani 3 sql-server foreach ssis etl

我已经在C#脚本中填充了一个列表,并将其值分配给SSIS对象变量。

然后,我使用该对象变量通过遍历For Each do枚举器来执行一些SQL查询。

我尝试通过Foreach ado枚举器执行此操作,但出现错误

X变量不包含有效的数据对象。

任何人都可以提供任何输入。

在此处输入图片说明

Sql*_*Guy 6

您正在使用列表。不是记录集,因此您需要枚举变量。

如果要使用ADO Recordset,则需要填写数据表。

  1. 这显示了如何使用变量列表写入对象

  2. 这显示了如何使用记录集写入对象(使用多个值)

像这样:

1 .C#脚本代码-使用变量枚举器使用列表写入对象

public void Main()
    {
        // TODO: Add your code here

        List<string> NewList = new List<string>();

        NewList.Add("Ost");
        NewList.Add("Hest");

        Dts.Variables["User::NameList"].Value = NewList;

        Dts.TaskResult = (int)ScriptResults.Success;
    }
Run Code Online (Sandbox Code Playgroud)

1. sis中的变量设置 在此处输入图片说明

1. Foreach循环容器设置

使用Foreach变量枚举器并使用对象变量

在此处输入图片说明

将结果映射到变量

在此处输入图片说明

1.执行SQL Task测试用例

用变量编写SQL

在此处输入图片说明

将变量映射到参数映射

在此处输入图片说明

1.结果

在此处输入图片说明

2. C#脚本代码-使用ADO枚举器用数据表写入对象

   public void Main()
    {
        // TODO: Add your code here

        DataTable dt = new DataTable();

        dt.Columns.Add("FilmName",typeof(string));
        dt.Columns.Add("ActorName",typeof(string));

        dt.Rows.Add("Starwars", "Harrison ford");
        dt.Rows.Add("Pulp fiction", "Samuel Jackson");


        Dts.Variables["User::NameList"].Value = dt;

        Dts.TaskResult = (int)ScriptResults.Success;
    }
Run Code Online (Sandbox Code Playgroud)

2. sis中的变量设置

在此处输入图片说明

2. Foreach循环容器设置

使用Foreach ADO枚举器,并将您的对象用作变量

在此处输入图片说明

将结果映射到变量

在此处输入图片说明

2.执行sql任务测试用例

用变量编写SQL

在此处输入图片说明

将变量映射到参数映射

在此处输入图片说明

2.结果

在此处输入图片说明