C#中如何使用存储过程的输出参数?示例是什么?

来源:这里教程网 时间:2026-02-21 17:26:23 作者:

在C#中调用存储过程并使用输出参数,主要通过 SqlCommand 配合 SqlParameter 来实现。你需要设置参数的方向为 ParameterDirection.Output,执行存储过程后读取输出值。

1. 创建带输出参数的存储过程(SQL Server 示例)

假设我们有一个用户表,想通过用户名查询用户数量,并返回总数:

CREATE PROCEDURE GetUserCountByUserName
    @UserName NVARCHAR(50),
    @UserCount INT OUTPUT
AS
BEGIN
    SELECT @UserCount = COUNT(*) 
    FROM Users 
    WHERE UserName = @UserName
END

2. C# 代码调用示例

以下是使用 ADO.NET 调用该存储过程并获取输出参数值的完整示例:

using System;
using System.Data;
using System.Data.SqlClient;
<p>class Program
{
static void Main()
{
string connectionString = "your_connection_string_here";
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand("GetUserCountByUserName", conn);
cmd.CommandType = CommandType.StoredProcedure;</p><pre class='brush:php;toolbar:false;'>        // 输入参数
        cmd.Parameters.Add(new SqlParameter("@UserName", "Alice"));
        // 输出参数
        SqlParameter outputParam = new SqlParameter("@UserCount", SqlDbType.Int);
        outputParam.Direction = ParameterDirection.Output;
        cmd.Parameters.Add(outputParam);
        conn.Open();
        cmd.ExecuteNonQuery();
        // 获取输出参数的值
        int userCount = (int)outputParam.Value;
        Console.WriteLine($"用户数量: {userCount}");
    }
}

}

3. 关键点说明

ParameterDirection.Output:必须显式设置参数方向为 Output,否则无法接收返回值。 ExecuteNonQuery:适用于不返回结果集、只执行操作或获取输出参数的场景。如果同时返回结果集,也可使用它,输出参数依然可用。 读取值前确保执行完成:必须在调用 ExecuteNonQuery 或其他执行方法之后,才能从 outputParam.Value 获取值。 类型匹配:SqlParameter 构造函数中指定的 SqlDbType 应与数据库中一致,避免转换错误。

基本上就这些,使用起来不复杂但容易忽略方向设置。

相关推荐