IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

mapper collection<string> sur paramètre tableau oracle PLSQL


Sujet :

C#

  1. #1
    r83
    r83 est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 271
    Points : 86
    Points
    86
    Par défaut mapper collection<string> sur paramètre tableau oracle PLSQL
    Bonjour,

    environnement C# vs2012/ Oracle 11G.
    Je stocke des chaines dans une collection C# (collection<string>), et je dois passer cette collection en paramètre à une procédure stockée Oracle qui adment en paramètre un tableau (type tstrings IS TABLE OF varchar(50) INDEX BY pls_integer range 0..9

    Je n'y arrive pas ....

    ça marche quand j'envoie depuis C# un tableau de strings (String[]), mais cette solution ne me convient pas car je ne conanis pas à priori la taille de mon tableau.
    Si quelqu'un a une solution ....
    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Bonsoir,
    tu as la méthode ToArray() sur les listes qui te permet de retourner ta liste sous la forme d'un tableau.

  3. #3
    Membre régulier
    Profil pro
    Développeur
    Inscrit en
    Janvier 2010
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2010
    Messages : 232
    Points : 112
    Points
    112
    Par défaut
    Essaye avec ce bout de code qui marche :

    Code : 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
     
            public void TestCollection()
            {            
                try
                {
                    Collection<String> chaine = new Collection<string>();
                    chaine.Add("Chaine1");
                    chaine.Add("Chaine2");
                    UneOracleCommand = new OracleCommand("pckparticipant.test", CnOracle);
                    UneOracleCommand.CommandType = CommandType.StoredProcedure;
                    OracleParameter pcollection = new OracleParameter();
                    pcollection.ParameterName = "unecollection";
                    pcollection.Direction = ParameterDirection.Input;
                    pcollection.OracleDbType = OracleDbType.Varchar2;
                    pcollection.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
                    pcollection.Value = chaine.ToArray();
                    pcollection.Size = chaine.Count;
                    UneOracleCommand.Parameters.Add(pcollection);
                    UneOracleCommand.ExecuteNonQuery();
                }
                catch (OracleException Oex)
                {
                    MessageBox.Show("Erreur Oracle \n" + Oex.Message);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Autre Erreur  \n" + ex.Message);
                }
            }
    Et côté PLSQL :
    Code SQL : 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
     
    create or replace
    package body pckparticipant
    is
    erreur exception;
     procedure  Test(unecollection in tdates)
    is
    erreur exception;
    begin
      FOR i IN unecollection.FIRST .. unecollection.LAST 
      LOOP
          insert into test values (unecollection(i));
      END LOOP;
    exception
        when erreur then
          raise_application_error(-20099, 'test erreur');
    end;
    end pckparticipant;

    ça devrait marcher !

  4. #4
    r83
    r83 est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 271
    Points : 86
    Points
    86
    Par défaut
    Merci beaucoup loustalet, le code marche impéccable.
    Bon we

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Paramètre : pointeur sur un tableau
    Par _Michel dans le forum Débuter
    Réponses: 2
    Dernier message: 15/02/2009, 16h08
  2. Réponses: 8
    Dernier message: 17/09/2008, 12h11
  3. Suppression et décalage sur un tableau de String
    Par allstar dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 09/05/2008, 16h53
  4. [Collection] Tri sur un tableau d'entier
    Par Grand sorcier dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 17/07/2006, 16h07
  5. Réponses: 3
    Dernier message: 24/09/2005, 09h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo