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 :

nom de colonne dans une variable


Sujet :

SQL Oracle

Vue hybride

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 67
    Par défaut nom de colonne dans une variable
    Bonjour,
    Comment pourrai je faire un select sur une colonne dans une table
    sachant que le nom de la colonne en question est stocké dans une variable ??

    colname varchar2(10);
    colname := 'colonne1';

    select (colname) from tab1
    where ....

    merci d'avance

  2. #2
    Membre Expert Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Par défaut
    du SQL dynamique mais ça dépend ce que tu veux faire exactement (application, requête simple, etc.)

  3. #3
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    Citation Envoyé par nuke_y
    du SQL dynamique mais ça dépend ce que tu veux faire exactement (application, requête simple, etc.)
    C'est à dire aller voir du coté de "EXECUTE IMMEDIATE" dans la doc PL/SQL ou bien jouer avec les spool s'ils s'agit de traitement simple par sqlplus...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 67
    Par défaut
    J'aimerai tester dans un "trigger sur update" si certaines colonnes ont changés de valeur
    les colonnes en question sont dans une table de parametrage.

    j'ai vu le sql dynamique ...
    quand je construit ma requete dynamiquement et j'essaye de l'executer via EXECUTE IMMEDIATE il gueule,
    c'est normal les rowtype new et old ont une portée (trigger)

    si vous avez une idée ou un bout de code je suis preneur
    merci encore

  5. #5
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    Citation Envoyé par cyclone_yas
    quand je construit ma requete dynamiquement et j'essaye de l'executer via EXECUTE IMMEDIATE il gueule,
    C'est un peu léger comme indice, je suppose qu'il se contente pas de faire "AAAAAAAHHHHHH!!" il doit bien te donner un message quand meme ?

    Sinon si c'est comparer des ancienne et nouvelles valeurs, il tu peux utlisiser :OLD et :NEW ... mais le problème c'est que ça se fait pas en dynamique c'est vrai.... donc tu pourra pas faire une fonction générique qui marchera pour toutes les tables...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 67
    Par défaut
    voila le message d'erreur :
    ORA-04092 : Pas de libelle dans TMESPEC

    voila ce que je pense :
    Quand je construit dynamiquement des requettes les objects utilisés sont dans la base tables, vues ... (portée globale)
    là le problème, c'est que l'info est stoquée dans un rowtype (old et new) en memoire inaccessible depuis l'EXECUTE IMMEDIATE

    je construit une requette semblable à :

    requete := 'select 1 from dual where p_old.CAPINT != p_new.CAPINT OR p_old.CATSSJT != p_new.CATSSJT OR p_old.CATVAR1 != p_new.CATVAR1'

    que j'execute :
    EXECUTE IMMEDIATE requete into changed;

Discussions similaires

  1. Nom de colonne dans une @variable
    Par Devilstuff dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 11/09/2012, 08h46
  2. [XSLT] Attribut dont le nom est stocké dans une variable ?
    Par Xfennec dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 15/03/2006, 11h20
  3. Shell: récupérer le bon nom de fichier dans une variable
    Par claralavraie dans le forum Linux
    Réponses: 1
    Dernier message: 10/01/2006, 11h45
  4. Réponses: 7
    Dernier message: 25/10/2005, 15h19
  5. Noms de colonne dans une colonne
    Par Digirom dans le forum Langage SQL
    Réponses: 14
    Dernier message: 23/04/2004, 11h51

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