Как выполнить хранимую процедуру с параметризованным выводом из другой хранимой процедуры - PullRequest
0 голосов
/ 09 мая 2018

Рассмотрим следующую хранимую процедуру:

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 голосов
/ 09 мая 2018

При передаче параметра необходимо добавить ключевое слово output.

Например:

Declare @output int;

Exec storedproc(@parameter output)
...