Je cette procédure stockée dans SQL Server 2016:Valeur de retour de la procédure stockée est incorrect
SET NOCOUNT ON;
SELECT * FROM MyTable;
RETURN @@ROWCOUNT
Quand je lance cette procédure dans SSMS la valeur de retour est 43, comme cela devrait être.
Je cet extrait de code dans mon application:
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)
L'instruction de débogage dans la boucle while imprime toutes les données dans la première colonne, donc je sais qu'il est tout à travailler ensemble, mais le résultat de la débugage final L'affirmation est vraie. Pourquoi ne reçois-je pas ma valeur de retour?
EDIT: La réponse est dans mon code d'application, pas dans le SQL. En quittant le SQL comme il est, je modifié mon code en changeant la deuxième ligne dans la boucle de PRM à:
RetVal = ParameterDirection.ReturnValue
Maintenant, RetVal contient la valeur de retour. Maintenant, il semble évident que cela a du sens.
Vous avez juste besoin d'un nombre de lignes d'une table? –
Oui, vous n'avez besoin que du nombre de lignes ou des données et du nombre de lignes? – Amir
Si j'ai raison, le "ReturnValue" est pour les procédures stockées. Si vous faites un SELECT normal ... alors les valeurs retournées sont les champs du DataReader. – muffi