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

如何让DECLARE @T获取存储过程的返回值?

获取存储过程返回值的方法

你的存储过程通过SELECT语句返回计算后的总价结果集,要让变量@T获取这个值,有两种实用方法:

方法一:通过INSERT...EXEC捕获结果集

无需修改存储过程,用表变量暂存结果后赋值给@T:

-- 声明表变量暂存结果
DECLARE @TempTable TABLE (TotalPrice BIGINT);
DECLARE @T BIGINT;

-- 执行存储过程,将结果插入表变量
INSERT INTO @TempTable
EXEC [dbo].[sp_GetTotlePrice] @Users_Id = 123; -- 替换为实际用户ID

-- 从表变量中取出值赋值给@T
SELECT @T = TotalPrice FROM @TempTable;

-- 查看最终结果
SELECT @T;

方法二:修改存储过程,添加OUTPUT参数

如果允许修改存储过程,添加输出参数是更直接的方式:

修改后的存储过程

ALTER PROCEDURE [dbo].[sp_GetTotlePrice]
    (@Users_Id bigint,
     @TotalPrice BIGINT OUTPUT) -- 新增输出参数
AS
BEGIN
    DECLARE @R TABLE
               (
                   Price bigint,
                   Quantity bigint
               )

    INSERT INTO @R
        SELECT TOP 1000000 
            M.Price, B.Quantity 
        FROM
            Basket B  
        INNER JOIN 
            Medicaments M ON M.Medicament_Id = B.Medicament_Id 
        WHERE 
            @Users_Id = B.Users_Id
        
    -- 将计算结果赋值给输出参数
    SELECT @TotalPrice = SUM(Price * Quantity) FROM @R;
    -- 可选:保留原有SELECT输出,不影响参数赋值
    -- SELECT @TotalPrice;
END

调用存储过程获取返回值

DECLARE @T BIGINT;

-- 执行存储过程,指定输出参数
EXEC [dbo].[sp_GetTotlePrice] @Users_Id = 123, @TotalPrice = @T OUTPUT;

-- 查看结果
SELECT @T;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:31:18