Sua instrução dinâmica não deve ter um ponto e vírgula no final; que é um separador de instrução e não é relevante ou válido para uma única instrução. Você só pode executar uma única instrução SQL dinamicamente de qualquer maneira (a menos que você coloque várias em um bloco PL/SQL anônimo).
Seu
into
também está no lugar errado:TEMP_1 := 'select count ( '|| E ||' ) from ' || C;
DBMS_OUTPUT.PUT_LINE ('STARTED');
DBMS_OUTPUT.PUT_LINE (TEMP_1);
EXECUTE IMMEDIATE TEMP_1 INTO Count_source;
Não tenho certeza por que você está se preocupando em ter e atribuir variáveis locais quando pode usar os argumentos do procedimento diretamente, o que acho que torna a instrução mais legível:
TEMP_1 := 'select count ( '|| COLUMN_SOURCE ||' ) from ' || TABLE_SOURCE;