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;
/ |