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;
/
Ако избирате от all_tables
не можете да разчитате, че сте получили грантовете, необходими за избор от името на таблицата. Следователно трябва да проверите за ORA-00942: table or view does not exist
възникна грешка.
Що се отнася до причината за вашата грешка:Получавате тази грешка, защото командата select връща набор от резултати с повече от един ред (по един за всяка таблица) и не можете да присвоите такъв набор от резултати на varchar2.
Между другото, уверете се, че сте активирали dbms_output с SET SERVEROUT ON
преди да изпълните този блок.