使用ExecuteNonQuery覆盖SQL Server中受影响的行?

时间:2010-01-07 18:11:01

标签: .net sql-server sql-server-2008 ado.net

我有一个insert语句,它将一些数据提取到一些表变量中,然后根据该数据将一些数据插入到几个表中。我只关心插入真实表而不是表变量的行,但ExecuteNonQuery将返回所有@@ ROWCOUNT的总和。我想知道有没有办法覆盖使用ExecuteNonQuery返回的rowcount?

我知道我可以使用ExecuteScalar或输出变量作为替代。

这是一个将其简化为一个简单示例的示例:

CREATE TABLE VersionExample ( Version Varchar(255) )  

Declare @RowCountICareAbout int

DECLARE @Example TABLE ( Version Varchar(255) )  

INSERT INTO @Example Select @@VERSION

INSERT INTO VersionExample SELECT Version FROM @Example

SET @RowCountICareAbout = @@ROWCOUNT

--Use @RowCountICareAbout as the rows affected returned to ExecuteNonQuery

2 个答案:

答案 0 :(得分:5)

不知道这是否可行,但您是否尝试过SET NOCOUNT(然后在最终查询之前设置NOCOUNT OFF)?

更新:这篇博文和评论似乎表明这确实有用:

http://petesbloggerama.blogspot.com/2006/10/note-to-self-set-nocount-on-not.html

答案 1 :(得分:0)

不,无法在ADO.NET或SQL Server中覆盖或更改该行为。

您唯一的选择是捕获您感兴趣的行计数并将其放入变量并返回它们。