SSIS循环使用存储过程的返回值

时间:2019-02-06 00:42:13

标签: sql sql-server ssis etl execute-sql-task

我试图创建一个SSIS包,该包基于在循环中运行的存储过程的返回值循环。我不断收到超级无用的错误:

  

“错误:加载顺序时错误:0xC002F210,执行SQL任务:执行查询” EXEC? = [Load_Focus_OrderNum]?,1“失败,出现以下错误:
  “值不在预期范围内。”
  可能的失败原因:
  查询问题,“ ResultSet”属性未正确设置,参数未正确设置或连接未正确建立。
  任务失败:加载订单”

这是我的设置:

enter image description here

“加载订单”存储过程一次加载一个包含500个订单的表,然后返回最后一个订单号(我已经确认它正确返回了)。

DECLARE @spOut int
EXEC @spOut = Load_Focus_OrderNum 1, 1
PRINT @spOut

按预期返回638

然后我希望它从下一个订单开始处理下一个500。

我使用以下命令调用存储过程:

EXEC ? = sp_LoadOrders ?, 1

程序段:

ALTER PROCEDURE [dbo].[LoadOrders] 
    (@PK_ID INT, @OrdType INT)
AS
     -- Loads OrderNumTbl table
    RETURN (SELECT TOP 1 ID FROM OrderNumTbl ORDER BY ID DESC)
GO

我的参数映射是:

enter image description here

我对循环的表达式是:

enter image description here

我想念什么?任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

在参数映射部分,将参数名称值替换为参数索引>>将@OrderID替换为0,将@T1_ID替换为1

参考