sql - 如何将sql查询结果存储在变量和messegeBox中

标签 sql ssis

enter image description here

我在 ssis 包中的执行 sql 任务中有一个简单的 sql 查询, 选择最大值(binindex) 来自 dbo.myTable

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

enter image description here

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

enter image description here

enter image description here

最佳答案

好消息是,据我所知,您所做的一切都是正确的。我重新创建了您的包,并从查询中获得了预期值。

Basic package

我还可以归纳您的情况 - 从我的查询中返回正确的值,但我的包产生“不正确的结果”。

negative one

我希望问题是您在不同范围定义了两个 BININDEX 变量。我最初的假设是包作用域包含值 -1,并且您有一个作用域为“执行 SQL 任务”的同名变量。默认行为是创建一个变量,其作用域为当前具有焦点的对象。顺便说一句,这在 2012 版 SQL Server 中发生了变化。

由于您的图片显示包作用域变量的设计时值为 123,因此还可能存在在脚本任务上定义的具有相同名称 BININDEX 的变量。局部变量将覆盖全局变量

variables window

单击您的脚本任务,希望您会看到像上面一样定义的 BININDEX。否则,我认为问题出在你的包中的某个地方,你有冲突的 BININDEX 变量。您可以尝试通过 Package Explorer 查找列出了两个同名变量的实例。

package explorer

我需要离开,但如果不是这种情况,请在“执行 SQL 任务”上添加一个“执行后”断点,然后查看“局部变量”窗口(不是“变量”,因为它只反射(reflect)设计时值)。展开变量,您应该能够看到 BININDEX 的值。那里正确吗?

enter image description here

关于sql - 如何将sql查询结果存储在变量和messegeBox中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10987430/

相关文章:

sql - 如何为每日备份 SSAS 多维数据集生成或设置唯一名称(使用当前日期)

Mysql:从使用 'in' 和 'not in' 条件的连接表中选择行

mysql - 大表上的慢 MySQL SELECT

sql - SSRS - 空值

c# - 从 SQL Server 返回一个整数值

sql-server - 在SSIS中将多行合并为一

ssis - SSIS Foreach循环容器动态文件名和路径,然后解压缩文件

sql - 根据 SQL 中耗时返回 true/false

sql-server - SSIS Excel 连接管理器错误

c# - 如何调试作为 SSIS 项目一部分的脚本?