5

In einem C# -Projekt ich eine gespeicherte Prozedur aufrufen, wie folgt:Wie DataContext.ExecuteCommand verwenden und den ausgeführten gespeicherten proc-Rückgabewert abrufen?

System.Data.Linq.DataContext dataContext = MembershipContext.GetContext(connectionString); 
int returnValue = dataContext.ExecuteCommand("EXEC usp_SomeProcedure {0}, {1}, {2}", param1, param2, param3); 

gibt jedoch ExecuteCommand die Anzahl der betroffenen Zeilen, und nicht die Rückgabewert meine gespeicherten Prozedur. Was wäre der einfachste Weg, um diesen Wert zu erhalten. Ich brauche das, weil der SP 0 bei Erfolg und einen positiven int-Wert zurückgibt, wenn ein Fehler aufgetreten ist.

Momentan verwendet der gespeicherte Prozess RETURN, um seinen Rückgabewert auszugeben. Allerdings könnte ich dies für eine SELECT ändern oder ich könnte auch einen Ausgabeparameter verwenden, falls erforderlich.

Antwort

4

Ich glaube, Sie müssen den CommandType auf CommandType.StoredProcedure festlegen, um den Rückgabewert von Ihrem gespeicherten Proc zu erhalten. Siehe die akzeptierte Antwort hier: Getting return value from stored procedure in ADO.NET

+0

Ich habe das Beispiel verwendet, das auf der von Ihnen angegebenen Seite angegeben wurde, und es funktioniert. Ich verwende den DataContext nicht mehr, wie Serg Rogovtsev vorgeschlagen hat. +1 an euch beide! –

2

Verwenden Sie nicht DataContext für den Aufruf von SPs, wenn Sie keine Linq2Sql-Mapping-Funktion benötigen. Verwenden Sie einfach SqlCommand als down.with.the.bass shows.

Verwandte Themen