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 :

Nom de table en variable


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 15
    Par défaut Nom de table en variable
    Bonjour à Tous,

    je suis en base Oracle 10g et intérogation via sqltalk.

    Voila je viens vers vous car j'ai un petit problème !

    Je dois faire des recherches dans plusieurs tables qui commence toutes par XB.., ces tables contient un nombre d'enregistrements variable (dès fois 2 lignes et dès fois 200 par exemple). Mon problème est le suivant, je dois recherché une info qui est stocké dans l'une de ces tables, mais je ne sais pas comment m'y prendre, car l'intérrogation table par table n'est pas envisageable. Je pensais faire un pl/sql pour créer un grosse table, mais je ne sais pas comment créer cette instruction de façon mécanique. Sachant que les noms de ces tables sont stocké eux même dans une autre tables (cela peut m'aidé je pense).

    Merci d'avance pour votre aide.

  2. #2
    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
    Je dois faire des recherches dans plusieurs tables qui commence toutes par XB.., ces tables contient un nombre d'enregistrements variable (dès fois 2 lignes et dès fois 200 par exemple). Mon problème est le suivant, je dois recherché une info qui est stocké dans l'une de ces tables, mais je ne sais pas comment m'y prendre, car l'intérrogation table par table n'est pas envisageable. Je pensais faire un pl/sql pour créer un grosse table, mais je ne sais pas comment créer cette instruction de façon mécanique. Sachant que les noms de ces tables sont stocké eux même dans une autre tables (cela peut m'aidé je pense).
    Licenciez l’analyste.

  3. #3
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Est-ce que le nom de la colonne est au moins "stable" (ie toujours le même quelque soit la table) ???

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 15
    Par défaut
    Bonjour,

    Déjà merci pour la réponse !

    Oui les colonnes sont identique d'une table à l'autre seul le nom change, mais toute les tables commence par XB....

    On a le nom des tables dans une table qui centralise tout les noms de ces fameuses table + d'autre info.

    Le seul truc c'est d'appelé chaque table de façon automatique et de faire un insert dessus.

    D'avance merci.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 15
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Licenciez l’analyste.
    belle réponse ! Mais je m'attendais à quelque chose de plus constructif de la part d'un sénior !

  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 ines09 Voir le message
    belle réponse ! Mais je m'attendais à quelque chose de plus constructif de la part d'un sénior !
    Et pourtant c’est la seule solution non-dégradée à votre problème

    Bon, voilà une alternative : écrivez une fonction pipelined qui fait le tour de tous les tables à interroger via votre table « méta dictionnaire » et qui en utilisant du sql dynamique générées vos données comme si elles étaient stockées dans une seule table. Maintenant vous comprenez mieux ma première solution ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 15
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Et pourtant c’est la seule solution non-dégradée à votre problème

    Bon, voilà une alternative : écrivez une fonction pipelined qui fait le tour de tous les tables à interroger via votre table « méta dictionnaire » et qui en utilisant du sql dynamique générées vos données comme si elles étaient stockées dans une seule table. Maintenant vous comprenez mieux ma première solution ?
    Merci, c'est plus claire comme cela.

  8. #8
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    FOR c1 IN (select nom_table FROM my_tables where nom_table LIKE 'XB%') LOOP
      EXECUTE IMMEDIATE 'INSERT INTO '||c1.nom_table||'(col1,col2) values (:val1,:val2)' USING valeur1,valeur2;
    END LOOP

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 15
    Par défaut
    Citation Envoyé par Garuda Voir le message
    Quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    FOR c1 IN (select nom_table FROM my_tables where nom_table LIKE 'XB%') LOOP
      EXECUTE IMMEDIATE 'INSERT INTO '||c1.nom_table||'(col1,col2) values (:val1,:val2)' USING valeur1,valeur2;
    END LOOP
    Merci beaucoup, je pense qu'avec cela mon problème va vite être résolu ! C'est vraiment sympa merci.

  10. #10
    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
    Mon problème est le suivant, je dois recherché une info qui est stocké dans l'une de ces tables
    FOR c1 IN (SELECT nom_table FROM my_tables WHERE nom_table LIKE 'XB%') LOOP
    EXECUTE IMMEDIATE 'INSERT INTO '||c1.nom_table||
    Merci beaucoup, je pense qu'avec cela mon problème va vite être résolu

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

Discussions similaires

  1. [CR XI] Nom de tables en variable
    Par herve008 dans le forum Formules
    Réponses: 2
    Dernier message: 11/01/2010, 21h53
  2. [SQL Server] nom de table en variable
    Par oadin dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/02/2008, 07h49
  3. Possibilité de passer le nom d’une table en variable ??
    Par nicolas310380 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 21/02/2006, 14h12
  4. donner la valeur d'une variable comme nom de table
    Par cladsam dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/10/2005, 15h16
  5. Nom de table variable ?
    Par szdavid dans le forum Oracle
    Réponses: 2
    Dernier message: 10/08/2005, 10h56

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