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 :

Construction de requête


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Par défaut Construction de requête
    http://www.developpez.net/forums/sho...d.php?t=560457

    Voilà un peu sur le même thème que ci dessus, J'ai une petite galère avec un script pl/sql. je ne comprend ce qui se passe avec ce script j'ai mis l'erreur obtenue en dessous.

    En fait je veux construire une requête sql, l'executer et récupérer le résultat pour l'instant à l'écran (après avoir fait un set serveroutput on) ensuite dans un fichier (mais je verrais plus tard). Dans le script j'ai essayé plusieurs choses sans trop de succès

    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
    DECLARE
            v_enreg_1 VARCHAR2(50);
            v_enreg_2 VARCHAR2(50);
            v_rqy VARCHAR2(250);
            v_nb_ligne Number;
    BEGIN
      -- pour l'instant on limite à la table article
      FOR v_enreg_1 IN (SELECT table_name FROM all_tables WHERE num_rows>0 AND table_name IN('ARTICLE'))
      LOOP
         FOR v_enreg_2 IN (SELECT column_name FROM all_tab_columns WHERE table_name = v_enreg_1.table_name  AND data_type='VARCHAR2')
         LOOP
     
               --v_rqy := 'SELECT count(' || v_enreg_2.column_name || ') INTO v_nb_ligne FROM ' || v_enreg_1.table_name || ' WHERE ' || v_enreg_2.column_name || ' LIKE ''%toto%'' AND ' || v_enreg_2.column_name || ' NOT LIKE ''%tata%'' HAVING count(' || v_enreg_2.column_name || ')>0';   
               SELECT count(  || v_enreg_2.column_name || ) INTO v_nb_ligne FROM || v_enreg_1.table_name || WHERE || v_enreg_2.column_name || LIKE '%toto%' AND || v_enreg_2.column_name || NOT LIKE '%tata%' HAVING count( || v_enreg_2.column_name || ) > 0;   
               --execute immediate v_rqy;
               IF v_nb_ligne > 0 THEN
                    dbms_output.put_line( v_enreg_1.table_name || '.' || v_enreg_2.column_name || ' --- nombre de ligne  : ' || v_nb_ligne );
               END IF;
     
         END LOOP;
      END LOOP;
    END;
    /
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ORA-06550: Ligne 13, colonne 27 :
    PL/SQL: ORA-00936: expression absente
    ORA-06550: Ligne 13, colonne 12 :
    PL/SQL: SQL Statement ignored
    06550. 00000 -  "line %s, column %s:\n%s"

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Par défaut
    a oui j'oubliais
    j'ai fait un dbms_output.put_line sur la requête.

    Lorsque je lance l'execution de ce bloc pl/sql dans sqlplus, j'obtiens une liste de requête gràce à mon for loop. Voilà je voulais préciser que ces requêtes fonctionnent dans sqlplus individuellement sans y retoucher telle qu'elles ont été construite par le bloc pl/sql.

  3. #3
    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
    Voila ton exemple légèrement modifié
    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
     
    DECLARE
            v_enreg_1 VARCHAR2(50);
            v_enreg_2 VARCHAR2(50);
            v_rqy VARCHAR2(250);
            v_nb_ligne Number;
    BEGIN
      -- pour l'instant on limite à la table article
      FOR v_enreg_1 IN (SELECT table_name FROM all_tables WHERE owner = 'SCOTT' And table_name IN ('EMP'))
      LOOP
         FOR v_enreg_2 IN (SELECT column_name FROM all_tab_columns WHERE owner = 'SCOTT' And table_name = v_enreg_1.table_name  AND data_type='VARCHAR2')
         LOOP
               v_rqy := 'SELECT count('||v_enreg_2.column_name||') FROM '||v_enreg_1.table_name||' WHERE '||v_enreg_2.column_name||' LIKE ''%'' '; 
               execute immediate v_rqy Into v_nb_ligne;
               dbms_output.put_line(v_rqy);
               IF v_nb_ligne > 0 THEN
                    dbms_output.put_line( v_enreg_1.table_name || '.' || v_enreg_2.column_name || ' --- nombre de ligne  : ' || v_nb_ligne );
               END IF;           
         END LOOP;
      END LOOP;
    END;
    Mais il reste beaucoup des choses à faire.

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Par défaut
    ok j'ai compris ce qui n'allais pas.
    merci beaucoup pour ce coup de main !!! Je vais pouvoir avancer...

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

Discussions similaires

  1. Construction de requête
    Par patriceharel dans le forum Langage SQL
    Réponses: 5
    Dernier message: 14/10/2008, 10h16
  2. [Java] Outil de construction de requête et affichage du résultat
    Par Toudy dans le forum Autres outils décisionnels
    Réponses: 1
    Dernier message: 07/05/2007, 11h11
  3. Problème de construction de requête !
    Par feasil dans le forum Access
    Réponses: 5
    Dernier message: 18/04/2006, 11h36
  4. [Access] Problème de construction de requête
    Par feasil dans le forum Langage SQL
    Réponses: 6
    Dernier message: 13/04/2006, 12h59
  5. Problème de construction de requête !
    Par feasil dans le forum Access
    Réponses: 1
    Dernier message: 12/04/2006, 21h02

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