У вас есть конфликт с символом cnum , который используется как в качестве локальной переменной, так и для текущей строки курсора.
Вы, вероятно, хотите это:
DECLARE
CURSOR c1 is select distinct WP_NO from temp;
BEGIN
FOR current_row in c1
LOOP
EXECUTE IMMEDIATE 'Alter table temp_col add (:1 varchar2(255))' using current_row.WP_NO;
END LOOP;
COMMIT;
END;
Как видите, вам не нужно объявлять переменную current_row , которую вы используете в цикле for.