0
ストアドプロシージャから値を取得するための関数を作成しています。次のように ストアドプロシージャのコードは次のとおりです。VB.NET SqlParameterオブジェクトストアドプロシージャのコーディング時にvalueプロパティの値を受け付けません
create procedure [dbo].[sp_get_drivers_violations_count]
@driver_id int,
@counter int output
As
Begin
Select @counter = Count(fk_violation_id) from link_violations_drivers Where fk_driver_id = @driver_id;
Return @counter;
End
次のように私は私のVB.Netプログラムで使用するコードは次のとおりです。
Public Function SpGetDriversViolationsCount2(Id As Int32) As Int32
Dim SqlCon As SqlConnection = New SqlConnection With {.ConnectionString = New ConnectionStrings.ConnectionStrings().MsSqlConString}
Dim SqlCmd As SqlCommand = New SqlCommand("sp_get_drivers_violations_count", SqlCon)
SqlCmd.CommandType = CommandType.StoredProcedure
Dim RetValue As SqlParameter = SqlCmd.Parameters.Add("RetValue", SqlDbType.Int, 11)
RetValue.Direction = ParameterDirection.ReturnValue
Dim SpParameterId As SqlParameter = SqlCmd.Parameters.Add("@driver_id", SqlDbType.Int, 11)
SpParameterId.Direction = ParameterDirection.Input
Dim counter As SqlParameter = SqlCmd.Parameters.Add("@counter", SqlDbType.Int, 11)
counter.Direction = ParameterDirection.Output
SpParameterId.Value = Id
Dim ReturnValue As UInt32
SqlCon.Open()
Dim DataReader As SqlDataReader = SqlCmd.ExecuteReader()
Do While DataReader.Read
ReturnValue = DataReader.GetInt32(0)
Loop
DataReader.Close()
SqlCon.Close()
Return ReturnValue
End Function
コードがthisハウツーを使用して作成されました。 NUnitを使って関数をデバッグしようとしている間、私は "SpParameterId"オブジェクトに気付きました。たとえ値を明示的に代入しても、その値プロパティには値が割り当てられません。ありがとうございました。
そのコードを行単位でステップ実行すると、 'SpParameterId.Value = Id'行を実行した後、' SpParameterId.Value'の値は何ですか? – jmcilhinney