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 :

Recherche dans un groupe d'enregistrement


Sujet :

PL/SQL Oracle

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 208
    Par défaut Recherche dans un groupe d'enregistrement
    Bonjour à tous,

    Je vous explique un peu mon problème, je dois créer une procédure de traitements pour un grand nombre de chaînes de caractères (de l'ordre de 36 000 environs).
    Ces données sont stockées dans la base de donnée et j'ai crée un groupe d'enregistrement afin de les récupérer.
    Dans ma procédure je parcours toutes mes chaînes et effectues des opérations dessus, rien de bien compliquer.
    Le soucis vient du fait que je dois ensuite, récupérer des données d'une autre table. La encore j'ai stockés ces informations (99999 lignes avec 2 colonnes à chaque fois) dans un autre groupe d'enregistrement. Et je dois chercher dans ce groupement si je retrouve le couple formés des 2 colonnes à partir des informations extraites de ma chaînes de caractères. C'est très clair comme ça non ?
    Plus clairement, j'ai 36000 adresses postales contenu dans une table et la liste des couples CODE POSTALE / COMMUNES dans une autre. Je dois vérifier que le couple CP / COMMUNE trouvé dans une adresse existe vraiment.

    Évidement, tel que c'est réalisé actuellement, cela prends un temps fou
    D'où mes questions :

    1) Placer mes données dans des groupes d'enregistrement est une bonne façon de faire ou au contraire une horreur ? Quelle est la meilleure façon de procéder dans mon cas ?
    2) Comment exécuter la recherche dans le groupe CP/COMMUNE le plus rapidement possible pour un grand nombre d'adresse ?

    Je débute en pl/sql et oracle, merci de votre indulgence si j'ai dis des monstruosités

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 208
    Par défaut
    On recherche un pro oracle PL/SQL dans le coin

    Je redéfinie un peu mon problème si ça peu aider a y apporter une solution:
    actuellement j'ai en gros, 2 table que je met dans des groupes d'enregistrements puis que je parcours à l'aide de deux boucle while imbriquées.
    Évidement c'est trop long et j'aimerai donc savoir si en PL/SQL il y a mieux comme solution, au niveau du stockage en mémoire des tables et au niveau du parcours de ces deux tables.

    Merci d'avance.

  3. #3
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Bonjour,

    Quel est le but final de ta requete car

    si tu as un table tab_1 (code_postale,code_comm)
    et tab_b (code_comm,nom_commune)

    une simple requete SQL suffit ... et sera plus rapide .

    Ton but c'est faire un SELECT uniqement.

    Avec les indexes la ou il faut dans le clause WHERE ce sera toujours plus simple et plus rapide par SQL que par PLSQL

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 208
    Par défaut
    Finalement pour faire ma vérification j'ai fait avec la méthode suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    l_n_temp := Get_Group_Record_Number('ADRESSE.CP_CODE',l_ligne6C);
    IF l_n_temp != 0 THEN
      IF Get_Group_Char_Cell('ADRESSE.CP_LIB',l_n_temp) != l_ligne6V THEN
      	CODE_ERREUR := 'B';
      END IF; 
    ELSIF CODE_ERREUR IS NULL THEN
      CODE_ERREUR := 'B';
    END IF;
    Et j'ai mis ceci à l'intérieur de la boucle while qui parcours toute les adresse.
    Le Code Postale (CP_CODE) étant unique je peux utiliser Get_Group_Record_Number() à partir de l_ligne6C (qui est le code postale que j'ai récupéré sur l'adresse). Si la fonction me retourne une correspondance, je cherche si le nom de la commune (CP_LIB) associé au CP correspond à l_ligne6V (la commune que je récupère de l'adresse).

    Ça marche et c'est assez rapide.

    Toutefois si quelqu'un peut m'indiquer si mon chargement en mémoire des tables est correct dans ce cas de figure ou si c'est faisable avec quelque chose de plus adapté.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 208
    Par défaut
    Merci de ta réponse fatsora,

    Le but de ma procédure est de faire un traitement sur des adresses enregistrées en base de données. Je dois donc récupérer les adresses, effectuer plusieurs opérations dessus et ensuite vérifier si les infos contenues dans cette adresse corresponde aux données que j'ai dans une autre table.
    Vu que je ne peux récupérer les infos qu'après avoir fait plusieurs traitements sur l'adresse, je ne crois pas pouvoir tout récupérer avec une seule requête.

    EDIT : Bon après vérification je me suis trompé, le code postale n'est pas unique à une commune, donc ma solution n'ira pas

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

Discussions similaires

  1. Recherche dans un fichier impossible enregistré dans un fichier
    Par cdjkhdjlhxjklnjskznj dans le forum Langage
    Réponses: 19
    Dernier message: 03/12/2014, 00h09
  2. Réponses: 1
    Dernier message: 14/06/2006, 10h56
  3. Enregistrer un nouveau serveur dans un groupe de serveur ?
    Par pop bob dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/07/2005, 16h18

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