2011-10-17 134 views
18

我正在使用存储过程在表中插入一些值。ExecuteNonQuery()总是返回-1

CREATE PROCEDURE [dbo].[Sp_InsertValue] 
@Val1 as nvarchar(50) 
@Val2 as nvarchar(50) 
as 
BEGIN 
    IF NOT EXISTS(SELECT * FROM @mytable WHERE [email protected]) 
    INSERT INTO @mytable VALUES(@VAL2) 
END 

我使用的ExecuteNonQuery()使用C#调用ASP.NET此存储过程。它工作正常,没有问题,它插入值,如果他们不存在。问题是,cmd.ExecuteNonQuery()总是返回-1。我期望如果插入一条记录,它应该返回1,如果不是,对吧?

+0

当您在sql server查询窗口中执行此过程时,是否可以在结果窗格中看到任何记录已更新的消息?并且还尝试返回受到影响的行,并将其添加到过程最后一行 - 返回@@ Rowcount – Lingaraj 2013-04-10 12:16:06

回答

36

检查您的存储过程中是否没有“SET NOCOUNT ON”。这将停止返回影响行的数量。从字面上看,'NoCount'为ON。

在这种情况下,默认响应将始终为'-1'。