Procédure stockée [Résolu]

Signaler
Messages postés
229
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 juin 2007
-
Messages postés
229
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 juin 2007
-
Bonjour à tous,

voila deux jours que je galère sur un problème de procédure stockée ...
Je cherche a récupérer l'identifiant du contact crée. Cela paraissait simple avec une variable de retour dans la procédure stockée. Mais voila, Mon code C# me renvoie une erreur du genre :
"Trop de paramètres pour la procédure ou fonction appelé."

Voici mon code :
public int ExecProc(string Proc, ArrayList Parametres,  ArrayList Value)
        {
        SqlParameter MyParam;
            int Retour=0;
            if (Parametres.Count == Value.Count)
            {
                try
                {
                    Connecter();
                    _SqlCmd.CommandText = Proc;
                    _SqlCmd.CommandType = CommandType.StoredProcedure;
                    MyParam= new SqlParameter("@Retour", SqlDbType.Int);
                    MyParam.Direction = ParameterDirection.Output;
                    _SqlCmd.Parameters.Add(MyParam);
                    for(int i=0;i


et voici ma procédure stockée :

CREATE PROCEDURE [dbo].[Cont_Insert] 
(
@Retour int=0 OUTPUT,
@Nom char(50),
@Prenom char(50),
@Societe char(50),
@Email char(50),
@Tel1 char(50),
@Tel2 char(50),
@MDP char(50),
@Etat char(10),
@DateInscription char(20)
)
AS

DECLARE @Etat1 int
DECLARE @DateInscription1 Datetime

INSERT INTO T_CONTACT
    (Cont_nom,Cont_prenom,Cont_societe,Cont_Email,Cont_Tel1,Cont_Tel2,Cont_MDP,Cont_New,Cont_DateInscription)
    VALUES
    (@Nom, @Prenom, @Societe, @Email, @Tel1, @Tel2, @MDP, @Etat1, @DateInscription1)

SELECT @@IDENTITY
set @Retour=@@IDENTITY
GO


Si vous avez une idée, ou une solution a ce problème je vous remercie d'avance.

KC62

On a pas toutes les solutions de tous les probleme mais chaque probleme à ses solutions ...

3 réponses

Messages postés
229
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 juin 2007

Désolé mais je viens de trouver une solution :
je la mets pour information
j'utilise la fonction _SqlCmd.ExecuteScalar()
Qui me renvoie la premiere cellule (1er ligne, 1er colonne) contenu dans le select final de ma procédure.

Merci à jesusonline pour son aide.

KC62

On a pas toutes les solutions de tous les probleme mais chaque probleme à ses solutions ...
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
D'aprés l'erreur en lisant trés rapidement le code 

                    for(int i= 0;i< Parametres.Count - 1 ;i++)
                    {
                        string TEst2 = Parametres[i].ToString();
                        MyParam = new SqlParameter(Parametres[i].ToString(),SqlDbType.Char);
                        MyParam.Value = Value[i].ToString();
                        _SqlCmd.Parameters.Add(MyParam);
                    }

<hr />Cyril - MVS - MCP
Messages postés
229
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 juin 2007

Merci jesusonline.

Helas non l'erreur ne vient pas deux la.
Mes paramètres sont bon.

Si je retire le paramètre @Retour, il me le réclame, Si je le mets, il signale qu'il y a trop de paramètres..

J'avoue ne rien comprendre est tous les tests que j'ai pu réalisé me ramène a ce message ...

On a pas toutes les solutions de tous les probleme mais chaque probleme à ses solutions ...