ich einen SQL-Befehl Text wie diese haben (es könnte mehr Parameter sein)Extract Parameter und ihre Werte von einem Inline-SQL-Aufruf der gespeicherten Prozedur mit C#
dbo.storedProcedure @JobID = 1, @JobName = 'xyz'
ich die Parameterwerte und Namen in einigen bekommen Art von Sammlung, die ich dann durchschleifen und sie als SqlParameter
s hinzufügen kann.
Zum Beispiel:
foreach (Param in parameters)
{
cmd.Parameters.AddWithValue(param.Name, Param.Val)
}
I werden dann die Parameter aus dem Befehlstext entfernen d.h. dbo.storedProcedure
.
Der Grund, warum ich dies tun möchte, ist, weil ich den 'ReturnValue' von der Prozedur will. Ich weiß, ich könnte einfach CommandType.Text
verwenden und den Befehlstext so übergeben, aber ich bekomme immer 0 als Rückgabewert, wenn ich es so mache.
Wenn ich CommandType = CommandType.StoredProcedure
einstelle und auch einen Parameter mit ReturnValue
Richtung verwende, bekomme ich den korrekten Rückgabewert von der Prozedur.
Ich fand das sehr nahe, aber gibt mir nur die Parameternamen. Ich möchte auch die Werte.
C# Parse SQL statement to use parameters
Dank
Ich verstehe nicht, was Sie zu tun versuchen Hier. Ihr Befehl hat bereits die Parameter, so dass das Hinzufügen als Aktualparameter Probleme verursacht. Sie müssen auch den Befehlstext ändern. Außerdem müssen Sie den Befehlstyp für die Speicherung von proc ändern. Ich denke, Sie müssen ein bisschen mehr Details bereitstellen, bevor wir wirklich helfen können. –
Danke Sean - Ich habe die Frage aktualisiert, um zu erklären, warum ich den Befehlstext nicht so verwenden kann wie er ist. – user3781891
Wenn Sie den ReturnValue verwenden, machen Sie wahrscheinlich etwas falsch. Die Rückkehr von einer gespeicherten Prozedur wird verwendet, um den Status der Ausführung anzuzeigen.Wenn Sie Werte ausschließen möchten, sollten Sie OUTPUT-Parameter verwenden. –