问题如题。
【下面是一个例子】
1、存储过程完成的功能是:插入insert一条记录,相同主键的记录存在时执行更新update的操作。存储过程正常执行的返回值是1.(不过本文提到的问题和这个返回值没关系。)
2、在另一个.cs文件中使用 SqlCommand对象 调用方法ExecuteNonQuery(),获取操作影响的行数。
【现象】
正常应该返回大于0的数,但是返回值却是 -1.
【解决】
存储过程中,多了一条语句:SET NOCOUNT ON;
该语句阻止存储过程返回信息中包含受影响行数的信息,以提高性能。
去掉该语句,标题提到的问题就解决了。
【备注】
这个问题比较low,只是被它坑了一小时,这里mark一下。关于SET NOCOUNT ON;的含义,可以参考:http://www.cnblogs.com/lmfeng/archive/2011/10/12/2208821.html