Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/06/2011, 10h26   #1
Futur Membre du Club
 
Homme
Étudiant
Inscription : avril 2011
Messages : 49
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 49
Points : 18
Points : 18
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 ?
D4rkArthemis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 10h37   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
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é.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 10h41   #3
Futur Membre du Club
 
Homme
Étudiant
Inscription : avril 2011
Messages : 49
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 49
Points : 18
Points : 18
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 )
D4rkArthemis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 10h46   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Ce que je vous ai proposé, c'est propre !
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 14h19   #5
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 925
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

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

Informations forums :
Inscription : décembre 2005
Messages : 2 925
Points : 4 547
Points : 4 547
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 :
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 :
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
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/06/2011, 15h36   #6
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
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 : 3 311
Points : 5 810
Points : 5 810
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...
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 14h21   #7
Modérateur
 
Avatar de doc malkovich
 
Homme
Consultant en Business Intelligence
Inscription : juillet 2008
Messages : 950
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 : 950
Points : 1 467
Points : 1 467
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 )
__________________
Avez-vous 60 secondes pour répondre aux sondages sur BO ici et ?
doc malkovich est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h47.


 
 
 
 
Partenaires

Hébergement Web