C# procédure Stockée ou une fonction s'attend à ce paramètre qui n'est pas fourni
Je suis assez novice en C# et je suis en train de configurer appel à une procédure stockée dans ma base de données qui prend un paramètre.
J'obtiens l'erreur "de la Procédure ou de la fonction 'SP_getName' s'attend à ce paramètre "@username', qui n'a pas été fourni. "
Ma procédure Stockée fonctionne bien lorsque je l'offre avec le paramètre et je le lance via SQL server management studio.
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[SP_getName]
@username = 'bob101'
SELECT 'Return Value' = @return_value
GO
Cependant lorsque j'essaie de l'appeler, il l'erreur est du à la façon dont je suis passant le paramètre, mais je ne peux pas repérer ce qu'est la question.
//create a sql command object to hold the results of the query
SqlCommand cmd = new SqlCommand();
//and a reader to process the results
SqlDataReader reader;
//Instantiate return string
string returnValue = null;
//execute the stored procedure to return the results
cmd.CommandText = "SP_getName";
//set up the parameters for the stored procedure
cmd.Parameters.Add("@username", SqlDbType.NVarChar).Value = "bob101";
cmd.CommandType = CommandType.Text;
cmd.Connection = this.Connection;
//then call the reader to process the results
reader = cmd.ExecuteReader();
Toute aide à trouver mon erreur serait grandement apprécié!
J'ai aussi essayé de regarder ces deux postes, mais je n'ai pas eu de chance:
Procédure stockée ou une fonction s'attend à ce paramètre qui n'est pas fourni
De procédure ou de fonction s'attend à ce paramètre, qui n'a pas été fourni
Merci!
- BTW, vous ne devez pas utiliser SP_ comme préfixe pour vos procédures. Qui est réservée pour le système de procs. Si MME sorti un proc avec le même nom à un certain point la vôtre ne marchera plus. Honnêtement, vous ne devriez pas utiliser un préfixe à tous, ils n'apportent rien pour plus de clarté.
Vous devez vous connecter pour publier un commentaire.
Vous avez déclaré:
Donc vous êtes tout simplement d'exécution:
Qui fonctionne parce que c'est la première instruction dans le lot, de sorte que vous pouvez appeler la procédure sans
EXECUTE
, mais vous n'êtes pas réellement compris le paramètre. Changer deOu vous pouvez modifier votre CommandText à:
Comme une note de côté, vous devriez Évitez d'utiliser le préfixe " sp_ " pour les procédures stockées
Et d'un autre côté, la note serait d'utiliser
using
avec IDisposable objets pour s'assurer qu'ils sont éliminés correctement:using
!J'ai eu ce problème, mais il n'était pas sur le nom du paramètre de Type de Commande.
Mon problème est que quand C# appels SP, pour chaque paramètre, ce qui n'a pas de valeur passe "par défaut" mot-clé (je l'ai trouvé dans le générateur de profils SQL):
dans mon cas, mon Type de paramètre est de type DateTime :
. J'ai Résolu mon problème par paramétrer la valeur par défaut de ce paramètre dans la Procédure Stockée :
Essayez de supprimer
@
: