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 :

Concaténer une variable et un nom de colonne


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 42
    Par défaut Concaténer une variable et un nom de colonne
    Bonjour,

    Je suis entrain de faire un script SQL et j'aimerais concater un paramètre et le nom d'une colonne.

    exemple :

    l'utilisateur rentre la valeur 10, j'aimerais que dans ma requête j'ai la colonne myCol10 qui soit ramené. Si l'utilisateur entre 2 on me retourne le contenu de myCol2...

    Vulgairement j'aimerais savoir si qqch existe et qui fasse ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DEFINE mois = &m
    Select myCol+'&mois.'+_VALUE
    Merci par avance,
    Jérémy

  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 faut utiliser du SQL dynamique, avec la commande EXECUTE IMMEDIATE.
    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 averti
    Inscrit en
    Juin 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 42
    Par défaut
    Merci pour ta réponse rapide.

    Mais pourrais tu me donner un exemple ? Car j'ai regardé sur internet mais je vois pas trop comment l'utiliser

    Merci par avance,

  4. #4
    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,

    Si tu n'en as que 12, tu peux faire avec CASE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT CASE '&mois.' WHEN 1 THEN myCol1_VALUE
                         WHEN 2 THEN myCol2_VALUE
                         ...  
                         WHEN 12 THEN myCol12_VALUE END
    FROM TaTable

  5. #5
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 42
    Par défaut
    Salut,

    J'ai fait en utilisant le CASE, mais il me retourne rien :$
    Il me met pas d'erreur mais me retourne le juste libellé de la colonne, mais avec aucun contenu...

    Une idée?

  6. #6
    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
    Je suppose que le CASE n'arrive pas à matcher...

    Tu peux essayer de rajouter un to_number ?
    (Genre : CASE to_number('&mois.') WHEN 1 THEN...)

  7. #7
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 42
    Par défaut
    Même avec le to_number il affiche rien.

    Par contre qd je change un condition après une des then ben il me sort une erreur .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CASE to_number('&mois.') WHEN 1 then SS.CAPACITESOUSCRITE1_VALUE 
                              WHEN 2 then SS.CAPACITESOUSCRITE2_VALUE 
                              WHEN 3 then SS.CAPACITESOUSCRITE3_VALUE
                              ...
                              WHEN 9 then SS.CAPACITESOUSCRITE9_VALUE 
                              WHEN 10 then SS.DATEFIN
                              WHEN 11 then SS.CAPACITESOUSCRITE11_VALUE 
                              WHEN 12 then SS.CAPACITESOUSCRITE12_VALUE 
                              END AS CAJ
    Lorsque j'exécute ca j'ai l'erreur suivante :

    Erreur à la ligne de commande : 15, colonne : 39
    Rapport d'erreur :
    Erreur SQL : ORA-00932: types de données incohérents ; attendu : NUMBER ; obtenu : DATE
    00932. 00000 - "inconsistent datatypes: expected %s got %s"
    *Cause:
    *Action:
    La ligne 15 est la ligne When 9 ....

  8. #8
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    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
     
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 
    Connected as mni
     
    SQL> create table t_num (t1 int, t2 int, t22 int);
     
    Table created
     
    SQL> define numcol='1'
    SQL> select t&numcol
      2  from t_num;
     
                                         T1
    ---------------------------------------
     
    SQL>

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

Discussions similaires

  1. [Débutant] utiliser variable pour le nom de colonne d'une procedure rowfilter
    Par Ashireon dans le forum VB.NET
    Réponses: 1
    Dernier message: 28/09/2012, 13h32
  2. Titre de colonne = texte concaténé à une variable
    Par debdev dans le forum ODS et reporting
    Réponses: 2
    Dernier message: 12/06/2009, 14h23
  3. Réponses: 15
    Dernier message: 18/11/2008, 15h47
  4. Réponses: 4
    Dernier message: 11/10/2007, 18h35
  5. exporter une table sans le nom de colonnes ?
    Par vuldos dans le forum Access
    Réponses: 13
    Dernier message: 11/10/2004, 19h56

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