我的表名为Table1,列为col1,col2为col1,报表为weblink,col2为报表名称。现在,我有一个包含变量var1和var2的包,它们应分别从table1获取col1和col2值并通过电子邮件发送。如果weblink在表中更新,则包应发送更新的链接。我知道它的相反方式,但试图做这样的事情。
感谢你们的任何帮助。
由于
答案 0 :(得分:0)
有几种方法可以做到这一点。您可以根据处理一行还是多行来尝试以下操作之一。
单行解决方案
如果您正在运行SSIS包以便它将处理表中的一行且只有一行,则可以使用“执行SQL任务”从表中获取值。首先添加两个变量
在任务中,指定与SQL Server的连接并输入这样的SQL语句。
SELECT col1, col2
FROM Table1
WHERE <your condition to retrieve one row>
此外,在“常规”选项卡上,将“ResultSet”值设置为“单行”。
在“结果集”选项卡上,添加两个元素。第一行应为结果名称0,变量名称为Var1。第二行将是结果名称1,变量名称Var2。
当任务运行时,SQL语句的结果将存储到变量中。
多行解决方案
如果SSIS包必须返回多行,那么您需要一种不同的方法。首先,您需要创建另一个Object数据类型的变量。 SQL结果将保存到此变量中。
您将拥有一个与上面类似的执行SQL任务。但是,您的SQL语句应返回要处理的所有行。 ResultSet属性应设置为完整结果集。在“结果集”选项卡上,应该有一个结果集,其中0表示结果名称,新对象变量作为变量名称。关闭“执行SQL任务”编辑器。
添加Foreach循环容器。编辑容器并选择“收集”选项卡。将Enumerator属性设置为Foreach ADO枚举器。在Enumerator配置下,将对象变量设置为ADO对象源变量。
在“变量映射”选项卡上,添加到行。第一行将具有Variable Var1和Index 0,第二行将具有Variable Var2和Index 1. Foreach循环容器将处理结果集中的每个并将列值分配给您的变量。您可以在容器中添加任何任务,它们将对结果集中的每一行运行一次。