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 :

Probleme de dégroupage en pl/sql


Sujet :

PL/SQL Oracle

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Portugal

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Par défaut Probleme de dégroupage en pl/sql
    Bonjour, je suis actuellement stagiaire développeur au sein d'une entreprise qui ma demander de développer un programme en pl/sql. Etant novice dans ce langage, j'aurai quel que question à vous posez.
    Le but de mon programme est de réduire le nombre de canaux d'interface entres 2 logiciels. Ce programme sera implanté juste avant le second logiciel et dégroupera les informations envoyées par le premier logiciel dans une table générique pour les remettre dans leurs 9 tables d’origines, donc les tables devront être reçu dans la base de donnée dans leurs structures originales.

    Quelle commande permet de séparer les données dans une colonne? (les PK sont dans la même colonne mais séparer pas des "|".

    Merci à toute personne lisant et répondant à ma question.

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    regarde du coté de SUBTR et INSTR Sinon tu peux surement aussi utiliser les commandes XML mais là j'pourrais pas t'aider

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Portugal

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Par défaut
    J'ai déjà essayé a plusieurs reprise de lire et relire des cours sur le pl sql mais n'en ayant jamais fait et n'ayan personne au sein de mon entreprise ne métrisant se langage (habituellement il externalise tout) je suis totalement perdu. Es possible d'avoir un petit exemple avec l'explication que vous m'avez fournie?

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Il y en a plein sur le forum

    Sinon, on n'est pas sensé te former un minimum en stage ?

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Portugal

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Par défaut
    L'entreprise n'avais pas prévus de me faire développer un programme mais c'est mon prof qui a insisté et comme il travail sur oracle et que nous en cour on n'a vu que java je me retrouve dans la situation présente....

  6. #6
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Portugal

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Par défaut
    Je rencontre toujours un problème car mon découpage devra se faire de la façon suivante :
    abc|de|g
    Le nombre de caractère entre chaque | peut varier de 1 a 3 donc je ne peux pas me baser sur la position des caractères mais sur la séparation qui est |

  7. #7
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Portugal

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Par défaut
    Sachant qu'il peut n'y avoir que 2 ou 3 chaines :
    bbb|ccc
    bb|ccc
    bb|cc
    b|cc|fff
    bbb|c|ff
    ....

  8. #8
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 955
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 955
    Par défaut
    Regarde varying-in-lists où il faudra remplacer :txt par le nom de la colonne et dual par le nom de la table dans la version 9ir2+ ainsi que le token.

  9. #9
    Membre éclairé Avatar de macben
    Inscrit en
    Mars 2004
    Messages
    546
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2004
    Messages : 546
    Par défaut
    Si c'est juste une manipulation à faire une fois sans pb de perfs et un besoin bien identifié tu peux te lancer dans une procédure stockée façon :

    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
    declare
      a       varchar2(50) := 'abcde|fgh|ijkl';
      caract1 number(2) := null;
      caract2 number(2) := null;
      chaine1 varchar2(50) := null;
      chaine2 varchar2(50) := null;
      chaine3 varchar2(50) := null;
    begin
      select instr(a, '|', 1) into caract1 from dual;
      select instr(a, '|', caract1 + 1) into caract2 from dual;
      if (caract1 > 0) then
        select substr(a, 1, caract1-1) into chaine1 from dual;
      end if;
      if (caract2 > 0) then
        select substr(a, caract1 + 1, length(a) - caract2 - 1) into chaine2 from dual;
        select substr(a, caract2 + 1, length(a)) into chaine3 from dual;
      else
        select substr(a, caract1 + 1, length(a)) into chaine2 from dual;
      end if;
      dbms_output.put_line(chaine1); -- résultat : abcde
      dbms_output.put_line(chaine2); -- résultat : fgh
      dbms_output.put_line(chaine3); -- résultat : ijkl
    end;
    ça apprend à manier les fonctions INSTR et SUBSTR... mais bon ça fait un peu code de stagiaire

  10. #10
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Portugal

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Par défaut
    merci beaucoup c exactement se qu'il me falai

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

Discussions similaires

  1. Help!! Probleme avec les dates sur SQL SERVER
    Par Nadaa dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 03/08/2006, 17h55
  2. probleme lors d'une requete sql (controle non activé)
    Par junty dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 09/09/2005, 16h45
  3. probleme acceder a mon server sql
    Par ouedmouss dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/09/2005, 14h41
  4. probleme la commande OR dans SQL
    Par amelhog dans le forum Langage SQL
    Réponses: 10
    Dernier message: 19/08/2005, 13h22
  5. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2003, 14h51

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