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

SQL Oracle Discussion :

Recherche Table contenant une valeur précise


Sujet :

SQL Oracle

  1. #1
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut Recherche Table contenant une valeur précise
    Bonjour,

    Y a t'il un moyen de retrouver les tables contenant une valeur précise ?

    Merci

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Oui. Question posée moulte fois.
    Avec du sql dynamique (EXECUTE IMMEDIATE).

  3. #3
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    c'est à dire ?

    je connais la méthode pour créer des requetes à base de variable et de chaine de caractère mais la je ne vois pas le rapport ?

    Merci

  4. #4
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    Pour ceux qui serait interressé

    CREATE OR REPLACE FUNCTION LISTE_TABLE (monSchema IN VARCHAR2,maValeur IN VARCHAR2 ) RETURN VARCHAR2

    IS

    /* VARIABLES */
    nomTable VARCHAR2(100);
    nomCol VARCHAR2(100);
    lstTable VARCHAR(5000);
    maTable VARCHAR2(100);
    maRequete VARCHAR2(20000);
    nbTable NUMBER;

    /* CURSOR */
    CURSOR lstTables IS
    SELECT table_name,
    column_name
    FROM all_tab_cols WHERE owner = monSchema and DATA_TYPE='VARCHAR2' ;

    /* CORPS */
    BEGIN
    lstTable:='';
    OPEN lstTables;
    LOOP
    maTable:='';
    FETCH lstTables INTO nomTable,nomCol ;
    EXIT WHEN lstTables%NOTFOUND;
    maRequete:='Select count('''||nomTable||''') From '||nomTable||' Where 1=1 and '||nomCol||'='''||maValeur||'''';
    --DBMS_OUTPUT.PUT_LINE(maRequete);

    EXECUTE IMMEDIATE maRequete INTO nbTable;

    if(nbTable>0) THEN
    DBMS_OUTPUT.PUT_LINE(nomTable);
    end if;


    END LOOP;
    CLOSE lstTables;

    return lstTable;
    END;
    /

  5. #5
    Membre averti Avatar de LBO72
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 342
    Points
    342
    Par défaut
    Merci beegood... j'avais aussi le même besoin et la fonction marche très bien

    LBO72.

  6. #6
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    J'ai corrigé et optimisé le code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    CREATE OR REPLACE FUNCTION LISTE_TABLE (monSchema IN VARCHAR2, maValeur IN VARCHAR2)
    RETURN VARCHAR2 IS
     
    /* VARIABLES */
    lstTable VARCHAR(5000);
    maRequete VARCHAR2(2000);
    nbTable NUMBER;
     
    /* CURSOR */
    CURSOR c_lstTables IS
    SELECT table_name, column_name 
    FROM ALL_TAB_COLS 
    WHERE owner = monSchema 
    AND data_type = 'VARCHAR2' ;
     
    /* CORPS */
    BEGIN
     
    	FOR r IN c_lstTables
    	LOOP
    		maRequete := 'Select count(*) From '||r.table_name || ' Where '||r.column_name||'= :1';
     
    		--DBMS_OUTPUT.PUT_LINE(maRequete);
     
    		EXECUTE IMMEDIATE maRequete INTO nbTable USING maValeur;
     
    		IF(nbTable > 0)
    		THEN 
    			lstTable := lstTable || ', ' || r.table_name;
    			DBMS_OUTPUT.PUT_LINE(r.table_name);
    		END IF;
     
     
    	END LOOP;
     
    	RETURN LTRIM(lstTable, ', ');
     
    END;
    /

  7. #7
    Membre averti Avatar de LBO72
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 342
    Points
    342
    Par défaut
    C'est exactement ce que j'ai fait

    Je suis content de moi, j'ai eu la même idée qu'un Grand Expert

    LBO72.

  8. #8
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    C'est bien, t'as un bon point
    attention : c'est un peu facile de dire
    C'est exactement ce que j'ai fait
    après coup

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 27/04/2012, 15h44
  2. Rechercher une valeur précise dans une table
    Par tonton54 dans le forum MySQL
    Réponses: 5
    Dernier message: 28/10/2008, 16h58
  3. Réponses: 1
    Dernier message: 23/09/2008, 19h44
  4. Rechercher une valeur précise
    Par Kiefer_S dans le forum SAP
    Réponses: 2
    Dernier message: 22/09/2008, 10h29
  5. [XPath] recherche d'un node avec un attribut d'une valeur précise
    Par jerome.fortias dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 03/09/2007, 18h13

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