【问题标题】:SSIS ForEach - Get current value of collectionSSIS ForEach - 获取集合的当前值
【发布时间】:2019-09-30 17:06:25
【问题描述】:

我有一个从 ADO.NET SQL 查询填充的变量 User:AllBatches (ObJect)。 SQL 查询返回一列整数。 我的包裹的那部分正在工作。

下一步是使用 User:AllBatches 作为变量枚举器的 ForEach 循环。

在变量映射部分选择一个变量映射到集合变量索引 0。但是,如果我选择 Object 以外的任何变量类型,则包错误。

如果我选择一个对象变量,那么我的 SQL 任务将失败,参数绑定上的数据类型不受支持,然后我无法获取要在循环内的 SQL 任务中使用的对象的值。

如果我将其设置为 Int32,那么我会得到 The Tyoe of the Variable (DBNULL) 与当前变量类型 (INT32) 不同。

如果变量集合映射仅支持对象类型,我如何从该输出对象变量中获取 INTEGER 值。

【问题讨论】:

  • the package errors 错误信息是什么?

标签: sql-server ssis etl foreach-loop-container execute-sql-task


【解决方案1】:

您不必使用 变量枚举器,而必须使用 ADO 枚举器,并选择循环遍历第一个表中的行。检查以下示例:

请注意,执行 SQL 任务结果作为 ADO 记录集存储在 Object 变量中。另一方面,变量枚举器用于循环对象变量,该对象变量包含从脚本生成的列表或数组。

您可以在以下链接中阅读有关枚举器类型的更多信息:

【讨论】:

  • 哎呀!谢谢。这使得完美的折磨 SSIS 有意义。创建一个 Object 变量作为数组,然后不要使用该变量,将 ADO 迭代器与该变量一起使用。再次感谢。也很方便的链接 - 关于我没有找到的唯一网页!
  • @iainc 由于执行 sql 任务将结果作为 ADO 记录集存储在 Object 变量中。
  • @iainc 变量枚举器在 Object 变量包含从脚本创建的列表或数组时使用。我更新了答案并添加了此信息
猜你喜欢
  • 2020-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-03
相关资源
最近更新 更多