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;
/
Om du väljer från all_tables
du kan inte räkna med att ha fått de bidrag som krävs för att välja från tabellnamnet. Du bör därför leta efter ORA-00942: table or view does not exist
fel.
Angående orsaken till ditt fel:Du får det här felet eftersom select-satsen returnerar en resultatuppsättning med mer än en rad (en för varje tabell) och du kan inte tilldela en sådan resultatuppsättning till en varchar2.
Se förresten till att du aktiverar dbms_output med SET SERVEROUT ON
innan du kör detta block.