SSIS SQL任务:存储过程输出参数的奇怪值,具有默认值

时间:2012-08-16 15:07:25

标签: sql-server stored-procedures parameters ssis default

这是我的简历的简化版本:

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的值,那么我希望看到默认输出值1和2.当我调用{时,它会以这种方式工作{1}}来自普通的SQL脚本。但是,当我在SSIS SQL任务中运行相同的语句时,如下所示:

EXEC usp_AddSomething ...

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

但是如果值显式设置在sproc中的某个位置,那么:

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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