Вашият динамичен израз не трябва да има точка и запетая в края; това е разделител на изявления и не е уместно или валидно за едно изявление. Така или иначе можете да изпълнявате динамично само един SQL израз (освен ако не поставите няколко в анонимен PL/SQL блок).
Вашият into
също е на грешното място:
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;
Не съм сигурен защо си правите труда да имате и присвоявате локални променливи, когато можете да използвате директно аргументите на процедурата, което според мен прави израза по-четлив:
TEMP_1 := 'select count ( '|| COLUMN_SOURCE ||' ) from ' || TABLE_SOURCE;