Bonjour tout le monde.
L'erreur suivante :
[ArgumentException: L'élément OracleParameter est déjà contenu dans un autre OracleParameterCollection.]
System.Data.OracleClient.OracleParameterCollection.Validate(Int32 index, Object value) +271370
System.Data.OracleClient.OracleParameterCollection.Add(Object value) +30
se produit lorsque j'appelle deux fois, une méthode qui permet d'exécuter une procédure stocké et retourner un résultat.
Les parametres d'entree de cette methode sont :
String sp : le nom de la procedure stockee à executer
ListDictionary Parameters : liste cles valeurs
key : objet OracleParameter
value : valeur

Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public static ObjectCollectionCache LoadFromOracleReader(String sp, ListDictionary Parameters)
        {
 
            ObjectCollectionCache result;
            var entityConnection = (System.Data.EntityClient.EntityConnection)ctx.Connection; //(recuperer du contexte, une autre classe)
            DbConnection conn = entityConnection.StoreConnection;
            ConnectionState initialState = conn.State;
            try
            {
                if (initialState != ConnectionState.Open) conn.Open();
                using (DbCommand cmd = conn.CreateCommand())
                {
                    IDataParameter p;
                    if (Parameters != null)
                    {
                        foreach (DictionaryEntry param in Parameters)
                        {
                            p = param.Key as IDataParameter;
 
                            if (p == null)
                            {
                                p = CreateIDataParameter((string)param.Key, param.Value);
                            }
                            else
                            {
                                p.Value = param.Value;
                            }
                            cmd.Parameters.Add(p);
                        }
                    }
                    cmd.CommandText = sp;
                    cmd.CommandType = CommandType.StoredProcedure;
                    DbDataReader reader = cmd.ExecuteReader();
                    result = new ObjectCollectionCache(reader);
                }
            }
            finally
            {
                if (initialState != ConnectionState.Open)
                    conn.Close();
            }
            return result;
        }

une remarque, je passe les mêmes paramètres au deux procédures.
avez vous une idée sur ce problème ?
Merci infiniment.