2013-01-12 50 views
1

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

我的SQL会是什么样子:

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

这是如何安装到了SSIS控制流/数据流?这个SQL会进入什么类型的任务?我甚至可以通过SQL访问一个包变量?

回答

4

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

如果您使用的是OLEDB连接管理器,您的SQL语句将是这个样子:

SELECT ? = MAX(some_column) FROM some_table 

然后选择参数映射标签映射你的参数/变量。从“变量名称”字段的下拉列表中选择您的包变量。将方向设置为输出并将参数名称设置为0.(OleDb连接上的变量从0开始按顺序映射)

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

编辑:回复您的评论。看到从我的一个项目直接拉了几个截图。请比较你在做什么,以确保我们在同一页面上。

在这个镜头中,请注意执行Sql任务的连接类型,并注意Sql语句的最后一个语句,我选择的参数等于一个sql函数。

SSIS Example 1

在接下来的镜头,看看我是怎么配置的第二个参数,确保参数的方向设置为输出。该参数被命名为1,因为它是sql语句中的第二个参数/参数持有者。 SSIS Example 2

+0

您给出的查询不会修改变量的值......我尝试使用关键字'SET',但SSIS告诉我SET不受支持。我怎样才能设置变量的值? – CodeKingPlusPlus

+2

您也可以跳过参数方法并将结果类型更改为一行,然后在结果选项卡中映射值。在这种方法中,删除参数占位符(?)。 – billinkc

+0

@billinkc感谢您指出。这很容易。 – jlnorsworthy