我有一个SSIS包,我需要执行带有执行SQL任务的MERGE语句。我需要在Oracle DB和SQL Server 2012 DB上执行此操作。我的问题是,如何将受影响的行数作为ResultSet获取,以便将其保存在SSIS包中的变量上?我不需要知道是否更新或插入,并且我不想在Oracle上创建过程,因为MERGE是动态的并且通过变量中的表达式在包中计算。我只想获得受影响的行的值。
P.S。:如果我不能使用执行SQL任务,我是否可以使用脚本来运行MERGE?问题是,从我读到的,Oracle上的ExecuteNonQuery()不会返回受MERGE影响的行。我无法找到SQL Server的任何信息。有人可以帮忙吗?
提前致谢。
更新:我刚用SQL Server检查了一个带有ExecuteNonQuery()的脚本,它确实返回了受影响的数量。但是,如果我可以避免脚本并使用执行SQL任务会更好,但是如何将受影响的行作为ResultSet?
答案 0 :(得分:0)
在SQL Server上,您可以将OUTPUT子句与merge语句一起使用。这是给你读的东西。 对于Oracle,请阅读:PLSQL: Get number of records updated vs inserted when a merge statement is used
https://www.simple-talk.com/sql/learn-sql-server/implementing-the-output-clause-in-sql-server-2008/