Como você compôs a instrução SQL como uma string, o mecanismo PLSQL NÃO substitui o nome da variável (apenas parte de uma string literal), portanto, o mecanismo SQL vê a string 'V_MONTH', mas não há coluna com esse nome, portanto, identificador inválido . Se você ficar com SQL dinâmico, terá que fazer a substituição de valor por conta própria. O mesmo também se aplica às outras variáveis. Então:
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);
Você também pode precisar fazer as conversões de formato necessárias.