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

SQL Oracle Discussion :

Sqlplus : Mise en forme du Select


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Décembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 11
    Par défaut Sqlplus : Mise en forme du Select
    Bonjour à tous. Je vous rassure, j'ai fouillé avant de poster mais je n'ai pas trouvé de réponse.

    Je cherche à diriger le résultat d'un select dans un fichier txt. Jusque là, rien de bien sorcier. Mes colonnes doivent être séparées par un ";". Mais je séléctionne des données dans plusieurs tables différentes. Du coup, mon résultat me donne un saut de ligne non souhaité entre chaque table. Voici mon code

    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
    SET space 0        ; 
    SET colsep ';';
    SET linesize 1000;
    SET trimspool ON   ;
    SET pagesize 0     ;
    SET feed off     ; 
    SET trimout off    ;
    SET heading off    ;
    SET feedback off   ;
    SET verify off     ;
    spool journal.txt;
    SELECT DISTINCT R.TIMESTAMP, U.NOM, U.PRENOM, P.NOMPAT , trim(P.PREPAT) , trim(R.OPRES_LIB),O.SA_LIBRE,O.SA_NOTE,O.NOTE_P2P,O.SA_DTDEB,O.SA_DTFIN, O.HORS_LIVRET, H.LIBLONG
    from UMHEB H, UTIL U, PATIENT P, PRES_OBJ R, SA_OBJ O
    where R.NOPAT=P.NOPAT
    and R.NOUTIL=U.NOUTIL
    and R.NOUMHEB=H.NOUMHEB
    and R.OPRES_ID=O.OPRES_ID
    and R.ETAT='A'
    and O.SA_DTDEB>=&Dateinferieure 
    and O.SA_DTDEB<=&Datesuperieure
    and O.NOTE_P2P IS NOT NULL;
     
    spool off;
    quit;
    Et voici le résultat : (comme il s'agit de données médicales, j'ai évidemment enlevé le nom des médecins et patients...). J'ai d'abord cru que le retour à la ligne était dû à la longueur des champs mais dans ce cas, j'aurai quand même eu des ";" non ?

    11/03/13;DrANONYME ;PRENOM DrANONYME ;NOMPATIENTE ;MARINA
    DAFALGAN 250 mg, pdr efferv pr sol buv, sachet
    2 sachet-dose, si besoin, Voie orale
    en cas de douleur ou temp sup à 38

    Merci de bien vouloir confirmer le dosage de DAFALGAN

    En effet, nous disposons de DAFALGAN 500 mg gélule. Merci de bien vouloir confirmer votre prescription
    20120102;99991231;N;UNITE DE SOINS
    Merci d'avance

  2. #2
    Expert confirmé 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
    Par défaut
    Il y a peut être des carriage return dans les données extraites de la base.

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 11
    Par défaut
    oups ! Pas pensé à ca ! Je regarde...
    Merci !


    (mais euh, si c'est le cas, comment je les élimine ? )

  4. #4
    Expert confirmé 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
    Par défaut
    Avec Translate.

  5. #5
    Membre habitué
    Inscrit en
    Décembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 11
    Par défaut
    Bonjour !

    Merci beaucoup ! Effectivement, il y avait des retour-chariots dans les données. Je ne maîtrise pas trop TRANSLATE mais j'ai pu m'en débarrasser avec replace.

    Mon script donne donc ça :

    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
    SET space 0        ; 
    SET colsep ';';
    SET linesize 1000;
    SET trimspool ON   ;
    SET pagesize 0     ;
    SET feed off     ; 
    SET trimout off    ;
    SET heading off    ;
    SET feedback off   ;
    SET verify off     ;
     
    spool journal.txt;
    SELECT DISTINCT trim(H.LIBCOURT) as heb, O.SA_DTDEB, U.NOM as nomd,  P.NOMPAT as nomp , trim(P.PREPAT) as prenomp, replace(replace(R.OPRES_LIB,chr(10),' '),chr(13),' ')  as preslib,replace(replace(O.SA_LIBRE,chr(10),' '),chr(13),' ')  as salibre,replace(replace(O.SA_NOTE,chr(10),' '),chr(13),' ')  as sanote,replace(replace(O.NOTE_P2P,chr(10),' '),chr(13),' ')  as sapp
    from UMHEB H, UTIL U, PATIENT P, PRES_OBJ R, SA_OBJ O
    where R.NOPAT=P.NOPAT
    and R.NOUTIL=U.NOUTIL
    and R.NOUMHEB=H.NOUMHEB
    and R.OPRES_ID=O.OPRES_ID
    and R.ETAT='A'
    and O.SA_DTDEB>=&Dateinferieure 
    and O.SA_DTDEB<=&Datesuperieure
    and O.NOTE_P2P IS NOT NULL;
     
     
     
    spool off;
    quit;
    Par contre, mon résultat est

    HB ALCO 1er ;20120110;DrMachin ;CARAMBAR ;MELANIE
    DAFALGAN 500 mg, gélule
    1 gélule, Midi, Voie orale
    test note du medecin
    test note pharma pour med
    J'ai donc toujours quelques "ENTER" au lieu de ";" . Je soupçonne toujours que c'est parce que les données viennent de tables différentes, mais je sèche.... Quelqu'un a une idée ?

  6. #6
    Expert confirmé 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
    Par défaut
    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
     
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 
    Connected as mni
     
    SQL> 
    SQL> With data As (
      2  Select 'MELANIE
      3  DAFALGAN 500 mg, gélule
      4  1 gélule, Midi, Voie orale
      5  test note du medecin
      6  test note pharma pour med' txt
      7  from dual
      8  )
      9  Select txt, translate(txt,'#'||chr(10),'# ')
     10    from data
     11  /
     
    TXT                                                                              TRANSLATE(TXT,'#'||CHR(10),'#'
    -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
    MELANIE                                                                          MELANIE DAFALGAN 500 mg, gélule 1 gélule, Midi, Voie orale test note du medecin
    DAFALGAN 500 mg, gélule                                                          
    1 gélule, Midi, Voie orale                                                       
    test note du medecin                                                             
    test note pharma pour med                                                        
     
    SQL>

  7. #7
    Membre actif
    Homme Profil pro
    ingénieur d'étude PL/SQL
    Inscrit en
    Octobre 2002
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur d'étude PL/SQL

    Informations forums :
    Inscription : Octobre 2002
    Messages : 53
    Par défaut
    Citation Envoyé par bubbledog Voir le message
    Bonjour !

    Merci beaucoup ! Effectivement, il y avait des retour-chariots dans les données. Je ne maîtrise pas trop TRANSLATE mais j'ai pu m'en débarrasser avec replace.

    Mon script donne donc ça :


    Par contre, mon résultat est



    J'ai donc toujours quelques "ENTER" au lieu de ";" . Je soupçonne toujours que c'est parce que les données viennent de tables différentes, mais je sèche.... Quelqu'un a une idée ?
    j'ai essayé comme toi avec des replace qui fonctionne tres bien avec aucun saut de ligne.
    puis j'ai appliqué tes SET et la ca saute des lignes dans tous les sens.
    ton probleme doit etre dans les SET.

Discussions similaires

  1. mise en forme affichage sqlplus
    Par donny dans le forum Sql*Plus
    Réponses: 1
    Dernier message: 10/04/2007, 14h52
  2. [Formulaires] Mise en forme champs <select>
    Par zakuli dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 29/11/2006, 07h36
  3. Pb de mise en forme dans une liste de selection
    Par crashyear dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/09/2006, 11h58
  4. mise en forme de select
    Par grinder59 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 18/01/2006, 11h30
  5. mise en forme d'un select
    Par mic79 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 25/01/2005, 17h04

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