Como contar las filas de todas las tablas de la base de datos?
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?
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?
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;
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;