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 :

Convertir VARCHAR2 en CHAR


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 43
    Points : 18
    Points
    18
    Par défaut Convertir VARCHAR2 en CHAR
    Bonjour,

    Dans une procédure je transfère des données dans un fichier .lis via la commande UTL_FILE. Ces données doivent être ordonnées en colonnes et chaque colonne peut recevoir des données de tailles différentes (essentiellement du VARCHAR2). Cela devrait donner ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    aaaaaaaa     bbbbbb      ccccc
    aaa          bbbbb       ccccccc
    aaaaaaaaa    bbbbbb      cc
    Mais cela donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    aaaaaaaa     bbbbbb      ccccc
    aaa      bbbbb        cccccccc
    aaaaaaaaa     bbbbbb      cc
    Pour le moment j'utilise la commande CHR(9) pour faire des tabulations et séparer les colonnes.

    Le problème est qu'en VARCHAR2 la commande CHR(9) s'avère inutile. En effet certaines de mes données peuvent varier de 5 à 30 caractères. Je me disais donc que convertir en CHAR mes données (reçues via des select) serait la solution.

    J'ai testé en utilisant des variables déclarées en CHAR qui reçoivent les données en VARCHAR2. En code cela donne quelque chose comme ç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
     
    CURSOR c IS
    SELECT col1, col2, col3 ...    -- données en VARCHAR2
    FROM ...   
    WHERE ...;
    w       c%rowtype;
     
    var1   CHAR(50);
    var2   CHAR(50);
    var3   CHAR(50);
    ...
    BEGIN
       ...
       FOR w IN c LOOP
           var1 := w.col1;
           var2 := w.col2;
           var3 := w.col3;
           UTL_FILE.PUT_LINE(fichier, var1||CHR(9) ||var2||CHR(9) ||var3);
       END LOOP;
       ...
    END;
    Cette solution fonctionne mais cela me fait beaucoup de variable à déclarer, et je n'aime pas le fait que les déclarations soient faites en dur (c'est-à-dire que la taille des variables soient entrées dans le code).

    Je pose donc ma question, y a t-il une commande pour convertir un VARCHAR2 en CHAR ?
    Si non auriez-vous une autre solution ?

    PS: évidemment quand je dis convertir en CHAR cela veut dire gardé la taille du VARCHAR2 : VARCHAR2(30) -> CHAR(30) même s'il n'y a que 15 caractères.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 316
    Points : 388
    Points
    388
    Par défaut
    bonjour,
    regarde du coté de lpad ou rpad pour permettre de cadré a gauche ou a droite en completent par des blanc sur un certaine longueur
    C'est ce que j'utilise avec utl_file lorsque je doit sortir des fichier ASCII
    de longueur fixe

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 43
    Points : 18
    Points
    18
    Par défaut
    J'y avais pensé mais je croyais que l'argument placé en paramètre débutait à la fin de la chaîne. J'ai mal lu la doc.

    Ça fonctionne très bien. Merci de ta réponse.

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

Discussions similaires

  1. Convertir String en Char
    Par El-Diablo- dans le forum C++Builder
    Réponses: 6
    Dernier message: 17/04/2007, 17h20
  2. [SQL2K] Convertir un champ Char Vers un champ Date
    Par Sidi-Bou dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 29/01/2007, 08h45
  3. [unicode] Convertir CString en Char[]
    Par dacid dans le forum Visual C++
    Réponses: 7
    Dernier message: 31/05/2006, 09h22
  4. Convertir String en Char: comment?
    Par nmathon dans le forum Langage
    Réponses: 2
    Dernier message: 22/08/2005, 20h58
  5. Réponses: 13
    Dernier message: 06/03/2005, 15h21

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