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
Freigeben: 2025-01-20 01:32:08
Original
751 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage