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;
/
Si está seleccionando de all_tables
no se puede contar con haber recibido las becas necesarias para seleccionar del nombre de la tabla. Por lo tanto, debe verificar el ORA-00942: table or view does not exist
error lanzado.
En cuanto a la causa de su error:obtiene este error porque la declaración de selección devuelve un conjunto de resultados con más de una fila (una para cada tabla) y no puede asignar dicho conjunto de resultados a un varchar2.
Por cierto, asegúrese de habilitar dbms_output con SET SERVEROUT ON
antes de ejecutar este bloque.