我有一个更新表的SQL Server存储过程。
这是我的存储过程
CREATE PROCEDURE [dbo].[usp_ExampleUpdate]
(@iID INT,
@sCodeName VARCHAR(MAX)
)
AS
BEGIN
UPDATE dbo.Example
SET CodeName = @sCodeName
WHERE ID = @iID
END
当我在SQL Server中执行此存储过程时,它返回“1行受影响”,并更新数据。但是,当我尝试使用ExecuteNonQuery
从ASP.NET MVC执行此存储过程时,它返回0.
以下是我的代码示例
public bool UpdateExample(SqlTransaction p_oTrans, int ID, string CodeName)
{
try
{
int iRowAffected = SqlHelper.ExecuteNonQuery(p_oTrans, "usp_ExampleUpdate", ID, CodeName);
return (iRowAffected > 0);
}
catch (Exception ex)
{
throw ex;
}
}
iRowAffected
此处始终返回0,即使存储过程已成功执行。
我已经阅读了关于this的内容,但我仍然没有得到它,为什么我总是得到0。
答案 0 :(得分:0)
MSDN:
对于UPDATE,INSERT和DELETE语句,返回值是受命令影响的行数。当插入或更新的表上存在触发器时,返回值包括插入或更新操作影响的行数以及受触发器或触发器影响的行数。 对于所有其他类型的语句,返回值为-1。如果发生回滚,则返回值也为-1。
由于您正在执行SP而不是这3个DML语句中的一个,我得出的结论是它按设计工作