正しくありません:戻り値は、私はSQL Serverの2016年に、このストアドプロシージャを持っている
SET NOCOUNT ON;
SELECT * FROM MyTable;
RETURN @@ROWCOUNT
私はSSMSで、この手順を実行すると、それがあるべきな戻り値は、43です。
私は自分のアプリケーションでこのコードスニペットがあります:最初の列内のすべてのデータWhileループプリントで
com = New SqlCommand("MyQuery", conn)
com.CommandType = CommandType.StoredProcedure
prm = New SqlParameter
With prm
.DbType = DbType.Int32
.Direction = ParameterDirection.ReturnValue
End With
com.Parameters.Add(prm)
conn.Open()
Dim rdr As SqlDataReader = com.ExecuteReader
While rdr.Read
Debug.WriteLine(rdr(0))
End While
Debug.Write(prm.Value Is Nothing)
デバッグ文のアウトをので、私はそれがすべて一緒に働いている知っているが、最終的なデバッグの結果ステートメントはTrueです。なぜ戻り値が得られないのですか?
EDIT: 答えは私のアプリケーションコードであり、SQLではありません。 SQLをそのまま残して、prmループ内の2行目を次のように変更してコードを修正しました。RetValに戻り値が含まれています。今はそれが理にかなっていることは明らかです。
を使用して@RetValを設定してみてください、その後動作しない場合は? –
はい、行数のみ、またはデータと行数の両方が必要ですか? – Amir
私が正しければ、 "ReturnValue"はストアドプロシージャのためのものです。通常のSELECTを実行している場合、返される値はDataReaderのフィールドです。 – muffi