将包变量设置为数据库中的值

时间:2013-01-12 04:23:21

标签: sql variables ssis

我有一个SSIS项目,我希望将其中一个包变量设置为我的一个数据库表中某些列的最大值。假设包变量名为var。

我的SQL看起来像:

SET var = (SELECT max(some_column) from SomeTable)

这如何适合SSIS控制流/数据流?这个SQL会涉及什么类型的任务?我甚至可以通过SQL访问包变量吗?

1 个答案:

答案 0 :(得分:4)

您可以使用Execute Sql Task来完成此任务。语法将根据您使用的数据库连接类型(OleDb或.Net)而有所不同。

如果您使用的是OleDb连接管理器,那么您的sql语句将如下所示:

SELECT ? = MAX(some_column) FROM some_table

然后选择参数映射选项卡以映射您的参数/变量。从“变量名称”字段的下拉列表中选择包变量。将Direction设置为Output并将Parameter Name设置为0.(OleDb连接上的变量按从0开始的顺序映射)

如果您使用的是.Net连接管理器,则可以在sql语句中使用更熟悉的@variableName作为参数占位符,以及执行SQL任务中的参数名称。

编辑:回复您的评论。查看直接从我的某个项目中提取的一些屏幕截图。请比较您正在做的事情,以确保我们在同一页面上。

在这个镜头中,记下Execute Sql Task的连接类型,并注意Sql语句的最后一个语句,我选择的参数等于sql函数。

SSIS Example 1

在下一个镜头中,看看我如何配置第二个参数,确保参数方向设置为输出。该参数名为1,因为它是sql语句中的第二个参数/参数holder。 SSIS Example 2