如何将数据集对象存储到数据类型为 Object
的包变量中,并将其从脚本任务中分配回另一个数据集对象?
答案 0 :(得分:9)
以下是我之前回答的代码示例。它显示了如何在脚本任务中从对象变量填充OleDB数据适配器。您可以使用数据流任务中的记录集目标将记录集存储到对象变量中 How to access a Recordset Variable inside a Script Task
为了进一步扩展我在脚本中做的其他答案,如果你操纵了对象变量中的行并希望将新结果保存到对象变量中以便进一步处理,那么你可以在接近结束时执行以下操作你的过程。 Dts.Variables("rsRecipients").Value = dt
此示例位于:Update SSIS Object Variable Used In Foreach Conainer From Script Task
示例#2中的代码:
Public Sub Main()
Dim Header As String
Dim Body As String
Dim Footer As String
Header = "blah"
Footer = "blah"
Try
Dim olead As New Data.OleDb.OleDbDataAdapter
Dim dt As New Data.DataTable
olead.Fill(dt, Dts.Variables("rsRecipients").Value)
For Each row As Data.DataRow In dt.Rows
If UCase(Trim(row("EmployeeCode").ToString())) = UCase(Trim(Dts.Variables("colEmployeeCode").Value.ToString())) Then
Body = Body + "Label: " + Trim(row("colum").ToString()) + System.Environment.NewLine
row.Delete()
End If
Next
Dts.Variables("rsRecipients").Value = dt
Dts.Variables("EmailMessage").Value = Header + Body + Footer
Dts.TaskResult = Dts.Results.Success
Catch ex As Exception
Dts.TaskResult = Dts.Results.Failure
End Try
End Sub
行olead.Fill(dt, Dts.Variables("rsRecipients").Value)
从记录集变量读入。第Dts.Variables("rsRecipients").Value = dt
行将数据集写回一个变量(在这种情况下是同一个变量,但如果你愿意,可以将它写入另一个变量)。将数据集加载到对象变量的其他方法包括在数据流任务中使用记录集目标,或使用sql任务并通过在对话框中的结果集字段上选择完整结果集将完整结果集设置为变量,然后设置输出转到object类型的变量。