【问题标题】:Execute multiple stored procedures with one input parameter SSIS一个输入参数SSIS执行多个存储过程
【发布时间】:2021-01-13 03:03:47
【问题描述】:

我正在尝试使用 Execute SQL Task 在 SSIS 中仅使用一个输入参数执行多个存储过程,但我不断收到此错误:

[执行 SQL 任务] 错误:执行查询“EXEC sample_stored_proc1...”失败,出现以下错误:“值不在预期范围内。”。可能的失败原因:查询有问题,“ResultSet”属性设置不正确,参数设置不正确,或者连接没有正确建立。

以下是 SQL TASK 中用于调用存储过程的示例代码:

EXEC sample_stored_proc1 ?;
EXEC sample_stored_proc2 ?;
EXEC sample_stored_proc3 ?;

注意事项

  1. 我尝试了仅包含 1 个存储过程的代码,它可以工作,但添加 1 个或多个存储过程会出现上述错误。
  2. 使用 OLE DB 连接

【问题讨论】:

  • 信不信由你,你的输入 SQL 中有三个参数。您需要重复您的参数映射三次。但无论如何,拥有一个包装器 proc 是一个更好的主意

标签: sql-server ssis


【解决方案1】:

我找到了一个解决方案,我创建了一个带有输入参数的新存储过程,并将其放在 EXECUTE SQL TASK 中。这将用于执行上面的所有存储过程。

ALTER PROCEDURE [dbo].[xp_EXEC_ALL_sample_SPs] @Start_Date as DATE
AS
BEGIN
        EXECUTE sample_stored_proc1 @Start_Date;
        EXECUTE sample_stored_proc2 @Start_Date;
        EXECUTE sample_stored_proc3 @Start_Date;

END

如果有更好的解决方案请告诉我

【讨论】:

    【解决方案2】:

    当你执行一个存储过程时它会返回一个执行状态,所以当你运行三个过程时它会返回多个结果集,你可以简单地忽略返回的结果集

    DECLARE @result int;
    DECLARE @start_date DATE = ?;
    EXEC @result = sample_stored_proc1 @start_date;
    EXEC @result = sample_stored_proc2 @start_date;
    EXEC @result = sample_stored_proc3 @start_date;
    

    这样做会抑制查询中的多个结果集

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多