首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ExecuteNonQuery()返回-1

ExecuteNonQuery()返回-1
EN

Stack Overflow用户
提问于 2013-02-13 09:03:45
回答 2查看 276关注 0票数 1

我正在从C#调用一个SQL Server存储过程,它由一个简单的INSERT语句组成。ExecuteNonQuery()返回受OK语句影响的行数,除非没有update语句,在这种情况下,我得到的结果是-1。

这对我来说没有多大意义;-1行怎么会受到影响?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-13 10:33:42

即使当SET NOCOUNT为ON时,@@ROWCOUNT函数也会更新。

Source

因此,由于您处于关闭NOCOUNT的死胡同,请尝试以下操作:

@@ROWCOUNT ExecuteNonQuery中使用

在SP的末尾,执行SELECT @@ROWCOUNT并使用ExecuteScalar而不是ExecuteNonQuery。这将返回您想要的结果。

票数 1
EN

Stack Overflow用户

发布于 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

代码语言:javascript
复制
 (

P_Operation varchar(50)

代码语言:javascript
复制
 ) BEGIN    
代码语言:javascript
复制
  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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14844779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档