Ssis 如何从SSI调用存储过程?

Ssis 如何从SSI调用存储过程?,ssis,Ssis,我想创建一个SSIS包,它将调用存储过程并将过程的输出转储到表中 SSIS包将返回输出,我需要将此结果集输出转储到另一个表中。 但是在插入之前,如果该日期存在任何行,我想更新该表中的行,或者插入结果集。我不太理解您的要求,但您可以这样做: 删除执行SQL任务 确保YourStagingTable存在,并且列与存储过程输出匹配 下面是一些示例代码,可以放入执行SQL任务中,以实现所需的功能: -- Clear Staging Table TRUNCATE YourStagingTable --

我想创建一个SSIS包,它将调用存储过程并将过程的输出转储到表中

SSIS包将返回输出,我需要将此结果集输出转储到另一个表中。
但是在插入之前,如果该日期存在任何行,我想更新该表中的行,或者插入结果集。

我不太理解您的要求,但您可以这样做:

  • 删除执行SQL任务

  • 确保
    YourStagingTable
    存在,并且列与存储过程输出匹配

  • 下面是一些示例代码,可以放入执行SQL任务中,以实现所需的功能:

    -- Clear Staging Table
    TRUNCATE YourStagingTable
    
    -- Save results of stored proc into staging table
    INSERT INTO YourStagingTable
    EXEC YourProc
    
    -- Update any existing records
    UPDATE YourFinalTable
    SET YourUpdateField = YourStagingTable.YourSourceField
    FROM YourStagingTable
    WHERE YourFinalTable.JoinField1 = YourStagingTable.JoinField1
    
    -- Insert any non existing records
    INSERT INTO YourFinalTable (Column1,Column2)
    SELECT Column1,Column2
    FROM YourStagingTable
    WHERE NOT EXISTS (
        SELECT 1 FROM YourFinalTable 
        WHERE YourFinalTable.JoinField1 = YourStagingTable.JoinField1
        )
    

    执行SQL任务是您想要的。源表和目标表都在不同的数据库中。由于它们在同一台服务器上,只需对它们进行限定:
    db.schema.table