2014-03-24 109 views
0

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

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

+0

执行SQL任务是你想要的。 –

回答

0

我do't很理解您的需求,但你可以这样来做:在

  1. 跌落执行SQL任务

  2. 确保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 
    ) 
+0

源表和目标表都位于不同的数据库中。 –

+0

就像他们在同一台服务器上一样,简单地限定他们:'db.schema.table' –

+0

好的谢谢.... –