是否可以使用 ForEach 更改脚本任务中的对象变量值,然后将其存储在对象变量中?

Is it possible change Object variables value in Script Task with ForEach then store it in Object variable?

我使用 VS 2008 SSIS。

  1. 我有一个数据流任务,用于从 table 获取行并将它们存储在对象变量中。
  2. 我使用 Foreach 循环逐个获取对象变量的值。
  3. 在我的 Foreach 中,我每次都使用 Script Task change/decrypt 我的变量值。

我的问题是我找不到如何将解密值存储回对象变量,因为我需要将它们保存到平面文件。

我使用了另一个对象变量并试图在其中保存解密的值。但只保存最后解密的值而不是整个列表。

请分享您的想法或建议。任何帮助或建议将不胜感激!

由于您的目标是将解密后的值保存到平面文件中,您可以创建最终数据流并将对象变量用作源,在脚本转换(而不是任务)中进行解密,然后发送结果到您的平面文件目的地。

您可以在没有 SSIS Foreach 循环的情况下访问对象变量。下面的示例从对象变量填充 DataTable,更新 C# foreach 循环中指定列的 DataRow,并将其写回对象变量。在此脚本任务之后,您可以对对象变量的更新内容执行任何必要的操作,包括写入平面文件目标。

            DataTable dt = new DataTable();
            OleDbDataAdapter adapter = new OleDbDataAdapter();
            adapter.Fill(dt, Dts.Variables["User::YourObjectVariable"].Value);

            foreach (DataRow r in dt.Rows)
            {
                r["Column"] = " "; //Do work here

            }

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