SSIS执行SQL任务输出-1的参数不正确显示

时间:2009-03-03 22:52:28

标签: ssis

这是我一整天都看到的最糟糕的事情。

在SSIS 2005中,我有一个执行SQL任务,它运行一个SQL 2005存储过程,它接受两个IN参数和一个OUTPUT参数。 IN参数是静态的,因此在命令字符串中进行了硬编码。 OUTPUT参数被拉入Int32类型的包变量中(尽管在参数映射页面的执行SQL任务中,它告诉我数据类型是LONG)。

当我运行SQL任务并且输出参数返回值> 0(如2),变量填充为2.当我运行SQL任务并且输出参数返回-1时,包变量填充了一些值,如66682316.我可以在SSMS中运行proc并且如果值预先填充-1,它返回-1给我。

DECLARE @out int

SET @out = -1

EXECUTE MyProc 'param1', 'param2', @out OUTPUT

SELECT @out    -- returns -1

有没有人知道为什么它会返回这个值而不是-1?我确定我的变量是Int32而不是UInt32。

2 个答案:

答案 0 :(得分:1)

如果像你一样设置sql命令,则应该从结果集中设置变量而不是参数。

将结果集设置为单行,然后在结果集选项卡上将0(如果使用OLEDB)作为结果名称,将变量(即User :: OutputVariable)作为变量名称。

如果你想使用参数,你可以像这样设置你的sql:

EXECUTE MyProc 'param1', 'param2', ? OUTPUT 

然后您将转到参数映射选项卡并按如下方式设置参数:
变量名称 - >用户:: OutputVariable
方向 - >输出
数据类型 - >龙
参数名称 - > 0
参数大小 - > -1

注意这适用于在常规选项卡上使用OLEDB作为连接类型。参数的命名方式因使用的连接类型而异。

答案 1 :(得分:0)

你应该说 SELECT吗? = @Out