0

我创建了一个简单的存储过程,如下所示:

Alter Proc dbo.s5 
(
  @id int = 14,
  @Salary int output
)
As
Begin
  --Declare @Salary int
  set @Salary = (select Salary
                 from dbo.EmpInf
                 where EmpId = @id)
  print @Salary
  --Return @Salary
End

在执行此存储过程期间,我收到此错误:

消息 201,级别 16,状态 4,过程 s5,第 0 行
过程或函数“s5”需要参数“@Salary”,但未提供该参数。

我究竟做错了什么?

4

1 回答 1

1

您需要将@Salary 变量作为输入变量提供给您的存储过程,即使它被标记为输出参数。

exec dbo.s5 @id, @salary

可以在以下链接中阅读:

执行存储过程时,也可以为 OUTPUT 参数指定输入值。这允许存储过程从调用程序接收一个值,对其进行更改或对其执行操作,然后将新值返回给调用程序。...这通常被称为“通过引用的能力。

于 2012-11-28T07:06:40.540 回答