我正在尝试使用 For 循环容器为最多 10 个不同的变量赋值......
变量1
变量2
。
。
。
变量10
基于迭代次数。
我需要循环根据一个变量迭代一定次数,该变量已根据查询的结果集分配了一个整数值......该部分工作得很好。
我不知道如何告诉 for 循环使用哪个变量来分配值....即,如果我处于迭代 #1,则将值分配给 var1,迭代 #2,然后将值分配给 var2... 。等等。
任何指导将不胜感激。
虽然我不是 100% 确定你为什么想要这种方法,但要回答这个问题,你可以走两条路
在 2005-2008R2 环境中,您的控制流程可能如下所示
我定义了 11 个变量,都是 Int32 类型。计数器,然后是变量 1 到变量 10。
我的 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 循环的值存储为您已经知道您的范围(即使基于动态初始值和最终值)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)