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

SQL Oracle Discussion :

Erreur Concatenation Requête Oracle


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    ertertaertar
    Inscrit en
    Mai 2013
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ertertaertar

    Informations forums :
    Inscription : Mai 2013
    Messages : 314
    Par défaut Erreur Concatenation Requête Oracle
    Bonjour les gars,

    j'ai une question a propos d'une erreur d’exécution de requête ,quand j'exécute une requête pour avoir le nom des chefs de projet , j'ai l'erreur suivante :
    ORA-01489: résultat de concaténation de chaîne trop long

    voici ma requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    select LISTAGG(usr.USURNAME ||' '||usr.UNAME,' | ') WITHIN GROUP (ORDER BY 1)
    from  
    T_FND_USER usr
    ,T_TLK_TENDER ds
    ,T_TLK_USER_PROFILE prf
    ,T_TLK_TENDER_ASG asg
    ,T_TLK_RFQ rfq 
    where  ds.tender_code =rfq.TENDER_CODE
    and asg.TENDER_CODE =ds.TENDER_CODE
    and asg.USER_ID =usr.USER_ID
    and prf.OID =usr.PROFILE_OID
    and upper(prf.name) like upper('Chef%projet%')
    quelqu'un aurait une proposition ?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    Il me semble que le message est clair...

    Quelle est la longueur des chaines que tu cherches à regrouper sur une ligne ?
    Combien d'occurrences seront-elles ainsi concaténées ?

    Et la question la plus importante : Est-ce bien cela que tu cherches à faire ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre très actif
    Homme Profil pro
    ertertaertar
    Inscrit en
    Mai 2013
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ertertaertar

    Informations forums :
    Inscription : Mai 2013
    Messages : 314
    Par défaut
    en effet ce n'est pas moi qui a fait la requête , c'est une personne du service bases de données , et moi je dois l'intégrer dans mon interface ODI pour avoir une liste des chefs de projets , la requête est longue , mois je teste partie par partie , et sur ce niveau la de la requête ça me donne cette erreur

  4. #4
    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
    LISTAGG est limité à 4000 caractères, et sort en erreur "ORA-01489: résultat de concaténation de chaîne trop long" si ça dépasse.

  5. #5
    Membre très actif
    Homme Profil pro
    ertertaertar
    Inscrit en
    Mai 2013
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ertertaertar

    Informations forums :
    Inscription : Mai 2013
    Messages : 314
    Par défaut
    donc la solution est quoi ?

  6. #6
    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
    Ca dépend de ce que tu veux faire.

    Déjà, il faut vérifier que la requête est correcte et qu'elle en te renvoie pas de doublons.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT usr.USURNAME ||' '||usr.UNAME, COUNT(*)
    FROM T_FND_USER usr, T_TLK_TENDER ds, T_TLK_USER_PROFILE prf, T_TLK_TENDER_ASG asg, T_TLK_RFQ rfq 
    WHERE ds.tender_code =rfq.TENDER_CODE
    AND asg.TENDER_CODE =ds.TENDER_CODE
    AND asg.USER_ID =usr.USER_ID
    AND prf.OID =usr.PROFILE_OID
    AND UPPER(prf.NAME) LIKE UPPER('Chef%projet%')
    GROUP BY usr.USURNAME ||' '||usr.UNAME
    having count(*) > 1
    Vérifier aussi la taille de ce que tu veux regrouper
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT SUM(LENGTH(usr.USURNAME ||' '||usr.UNAME)) + GREATEST(COUNT(*) -1, 0) * LENGTH(' | ')  taille_totale
    FROM T_FND_USER usr, T_TLK_TENDER ds, T_TLK_USER_PROFILE prf, T_TLK_TENDER_ASG asg, T_TLK_RFQ rfq 
    WHERE ds.tender_code =rfq.TENDER_CODE
    AND asg.TENDER_CODE =ds.TENDER_CODE
    AND asg.USER_ID =usr.USER_ID
    AND prf.OID =usr.PROFILE_OID
    AND UPPER(prf.NAME) LIKE UPPER('Chef%projet%')
    Ensuite, si tout est correct, il faudra le faire sans LISTAGG et gérer l’agrégation en PLSQL ou autre.

Discussions similaires

  1. Erreur Requête Oracle
    Par amalch dans le forum Oracle
    Réponses: 1
    Dernier message: 03/04/2013, 15h43
  2. Réponses: 8
    Dernier message: 26/05/2011, 12h20
  3. Voir les dernières requête Oracle
    Par newchurch dans le forum Oracle
    Réponses: 4
    Dernier message: 11/04/2005, 23h41
  4. [Forms 6i] FRM-40502 : erreur Forms ou Oracle ?
    Par macben dans le forum Forms
    Réponses: 11
    Dernier message: 01/12/2004, 17h16
  5. [CR] erreur de driver oracle
    Par cdu dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 10/09/2004, 15h36

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