Su declaración dinámica no debe tener un punto y coma al final; eso es un separador de declaraciones y no es relevante ni válido para una sola declaración. De todos modos, solo puede ejecutar una sola instrucción SQL dinámicamente (a menos que coloque varias en un bloque PL/SQL anónimo).
Su into
también está en el lugar equivocado:
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;
No estoy seguro de por qué se molesta en tener y asignar variables locales cuando puede usar los argumentos del procedimiento directamente, lo que creo que hace que la declaración sea más legible:
TEMP_1 := 'select count ( '|| COLUMN_SOURCE ||' ) from ' || TABLE_SOURCE;