Précédent   Forum du club des développeurs et IT Pro > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 26/11/2012, 23h26   #1
lunab54
Membre du Club
 
Inscription : décembre 2003
Messages : 176
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 176
Points : 42
Points : 42
Par défaut 10g ou 11g : mot clé dans le Sélect renvoyant le nom de la table

Bonjour

Existe t'il un mot clé qui renvoit le nom de la table sur laquelle on requête ?

Code :
1
2
3
4
5
6
7
 
 
SELECT [my TABLE name keyword] AS "table_name" FROM dual;
 
Table_name
---------------
DUAL
L'intėrêt pour moi serait d'éviter les erreurs de copier coller ds mes requêtes où je veux absolument le nom de la table en colonne de sortie.

Merci si y a un truc ou une piste
lunab54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2012, 09h29   #2
Pomalaix
Rédacteur
 
Inscription : décembre 2002
Messages : 2 653
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 653
Points : 4 127
Points : 4 127
Pouvez-vous donner un exemple plus développé et réaliste de votre besoin ?
Tel quel, je ne vois absolument pas le but de la manoeuvre, d'autant que dans la vraie vie, on fait plutôt des jointures, et donc on a plusieurs tables.
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2012, 09h51   #3
lunab54
Membre du Club
 
Inscription : décembre 2003
Messages : 176
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 176
Points : 42
Points : 42
Merci pour votre attention

en fait je fais des exports de table avec Kettle vers des fichiers CSV surlesquels je m'appuie pour éxecuter des Macros Word/Excel dans lequel j'ai besoin de récupérer le nom de la table sur laquelle on travaille pour piloter le comportement de la Macro.

L'étape Kettle export me permet de définir le nom du fichier Export en s'appuyant sur un champ de la table.

Comme j'ai plusieurs centaines de tables et l'extraction sous Kettle j'espérai pouvoir faire un truc du genre :

Code :
SELECT ID,PRIX,[KeyWord TableName] AS "CSVFILENAME" FROM [myTable]
en évitant d'avoir à chaque fois copier/coller le nom de la table dans la partie select c'est déjà assez fastidieux pour le FROM et compte tenu de la complexité du MCD je ne peux guère gérer ça en script dynamique.

J'espère être plus clair, je cherche un peu de confort en somme dans la rédaction de mes requêtes d'extraction.
lunab54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2012, 10h35   #4
Pomalaix
Rédacteur
 
Inscription : décembre 2002
Messages : 2 653
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 653
Points : 4 127
Points : 4 127
Une chose est sure, c'est qu'il n'y a pas de pseudo colonne qui ramènerait le nom de la table directement.

Peut-être pouvez-vous partir pour chaque table de la liste des colonnnes complètes, obtenue mécaniquement, et supprimer ensuite les colonnes qui ne vous intéressent pas ?

Dans ce cas, ça pourrait se faire comme suit :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT 'select ''' 
       || Trim(table_name) 
       ||''',' 
       || Listagg(column_name, ',') 
            within GROUP (ORDER BY column_name) 
       || ' from ' 
       || table_name 
       || ';' AS liste 
FROM   (SELECT t.table_name table_name, column_name 
        FROM   user_tab_columns c, 
               user_tables t 
        WHERE  c.table_name = t.table_name) 
GROUP  BY table_name;
Exécuté sur le schéma SCOTT, on obtient ceci :
Code :
1
2
3
4
SELECT 'BONUS',COMM,ENAME,JOB,SAL FROM BONUS;
SELECT 'DEPT',DEPTNO,DNAME,LOC FROM DEPT;
SELECT 'EMP',COMM,DEPTNO,EMPNO,ENAME,HIREDATE,JOB,MGR,SAL FROM EMP;
SELECT 'SALGRADE',GRADE,HISAL,LOSAL FROM SALGRADE;
Ensuite, il vous reste à supprimer les colonnes inutiles.
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/11/2012, 10h42   #5
lunab54
Membre du Club
 
Inscription : décembre 2003
Messages : 176
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 176
Points : 42
Points : 42
Ok pas de pseudo colonne pour table

La requête de génération de select semi automatique est sympa

merci
lunab54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 16h50.


 
 
 
 
Partenaires

Hébergement Web