我得到例外"形式参数" @ param1"未被声明为OUTPUT参数,而是在请求的输出中传递的实际参数"

时间:2018-06-09 14:43:03

标签: sql sql-server sql-server-2008 sql-server-2005 data-warehouse

我得到了例外

  

"形式参数" @ 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 :(得分:4)

您的代码看起来正确:Demo

我猜问题是参数列表顺序。为避免混淆,我会使用命名参数:

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

以分号结束每个语句是一个好习惯。