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;
/
Se você estiver selecionando
all_tables
você não pode contar com as concessões necessárias para selecionar a partir do nome da tabela. Portanto, você deve verificar o ORA-00942: table or view does not exist
erro lançado. Quanto à causa do seu erro:Você recebe este erro porque a instrução select retorna um conjunto de resultados com mais de uma linha (uma para cada tabela) e você não pode atribuir tal conjunto de resultados a um varchar2.
A propósito, certifique-se de habilitar dbms_output com
SET SERVEROUT ON
antes de executar este bloco.