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 taille chaine


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Par défaut Problème taille chaine
    Bonjour,

    Je cherche à extraire les données d'une table (base Oracle version 8 )dans un fichier spool (via un PL/SQL)

    Mon fichier ressemble à ceci :
    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
    set heading off 
    set feedback off  
    set pagesize 0  
    set linesize 5200  
    set verify off
    set newpage 0 
    set space 0 
    spool monfichierspool
    SELECT  
    1||
    ltrim(to_char(champ1,'000000000000000'))||
    nvl(ltrim(to_char(champ2,'000000000000000')),'               ')||      
    [...] ||
     rpad(champ48,4000) 
    FROM 
    matable; 
    spool off
    Bien qu'ayant un champ de 4000 caractères (chaque ligne fait 5200 caractères) , si je limite mon extraction à 30 lignes je n'ai pas de problème, mon fichier spool contient bien toutes mes lignes.
    Au delà de 30 lignes extraites (je n'ai pas fait le test pour savoir exactement à partir de combien ça plantait) , j'obtiens l'erreur oracle suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-01489: result of string concatenation is too long
    Quelle est la limite pour le résultat d'une requete oracle (si c'est bien de là que vient le problème) ?
    Comment puis-je contourner ce problème ?

    Merci

  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

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Par défaut
    Merci pour le lien mais une chose m'échappe quand même :

    the max length of a varchar2 is 4000 characters in 8.x (2000 in 7.x). A string
    concatenation is a varchar2 -- hence, the max you can concat is 4000 bytes.
    Si mon problème est le même, cela devrait planter dès la première ligne.. et pas au delà des 30 lignes extraites , non ?

  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
    Es-tu sûr que tes 30 premières lignes comportent plus de 4000 caractères et que ce n'est pas seulement la 31è qui dépasse cette longueur ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Par défaut
    Oui il me semble que mes lignes font bien plus que 4000 caractères puisque j'utilise la fonction RPAD.

    A moins que je me trompe cette fonction "Retourne la chaîne de caractères complétée à droite par le motif précisé (ou par défaut un espace)" non ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Par défaut
    Je viens de voir qu'en fait RPAD ne fonctionne pas tout à fait comme je pensais ..
    RPAD(chaine, longueur[, motif])
    Cette fonction COMPLETE la chaine avec un motif sur un certain nombre de caractère, mais si la chaine de départ est vide .. aucun caractère n'est ajouté.
    Il se pourrait bien que mon problème vienne de là ..

Discussions similaires

  1. taille chaine avec pointeur
    Par africanwinners dans le forum Débuter
    Réponses: 2
    Dernier message: 31/08/2011, 15h35
  2. Réponses: 10
    Dernier message: 15/03/2005, 10h31
  3. [langage] taille chaine de caracteres
    Par katikats dans le forum Langage
    Réponses: 8
    Dernier message: 10/01/2005, 11h06
  4. Réponses: 10
    Dernier message: 22/05/2004, 13h51
  5. Taille de chaines de caractere et \0
    Par KORTA dans le forum C
    Réponses: 16
    Dernier message: 05/09/2003, 09h28

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