在C#中使用預存程序輸出參數
從SQL Server預存程序檢索資料時,通常需要在C#程式碼中存取預存程序的輸出參數。然而,理解如何有效地做到這一點可能是一個挑戰。
考慮一個名為usp_InsertContract
的預存過程,它將新記錄插入到Contracts
表中,並將指派的主鍵作為輸出參數傳回:
<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 = Id From [dbo].[Contracts] where ContractNumber = @ContractNumber END</code>
要在C#中執行此預存程序,可以使用以下程式碼片段:
<code class="language-csharp">using System.Data; using System.Data.SqlClient; public class StoredProcedureOutputParameterExample { public static void Main() { // 定义连接字符串并初始化连接。 string connectionString = "Server=localhost;Database=MyDatabase;User Id=sa;Password=mypassword;"; using (SqlConnection connection = new SqlConnection(connectionString)) { // 创建命令对象。 using (SqlCommand command = new SqlCommand("usp_InsertContract", connection)) { // 将命令类型设置为StoredProcedure。 command.CommandType = CommandType.StoredProcedure; // 向命令添加输入参数。 command.Parameters.Add(new SqlParameter("@ContractNumber", SqlDbType.VarChar, 7) { Value = "ABC123" }); // 向命令添加输出参数。 SqlParameter newIdParameter = new SqlParameter("@NewId", SqlDbType.Int) { Direction = ParameterDirection.Output }; command.Parameters.Add(newIdParameter); // 打开连接并执行命令。 connection.Open(); command.ExecuteNonQuery(); // 检索输出参数值。 int newId = (int)newIdParameter.Value; // 使用输出参数值。 Console.WriteLine($"New ID: {newId}"); } } } }</code>
在此程式碼片段中,SqlConnection
和SqlCommand
物件用於建立與資料庫的連線並執行預存程序。輸入參數@ContractNumber
加入到指令中,並建立一個輸出參數@NewId
,並將其Direction
屬性設為ParameterDirection.Output
。
執行預存程序後,可以使用參數的Value
屬性檢索輸出參數值。然後,可以在C#程式碼中使用檢索到的值。
透過遵循這些步驟,可以有效地在C#程式碼中使用預存程序輸出參數來從SQL Server預存程序檢索資料。
以上是如何在 C# 中從 SQL Server 預存程序檢索輸出參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!