1

这是我的 sproc 的简化版本:

CREATE PROCEDURE usp_AddSomething
@i_input1 int,
@o_output1 int = 1 OUTPUT,
@o_output2 int = 2 OUTPUT
AS
-- Do stuff

如果我没有为sproc@o_output1@o_output2在 sproc 内显式设置值,那么我希望看到默认输出值 1 和 2。当我EXEC usp_AddSomething ...从普通 SQL 脚本调用时,它会以这种方式工作。但是,当我在 SSIS SQL 任务中运行相同的语句时,如下所示:

EXEC ? = usp_AddSomething
@i_input1 = ?,
@o_output1 = ? OUTPUT,
@o_output2 = ? OUTPUT

我得到看似随机的值(例如 15305391 和 69085360),而不是默认的 1 和 2。

但是,如果值在存储过程中的某处显式设置,如下所示:

...
SELECT @o_output1 = 1
SELECT @o_output2 = 2
RETURN 0

然后我在 SSIS 中得到 1 和 2 的期望值。

我的 SSIS 变量是 Int32,SQL 任务上的参数映射使用 LONG,并且序号位置(即 0、1、2)在参数名称下正确设置。

冗余初始化输出参数的值以匹配它们的默认值很容易,但我真的很想知道为什么它不起作用。也许另一个古怪的 SSIS 事情?SQL Server 2005 SP4。

4

1 回答 1

0

查看正在发生的事情的一个好方法是使用分析器启动跟踪并查看 ssis 发送到数据库引擎的 t-sql。然后尝试从 ssms 执行它,看看是否得到相同的结果。

于 2012-08-16T18:06:51.050 回答