Heim >Backend-Entwicklung >C++ >Wie kann ich Ausgabeparameter, einschließlich SCOPE_IDENTITY(), aus gespeicherten SQL Server-Prozeduren in C# abrufen?

Wie kann ich Ausgabeparameter, einschließlich SCOPE_IDENTITY(), aus gespeicherten SQL Server-Prozeduren in C# abrufen?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-10 09:11:41574Durchsuche

How Can I Retrieve Output Parameters, Including SCOPE_IDENTITY(), from SQL Server Stored Procedures in C#?

Zugriff auf Ausgabeparameter von gespeicherten SQL Server-Prozeduren in C#-Anwendungen

Die Herausforderung

Das erfolgreiche Abrufen von Ausgabeparameterwerten, insbesondere des Primärschlüssels mit SCOPE_IDENTITY(), aus gespeicherten SQL Server-Prozeduren in C# kann schwierig sein. Dieser Artikel geht auf häufige Schwierigkeiten ein und bietet eine praktische Lösung.

Beispiel für eine gespeicherte Prozedur

Die usp_InsertContract gespeicherte Prozedur demonstriert den Prozess. Es fügt einen Datensatz in die Tabelle Contracts ein und gibt den neu generierten Primärschlüssel (die Spalte Id) über den Ausgabeparameter @NewId zurück. Das aktualisierte Verfahren verwendet SCOPE_IDENTITY() für den genauen Primärschlüsselabruf:

<code class="language-sql">CREATE PROCEDURE usp_InsertContract
    @ContractNumber varchar(7),
    @NewId int OUTPUT
AS
BEGIN
    INSERT INTO [dbo].[Contracts] (ContractNumber)
    VALUES (@ContractNumber);

    SELECT @NewId = SCOPE_IDENTITY();
END;</code>

C#-Implementierung

Der folgende C#-Codeausschnitt zeigt, wie mit dem Ausgabeparameter umgegangen wird:

<code class="language-csharp">SqlParameter pvNewId = new SqlParameter();
pvNewId.ParameterName = "@NewId";
pvNewId.DbType = DbType.Int32;
pvNewId.Direction = ParameterDirection.Output;

// ... (Add pvNewId to the SqlCommand object 'cmd') ...

// Execute the stored procedure
cmd.ExecuteNonQuery();

// Retrieve the output value
int contractID = Convert.ToInt32(cmd.Parameters["@NewId"].Value);</code>

Häufige Fallstricke und Lösungen

Wenn Sie auf Probleme stoßen, überprüfen Sie Folgendes:

  • Identitätsspalte: Bestätigen Sie, dass Ihre Contracts Tabelle eine Identitätsspalte enthält (automatisch inkrementierender Primärschlüssel).
  • SCOPE_IDENTITY() Verwendung: Stellen Sie die korrekte Verwendung von SCOPE_IDENTITY() innerhalb der gespeicherten Prozedur sicher, um den zuletzt eingefügten Identitätswert abzurufen.
  • Parameterkonfiguration: Überprüfen Sie noch einmal, ob das SqlParameter-Objekt (pvNewId) korrekt zum SqlCommand-Objekt (cmd) hinzugefügt wurde und dass seine Eigenschaften (ParameterName, DbType, Direction) sind genau eingestellt.

Durch die Behebung dieser Punkte können Sie Ausgabeparameter, einschließlich der von SCOPE_IDENTITY() generierten, effektiv aus Ihren gespeicherten SQL Server-Prozeduren in Ihren C#-Anwendungen abrufen.

Das obige ist der detaillierte Inhalt vonWie kann ich Ausgabeparameter, einschließlich SCOPE_IDENTITY(), aus gespeicherten SQL Server-Prozeduren in C# abrufen?. 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