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;
/
Jeśli wybierasz z all_tables
nie można liczyć na dotacje niezbędne do wybrania z nazwy tabeli. Dlatego powinieneś sprawdzić, czy ORA-00942: table or view does not exist
zgłoszony błąd.
Co do przyczyny błędu:pojawia się ten błąd, ponieważ instrukcja select zwraca zestaw wyników z więcej niż jednym wierszem (po jednym dla każdej tabeli) i nie możesz przypisać takiego zestawu wyników do varchar2.
Przy okazji, upewnij się, że włączyłeś dbms_output za pomocą SET SERVEROUT ON
przed wykonaniem tego bloku.