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 04/03/2008, 16h49   #1
Invité régulier
 
Inscription : avril 2005
Messages : 46
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 46
Points : 7
Points : 7
Par défaut Nom de table concaténé ?

Bonjour à tous,

Je souhaiterais effectuer une requête SQL un peu particulière, mais je ne sais pas coment m'y prendre.

Voila la partie qui pose problème :

Code :
SELECT * FROM (SELECT 'F'||LAYER_ID FROM LAYERS WHERE TABLE_NAME = 'PORTION');
Le SELECT de fin renvoie F114, puisque dans mon cas LAYER_ID = 114.
F114 est le nom d'une table dans laquelle je voudrais tout recuperer...

Comment faire ?

Avec ce que j'ai ecrit, la requête me renvoie juste "F114"

Je suis sous Oracle 9.2

Merci pour votre aide
kissskoool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 16h51   #2
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 459
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 459
Points : 4 226
Points : 4 226
Recherche EXECUTE IMMEDIATE
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 16h59   #3
Invité régulier
 
Inscription : avril 2005
Messages : 46
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 46
Points : 7
Points : 7
non mais ta solution m'etonne. Je viens de faire des recherche sur EXECUTE IMMEDIATE, et ça m'a l'air bien compliqué pour faire ça non ?

Parce qu'après je vais devoir faire un join de ce resultat avec d'autres tables, ça me parait fou de passer par une procedure...

Ne serait il pas possible de juste utiliser une fonction du genre cstr ou to_char pour transfomer le resultat du select de fin en nom de table ?

en tous cas merci !
kissskoool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 17h01   #4
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 975
Points : 3 975
Pas le choix, sql Dynamique pour faire ça - c'est pas si terrible et ça rend beaucoup de service.
http://sheikyerbouti.developpez.com/execute_immediate/
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 17h20   #5
Invité régulier
 
Inscription : avril 2005
Messages : 46
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 46
Points : 7
Points : 7
Excusez moi mais je ne pige pas grand chose à tout ça :

j'ai ecrit :

DECLARE
chaine VARCHAR2(50);
Code :
1
2
3
4
BEGIN
chaine := "SELECT 'F'||LAYER_ID FROM LAYERS WHERE TABLE_NAME = 'PORTION'";
EXECUTE IMMEDIATE chaine;
END;
et ça me sort une erreur :
Citation:
ORA-06550: Ligne 1, colonne 7 :
PLS-00103: Symbole "end-of-file" rencontré à la place d'un des symboles suivants :

begin function package pragma procedure subtype type use
<an identifier> <a double-quoted delimited-identifier> form
current cursor
une idée ?
kissskoool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 17h25   #6
Invité régulier
 
Inscription : avril 2005
Messages : 46
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 46
Points : 7
Points : 7
Ahh en fait j'ai réussi à corriger l'erreur en écrivant ça (quote à la place des guillemets):

Code :
1
2
3
4
5
6
DECLARE
chaine  VARCHAR2(100);
BEGIN
chaine := 'SELECT ''F''||LAYER_ID FROM LAYERS WHERE TABLE_NAME = ''PORTION''';
EXECUTE IMMEDIATE chaine;
END;
et la ça marche, enfin ça ne renvoie pas d'erreur, ça à l'air de s'executer, mais comment puis je récupérer le résultat du select ?
kissskoool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 17h42   #7
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
1°) merci d'utiliser les balises pour formater tes messages
2°) merci de lire les tutoriels avant tout autre chose
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 17h54   #8
Invité régulier
 
Inscription : avril 2005
Messages : 46
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 46
Points : 7
Points : 7
Ahh excusez moi...je vais baliser mon code dorénavant.

Et concernant le tuto, je l'ai lu mais ça ne m'avance pas des masses.

Je demande juste quelques eclaircissements sur le sujet.

Merci
kissskoool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 18h52   #9
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
http://sheikyerbouti.developpez.com/...mmediate/#L4.4
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h34.


 
 
 
 
Partenaires

Hébergement Web