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 :

apparition d'espace dans un spool (oracle 9.2)


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 23
    Points : 16
    Points
    16
    Par défaut apparition d'espace dans un spool (oracle 9.2)
    Bonjour,

    Je suis en oracle 9.2

    Voilà j'ai un souci avec l'extraction de données le début dela requete est la suivante :

    SET HEADING OFF FEEDBACK OFF ECHO OFF VERIFY OFF SPACE 0 PAGESIZE 0 TERMOUT OFF
    SET COLSEP ";"
    SET LINESIZE 1065
    SPOOL &1/&2
    SELECT A.IDSIG, A.NENRREC, A.NB2I, TO_CHAR(A.DATRECP,'YYYY'), TO_CHAR(A.DATRECP,'MM'), TO_CHAR(A.DATRECP,'DD'),B.LMAILLE, C.LCENGDF, S.LMOTIFSIG,
    En sortie avant j'avais cela

    001a20b9920f406581dfa6391e9fb2dd ;600095629 ;2713019 ;2009;06;24; Champagne Ardennes Sillon Lorrain

    et maintenant j'ai cela et je ne sais pas pourquoi.
    En effet des espaces se sont ajoutés pour les champs convertis avec TO_CHAR j'ai l'impression.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    001a20b9920f406581dfa6391e9fb2dd        ;600095629 ;2713019   ;2009                                                                       ;06                                                                         ;24                                                                         ;Champagne Ardennes Sillon Lorrain
    on m'assure qu'il n 'y a pas eu de changement de paramètrage au niveau d'oracle.

    Est ce que vous avez une idée ?

    Merci

  2. #2
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Ce sont les données qui on du changer.
    Si sqlplus a vu une colonne plus large, il se formatte comme ça.

    C'est une erreur d'utiliser colsep pour faire celà.
    Je te conseille plutôt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT A.IDSIG||';'||A.NENRREC||';'|| A.NB2I||';'|| TO_CHAR(A.DATRECP,'YYYY')||';'|| TO_CHAR(A.DATRECP,'MM')||';'|| TO_CHAR(A.DATRECP,'DD')||';'||B.LMAILLE||';'|| C.LCENGDF||';'||S.LMOTIFSIG||';'||
    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Merci de ta réponse Pachot.

    Mais les données n'ont pas changée.
    Pour ce qui est de || ';' || , j'ai eu la proposition inverse de toi d'utiliser le colsep.....


    Cependant ce n'est pas là le fond du problème.

    C'est que mes 3 to_char sont maintenant de longueur fixe à 75 caractères.
    J' utilise trim, rtrim, fm , rien ni fait.
    J'obtiens des champs de longueur 75 pour les 3 to_char !!!

  4. #4
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    non, ce n'est probablement pas to_char qui est passé à 75 caractères (tu peux le vérifier avec la requête que je t'ai proposé.

    sqlplus essaie de formatter le résultat en colonnes. Une colunne sera toujours affichée avec la même largeur.

    Si tu veux un résultat en format fixe, continue avec colsep. Mais tu auras des espaces de remplissage. Et dans ce cas il faut utiliser 'column ... format A...' pour définir la largeur de chaque colonne.

    Si tu veux un format variable (csv) alors colsep n'est pas la solution, mais concaténer les ';'

    Sinon, tu t'appuie sur un comportement par défaut de sqlplus, et qui peut dépendre de dizaines de paramètres: les données, les noms de colonnes, cursor_sharing, ...
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    bonjour,

    merci Pachot pour ces renseignements notamment la reaction par defaut de sqlplus.

    effectivement le colsep c'est pour avoir une longueur fixe.

    J'ai ajouté en debut de fichier les 3 lignes suivantes

    SET COLUMN TO_CHAR(A.DATRECP,'YYYY') FORMAT A4
    SET COLUMN TO_CHAR(A.DATRECP,'MM') FORMAT A2
    SET COLUMN TO_CHAR(A.DATRECP,'DD') FORMAT A2
    est cela ne change rien.....ces colonnes sont toujours de longueur 75 !!

    J'essaye de faire d'autres tests mais pour l'instant je ne trouve rien....

  6. #6
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Il faudrait nommer les colonnes pour utiliser column.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    ok merci Pachot.

    En fait je me suis rendu compte de mon erreur....le SET de COLUMN.

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

Discussions similaires

  1. Syntaxe SPOOL dans SQL sous Oracle
    Par ElTof07 dans le forum SQL
    Réponses: 3
    Dernier message: 14/10/2010, 17h25
  2. Spool : problème d'espace dans les champs spoolés
    Par Flint dans le forum Sql*Plus
    Réponses: 4
    Dernier message: 17/06/2010, 17h01
  3. Réponses: 1
    Dernier message: 12/12/2006, 18h31
  4. [VB6 et Oracle] Espace dans Oracle
    Par malhivertman1 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/02/2006, 16h02
  5. [SQL / ORACLE] Supprimer espace dans une phrase
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 10
    Dernier message: 31/01/2006, 16h29

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