Rückgabewert der gespeicherten Prozedur in C# abrufen
In diesem Artikel wird beschrieben, wie Sie eine gespeicherte Prozedur aus einer C#-Windows-Anwendung aufrufen und ihren Rückgabewert erhalten. Die gespeicherte Prozedur usp_GetNewSeqVal
wird zum Generieren neuer Sequenzwerte verwendet. Obwohl Sie auf einige Lösungen im Internet verweisen, können Sie den Rückgabewert immer noch nicht erfolgreich ermitteln.
Das Problem besteht darin, dass der Richtungsparameter ReturnValue
im Befehl fehlt. Um dies zu beheben, müssen Sie die folgenden Parameter hinzufügen:
<code class="language-csharp">var returnParameter = cmd.Parameters.Add("@ReturnVal", SqlDbType.Int); returnParameter.Direction = ParameterDirection.ReturnValue;</code>
Setzen Sie die Richtung des Parameters auf ParameterDirection.ReturnValue
, um SqlCommand
anzuweisen, ihn als Variable zu deklarieren und ihm den Rückgabewert der gespeicherten Prozedur zuzuweisen. Dies ähnelt der in SQL verwendeten Syntax (exec @ReturnValue = spMyProcedure...
).
Durch Hinzufügen dieses Parameters führt der cmd.ExecuteReader()
-Aufruf die gespeicherte Prozedur aus und speichert den Rückgabewert in returnParameter
. Sie können dann als returnParameter.Value
darauf zugreifen.
Hier ist der Code mit den notwendigen Änderungen:
<code class="language-csharp">using (SqlConnection conn = new SqlConnection(getConnectionString())) using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = parameterStatement.getQuery(); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("SeqName", "SeqNameValue"); var returnParameter = cmd.Parameters.Add("@ReturnVal", SqlDbType.Int); returnParameter.Direction = ParameterDirection.ReturnValue; conn.Open(); cmd.ExecuteNonQuery(); var result = returnParameter.Value; }</code>
Durch diese Änderung können Sie den Rückgabewert der gespeicherten Prozedur erfolgreich abrufen.
Das obige ist der detaillierte Inhalt vonWie rufe ich den Rückgabewert einer gespeicherten Prozedur in C# ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!