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

Oracle Discussion :

Problème avec des espaces présents en début de chaine


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Par défaut Problème avec des espaces présents en début de chaine
    Bonjour,

    Je dois insérer dans un champ une chaine de caractère stockée dans une autre table.

    Pour des raisons d'affichage, cette chaine commence par 5 espaces.

    Pour transfèrer les données d'une table vers une autre j'utilise une procédure stockée dont j'ai extrait la partie suivante concernant mes deux tables :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    /* Table TMP_DETAIL_REALISATIONS */
    DECLARE  CURSOR DETAILCur IS
             SELECT * FROM TMP_DETAIL_REALISATIONS;
             tmp_detail TMP_DETAIL_REALISATIONS%ROWTYPE;
    begin
           open DETAILCur;
           loop
                fetch DETAILCur into tmp_detail;
                EXIT WHEN DETAILCur%NOTFOUND;
                VarIdChallenge :=0;
                VarNumChallenge := tmp_detail.numchallenge;
                VarMarque := tmp_detail.codemarque;
    
                open IDChallenge(VarNumChallenge,  VarMarque);
                fetch IDChallenge into VarIdChallenge;
                close IDCHALLENGE;
                
                /* insertion de la ligne des titres */
                if tmp_detail.NUMLIGNE = '0001' or tmp_detail.NUMLIGNE = '0002' then
                      insert into DETAILREALISATIONS
                      (IDCHALLENGE, NUMREGROUPEMENT, INFODETAILREALISATION, NUMLIGNE)
                      values
                      (VarIdChallenge, '0', CHAR(tmp_detail.INFORMATION), tmp_detail.NUMLIGNE);
                
                /* insertion des informations */
                else
                      insert into DETAILREALISATIONS
                      (IDCHALLENGE, NUMREGROUPEMENT, INFODETAILREALISATION, NUMLIGNE)
                      values
                      (VarIdChallenge, tmp_detail.NUMCONTRATREGROUPEMENT, tmp_detail.INFORMATION, tmp_detail.NUMLIGNE);
                      
                end if;
                
           end loop;
           close DETAILCur;
    end;
    Quand j'exécute ma procédure stockée j'ai les 5 espaces du début de ma chaine qui sont supprimés !

    Est-ce qu'une âme charitable aurait une idée pour faire en sorte que je puisse conserver mes espaces en début de chaine ?

    Merci pour votre aide...

  2. #2
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Par défaut
    Bonjour,

    As tu lu les règles du forum ? Pas de version d'oracle ?

    Tu devrais utiliser la balise code, ce serais beaucoup plus clair pour tout le monde.

    Quelle est le format de la variable qui pose problème VARCHAR, VARCHAR2, CHAR ?
    quelle est la variable qui pose problème ?
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  3. #3
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Bonjour ,

    la taille de ta chaine est fixe ?

    essaie ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     lpad(NomChaine,lataille de la chaine,' ')

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Par défaut
    Tout d'abord merci pour votre réponse.
    Désolé pour l'oubli de la version d 'oracle. C'est la version 9

    Voic le code mis en forme correctement :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    /* Table TMP_DETAIL_REALISATIONS */
    DECLARE  CURSOR DETAILCur IS
             SELECT * FROM TMP_DETAIL_REALISATIONS;
             tmp_detail TMP_DETAIL_REALISATIONS%ROWTYPE;
    begin
           open DETAILCur;
           loop
                fetch DETAILCur into tmp_detail;
                EXIT WHEN DETAILCur%NOTFOUND;
                VarIdChallenge :=0;
                VarNumChallenge := tmp_detail.numchallenge;
                VarMarque := tmp_detail.codemarque;
    
                open IDChallenge(VarNumChallenge,  VarMarque);
                fetch IDChallenge into VarIdChallenge;
                close IDCHALLENGE;
                
                /* insertion de la ligne des titres */
                if tmp_detail.NUMLIGNE = '0001' or tmp_detail.NUMLIGNE = '0002' then
                      insert into DETAILREALISATIONS
                      (IDCHALLENGE, NUMREGROUPEMENT, INFODETAILREALISATION, NUMLIGNE)
                      values
                      (VarIdChallenge, '0', tmp_detail.INFORMATION, tmp_detail.NUMLIGNE);            
                /* insertion des informations */
                else
                      insert into DETAILREALISATIONS
                      (IDCHALLENGE, NUMREGROUPEMENT, INFODETAILREALISATION, NUMLIGNE)
                      values
                      (VarIdChallenge, tmp_detail.NUMCONTRATREGROUPEMENT, tmp_detail.INFORMATION, tmp_detail.NUMLIGNE);
                      
                end if;
                
           end loop;
           close DETAILCur;
    end;
    Ce qui pose problème c'est au niveau du code en rouge.
    Le type du champ qui pose problème est VARCHAR2.
    La variable qui pose problème est "tmp_detail.INFORMATION".

    Mercio pour votre aide.

  5. #5
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Bonjour,

    quand tu consultes la table tu vois les 5 espaces
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM TMP_DETAIL_REALISATIONS;

  6. #6
    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
    la colonne de destination ne serait pas en NUMBER par hasard ? Sinon, stocker des espaces rien que pour l'affichage c'est vraiment n'importe quoi... m'enfin

  7. #7
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Donne le desc des 2 tables.
    Pour info c'est quoi comme curseur IDChallenge ?

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/09/2014, 13h55
  2. Nom de fichier avec des espaces, problème dans un script
    Par laloupiote dans le forum Shell et commandes GNU
    Réponses: 18
    Dernier message: 08/02/2013, 16h56
  3. Réponses: 3
    Dernier message: 14/01/2009, 10h38
  4. Problème de chemin de fichier avec des espaces
    Par Akronyme dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 11/12/2006, 17h12
  5. Réponses: 2
    Dernier message: 06/12/2002, 07h50

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