Heim >Backend-Entwicklung >C++ >Wie kann ich Ausgabeparameter, einschließlich SCOPE_IDENTITY(), aus gespeicherten SQL Server-Prozeduren in C# abrufen?
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.
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>
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>
Wenn Sie auf Probleme stoßen, überprüfen Sie Folgendes:
Contracts
Tabelle eine Identitätsspalte enthält (automatisch inkrementierender Primärschlüssel).SCOPE_IDENTITY()
innerhalb der gespeicherten Prozedur sicher, um den zuletzt eingefügten Identitätswert abzurufen.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!