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 に答える