Zugriff auf Rückgabewerte von gespeicherten SQL Server-Prozeduren in C#
In diesem Artikel wird erläutert, wie Rückgabewerte aus gespeicherten SQL Server-Prozeduren innerhalb einer C#-Anwendung korrekt abgerufen werden. Ein häufiges Problem tritt auf, wenn versucht wird, auf einen Rückgabewert – beispielsweise die nächste Sequenznummer – ohne ordnungsgemäße Parameterbehandlung zuzugreifen.
Das Beispiel verwendet eine gespeicherte Prozedur, usp_GetNewSeqVal
, die einen Sequenzwert in der AllSequences
-Tabelle erhöht und den aktualisierten Wert zurückgibt. Der C#-Code stellt eine Verbindung zur Datenbank her und führt die gespeicherte Prozedur mit SqlCommand
.
Der Schlüssel zum Abrufen des Rückgabewerts besteht darin, einen Parameter mit ParameterDirection.ReturnValue
zur Parametersammlung von SqlCommand
hinzuzufügen. Dieser dedizierte Parameter fungiert als Container für die Ausgabe der gespeicherten Prozedur.
Hier ist der korrigierte C#-Codeausschnitt:
<code class="language-csharp">using (SqlCommand cmd = conn.CreateCommand()) { // ... other code ... // Add a parameter to receive the return value SqlParameter returnParameter = cmd.Parameters.Add("@ReturnVal", SqlDbType.Int); returnParameter.Direction = ParameterDirection.ReturnValue; // ... other code ... conn.Open(); cmd.ExecuteNonQuery(); int result = (int)returnParameter.Value; // Cast to appropriate type }</code>
Durch Setzen von ParameterDirection
auf ReturnValue
wird SqlParameter
als Empfänger des Rückgabewerts der gespeicherten Prozedur festgelegt. Nach ExecuteNonQuery()
enthält die Eigenschaft Value
dieses Parameters den zurückgegebenen Wert, auf den dann von der C#-Anwendung zugegriffen und dieser verwendet werden kann. Denken Sie daran, die Eigenschaft Value
in den richtigen Datentyp umzuwandeln.
Das obige ist der detaillierte Inhalt vonWie rufe ich einen Rückgabewert aus einer gespeicherten SQL Server-Prozedur in C# ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!