SSIS for循环:基于迭代次数将值分配给变量名(SSIS Forloop: assign val

2019-08-03 05:22发布

我试图用一个for循环容器赋值给多达10级不同的变量....

VAR1 VAR2。 。 。 var10

基于迭代次数。

我需要的循环迭代一定数量的基础上已分配基于从查询的结果集的整数值的变量次...这部分工作得很好。

我很茫然,如何确定要使用指定的值变量的for循环....也就是说,如果我在itereation#1,然后将值分配给VAR1,迭代#2,然后将值分配给VAR2 ....等等。

任何指导,将不胜感激。

Answer 1:

虽然我不是100%确定为什么你要这个方法,来回答这个问题,你可以去2条路线

在2005-2008R2环境,控制流可能会是这个样子

我定义了11个变量,所有Int32类型的。 计数器然后通过Variable10变量1。

我的for循环配置

的电流值的一个变量的分配将在脚本任务来处理。 我已经设置了计数器变量作为只读变量,Variable1-10读取写入。 然后,我在那里有一个基本的switch语句来处理映射

    public void Main()
    {
        int counter = (Int32) Dts.Variables["User::Counter"].Value;

        switch (counter)
        {
            case 1:
                Dts.Variables["User::Variable1"].Value = counter;
                break;
            case 2:
                Dts.Variables["User::Variable2"].Value = counter;
                break;
            case 3:
                Dts.Variables["User::Variable3"].Value = counter;
                break;
            case 4:
                Dts.Variables["User::Variable4"].Value = counter;
                break;
            case 5:
                Dts.Variables["User::Variable5"].Value = counter;
                break;
            case 6:
                Dts.Variables["User::Variable6"].Value = counter;
                break;
            case 7:
                Dts.Variables["User::Variable7"].Value = counter;
                break;
            case 8:
                Dts.Variables["User::Variable8"].Value = counter;
                break;
            case 9:
                Dts.Variables["User::Variable9"].Value = counter;
                break;
            case 10:
                Dts.Variables["User::Variable10"].Value = counter;
                break;
            default:
                break;
        }
        Dts.TaskResult = (int)ScriptResults.Success;
    }

2012年发布的SQL Server提供了一个开箱即用式的任务。 如果你喜欢这种做法,而2012年,样本项目有一个表达的任务,你可以建立和安装在服务器上。

在任何情况下,你使用的优先约束Expression and Constraint ,然后在那里测试你的价值。

即使我有一个2012的安装,我很可能仍与代码的路线走,因为我认为这是一个更简洁的方法。 这两种方法虽然离开你的价值VariableN硬编码映射。 @ STLRick的(密苏里州代表!)在Object类型的变量存储复杂变量可能会是一个较好的办法的想法,虽然我承认我不太神交为什么你要到的值存储过for循环你已经知道你的范围(即使基于动态初始和终值)



文章来源: SSIS Forloop: assign value to variable name based on iteration number