Como contar las filas de todas las tablas de la base de datos?

anom07
28 de Enero del 2008
No se si se puede hacer en SQL, con una sentencia de este tipo:
ddd

Pero lo estoy intentando hacer con PL/SQL y tengo un error en la linea 1 cuando le digo la tabla:
DECLARE
filas VARCHAR2(64);
BEGIN
FOR tabla IN (SELECT table_name FROM user_tables where rownum<=20) LOOP

DBMS_OUTPUT.PUT_LINE(\'se va a hacer un count(0) de: \' || tabla.table_name);
select count(0) into filas from tabla.table_name;
end loop;
END;

Y no lo entiendo, porque cuando hago el output de "se va a hacer count de x tabla" la tabla aparece bien, aparecen 20 tablas correctas, pero al hacer el select count(0) into filas from tabla.table_name; me dice que tabla.table_name; no es una tabla o vista... como que no?

aerg
28 de Enero del 2008
Soy yo mismo, ya he encontrao la solucion, es esta:

DECLARE
filas VARCHAR2(20);
BEGIN
FOR tabla IN (SELECT table_name FROM user_tables order by table_name) LOOP
execute immediate \\\\\\\\\\\\\\\\'select count(0) from \\\\\\\\\\\\\\\\' || tabla.table_name into filas;
IF filas > 0 then
DBMS_OUTPUT.PUT_LINE(tabla.table_name || \\\\\\\\\\\\\\\\' \\\\\\\\\\\\\\\\' || filas);
end if;
end loop;

END;