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 :

Pb découpage LONRAW et récupération lenght


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Par défaut Pb découpage LONRAW et récupération lenght
    Bonjour,
    voici mon problème en Oracle 9i
    J'ai le champ d'une table en LONGRAW, que je dois concaténer avec un autre champ dans le cas où le 1er fait moins de 2500 caractères.

    J'arrive à éclater le champ en LONG en plusieurs champs en VARCHAR, mais mon problème est que quand je l'éclate en 3 champs de 2500 caractères, chaque champ de réception à une longueur de 2500 caractères quand je fais le LENGTH du champ, quel que soit le nombre de caractères qu'ils contiennent. Je n'arrive pas à savoir avec quel caractère Oracle complète les champs.

    Donc je ne peux pas savoir si je dois le concaténer ou pas, d'où problème

    Est-ce que qlq'un aurait une réponse à mon problème ???
    Merci d'avance

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Est-ce que vous utilisez le package UTL_RAW ?
    Si oui comment ? Si non, comment faites-vous ?

    Dans tous les cas, il faudrait avoir le code en question.

  3. #3
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Vous pouvez utiliser la fonction DUMP() pour "voir" les caractères.
    Vous pouvez aussi afficher le caractère ascii du character avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ASCII( substr(votre_varchar, 2500,1))

  4. #4
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    et si vous avez la possibilité je vous conseille d'utiliser les blob plutôt que les long raw (long raw est un type de données un peu obsolète )

  5. #5
    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
    Citation Envoyé par plaineR
    et si vous avez la possibilité je vous conseille d'utiliser les blob plutôt que les long raw (long raw est un type de données un peu obsolète )
    Plutôt du CLOB pour les caractères

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Par défaut
    Merci pour vos 1ères réponses
    Voici le code ayant permis le découpage

    -- CREATE OR REPLACE PROCEDURE P_TP_PLANFI_LONG


    DECLARE

    obs_var1 VARCHAR2(2500);
    obs_var2 VARCHAR2(2500);

    CURSOR CUR_PLANFI is
    SELECT SU_DOSSIER , SU_NUMERO_UA, SU_NUMERO_ANNEE,
    SU_NUMERO_NUM, SU_NUMERO_PHASE, SU_OBS_GENERALE,
    SU_OBS_ANNEXE
    FROM sudos_planfi ;


    BEGIN

    DELETE TP_PLANFI_LONG ;

    FOR C_1 IN CUR_PLANFI

    LOOP

    obs_var1 := trim(substr(C_1.su_obs_annexe,1,2500));
    obs_var2 := trim(substr(C_1.su_obs_annexe,2501,2500));

    INSERT INTO TP_PLANFI_LONG
    (SU_DOSSIER , SU_NUMERO_UA, SU_NUMERO_ANNEE , SU_NUMERO_NUM ,
    SU_NUMERO_PHASE, SU_OBS_GENERALE ,
    SU_OBS_ANN_1 , SU_OBS_ANN_2
    )
    VALUES
    (C_1.SU_DOSSIER , C_1.SU_NUMERO_UA, C_1.SU_NUMERO_ANNEE , C_1.SU_NUMERO_NUM ,
    C_1.SU_NUMERO_PHASE, C_1.SU_OBS_GENERALE ,
    OBS_VAR1 , OBS_VAR2
    ) ;


    END LOOP ;
    END;


    Je n'ai pas le choix du type de données, notre client nous l'impose

  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

  8. #8
    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
    les champs SU_OBS_ANN_1 , SU_OBS_ANN_2 sont de quel type ?
    CHAR ou VARCHAR ?
    Si c'est CHAR c'est normal, les CHAR ont une taille fixe en base.

  9. #9
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Il nous faudrait aussi la description des 2 tables.

  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Par défaut
    voici la table en entrée SUDOS_PLANFI

    CREATE TABLE SUDOS_PLANFI
    (
    SU_DOSSIER CHAR(23 BYTE) NOT NULL,
    SU_NUMERO_UA NUMBER(6),
    SU_NUMERO_ANNEE NUMBER(6),
    SU_NUMERO_NUM NUMBER(6),
    SU_NUMERO_PHASE CHAR(1 BYTE),
    SU_OBS_GENERALE VARCHAR2(255 BYTE),
    SU_OBS_ANNEXE LONG
    )


    voici la création de la table TP_PLANFI_LONG
    CREATE TABLE TP_PLANFI_LONG
    (
    SU_DOSSIER CHAR(23 BYTE),
    SU_NUMERO_UA NUMBER(6),
    SU_NUMERO_ANNEE NUMBER(6),
    SU_NUMERO_NUM NUMBER(6),
    SU_NUMERO_PHASE CHAR(1 BYTE),
    SU_OBS_GENERALE VARCHAR2(255 BYTE),
    SU_OBS_ANN_1 VARCHAR2(2500 BYTE),
    SU_OBS_ANN_2 VARCHAR2(2500 BYTE)
    )

    les 2 champs sont bien en VARCHAR2

    ....

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Par défaut
    autre info : quand je demande la valeur ASCII
    select ascii(substr(su_obs_ann_1,2500,1)) from tp_planfi_long
    j'ai 0 en retour... donc null
    il n'empèche que la longueur du champ est bien 2500
    ce qui est confirmé par le dump du champ qui me donne
    Typ=1 Len=2500: 65,99,.... puis 0,0,0,0,0,0,...

    Merci pour vos lumières, la mienne est éteinte

  12. #12
    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
    Citation Envoyé par petit
    autre info : quand je demande la valeur ASCII
    select ascii(substr(su_obs_ann_1,2500,1)) from tp_planfi_long
    j'ai 0 en retour... donc null
    Merci pour vos lumières, la mienne est éteinte
    0 ascii c'est le caractère chr(0) c'est pas NULL !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT ASCII('')
    FROM dual
    renvoie NULL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT ASCII(CHR(0))
    FROM dual
    Renvoie 0
    Fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rtrim(variable, chr(0));

  13. #13
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Par défaut
    Merci, merci ça marche
    Je reviendrai vous voir avec plaisir en cas de problème

    A bientôt donc

    (je ne sais pas comment passer le post en Résolu...)

  14. #14
    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
    En bas à gauche de la page, tu as le bouton

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 23/06/2009, 18h36
  2. [XMLRAD] récupération de donnée
    Par Mitch79 dans le forum XMLRAD
    Réponses: 7
    Dernier message: 30/01/2003, 15h36
  3. Réponses: 5
    Dernier message: 09/01/2003, 11h55
  4. récupération d'images
    Par MANU_2 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 05/08/2002, 18h36
  5. Réponses: 4
    Dernier message: 05/06/2002, 12h15

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