Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Débuter
Débuter Forum d'entraide pour débuter avec 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 01/12/2011, 11h06   #1
Candidat au titre de Membre du Club
 
Inscription : juillet 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 21
Points : 14
Points : 14
Par défaut rechercher une valeur dans toutes les tables

Bonjour

j'aurais besoin d'aide, j'ai une base de donnée avec énormément de tables, j'ai besoin de changer une valeur qui a changé, mais elle peut apparaitre n'importe oû.....
Y aura t il une fonction automatique qui pourrait verifier sur toutes les tables et tout les champs que cette valeur existe dans une table donnée ?

il faudrais que j'arrive à faire un truc du genre
Code :
SELECT * WHERE * LIKE '%NOM%' FROM ALL_TABLES
merci!!!
touness est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 11h58   #2
Candidat au titre de Membre du Club
 
Inscription : juillet 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 21
Points : 14
Points : 14
Procedure pour une recherche dans toute la base
Code :
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
 
 
    CREATE OR REPLACE PROCEDURE SEARCH_DB(SEARCH_STR IN VARCHAR2, TAB_COL_RECS OUT VARCHAR2) IS
      match_count integer;
      qry_str varchar2(1000);
      CURSOR TAB_COL_CURSOR IS 
          SELECT TABLE_NAME,COLUMN_NAME,OWNER,DATA_TYPE FROM ALL_TAB_COLUMNS WHERE DATA_TYPE IN ('NUMBER','VARCHAR2') AND OWNER='SCOTT';
          BEGIN  
            FOR TAB_COL_REC  IN TAB_COL_CURSOR
            LOOP
              qry_str := 'SELECT COUNT(*) FROM '||TAB_COL_REC.OWNER||'.'||TAB_COL_REC.TABLE_NAME|| 
              ' WHERE '||TAB_COL_REC.COLUMN_NAME;
               IF TAB_COL_REC.DATA_TYPE = 'NUMBER' THEN
                      qry_str := qry_str||'='||SEARCH_STR; 
               ELSE
                       qry_str := qry_str||' like '||SEARCH_STR; 
               END IF;
                       --dbms_output.put_line( qry_str );
                EXECUTE IMMEDIATE  qry_str  INTO match_count;
                IF match_count > 0 THEN          
                   dbms_output.put_line( qry_str );
                  --dbms_output.put_line( TAB_COL_REC.TABLE_NAME ||' '||TAB_COL_REC.COLUMN_NAME ||' '||match_count);     
                    TAB_COL_RECS := TAB_COL_RECS||'@@'||TAB_COL_REC.TABLE_NAME||'##'||TAB_COL_REC.COLUMN_NAME;
                END IF; 
          END LOOP;
     END SEARCH_DB;
Execution

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
 
  DECLARE
    SEARCH_STR VARCHAR2(200);
    TAB_COL_RECS VARCHAR2(200);
    BEGIN
      SEARCH_STR := 10;
      SEARCH_DB(
        SEARCH_STR => SEARCH_STR,
        TAB_COL_RECS => TAB_COL_RECS
      );
     DBMS_OUTPUT.PUT_LINE('TAB_COL_RECS = ' || TAB_COL_RECS);
     END;
Source de la solution
http://stackoverflow.com/questions/2...c-value-oracle
touness 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 19h40.


 
 
 
 
Partenaires

Hébergement Web