在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中文网其他相关文章!