2

我编写了一个存储过程,它将在执行后返回列 BEID、Date_of_txn、Txn_Amount 作为结果。我在 SQL Server Management Studio 中运行存储过程时手动获取结果。但我想在 SSIS 中使用“执行 SQL”任务执行这个存储过程,并将结果存储在一个变量中。我怎样才能做到这一点?

我不知道如何将结果存储在结果集中,因为当我运行包时,包每次都失败。

  • 结果集:Single Row
  • 连接类型:OLE DB
  • 联系:LocalHost.Fino_Detail
  • SQL语句:Exec sp_HighAmount 02, 2019

存储过程:

CREATE PROCEDURE [dbo].[sp_HighAmount]
    (@Month INT,
     @Year INT)
AS
BEGIN
    SELECT
        BEID, DATE_OF_TXN, SUM(Txn_amount) AS Txn_Amount 
    FROM 
        Fino_Sales
    WHERE
        SUBSTRING(Date_of_txn, 6, 2) = @Month
        AND SUBSTRING(Date_of_txn, 1, 4) = @Year
    GROUP BY
        BEID, Date_of_txn
    HAVING 
        SUM(Txn_Amount) BETWEEN 35001 AND 50000
        AND SUM(commission_paid) > 350
END
4

1 回答 1

2
... 
group by BEID, Date_of_txn
...

此类查询返回多行的可能性很高,因此应将结果集切换为:“完整结果集”,并将输出映射到类型为Object的变量,并执行进一步的foreach任务来遍历每一行.

一个很好的分步演练可以阅读:在 SSIS 全行集中执行 SQL 任务

于 2019-06-15T12:05:53.993 回答