更新:我的代码行为符合预期,因为存储过程中有一个错字,这是它失败的原因。
我似乎无法弄清楚为什么或如何解决这个问题,因为我没有收到任何错误,我得到的是返回值为 0,这意味着失败。
这是我的 .net 代码:
SqlParameter returnValue= new SqlParameter("returnValue", SqlDbType.Int);
returnValue.Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add(returnValue);
cmd.ExecuteNonQuery();
result = Convert.ToInt32(returnValue.Value); //1 success and 0 failed
我的存储过程:
CREATE PROCEDURE EmployeeUpdate
@employee_id BIGINT,
@name nvarchar(250)
AS
BEGIN
SET NOCOUNT ON
DECLARE @Result int
SET @Result = 0
UPDATE Employee
SET name = @name
WHERE employee_id = @employee_id
IF (@@rowcount = 1)
BEGIN
SET @Result = 1
END
SET NOCOUNT OFF
RETURN @Result
END
因此,如果我只是从 SQL Server Management Studio 执行存储过程,它会成功更新我的行而不会出现任何错误
EXEC EmployeeUpdate 34,'John John'
Return Value = 1