Variables SSIS Forloop:根据迭代次数为变量名赋值
我正在尝试使用ForLoop容器为多达10个不同的变量赋值 var1 var2 . . . var10 基于迭代次数 我需要循环根据一个变量迭代一定次数,该变量已根据查询的结果集指定了一个整数值……该部分工作正常 我不知道如何告诉forloop使用哪个变量来赋值…即如果我在Itreation#1,那么将值赋值给var1,迭代#2,然后将值赋值给var2…等等Variables SSIS Forloop:根据迭代次数为变量名赋值,variables,for-loop,ssis,iteration,Variables,For Loop,Ssis,Iteration,我正在尝试使用ForLoop容器为多达10个不同的变量赋值 var1 var2 . . . var10 基于迭代次数 我需要循环根据一个变量迭代一定次数,该变量已根据查询的结果集指定了一个整数值……该部分工作正常 我不知道如何告诉forloop使用哪个变量来赋值…即如果我在Itreation#1,那么将值赋值给var1,迭代#2,然后将值赋值给var2…等等 如果您能提供任何指导,我们将不胜感激。虽然我不能100%确定您为什么希望采用这种方法,但要回答这个问题,您可以选择两种方法 在2005-2
如果您能提供任何指导,我们将不胜感激。虽然我不能100%确定您为什么希望采用这种方法,但要回答这个问题,您可以选择两种方法 在2005-2008R2环境中,您的控制流可能看起来像这样 我已经定义了11个变量,都是Int32类型的。计数器,然后是变量1到变量10 我的For循环配置为 将当前值赋值给变量将在脚本任务中处理。我已将计数器变量设置为只读变量,变量1-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年,那么示例项目有一个表达式任务,您可以在服务器上构建并安装
无论如何,您可以使用表达式和约束的优先级约束,然后在其中测试您的值
即使我有一个2012年的安装,我可能仍然会使用代码路线,因为我认为这是一个更干净的方法。不过,这两种方法都为您提供了值到VariableN的硬编码映射@STLRick(Missouri Representation!)认为在Object类型的变量中存储复杂变量可能是一种更好的方法,尽管我承认我不太明白为什么要存储For循环的值,因为你已经知道了你的范围(即使是基于动态初始值和终端值)Hmm。。。那么,真正的问题是什么?我是说,退后一步。这是一个绝对的要求,比如说,你最终得到20个变量,命名为Var1到Var20,填充了从迭代1到20的值吗?或者,真正的需求是您需要存储for循环容器X次迭代的结果,并在以后能够访问它们吗?嗨,这些变量并不是真正称为var1…var20…我只是以这种方式键入它们,这样问题才有意义。我真正想做的是删除表的所有外键,这样我们就可以截断表,然后重新创建外键。有人创建了一个新的外键,因此旧的SSIS包在截断步骤失败,因为有一个键尚未删除。我想存储所有的foregin键名,删除它们,并重新创建它们,而不管是否有人重命名、删除或向表中添加新的外键。因此,是的,实际要求是存储X次迭代的结果,以便以后能够访问它们…:-)。好吧,我问的原因是,真正想知道的是,是否必须在变量中包含它们。下面是一篇博客文章的链接,该文章讨论了如何在SSIS中使用对象类型变量,并将其用作StringArray。我认为这将使您能够存储X个值,然后遍历并读取它们。我不能100%肯定我理解您的用例,所以我不会对此发表评论,但这应该有助于解决它的技术: