这是我的简历的简化版本:
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。
答案 0 :(得分:0)
查看正在发生的事情的一个好方法是使用分析器启动跟踪并查看ssis发送到数据库引擎的t-sql。然后尝试从ssms执行该操作,看看是否得到相同的结果。