首页 >后端开发 >C++ >如何在 C# 中从 SQL Server 存储过程检索输出参数?

如何在 C# 中从 SQL Server 存储过程检索输出参数?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-10 11:16:41795浏览

How to Retrieve Output Parameters from SQL Server Stored Procedures in C#?

在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>

在此代码片段中,SqlConnectionSqlCommand对象用于建立与数据库的连接并执行存储过程。输入参数@ContractNumber添加到命令中,并创建一个输出参数@NewId,并将其Direction属性设置为ParameterDirection.Output

执行存储过程后,可以使用参数的Value属性检索输出参数值。然后,可以在C#代码中使用检索到的值。

通过遵循这些步骤,可以有效地在C#代码中使用存储过程输出参数来从SQL Server存储过程检索数据。

以上是如何在 C# 中从 SQL Server 存储过程检索输出参数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn