UPDATE: mein Code verhält sich wie erwartet, da in der gespeicherten Prozedur ein Tippfehler enthalten war, der der Grund war, dass es fehlschlug.ExecuteNonQuery im Hintergrund ohne Fehler fehlgeschlagen
Ich kann nicht scheinen, um herauszufinden, warum und wie dies zu beheben, weil ich keine Fehler bekommen bin, was ich bin immer wird der Rückgabewert ist 0, was bedeutet, fehlschlagen.
Hier ist mein .net Code:
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
Meine gespeicherten Prozedur:
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
Also, wenn ich die gespeicherte Prozedur von SQL Server Management Studio nur ausführen, tut es meine Reihe erfolgreich aktualisieren, ohne jeder Fehler
EXEC EmployeeUpdate 34,'John John'
Return Value = 1
immer noch die gleichen, nachdem sp Modifizieren .... '-1' –
Haben Sie Trigger auf die Tabelle, die ein Rollback verursachen könnten? Was erhalten Sie in SQL Management Studio, wenn Sie die vereinfachte Version der oben genannten gespeicherten Prozedur ausführen? d. h. EXEC EmployeeUpdate 34, 'John John' – BluesRockAddict
habe keine Trigger auf der Tabelle, überprüfe das einfach. –