更新:私のコードは、ストアドプロシージャの誤植が原因で失敗したために正常に動作しています。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
.... '-1' –
あなたはロールバックが発生する可能性があり、そのテーブル上の任意のトリガーを持っていますか?上記のストアドプロシージャの簡略化されたバージョンを実行すると、SQL Management Studioで何が得られますか?つまり、EXEC EmployeeUpdate 34、 'John John' – BluesRockAddict
は、テーブルのトリガーがありません。 –