Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stored procedures 存储过程参数错误_Stored Procedures - Fatal编程技术网

Stored procedures 存储过程参数错误

Stored procedures 存储过程参数错误,stored-procedures,Stored Procedures,我创建了一个简单的存储过程,如下所示: 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 En

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

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
在执行此存储过程期间,出现以下错误:

Msg 201,16级,状态4,程序s5,第0行
程序或函数“s5”需要未提供的参数“@Salary”


我做错了什么?

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

exec dbo.s5 @id, @salary
如下所示:

在执行存储过程时,还可以为输出参数指定输入值。这允许存储过程从调用程序接收值,对其进行更改或执行操作,然后将新值返回到调用程序。。。这通常被称为“参考传递能力”


使用输出参数返回数据:女士,我已经通过提供Exec dbo.s5 14,5执行了sp。现在它执行正确。但是,如果我们将输出变量标记为输出,那么提供一个值有什么意义呢?如果您在执行存储过程之前声明@Salary变量,并在执行后打印它,那么变量将包含存储过程中指定的输出值。然后,您可以在服务器端代码中使用此变量的值,也可以在您打算使用它的任何位置使用此变量的值。注意:我已更新了我的答案,以包含上面链接中引用的解释文本。是的,我了解一个工作步骤。但Sql为什么这样工作,仍然是一个问题n、 谢谢@kleinkie