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

Administration Oracle Discussion :

ALL_TAB_COLS : requête un peu ardue ?


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2017
    Messages : 15
    Par défaut ALL_TAB_COLS : requête un peu ardue ?
    Bonjour

    Je dois faire une très petite requête SQL sur les vues ALL_TAB_COLS et DBA_TABLES dont voici la traduction en Français.

    Dans ma base de données j'ai un schéma SAPSR3.
    Dans ce schéma il y a 85000 tables environ.

    Avec ça je sais qu'il y a 64000 tables qui ont une certaine colonne 'MANDT' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    select count(*) from all_tab_cols where owner = 'SAPSR3' and column_name = 'MANDT' ;
    Je souhaite maintenant savoir combien de tables et le nom des tables ayant pour valeur 'MANDT=120'.

    Ca doit être simple mais je suis rouillé en SQL !!
    Merci.

  2. #2
    Membre chevronné
    Homme Profil pro
    xxxxxxxxx
    Inscrit en
    Avril 2015
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : xxxxxxxxx

    Informations forums :
    Inscription : Avril 2015
    Messages : 395
    Par défaut ALL_TAB_COLS : requête un peu ardue
    Alors pour ta requête, je n'ai pas pu trouver, c'est un peu délicat pour la colonne MANDT ayant
    une valeur 120, Mais je t'envoi un bloc PL/SQL, je l'ai testé sur un schema et çà marche :

    sous sys

    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
     
    set  serveroutput on 
     
    declare 
       x  number := 0;  
       cursor c_cur is 
       select table_name from all_tab_cols
                where owner='SAPSR3' and  column_name='MANDT'  ;
       lignes  c_cur%rowtype ;         
    begin 
       open c_cur;   
    loop 
          fetch  c_cur into  lignes; 
          exit  when c_cur%notfound ; 
          execute immediate  'select count(*) from SAPSR3.'||lignes.table_name|| ' where  MANDT=120'  
          into x ;
          if  x > 0  then   dbms_output.put_line(lignes.table_name) ;
          end if; 
    end loop;
         close c_cur ;
    end;
    /
    j'éspère que ça marche sur ta base ?

  3. #3
    Membre averti
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2017
    Messages : 15
    Par défaut
    Salut Dell68

    Je te remercie de ta réponse. Je viens de tester le code ; ça me renvoie une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    VTBPRODT                                                                                                                                                                                                       
    VSCAN_PROF_PARGL                                                                                                                                                                                               
    VSCAN_PROF_MIME                                                                                                                                                                                                
    VSCAN_PROFT                                                                                                                                                                                                    
    VSCAN_PROF                                                                                                                                                                                                     
    declare
    *
    ERROR at line 1:
    ORA-01722: invalid number
    ORA-06512: at line 12
    Les objets commençant par la lettre "V..." sont bien des tables mais il semble qu'il rencontre un problème de conversion de type NUMERIC / ALPHA ?
    J'ai des tables particulières commençant par le caractère "/" (exemple : /BEV3/CHVSALEI nomenclature interne de SAP pour je ne sais quelle raison !!) mais je ne sais pas si cela vient de ça, je n'en trouve pas dans le log de sortie en tout cas.

    La quantité de tables remontées est de 1% de la totalité des tables, avant que n'apparaisse cette erreur.



  4. #4
    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
    Quel est le type de la colonne MANDT ?

  5. #5
    Membre averti
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2017
    Messages : 15
    Par défaut
    le TYPE de la colonne MANDT est VARCHAR2

    j'ai essayé de remplacer dans le bloc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      execute immediate  'select count(*) from SAPSR3.'||lignes.table_name|| ' where  MANDT=120'
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    execute immediate  'select count(*) from SAPSR3.'||lignes.table_name|| ' where  MANDT="120" '
    mais ORA-01756: quoted string not properly terminated

  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
    Alors c'est normale. Vous devez doubler les cotes non pas remplacer par des guillemets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    where  MANDT=''120'''

Discussions similaires

  1. requête un peu spéciale
    Par jako 29 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 31/03/2008, 11h49
  2. Construction d'une requête un peu complexe
    Par dauphin34000 dans le forum SQL
    Réponses: 9
    Dernier message: 24/05/2007, 11h43
  3. Création d'une requête un peu complexe
    Par vpicchi dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 17/01/2007, 21h52
  4. Réponses: 2
    Dernier message: 09/03/2006, 14h28
  5. Requête un peu trop compliqué pour moi
    Par Kokito dans le forum Langage SQL
    Réponses: 5
    Dernier message: 18/04/2005, 15h17

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