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

PL/SQL Oracle Discussion :

Problème d'utilisation de variable après un FROM


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 461
    Par défaut Problème d'utilisation de variable après un FROM
    Bonjour,

    Je tente de faire quelque lignes de PL/SQL dans les quelles j'ouvre un curseur. Les valeurs retournées par ce curseur fonctionnent dans tout mon code, à l'exception de l'utilisation dans ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(*) into Vnb_of_line from V_owner.V_table_name ;
    .
    Les variables V_owner.V_table_name retournées par le curseur sont utlisées sans problème dans le erste de mon code.
    J'obtients le message d'erreur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ORA-06550 xxxx
    PL/SQL: ORA00942: table or view does not existe
    xxx
    PL/SQL: SQL statement ignores

  2. #2
    Invité
    Invité(e)
    Par défaut
    c'est un problème récurrent cette semaine !!!
    la solution est le sql dynamique :
    http://sheikyerbouti.developpez.com/execute_immediate/

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 461
    Par défaut
    Merci Jerome.

    En fait, j'avais trouvé une partie de la solution en passant effectivement par du sql dynamique. Mais maintenant, il me remonte 6 lignes puis s'arrête sur l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DECLARE
    *
    ERREUR à la ligne 1 :
    ORA-00933: SQL command not properly ended
    ORA-06512: at line xx
    Par contre, si je lance le même code sur une petite base de test, tout ce passe sans erreur ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    sans le code, ça va être dur de faire un diagnostique crédible...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 461
    Par défaut
    Voici 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
    40
    41
    42
    43
    44
    set serveroutput on size unlimited
    set pagesize  0
    set linesize  132
    set feedback  on
    set echo      on
    set trimspool on
    set verify    on
     
    DECLARE
      V_table_name    all_tab_columns.table_name%TYPE  ;
      V_nb_of_column  all_tab_columns.column_name%TYPE ;
      V_owner         all_tab_columns.owner%TYPE       ;
      V_nb_of_index   all_ind_columns.index_name%TYPE  ;
      V_nb_of_line    number(10)                       ;
      V_requete_count varchar2(150)                    ;
     
       cursor CUR_table IS
       select owner,
              table_name,
              count(column_name) as nb_index
         from all_tab_columns
        where owner in ('SYS','XDB')
     group by owner,
              table_name
     order by owner,
              table_name ;
    BEGIN
      DBMS_OUTPUT.ENABLE( 1000000 ) ;
      dbms_output.put_line('Owner;Table;Nb of line;Nb of column;Nb of index');
      FOR C IN CUR_table LOOP
        V_table_name    := C.table_name                                              ;
        V_nb_of_column  := C.nb_index                                                ;
        V_owner         := C.owner                                                   ;
        V_requete_count := 'select count(*) from ' || V_owner || '.' || V_table_name ;
        execute immediate V_requete_count into V_nb_of_line ;
     
        select count(distinct(index_name)) into V_nb_of_index
          from all_ind_columns
         where table_name = V_table_name ;
     
        dbms_output.put_line(V_owner || ';' || V_table_name || ';' || V_nb_of_line || ';' || V_nb_of_column || ';' || V_nb_of_index);
      END LOOP ;
    END ;
    /
    En fait, je pense avoir trouvé l'origine de l'erreur mais ne comprend pas ce comportement. Elle apparait lorsque le code arrive sur une table contenant les caractères - # ou començant par _.
    J'ai volontairement ajouté la clause where sur les schéma SYS et XDB car les erreurs n'apparaîssent que sur ceux là.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par tibal Voir le message
    En fait, je pense avoir trouvé l'origine de l'erreur mais ne comprend pas ce comportement. Elle apparait lorsque le code arrive sur une table contenant les caractères - # ou començant par _.
    J'ai volontairement ajouté la clause where sur les schéma SYS et XDB car les erreurs n'apparaîssent que sur ceux là.
    Essaie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    V_requete_count := 'select count(*) from ' || V_owner || '.''' || V_table_name||'''' ;
    Si tes statistiques de bd sont à jour et que tu n'as pas besoin d'une précision à un instant t donné , tu peux regarder le nombre d'enregistrements dans la vue système ALL_tables ou dba_tables.

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

Discussions similaires

  1. [XL-2010] Problème d'utilisation liste déroulante après protection feuille
    Par jessy2010 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/07/2012, 20h10
  2. Réponses: 8
    Dernier message: 28/10/2009, 19h08
  3. Réponses: 21
    Dernier message: 21/08/2008, 23h30
  4. [debutant]problème d'utilisation de variable privée
    Par Thordax dans le forum Débuter
    Réponses: 2
    Dernier message: 17/05/2006, 09h34
  5. Réponses: 1
    Dernier message: 27/07/2005, 17h08

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