如何从另一个存储过程中使用参数化输出执行存储过程

时间:2018-05-09 11:27:01

标签: sql-server stored-procedures sql-server-2016

考虑以下存储过程:

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)

这样做的正确方法是什么,或者实际上是否应该在这样的情况下使用单独的程序来产生标量结果?

1 个答案:

答案 0 :(得分:1)

传递参数时需要添加output关键字。

例如:

Declare @output int;

Exec storedproc(@parameter output)