考虑以下存储过程:
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)
这样做的正确方法是什么,或者实际上是否应该在这样的情况下使用单独的程序来产生标量结果?
答案 0 :(得分:1)
传递参数时需要添加output关键字。
例如:
Declare @output int;
Exec storedproc(@parameter output)