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;
/
all_tables
から選択する場合 テーブル名から選択するために必要な助成金が与えられたことを期待することはできません。したがって、ORA-00942: table or view does not exist
を確認する必要があります。 エラーがスローされました。
エラーの原因について:selectステートメントが複数の行(テーブルごとに1つ)を含む結果セットを返し、そのような結果セットをvarchar2に割り当てることができないため、このエラーが発生します。
ちなみに、SET SERVEROUT ON
でdbms_outputを有効にしてください。 このブロックを実行する前に。