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;
/
Nếu bạn đang chọn từ all_tables
bạn không thể tin tưởng vào việc đã được cấp các khoản trợ cấp cần thiết để chọn từ tên bảng. Do đó, bạn nên kiểm tra ORA-00942: table or view does not exist
đã xảy ra lỗi.
Về nguyên nhân gây ra lỗi của bạn:Bạn gặp lỗi này vì câu lệnh select trả về tập hợp kết quả có nhiều hơn một hàng (một hàng cho mỗi bảng) và bạn không thể gán tập kết quả như vậy cho varchar2.
Nhân tiện, hãy đảm bảo bạn bật dbms_output bằng SET SERVEROUT ON
trước khi thực hiện khối này.