從 C# 中的預存程序中擷取輸出參數
許多資料庫互動都利用預存程序來有效管理資料。 一個常見的要求是檢索輸出參數,特別是在處理自動產生的主鍵時。 此範例示範了在使用 SQL Server 預存程序時如何正確處理 C# 中的輸出參數。
在 INSERT 操作後嘗試擷取新產生的主鍵時經常會出現此問題。 以下修改後的預存程序提供了解決方案:
<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>
此預存程序接受合約編號,並使用 @NewId
.SCOPE_IDENTITY()
透過
以下是用於檢索此輸出參數的更新的 C# 程式碼:
<code class="language-csharp">// Establish database connection and command object using (SqlConnection conn = new SqlConnection(pvConnectionString)) using (SqlCommand cmd = new SqlCommand("dbo.usp_InsertContract", conn)) { cmd.CommandType = CommandType.StoredProcedure; // Define and add parameters cmd.Parameters.AddWithValue("@ContractNumber", contractNumber); cmd.Parameters.Add("@NewId", SqlDbType.Int).Direction = ParameterDirection.Output; // Open connection and execute the stored procedure conn.Open(); cmd.ExecuteNonQuery(); // Retrieve the output parameter value int contractID = Convert.ToInt32(cmd.Parameters["@NewId"].Value); conn.Close(); }</code>
此 C# 程式碼連接到資料庫,執行預存程序,並有效率地檢索 @NewId
輸出參數,並將其儲存在 contractID
變數中。 新產生的主鍵現在可在您的應用程式中進行進一步處理。
以上是如何從 C# 中的預存程序檢索輸出參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!