Динамический контекст SQL не знает, что такое v_primary_si
- переменные PL / SQL не находятся в области действия внутри этого контекста SQL - поэтому он видит его как идентификатор столбца по умолчанию: отсюда и ошибка. Чтобы использовать переменную PL / SQL, вы должны использовать ее как переменную связывания:
EXECUTE IMMEDIATE 'insert into error_log ( identifier, error_message) values
(''Successfully updated'',:v_primary_si)'
USING v_primary_si;
Но ни то, ни другое не должны быть динамическими, вы можете просто сделать:
Begin
v_primary_si:= primary_si; -- presumably you need this as a new variable later?
insert into error_log ( identifier, error_message)
values ('Successfully updated', v_primary_si);
commit;
End;