1

有没有办法在 SSIS 组件脚本的 ProcessInputRow 函数中使用局部/全局变量来保持数字的运行计数?

例如:

Row1: 1
Row2: 1
Row3: 0

所以说变量设置默认= 0

在第 1 行之后,变量现在将为 = 1

在第 2 行之后,变量现在将是 = 2

在第 3 行之后,变量现在将 = 1

由于 ProcessInputRow 函数单独处理每个输入行,它会重置我的局部变量,并且您不能在 PostExecute() 之外使用 SSIS 用户创建的变量,我在这里不知所措。

4

2 回答 2

1
 private int count = 0;
  public override void PreExecute()
{
   base.PreExecute();
   //some code where you can increment count
}

public override void PostExecute()
{
    base.PostExecute();
    // Count it accessible here as well 
}

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    //Count will be accessible but not reset here
}

让我知道这是否回答了您的问题

于 2013-09-03T14:16:12.993 回答
1

这实际上非常简单 -在 Script 组件的类中使用成员变量(也称为field ):ScriptMain

/* Microsoft SQL Server Integration Services Script Component
*  Write scripts using Microsoft Visual C# 2008.
*  ScriptMain is the entry point class of the script.*/

using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;

[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
    private int _myVariable = 0;

    public override void Input0_ProcessInputRow(Input0Buffer Row)
    {
        Row.SomeValue = _myVariable;
        _myVariable = Row.SomeOtherValue;

    }
}
于 2013-09-03T14:34:24.937 回答