2017-02-22 109 views
2

我有条件将需要基于条件(仅为一个整型值)的条件分割结果提供给变量。有人可以帮助如何做到这一点?SSIS:将条件分割结果分配给变量

我的实际的包(数据流):

XML Source - >Conditional split(基于条件)基于条件2 outputs..one结果(将只是一个int值)需要它传递变量。如何实现这一目标?

回答

3

纯粹的SSIS方式 - 将您的数据流用于Recordset Destination,然后使用ForEach循环遍历它,将值分配给所需的变量。

+0

我相信没有必要遍历每一个,因为我的条件分割总是给出单个结果。我的观点是更新到SSIS我不知道如何将条件分割结果分配给变量。 –

+0

@narendragc,您可以在ForEach循环定义中将您的第0列值赋予您所需的变量,并将循环序列留空。因此,循环将设置变量,唯一的缺点 - 变量将存储来自行集合的最后一个值。如果你只有一排 - 没关系。 – Ferdipux

0

我知道两种方法来实现这一点。

首先:用C#脚本组件做这件事,这是最简单的方法。 只要把脚本组件您的条件拆分的背后,选择您的变量为“读写”,然后将其设置这样的代码:

Dts.Variables["yourvariable"].Value = Input0Buffer.Yourcolumn 

我没有访问SSIS现在,这样我就可以” t给你确切的代码,但这应该让你开始。

第二:写入表并使用执行SQL任务读回。我真的不喜欢这种方式;-)

2

,你必须使用脚本组件来实现这一目标:

  • 创建一个脚本组件(选择它的类型为目标

enter image description here

  • 上的脚本组件双击并选择你的变量作为ReadWrite变量。 (在我的例子变量命名为结果

enter image description here

  • 里面的脚本窗口中写入以下代码

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) 
    
        If Not Row.inColumn_IsNull Then 
         Variables.Result = Row.inColumn 
        End If 
    
    End Sub 
    

侧面说明:变量价值不ch在dataflowtask执行完之前使用新值你必须继续在另一个工作dataflowtask