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

如何在另一个存储过程中调用带输出参数的存储过程?

解决带输出参数的存储过程调用问题

问题根源

你当前的调用写法有两个关键问题:

  1. 没有明确标记参数为输出参数,SQL Server不知道要把存储过程里的赋值传递回你的变量;
  2. 调用存储过程时用括号包裹参数的语法不符合SQL Server的常规调用规范。

正确的调用方式

直接修改调用代码,加上OUTPUT关键字即可:

DECLARE @PurchaseOrderNumber INT
-- 调用时必须在参数后加上OUTPUT(或简写OUT)
EXEC Administration.SetAndRetrieveNewPurchaseOrderNumber @PurchaseOrderNumber OUTPUT

-- 验证结果
SELECT @PurchaseOrderNumber AS NewPurchaseOrderNumber

如果想让代码更清晰(尤其是存储过程有多个参数时),可以使用命名参数的写法,这样参数顺序不影响:

DECLARE @PurchaseOrderNumber INT
EXEC Administration.SetAndRetrieveNewPurchaseOrderNumber 
    @PurchaseOrderNumber = @PurchaseOrderNumber OUTPUT

是否需要单独创建标量存储过程?

完全不需要!你现有的存储过程已经通过OUTPUT参数实现了返回采购订单号的功能,只要按上面的正确方式调用,就能正常获取到值。

当然,如果你在业务中非常频繁地需要直接获取这个标量值,也可以考虑创建一个标量值函数,但这属于优化选项,不是必须的——现有存储过程完全能满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:34:29