Verwendung gespeicherter Prozedurausgabeparameter in C#
Beim Abrufen von Daten aus einer gespeicherten Prozedur müssen Sie häufig auf Ausgabeparameter zugreifen, um zusätzliche Informationen zu erhalten. In diesem Beispiel stößt ein C#-Programm beim Versuch, den von der gespeicherten Prozedur usp_InsertContract zurückgegebenen Primärschlüssel abzurufen, auf Probleme.
Die gespeicherte Prozedur wurde leicht geändert, um SCOPE_IDENTITY() zu verwenden, wie unten gezeigt:
<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 C#-Code wurde ebenfalls angepasst, um den Ausgabewert korrekt abzurufen:
<code class="language-csharp">// 打开连接并执行存储过程 conn.Open(); cmd.ExecuteNonQuery(); // 从@NewId读取输出值 int contractID = Convert.ToInt32(cmd.Parameters["@NewId"].Value); conn.Close();</code>
Diese Änderung sollte das Problem lösen, indem sie sicherstellt, dass der Primärschlüssel korrekt als Ausgabeparameter zurückgegeben wird und im C#-Programm zugänglich ist.
Hinweis: Stellen Sie sicher, dass die Tabelle „Verträge“ Spalten mit korrekt konfiguriertem IDENTITY-Attribut enthält. Fehlende IDENTITY-Spalten können es auch schwierig machen, den Primärschlüsselwert zu erhalten.
Das obige ist der detaillierte Inhalt vonWie rufe ich einen Primärschlüssel aus dem Ausgabeparameter einer gespeicherten Prozedur in C# ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!