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 :

Rassembler les elements d'un tableau en une chaine


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Par défaut Rassembler les elements d'un tableau en une chaine
    Bonjour à tous,

    Quelqu'un connait-il une fonction oracle qui permet de faire la meme chose que la foction implode() de php?

    select std from stand where id='xxx';
    resultat:
    2007
    2008
    2009
    je veux afficher sous oracle : 2007;2008;2009 dans la meme ligne.

    Merci

  2. #2
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Bonjour,

    Les réponse(s) sont fortement dépendante(s) en de la version Oracle !

    C'est pour ca qu'il faut préciser la version

    -String aggregation

    -asktom :stragg
    http://asktom.oracle.com/pls/asktom/...15637744429336

    -11GR2 : LISTAGG
    http://asktom.oracle.com/pls/asktom/...49800346276345

  3. #3
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    Juste pour déconner...
    Si tu as au plus dix lignes à concaténer par groupes, et que ce sont toutes des années, tu peux faire une somme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SQL> ed
    Wrote file afiedt.sql
     
      1  with t as (
      2  select 1000 + level as n from dual connect by level <= 10
      3  )
      4  select replace(to_char(sum(n * power(10000, rownum - 1)), '9999,9999,9999,9999,9999,9999,9999,9999,9999,9999'), ',', ';')
      5* from t
    SQL> /
     
    REPLACE(TO_CHAR(SUM(N*POWER(10000,ROWNUM-1)),'9999
    --------------------------------------------------
     1010;1009;1008;1007;1006;1005;1004;1003;1002;1001
    Ok, je sors...

  4. #4
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Par défaut
    Bonjour,
    Merci pour ces reponses
    j'ai fait le test mais ça marche pas et j'ai pas compris ce message errors
    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
     
    SQL> desc agstd;
     Name                            Null?    Type
     ------------------------------- -------- ----
     N_STANDARD                      NOT NULL VARCHAR2(15)
     IU                              NOT NULL VARCHAR2(10)
     
    SQL> create or replace function get_std (n_iu in agstd.iu%TYPE)
      2  return varchar2
      3  is
      4  ltext varchar2(32767):=NULL;
      5  begin
      6  for cur in (select n_standard from agstd where iu=n_iu)
      7  loop
      8  ltext:=ltext || ',' || cur.n_standard;
      9  end loop;
     10  return ltrim(ltext,',');
     11  end;
     12  /
     
    Function created.
     
    SQL> column stds format A50
    SQL> select iu, get_std(iu) As stds
      2  from agstd
      3  group by iu;
    buffer overflow. Use SET command to reduce ARRAYSIZE or increase MAXDATA.
    SQL>

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Par défaut
    La requête ramène beaucoup de lignes, et le buffer de SqlPlus est plein.

  6. #6
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Quelle version Oracle ?

    J'avais écris en haut la solution depend fortement de la version Oracle !

    Sinon sous sqlplus

    oracle preconise de reduire ARRAYSIZE ou augmenter MAXDATA

    sous sqlplus
    par exemple

    en 10G ,MAXADATA est ignoré ... si on le positionne par set MAXDATA
    http://download.oracle.com/docs/cd/B...c.htm#SQPUG152

  7. #7
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Par défaut
    Bonjour

    version oracle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SQL*Plus: Release 3.3.3.0.0 - Production on Sat Oct 24 08:59:44 2009
     
    Copyright (c) Oracle Corporation 1979, 1996.  All rights reserved.
     
     
    Connected to:
    Oracle8i Enterprise Edition Release 8.1.7.0.1 - Production
    With the Partitioning option
    JServer Release 8.1.7.0.1 - Production
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SQL> sho arraysize
    arraysize 15
    SQL> sho maxdata
    maxdata 60000
    SQL>

Discussions similaires

  1. comment affecter a une matrice les elements d'un tableau
    Par rounder2000 dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 24/01/2010, 09h01
  2. Réponses: 3
    Dernier message: 02/06/2008, 16h37
  3. [Tableaux] regrouper les elements d'un tableau
    Par ericmart dans le forum Langage
    Réponses: 3
    Dernier message: 23/06/2006, 09h35
  4. Faire défiler les elements d'un tableau
    Par Laure888 dans le forum Flash
    Réponses: 2
    Dernier message: 12/10/2005, 16h00

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