Pytanie równie banalne, co skomplikowane. Co to jest każda tabela jaką mam? Należy do Twojego schematu? Proponuję zapytać user_tables. Każda tabela do której masz dostęp? Zapytaj all_tables. Procedura? Można, ale prościej będzie blokiem anonimowym. Kursor a procedura - to nie substytuty. Proponuję poniższe rozwiązanie:
DROP TABLE t1;
DROP TABLE t2;
DROP TABLE t3;
DROP TABLE t4;
DROP TABLE t5;
DROP TABLE t6;
CREATE TABLE t1 (a CHAR(10));
CREATE TABLE t2 (a NCHAR(10));
CREATE TABLE t3 (a VARCHAR2(10));
CREATE TABLE t4 (a NVARCHAR2(10));
CREATE TABLE t5 (a CHAR(10));
CREATE TABLE t6 (a CHAR(10));
BEGIN
FOR i IN 1..5 LOOP
FOR j IN 1..100 LOOP
EXECUTE IMMEDIATE 'INSERT INTO t' || i || ' SELECT DBMS_RANDOM.STRING(''l'', 10) FROM dual';
END LOOP;
COMMIT;
END LOOP;
FOR j IN 1..50 LOOP
EXECUTE IMMEDIATE 'INSERT INTO t6(a) VALUES ((SELECT DBMS_RANDOM.STRING(''l'', 10) FROM dual))';
END LOOP;
COMMIT;
END;
/
DECLARE
c NUMBER;
stat VARCHAR2(1000);
BEGIN
FOR i IN (SELECT table_name FROM user_tables ORDER BY 1) LOOP
stat := 'SELECT COUNT(*) FROM ' || i.table_name;
EXECUTE IMMEDIATE stat INTO c;
DBMS_OUTPUT.PUT_LINE(i.table_name || ': ' || c);
END LOOP;
END;
/