c# - SSIS获取Execute Sql Task结果集对象

标签 c# ssis

我有一个执行 sql 任务项,它从存储过程中获取多行数据。

在变量表下声明了一个变量ObjShipment,并在结果集下赋值给它,信息如下:

Result Set:    Full result set
Result Name:   0
Variable Name: User::ObjShipment

我编写了一个脚本任务,并将 ObjShipment 变量分配给 ReadOnly,我想知道如何检索其中的数据?

存储过程返回多行,例如 Id、ItemId、DateCreated..,但是如果我只对 ItemId 感兴趣,我该如何检索它们呢?由于它返回多行,因此可能有多个 ItemId。

我是 ssis 的新手,如有任何帮助,我们将不胜感激!

最佳答案

所以一般来说,您在 SSIS 包中使用对象变量作为 For Each 容器的枚举器。

  1. 为每个循环容器创建一个。
  2. 将枚举器设置为“针对每个 ADO 枚举器”。
  3. 将源变量设置为 User::ObjShipment。
  4. 在“变量映射”选项卡中将对象的每一列分配给它自己的变量。
  5. 在 For Each 循环容器中,使用这些变量做任何您想做的事情:将它们插入数据库、进行查找和审计等。

如果你打算使用脚本任务,那么你需要做的就是

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

然后像使用任何旧 DataTable 一样使用 dt。

关于c# - SSIS获取Execute Sql Task结果集对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18218451/

相关文章:

c# - 将 Razor .cshtml 文件转换为 C# .cs 文件

sql - SSIS删除重复数据

visual-studio - 为什么 Visual Studio 2019 社区中我的 SSIS 工具箱为空?

c# - 如何检测从 C# 启动的新应用程序?

c# - .NET 0x80040154 (REGDB_E_CLASSNOTREG) : Retrieving the COM class factory for component with CLSID {XXXX}

c# - c#中url参数值的正则表达式

sql-server - SSIS 脚本任务 - VB - 日期提取为 INT 而不是日期字符串

sql - SSIS 验证失败并返回验证状态 "VS_ISBROKEN"

postgresql - 将 SSIS 连接到 PostgreSQL 时出现问题(通过 OLEDB)

c# - 多 channel GroupBy() 如何比单 channel 更快?