Heim >Backend-Entwicklung >C++ >Wie rufe ich Rückgabewerte gespeicherter Prozeduren in C# ab?

Wie rufe ich Rückgabewerte gespeicherter Prozeduren in C# ab?

Susan Sarandon
Susan SarandonOriginal
2025-01-20 01:32:08791Durchsuche

How to Retrieve Stored Procedure Return Values in C#?

Rückgabewert der gespeicherten Prozedur in C# abrufen

Beim Aufrufen einer gespeicherten Prozedur, die einen Wert in C# zurückgibt, ist es entscheidend, den Rückgabewert im Code korrekt zu verarbeiten. Dieser Artikel beschreibt dieses Problem und bietet eine Lösung zum erfolgreichen Abrufen von Rückgabewerten aus gespeicherten Prozeduren.

Problembeschreibung

Eine C#-Anwendung muss eine gespeicherte Prozedur aufrufen, die den nächsten Wert in einer Sequenz zurückgibt. Obwohl ich die Lösungen online verfolge, kann ich den Rückgabewert immer noch nicht abrufen. Der bereitgestellte Codeausschnitt umfasst das Erstellen eines SqlCommand-Objekts, das Angeben der gespeicherten Prozedur als Befehlstext und die Verwendung einer SqlConnection zum Ausführen des Befehls. Der Rückgabewert der gespeicherten Prozedur wird jedoch nicht abgerufen.

Verfahrenscode speichern

<code class="language-sql">ALTER procedure [dbo].[usp_GetNewSeqVal]
      @SeqName nvarchar(255)
as
begin
      declare @NewSeqVal int
      set NOCOUNT ON
      update AllSequences
      set @NewSeqVal = CurrVal = CurrVal+Incr
      where SeqName = @SeqName

      if @@rowcount = 0 begin
print 'Sequence does not exist'
            return
      end

      return @NewSeqVal
end</code>

C#-Code zum Aufrufen der gespeicherten Prozedur

<code class="language-csharp">SqlConnection conn = new SqlConnection(getConnectionString());
conn.Open();

SqlCommand cmd = new SqlCommand(parameterStatement.getQuery(), conn);
cmd.CommandType = CommandType.StoredProcedure;

SqlParameter param = new SqlParameter();

param = cmd.Parameters.Add("@SeqName", SqlDbType.NVarChar);
param.Direction = ParameterDirection.Input;
param.Value = "SeqName";

SqlDataReader reader = cmd.ExecuteReader();</code>

Lösung

Um den Rückgabewert der gespeicherten Prozedur zu erhalten, müssen Sie dem SqlCommand-Objekt einen Parameter mit der ReturnValue-Richtung hinzufügen. Dadurch wird der Befehl angewiesen, eine Variable zu deklarieren und ihr den Rückgabewert der gespeicherten Prozedur zuzuweisen. Der folgende Code demonstriert die Lösung:

<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");

    // @ReturnVal 可以是任何名称
    var returnParameter = cmd.Parameters.Add("@ReturnVal", SqlDbType.Int);
    returnParameter.Direction = ParameterDirection.ReturnValue;

    conn.Open();
    cmd.ExecuteNonQuery();
    var result = returnParameter.Value;
}</code>

Das obige ist der detaillierte Inhalt vonWie rufe ich Rückgabewerte gespeicherter Prozeduren in C# ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn