Ponieważ skomponowałeś instrukcję SQL jako ciąg znaków, silnik PLSQL NIE zastępuje nazwy zmiennej (jej tylko część literału ciągu), dlatego silnik SQL widzi ciąg 'V_MONTH', ale nie ma kolumny o tej nazwie, dlatego niepoprawny identyfikator . Jeśli pozostaniesz przy dynamicznym SQL, będziesz musiał samodzielnie wykonać podstawianie wartości. To samo dotyczy również pozostałych zmiennych. A więc:
EXECUTE IMMEDIATE UTL_LMS.FORMAT_MESSAGE(
'UPDATE /*+ index(a LEDGER_STAT_DLY_IDX02_IN) */ LEDGER_STAT_DLY A
SET %s = NVL(%s,0) + NVL(%s ,0)
WHERE IDENTITY_CODE = NVL(%s ,0)
AND YEAR_S = NVL(%s ,0)
AND MONTH_NO = NVL(%s ,0)'
,V_TARGET_COLUMN, V_TARGET_COLUMN ,V_AMOUNT,V_IDENTITY_CODE,V_YEAR_S,V_MONTH);
Może być również konieczne wykonanie niezbędnych konwersji formatu.