+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Membre du Club
    Inscrit en
    décembre 2003
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : décembre 2003
    Messages : 186
    Points : 51
    Points
    51

    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

  2. #2
    Expert Confirmé Sénior

    Profil pro
    Inscrit en
    décembre 2002
    Messages
    2 871
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : décembre 2002
    Messages : 2 871
    Points : 5 201
    Points
    5 201

    Par défaut

    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 12c, 11g, 10g ; sécurité 11g

  3. #3
    Membre du Club
    Inscrit en
    décembre 2003
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : décembre 2003
    Messages : 186
    Points : 51
    Points
    51

    Par défaut

    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.

  4. #4
    Expert Confirmé Sénior

    Profil pro
    Inscrit en
    décembre 2002
    Messages
    2 871
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : décembre 2002
    Messages : 2 871
    Points : 5 201
    Points
    5 201

    Par défaut

    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 12c, 11g, 10g ; sécurité 11g

  5. #5
    Membre du Club
    Inscrit en
    décembre 2003
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : décembre 2003
    Messages : 186
    Points : 51
    Points
    51

    Par défaut

    Ok pas de pseudo colonne pour table

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

    merci

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •