Exécution d'une procédure stocké

[Résolu]
Signaler
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
-
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
-
Bonjour,

Je souhaite lancer depuis c# l'execution d'une procédure stockée. J'utilise la méthode ExecuteNonQuery().

Voici le code de ma procédure stocké :

CREATE PROCEDURE dbo.getidemploye @myid char(36) OUTPUT
AS
SET @myid = NEWID()

en fait j'ai une table employes dont la clé est générée pour chaque employé avec NEWID(). La procédure stocké à pour but de renvoyer une nouvelle valeur pour une clé (généré par newid()).
Le problème que j'ai est le suivant :
Je souhaite ajouter un enregistrement à mon dataset. L'ajout de la clé se fait par l'appel à la procédure stockée de cette façon :

                MaConnection.Open();
                MaProcedureStocke.ExecuteNonQuery();
                MaConnection.Close();
                e.Row["numero"] = MaProcedureStocke.Parameters["@myid"].Value.ToString();

Mais j'obtiens le message suivant :
Procedure or Function 'getidemploye' expects parameter '@myid', which was not supplied.

Visiblement ma procédure stocké attend un paramètre mais je ne sais ni comment lui envoyer ni quoi lui envoyer. Pouvez-vous m'aider ?

Mathmax

2 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
il faut le déclarer avant l'appel à ExecuteNonQuery()

DbParameter param = MaProcedureStocke.Parameters.CreateParameter();
param.Name = "@myid";
param.DbType = DbType.Int;
param.Directory = DbDirectory.Output;
...

MaProcedureStocke.Parameters.Add(param);

MaProcedureStocke.ExecuteNonQuery();

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008

Merci beaucoup ! Ca marche parfaitement (à quelques modifications près de ton code). Voici le code que j'ai utilisé :

                DbParameter param = MaProcedureStocke.CreateParameter();
                param.ParameterName = "@myid";
                param.DbType = DbType.StringFixedLength;
                param.Size = 36;
                param.Direction = ParameterDirection.Output;
               
                MaProcedureStocke.Parameters.Add(param);

Mathmax