我有一个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
答案 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中覆盖或更改该行为。
您唯一的选择是捕获您感兴趣的行计数并将其放入变量并返回它们。