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"
Partager