我正在从C#调用一个SQL Server存储过程,它由一个简单的INSERT语句组成。ExecuteNonQuery()返回受OK语句影响的行数,除非没有update语句,在这种情况下,我得到的结果是-1。
这对我来说没有多大意义;-1行怎么会受到影响?
发布于 2013-02-13 10:33:42
即使当SET NOCOUNT为ON时,@@ROWCOUNT函数也会更新。
Source
因此,由于您处于关闭NOCOUNT的死胡同,请尝试以下操作:
在@@ROWCOUNT ExecuteNonQuery中使用
在SP的末尾,执行SELECT @@ROWCOUNT并使用ExecuteScalar而不是ExecuteNonQuery。这将返回您想要的结果。
发布于 2016-07-11 19:29:58
在使用具有insert/delete/update查询的存储过程调用ExecuteNonQuery()之后,可以得到-1。如果存储过程不调用任何查询(Insert/Update/Delete),就会发生这种情况。这里有一个例子可以帮助你理解这一点。
StoredProcedure- MySQL
分隔符$$ DROP PROCEDURE IF EXISTS sp_DML $$ CREATE PROCEDURE sp_DML
(P_Operation varchar(50)
) BEGIN if(P_Operation='Insert')
/* Insert Statment*/
end if;
if(P_Operation='Update')
/* Update Statment*/
end if;
if(P_Operation='Delete')
/*Delete Statment*/
end if; 结束$$
如果您使用ExecuteNonQuery();调用此SP,并将参数P_Operation作为不满足写入存储过程的任何条件的'NoOpeartion'传递,则它将始终返回-1。
https://stackoverflow.com/questions/14844779
复制相似问题