You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Web API中调用带输出参数的SQL Server存储过程

获取存储过程输出参数的代码修改方案

要拿到存储过程的输出参数TransactionPassCorrectly(int类型),你得调整现有代码,改用参数化方式调用存储过程——这不仅能实现需求,还能避免SQL注入风险。具体修改如下:

修改后的完整代码

public async Task<ActionResult<int>> UpdateSuperHeroFromSP(int SuperHeroId, string Place)
{
    // 定义输出参数,指定类型和输出方向
    var outputParam = new SqlParameter("@TransactionPassCorrectly", SqlDbType.Int)
    {
        Direction = ParameterDirection.Output
    };

    // 定义输入参数,替代字符串拼接
    var idParam = new SqlParameter("@SuperHeroId", SuperHeroId);
    var placeParam = new SqlParameter("@Place", Place);

    // 调用存储过程,注意输出参数后要加OUT关键字
    await context.Database.ExecuteSqlRawAsync(
        "EXEC UpdateSuperHero @SuperHeroId, @Place, @TransactionPassCorrectly OUT",
        idParam, placeParam, outputParam);

    // 从输出参数中提取结果并返回
    var transactionResult = (int)outputParam.Value;
    return transactionResult;
}

关键说明

  • 参数化查询:不再直接拼接字符串,改用SqlParameter传递参数,彻底避免SQL注入问题。
  • 输出参数配置:必须给输出参数设置Direction = ParameterDirection.Output,这样数据库才能将计算结果写入该参数。
  • 存储过程调用语法:SQL Server中调用带输出参数的存储过程时,要在输出参数名后加上OUT关键字(其他数据库语法可能略有不同)。
  • 结果提取:执行完成后,通过outputParam.Value获取返回值,记得做int类型转换。

内容的提问来源于stack exchange,提问作者Nenad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 14:55:55