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;
/
Hvis du vælger fra all_tables
du kan ikke regne med at have fået de nødvendige bevillinger til at vælge fra tabelnavnet. Du bør derfor tjekke for ORA-00942: table or view does not exist
fejl.
Med hensyn til årsagen til din fejl:Du får denne fejl, fordi select-sætningen returnerer et resultatsæt med mere end én række (én for hver tabel), og du kan ikke tildele et sådant resultatsæt til en varchar2.
Sørg i øvrigt for at aktivere dbms_output med SET SERVEROUT ON
før du udfører denne blok.