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"