sql-server - 如何使用另一个存储过程中的参数化输出执行存储过程
问题描述
考虑以下存储过程:
ALTER PROCEDURE Administration.SetAndRetrieveNewPurchaseOrderNumber
@PurchaseOrderNumber INT OUTPUT
AS
BEGIN
SET NOCOUNT ON
UPDATE Administration.KeyNumbers
SET PurchaseOrderNumber += 1
WHERE RowId = 1
SET @PurchaseOrderNumber = (SELECT kn.PurchaseOrderNumber
FROM Administration.KeyNumbers kn
WHERE kn.RowId = 1)
END
GO
我可以在我的应用程序中轻松使用它,只需执行该过程并通过引用适当命名的参数传入。
我现在发现自己想在另一个存储过程中执行上面列出的过程。我尝试了以下方法,但它似乎不起作用(在被调用的存储过程的参数部分中有或没有 @ 符号;
DECLARE @PurchaseOrderNumber INT
EXEC Administration.SetAndRetrieveNewPurchaseOrderNumber(@PurchaseOrderNumber)
这样做的正确方法是什么,或者实际上是否应该有一个单独的过程用于在这种情况下只产生一个标量结果?
解决方案
传入参数时需要加上 output 关键字。
例如:
Declare @output int;
Exec storedproc(@parameter output)
推荐阅读
- c - 不能一次初始化超过 4 个变量吗?
- android - 为什么有些应用程序默认有“在锁定屏幕中显示”和“在后台运行时显示弹出窗口”权限?
- java - 在 Java 中通过静态数组使用 3 种方法(Addition、numberEven、numberOdd)
- javascript - 如何从 ionic 的 firebase 实时数据库中获取单个值
- c# - 如何从 Json 字符串中选择某个键
- mapreduce - 为什么我得到输入路径 E:/New 不存在?
- java - 没有为 Camera2 API 调用 OnImageAvailableListener 来拍照
- mysql - ERROR 1206 (HY000): 锁总数超过锁表大小
- python - 使用 argparse 的参数名称
- amazon-web-services - 在 AWS Deequ 中从 excel 中解析 DQ 规则