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

SQL Server存储过程能否返回多个OUT参数及实现示例咨询

SQL Server存储过程多输出参数实现说明

SQL Server 完全支持存储过程同时返回多个OUT(输出)参数,和Oracle的输出参数逻辑基本一致,单参数返回问题通常是参数声明或调用时的语法遗漏导致。


实现示例

1. 存储过程定义

以下是包含2个输入参数、2个输出参数的存储过程示例:

CREATE OR ALTER PROCEDURE dbo.GetTwoOutputValues
    -- 输入参数
    @InputA INT,
    @InputB INT,
    -- 输出参数需显式加OUTPUT关键字声明
    @AddResult INT OUTPUT,
    @MultiplyResult INT OUTPUT
AS
BEGIN
    SET NOCOUNT ON; -- 避免影响应用端参数接收
    -- 给两个输出参数分别赋值
    SET @AddResult = @InputA + @InputB;
    SET @MultiplyResult = @InputA * @InputB;
END
GO

2. SQL端调用测试

调用时输出参数必须追加OUTPUT关键字才能拿到返回值,这是最常见的遗漏点:

-- 定义变量接收输出结果
DECLARE @GetAdd INT, @GetMultiply INT;

-- 调用存储过程,输出参数后必须加OUTPUT标记
EXEC dbo.GetTwoOutputValues
    @InputA = 8,
    @InputB = 6,
    @AddResult = @GetAdd OUTPUT,
    @MultiplyResult = @GetMultiply OUTPUT;

-- 查看返回的两个结果
SELECT @GetAdd AS 求和结果, @GetMultiply AS 乘积结果;

注意:如果调用时某个输出参数漏加OUTPUT关键字,SQL Server不会抛出错误,但对应变量无法拿到返回的赋值,这就是仅能返回一个参数值的最常见诱因。

3. 应用端调用示例(C#为例)

应用层调用时需显式指定参数方向为Output:

using (SqlConnection conn = new SqlConnection("你的数据库连接字符串"))
{
    conn.Open();
    SqlCommand cmd = new SqlCommand("dbo.GetTwoOutputValues", conn);
    cmd.CommandType = CommandType.StoredProcedure;

    // 添加入参
    cmd.Parameters.AddWithValue("@InputA", 8);
    cmd.Parameters.AddWithValue("@InputB", 6);

    // 添加第一个输出参数
    SqlParameter addParam = new SqlParameter("@AddResult", SqlDbType.Int);
    addParam.Direction = ParameterDirection.Output;
    cmd.Parameters.Add(addParam);

    // 添加第二个输出参数
    SqlParameter mulParam = new SqlParameter("@MultiplyResult", SqlDbType.Int);
    mulParam.Direction = ParameterDirection.Output;
    cmd.Parameters.Add(mulParam);

    // 执行存储过程
    cmd.ExecuteNonQuery();

    // 同时读取两个输出参数的返回值
    int addResult = (int)addParam.Value;
    int multiplyResult = (int)mulParam.Value;
}

其他编程语言的调用逻辑一致,只要正确标记参数为输出方向,即可同时获取多个输出参数的返回值。


内容的提问来源于stack exchange,提问作者John O'Neil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 07:45:03