UPDATE:我的代碼表現得如預期的那樣,存儲過程中存在一個錯誤,這是它失敗的原因。ExecuteNonQuery靜默失敗,沒有任何錯誤
我似乎無法找出原因或如何解決這個問題,因爲我沒有得到什麼,我得到任何錯誤的返回值是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
還是修改後的SP一樣....'-1' – 2012-04-14 04:40:53
你對這個表可能導致回滾的觸發器?如果您運行上述存儲過程的簡化版本,您會在SQL Management Studio中獲得什麼?即EXEC EmployeeUpdate 34,'約翰約翰' – BluesRockAddict 2012-04-14 04:43:30
沒有任何觸發器表上只是仔細檢查。 – 2012-04-14 04:44:51