如何让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
相关产品推荐
相关产品推荐

