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;
/
Jika Anda memilih dari all_tables
Anda tidak dapat mengandalkan pemberian hibah yang diperlukan untuk memilih dari nama tabel. Karena itu Anda harus memeriksa ORA-00942: table or view does not exist
kesalahan dilemparkan.
Mengenai penyebab kesalahan Anda:Anda mendapatkan kesalahan ini karena pernyataan pilih mengembalikan kumpulan hasil dengan lebih dari satu baris (satu untuk setiap tabel) dan Anda tidak dapat menetapkan kumpulan hasil tersebut ke varchar2.
Omong-omong, pastikan Anda mengaktifkan dbms_output dengan SET SERVEROUT ON
sebelum mengeksekusi blok ini.