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 :

Changer le nom d'une table FROM dynamiquement ?!


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Par défaut Changer le nom d'une table FROM dynamiquement ?!
    Bonjour à tous,

    J'ai un petit problème en fait, je souhaiterais avoir la possibilité de changer dynamiquement le nom d'une table qui est utilisé pour faire ma requête. Je m'explique.

    Comme vous le savez, une requête SQL c'est un select puis un from puis un where ; je voudrais en fait pouvoir transmettre le nom d'une table à utiliser dans le from !

    Pourquoi ?! Car j'ai plusieurs base de données qui ont une version différente et chaque BD possède une table qui fournit les mêmes informations d'une BD à une autre mais le nom de la table diffère (d'une BD à une autre). A noter que j'utilise BIRT sous Eclipse pour développer des data set (requêtes).

    J'aimerais donc pouvoir insérer en brut une chaine de caractère correspondant au nom de ma table (je sais comment obtenir cette chaine). Mais comment insérer en tant que paramètre ensuite ? Est-ce possible ?

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Pas en SQL pur, mais c'est faisable en PL/SQL.

    Mais à votre place, je créerai une vue qui a le même nom sur toutes vos bases et qui fait directement le select sur la bonne table.

    Ensuite, il n'y a plus qu'à faire le select dans la vue et le tour est joué.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Par défaut
    Merci de ta réponse rapide
    Je voulais faire quelque chose de propre mais tant pis, je me contenterai de créer une requête pour une version de BD (soit 3 requêtes en tout, cela reste du copier coller )

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Ce que je vous ai proposé, c'est propre !

  5. #5
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Mais à votre place, je créerai une vue qui a le même nom sur toutes vos bases et qui fait directement le select sur la bonne table.
    Oui, c'est bien, ou alors un truc à la sauce UNION ALL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create table t1(x number);
    insert into t1 values (1);
    create table t2(x number);
    insert into t2 values (2);
    commit;
    var t varchar2(30)
    exec :t := 'T1'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SQL> create view v as 
      select 'T1' tname, x from t1 union all 
      select 'T2' tname, x from t2;
     
    View created.
     
    SQL> select x from v where tname=:t;
     
          X
    -------
          1

  6. #6
    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
    Citation Envoyé par laurentschneider Voir le message
    Oui, c'est bien, ou alors un truc à la sauce UNION ALL
    ...
    Oui mais les deux tables (t1 et t2) doivent exister pour que ça marche...

  7. #7
    Membre Expert
    Avatar de doc malkovich
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2008
    Messages
    1 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 884
    Billets dans le blog
    1
    Par défaut
    Hello

    Autres solutions :
    - utiliser un synonyme du même nom sur chaque BDD ...
    - utiliser les paramètres dans BIRT ( pour ça il faut voir dans le forum homonyme )

Discussions similaires

  1. Changer le nom d'une table sur SQL server avec une requete
    Par Oluha dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 01/02/2014, 23h35
  2. SQL-Server changer le nom d'une colonne dans une table .
    Par silset dans le forum Développement
    Réponses: 2
    Dernier message: 31/10/2009, 23h34
  3. Changer le nom d'une table
    Par stefsas dans le forum SAS Base
    Réponses: 4
    Dernier message: 30/05/2008, 12h37
  4. changer le nom d'une table
    Par maverick56 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 27/06/2007, 16h08
  5. [sql 2005]: changer le nom d'une colonne dans un table
    Par TheLittle dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/06/2006, 15h29

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