Twoja dynamiczna instrukcja nie powinna mieć na końcu średnika; jest to separator instrukcji i nie ma znaczenia ani nie jest prawidłowy dla pojedynczej instrukcji. Tak czy inaczej, możesz uruchomić dynamicznie tylko jedną instrukcję SQL (chyba że umieścisz kilka w anonimowym bloku PL/SQL).
Twój into
też jest w niewłaściwym miejscu:
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;
Nie jestem pewien, dlaczego zawracasz sobie głowę posiadaniem i przypisywaniem zmiennych lokalnych, skoro możesz użyć argumentów procedury bezpośrednio, co moim zdaniem sprawia, że instrukcja jest bardziej czytelna:
TEMP_1 := 'select count ( '|| COLUMN_SOURCE ||' ) from ' || TABLE_SOURCE;