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
Freigeben: 2025-01-10 09:11:41
Original
593 Leute haben es durchsucht

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:

CREATE PROCEDURE usp_InsertContract
    @ContractNumber varchar(7),
    @NewId int OUTPUT
AS
BEGIN
    INSERT INTO [dbo].[Contracts] (ContractNumber)
    VALUES (@ContractNumber);

    SELECT @NewId = SCOPE_IDENTITY();
END;
Nach dem Login kopieren

C#-Implementierung

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

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

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!

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