我得到了例外
"形式参数" @ 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
答案 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 强>
以分号结束每个语句是一个好习惯。