如何存储SQL查询结果的变量和messegeBox(how to store sql query r

2019-09-18 01:19发布

我在SSIS包我执行SQL任务一个简单的SQL查询,选择MAX(binindex)FROM dbo.myTable

我需要这个最大的索引存储到一个变量,然后把它传递给脚本任务,并显示它,我已经声明了一个包变量,包编译,但它显示-1每一次,我不知道我在做什么错了,任何帮助将不胜感激!

public void Main(){
    //TODO: Add your code here
    Dts.TaskResult = (int)ScriptResults.Success;
    MessageBox.Show(Dts.Variables["User::BININDEX"].Value.ToString());
}

Answer 1:

好消息是,你是正确的,据我可以看到所做的一切。 我重新创建你的包,我从我的查询的预期值。

我也能促使你的情况 - 正确的值是从我的查询返回的,但我的包产生“不正确的结果。”

这个问题,我希望是,你必须在不同的范围定义的两个BININDEX变量。 我原来的设想是包范围的一个包含值-1和你有一个变量范围限定为“执行SQL任务”使用相同的名称。 默认行为是创建一个变量作用域到当前具有焦点的对象。 这就改变了顺便说一下,2012年发布的SQL Server。

作为您的图片显示的123包范围的变量设计时间值的可能性也存在,你有BININDEX同名的脚本任务定义的变量。 局部变量将覆盖全局范围变量

点击你的脚本任务,希望你会看到那里定义像上面一个BININDEX。 否则,我认为这个问题是在你的包的地方,你有冲突BININDEX变量。 您可以尝试通过Package Explorer中苦读寻找,你必​​须与列出的两个同名变量的实例。

我需要离开,但如果没有的是这样的话,在执行SQL任务添加PostExecute断点,并在您的本地窗口看(不变量为只反映设计时间值)。 扩展变量,你应该能够看到BININDEX的价值。 对不对呢?



文章来源: how to store sql query result in a variable and messegeBox
标签: sql ssis