Help on how to count all records from all tables from a container from a loop statement

hello,
I am trying to setup a script that would count the records from all tables from a container.
I’m almost finished, but I have only on issue… the execute immediate statement is not storing the result of the query in l_cnt. I dont understand why…

declare
  l_cnt varchar :=0;
  l_stmt varchar;
begin
      create or replace table temp@inmemorystorage as select name from systemtables@datadictionary where provider_data_container_alias like 'fd' and type like 'table';
      for r in (select * from temp@inmemorystorage)
      loop
        begin
          l_stmt := 'select count(*) into l_cnt from '||r.name||'@fd';
          dbms_output.put_line(l_stmt);
          execute immediate l_stmt;
          dbms_output.put_line(r.name||' : '||l_cnt);
        exception
          when others
          then
          dbms_output.put_line(r.name||' : no count');
        end;
      end loop;
end;

l_cnt always remains at 0