La tua istruzione dinamica non dovrebbe avere un punto e virgola alla fine; che è un separatore di istruzione e non rilevante o valido per una singola istruzione. Puoi comunque eseguire solo una singola istruzione SQL dinamicamente (a meno che non ne inserisca diverse in un blocco PL/SQL anonimo).
Il tuo into
è anche nel posto sbagliato:
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;
Non sono sicuro del motivo per cui ti preoccupi di avere e assegnare variabili locali quando puoi utilizzare direttamente gli argomenti della procedura, il che penso renda l'affermazione più leggibile:
TEMP_1 := 'select count ( '|| COLUMN_SOURCE ||' ) from ' || TABLE_SOURCE;