在C#中使用預存程序輸出參數
從預存程序檢索資料時,通常需要存取輸出參數以取得其他資訊。在本例中,一個C#程式在嘗試檢索由usp_InsertContract預存程序傳回的主鍵時遇到問題。
預存程序稍作修改,使用SCOPE_IDENTITY(),如下圖所示:
<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#程式碼也進行了調整,以正確檢索輸出值:
<code class="language-csharp">// 打开连接并执行存储过程 conn.Open(); cmd.ExecuteNonQuery(); // 从@NewId读取输出值 int contractID = Convert.ToInt32(cmd.Parameters["@NewId"].Value); conn.Close();</code>
此修改應透過確保主鍵正確地作為輸出參數傳回並可在C#程式中存取來解決問題。
注意:務必驗證Contracts表是否具有已正確配置IDENTITY屬性的欄位。缺少IDENTITY欄位也可能導致難以取得主鍵值。
以上是如何在 C# 中從預存程序的輸出參數檢索主鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!