0

我正在尝试使用 ForLoop 容器将值分配给多达 10 个不同的变量....

变量 1 变量 2 。. . var10

基于迭代次数。

我需要循环根据已根据查询的结果集分配了整数值的变量来迭代一定次数……那部分工作得很好。

我不知道如何告诉forloop使用哪个变量来分配值....即,如果我在迭代#1然后将值分配给var1,迭代#2然后将值分配给var2....等等。

任何指导将不胜感激。

4

1 回答 1

2

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

在 2005-2008R2 环境中,您的控制流可能看起来像这样

控制流程 2008

我已经定义了 11 个变量,都是 Int32 类型。计数器,然后是变量 1 到变量 10。

我的 For 循环配置为

For循环编辑器

将当前值分配给变量将在脚本任务中处理。我已将 Counter 变量设置为只读变量,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;
    }

SQL Server 2012 版提供了一个现成的表达式任务。如果您更喜欢这种方法并且不在 2012 年,那么示例项目有一个表达式任务,您可以在您的服务器上构建和安装。

无论如何,您可以使用优先约束,Expression and Constraint然后在其中测试您的价值。

在此处输入图像描述

即使我有 2012 年的安装,我可能仍然会使用代码路线,因为我认为这是一种更清洁的方法。虽然这两种方法都为您提供了到 VariableN 的硬编码映射。@STLRick(密苏里州代表!)认为将复杂变量存储在 Object 类型的变量中可能是一种更可取的方法,尽管我承认我不太明白为什么要将 For 循环的值存储为您已经知道您的范围(即使基于动态初始值和最终值)

于 2012-11-26T21:37:27.807 回答