Вы должны указать значение.Таким образом, если yearAA
равно 2018AA
, ваш код интерпретируется как:
execute immediate 'INSERT INTO MOUADTEST2018 VALUES(2018AA)';
, который пытается выполнить
INSERT INTO MOUADTEST2018 VALUES(2018AA)
, который выдает ошибку, поскольку 2018AA
isnв кавычках, поэтому Oracle считает, что это должен быть идентификатор (например, имя столбца).
Вы можете изменить свой код на
execute immediate 'INSERT INTO MOUADTEST2018 VALUES('''||yearAA||''')';
Но это не лучшая практика,так как это позволяет SQL-инъекцию.Вместо этого используйте переменные связывания.
execute immediate 'INSERT INTO MOUADTEST2018 VALUES(:1)' using yearAA;
Кроме того, я не думаю, что вам нужно execute immediate
, поэтому вы можете просто сделать:
insert into MOUADTEST2018 values(yearAA);