declare
cnt number;
begin
for r in (select owner, table_name from all_tables
where upper(table_name) like ('%MSRS%')) loop
execute immediate 'select count(*) from "'
|| r.owner || '"."'
|| r.table_name || '"'
into cnt;
dbms_output.put_line(r.owner || '.' || r.table_name || ': ' || cnt);
end loop;
end;
/
Pokud vybíráte z all_tables
nemůžete počítat s tím, že vám budou uděleny granty potřebné k výběru z názvu tabulky. Měli byste proto zkontrolovat, zda ORA-00942: table or view does not exist
došlo k chybě.
Pokud jde o příčinu vaší chyby:Tato chyba se zobrazí, protože příkaz select vrací sadu výsledků s více než jedním řádkem (jeden pro každou tabulku) a nemůžete takovou sadu výsledků přiřadit k varchar2.
Mimochodem, ujistěte se, že jste povolili dbms_output pomocí SET SERVEROUT ON
před provedením tohoto bloku.