Zde je jednoduchý příklad, který se dívá na tabulky ve vašem vlastním schématu:
set serveroutput on
declare
c number;
begin
for r in (select table_name from user_tables) loop
execute immediate 'select count(*) from ' || r.table_name
into c;
dbms_output.put_line(r.table_name ||': '|| c);
end loop;
end;
/
Chcete-li se podívat na tabulky někoho jiného, budete muset použít dba_tables
jak jste začali zkoušet, nebo spíše all_tables
protože by to mělo vyloučit tabulky, ze kterých nemůžete počítat, ale budete také muset určit vlastníka v count
prohlášení.
Normálně byste chtěli použít proměnné vazby, abyste se vyhnuli vkládání SQL, ale musíte zadat názvy objektů se zřetězením, jako je toto.
Něco jiného, na co si dát pozor, je chyba, kterou jste měli ve svém dotazu, ale kterou Egor nyní z otázky odstranil. Dynamický řetězec SQL, který spustíte, by neměl být ukončen středníkem (;
).