Ditt dynamiska uttalande ska inte ha ett semikolon i slutet; som är en satsavgränsare och inte relevant eller giltig för en enskild sats. Du kan bara köra en enda SQL-sats dynamiskt ändå (såvida du inte lägger flera i ett anonymt PL/SQL-block).
Din into
är också på fel ställe:
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;
Inte säker på varför du bryr dig om att ha och tilldela lokala variabler när du kan använda procedurargumenten direkt, vilket jag tror gör påståendet mer läsbart:
TEMP_1 := 'select count ( '|| COLUMN_SOURCE ||' ) from ' || TABLE_SOURCE;