Get return-Wert aus der gespeicherten Prozedur mit ExecuteSqlCommand (mit Entity Framework)
Ich habe code, der wie folgt aussieht:
int retval = databaseContext.Database.ExecuteSqlCommand(command, sqlParameters.ToArray());
Wo databaseContext ist vom Typ System.Daten.Entität.DbContext
Möchte ich den Rückgabewert verwenden, um zu wissen, ob die gespeicherte Prozedur lief erfolgreich. Basierend auf die Dokumentation ExecuteSqlCommand
sollte das Ergebnis der gespeicherten Prozedur.
Jedoch, Den Befehl gibt immer -1, retval, egal was ich einstelle die gespeicherte Prozedur zu tun. Ich habe versucht, die Rückkehr verschiedene ganze zahlen und sogar aufrufen RAISERROR-Anweisung in der gespeicherten Prozedur, aber der return-Wert ist konstant -1.
Hier sind zwei gespeicherte Prozeduren, die ich versucht, aber Sie beide -1 zurückgegeben und nicht geben keine Anzeichen, ob es erfolgreich oder nicht ausgeführt wurde:
CREATE PROCEDURE [dbo].[myproc]
AS
BEGIN
RAISERROR ('You fail', -- Message text.
0, -- Severity - operation failed.
500-- State.
);
END
GO
CREATE PROCEDURE [dbo].[myproc]
AS
BEGIN
RETURN 1
END
GO
Irgendeine Idee was mache ich hier falsch?
Nein, das ist eine andere Frage. Diese Frage muss die Abfrage in einem bestimmten format, während die ExecuteSqlCommand Dokumentation scheint nicht zu verlangen, alle solche Sache
Wenn Sie möchten, dass der return-Wert, verwenden Sie diese Methode.
ExecuteSqlCommand
wird es nicht tun für Sie, es sei denn, irgend etwas SELECT
s der Wert in einem ResultSet.ah, ich sehe. Ich hatte gesehen, dass die Antwort, die Sie verlinkten, aber nicht verstanden hatte, den Unterschied. Wenn Sie möchten, posten Sie Ihren Kommentar als eine Antwort, ich werde es akzeptieren
Nicht wirklich Wert, die Entsendung eine Antwort für das Kommentar.
InformationsquelleAutor Zain Rizvi | 2015-11-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Basierend auf DavidG Kommentar:
ExecuteSqlCommand gibt nur Werte, wenn es das Ergebnis einer select-Anweisung.
Wenn Sie möchten, dass der return-Wert einer gespeicherten Prozedur (wie in der Frage), dann müssen Sie die
EXEC @ReturnValue = [StoredProc] @param1 ...
- Methode wie beschrieben in diese SO beantworten.InformationsquelleAutor Zain Rizvi