【发布时间】:2015-02-02 16:49:17
【问题描述】:
我有一个 SSIS 包,我需要在其中执行带有执行 SQL 任务的 MERGE 语句。我需要在 Oracle DB 和 SQL Server 2012 DB 上执行此操作。我的问题是,如何将受影响的行数作为 ResultSet 保存,以便将其保存在 SSIS 包中的变量中?我不需要知道是更新还是插入,也不想在 Oracle 上创建过程,因为 MERGE 是动态的,并且通过变量中的表达式在包中计算。我只想获取受影响的行的值。
P.S.:如果我不能使用执行 SQL 任务,我可以至少使用一个脚本来运行 MERGE 吗?问题是,根据我的阅读,Oracle 上的 ExecuteNonQuery() 不会返回受 MERGE 影响的行。而且我找不到任何有关 SQL Server 的信息。有人可以帮忙吗?
提前致谢。
更新:我刚刚使用 ExecuteNonQuery() 为 SQL Server 检查了一个脚本,它确实返回了受影响的数量或行数。但是,如果我可以避免脚本并使用执行 SQL 任务会更好,但是如何将受影响的行作为 ResultSet?
【问题讨论】:
-
您绝对可以使用脚本任务来完成。不了解 Oracle,但考虑使用 ExecuteScalar()。
-
只有在返回表并检索第一列的第一行时,ExecuteScalar() 才起作用?受影响的行数不会在表中返回,是吗?
标签: c# sql-server oracle ssis