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

PL/SQL Oracle Discussion :

ordonner un tableau associatif selon une colonne


Sujet :

PL/SQL Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 28
    Points : 25
    Points
    25
    Par défaut ordonner un tableau associatif selon une colonne
    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
     
    TYPE PRM_SRV IS RECORD
      ( ID        NUMBER,
        DESC      VARCHAR2(100),
        VALUE     NUMBER
        --  
      );
      TYPE PRM_SRV_TAB is table of PRM_SRV INDEX BY BINARY_INTEGER ;
     
    TYPE REC_SRV IS RECORD
      ( id_ligne                     VARCHAR2(20),
        code_src                     NUMBER,
        date_valid                   date,
        date_change                  date,
        status                       VARCHAR2(1),
        id_srv                       NUMBER,
        id_ssrv                      NUMBER,
        FLAG_AN                      NUMBER,
        vl_prmsrv                    PRM_SRV_TAB
      );
     
      TYPE SRV_TAB is table of REC_SRV INDEX BY BINARY_INTEGER;
     
      rec_srv_tab SRV_TAB;
    voila mon problème: je veux que lorsque j'insère dans le tableau rec_srv_tabl , ce tableau soit ordonné par le champs
    id_srv qui est de type number , sachant que ce champs peut contenir des valeurs dupliquées, et pas nécessairement successives.
    une autre question , le INDEX BY BINARY_INTEGER sert a quoi??
    est ce qu'il est en relation avec l'indice (rec_srv_tab(i).nomduchamps) avec lequel je parcoure le tableau??

  2. #2
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    voila ce que j fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    TYPE REC_SRV2 IS RECORD
      ( id_ligne                     VARCHAR2(20),
        code_src                     NUMBER,
        date_valid                   date,
        date_change                  date,
        STATUS                       VARCHAR2(1),
        id_srv                       NUMBER,
        id_ssrv                      NUMBER,
        FLAG_AN                      NUMBER,
        vl_prmsrv                    PRM_SRV_TAB
      );
     
      TYPE SRV_TAB2 IS TABLE of REC_SRV2 INDEX BY VARCHAR2(15);
    INDEX BY VARCHAR2(15) pour y mettre "id_srv|| date_valid||STATUS"
    c ma clé primaire en quelque sorte .
    donc je lis les données de la première table SRV_TAB qui est indicé par binary_integer et je construit a chaque fois la clé
    v_cle:="id_srv|| date_valid||STATUS"; et je check si SRV_TAB2(v_cle)
    existe ou pas , donc sa me permet d'enlever les duplication et en meme temps d'obtenir un tableau ordonné c comme si j'ai fait
    order by id_srv, date_valid,STATUS.
    merci de me dire ce que vous en pensez
    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
     
    LOOP 
     v_cle:=SRV_TAB(v_current).id_srv||to_char(SRV_TAB(v_current).date_valid)||SRV_TAB(v_current).STATUS;
     if SRV_TAB2(v_cle).exists then
         --on met ajour l'enregistrement 
     else 
     --on l'insere
     SRV_TAB2(v_cle).champ1:=;
     SRV_TAB2(v_cle).champ2:=;
     SRV_TAB2(v_cle).champ3:=;
     .
     .
     .
     .
     end if;
     
     v_current := SRV_TAB.NEXT(v_current);
     
    END LOOP;

  3. #3
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Et que est-ce que voulez vous faire avec le tableau ordonnés, en fait ?
    Je mettrai les données dans une collection de type "nested table" et non pas un "associative array" et j'utiliserais le SQL pour le tri, éliminer les dublons etc.
    Vous utilisez quelle version d'Oracle ?

  4. #4
    Membre averti Avatar de mongilotti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2003
    Messages : 314
    Points : 303
    Points
    303
    Par défaut
    quelle version d'oracle tu utilise?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    j'utilise la version 10.2.
    j'utilise un tableau associatif car mon tableaux et de longueur variable, en fait je le passe en paramètre dans plusieurs procédure, quand aux douublons je les supprimes pas je fais un merge en ajoutant dans le sous tableau vl_prmsrv.
    en attendant j fais un test et ça marche .

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

Discussions similaires

  1. Trier un tableau selon une colonne
    Par josse34 dans le forum Langage
    Réponses: 14
    Dernier message: 26/10/2013, 15h50
  2. Réponses: 2
    Dernier message: 20/02/2013, 11h08
  3. [MySQL] Trier un tableau associatif selon une colonne
    Par okoweb dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/10/2011, 19h33
  4. [debutant][JTable] Trier selon une colonne
    Par yupa dans le forum Composants
    Réponses: 3
    Dernier message: 08/08/2005, 11h05
  5. [tableau]largeur d'une colonne
    Par Nadine dans le forum ASP
    Réponses: 2
    Dernier message: 15/03/2005, 21h11

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