Я получаю исключение "Формальный параметр" @ param1 "не был объявлен как параметр OUTPUT, но фактический параметр передан в запрошенном выводе" - PullRequest
0 голосов
/ 09 июня 2018

Я получаю исключение

"Формальный параметр" @ param1 "не был объявлен как параметр OUTPUT, но фактический параметр передан в запрошенном выводе"

Я почти уверен, что все получилось в правильном порядке.

Что-то не так с этой хранимой процедурой?

CREATE PROCEDURE spHello
    @param1 INT, 
    @param2 INT OUT 
AS 
BEGIN 
    SET @param2 = @param1 + 2 
    RETURN 1 
END

Я вызываю ее так:

DECLARE @return_value int, @param2out  int 

EXEC @return_value = spHello 1, @param2out  OUTPUT 

SELECT @param2out  as N'@param2' 
SELECT 'Return Value' = @return_value 

1 Ответ

0 голосов
/ 09 июня 2018

Ваш код выглядит правильно: Демо .

Я думаю, проблема в порядке списка параметров.Чтобы избежать путаницы, я бы использовал именованные параметры:

DECLARE @return_value int, @param2out  int;
EXEC @return_value = spHello @param1 = 1, @param2 = @param2out OUTPUT;

SELECT @param2out AS [@param2],
       @return_value AS [Return Value];

DBFiddle Demo

Хорошей практикой является завершение каждого оператора точкой с запятой.

...