SQL文を文字列として作成したため、PLSQLエンジンは変数名(リテラル文字列の一部)の代わりにはなりません。したがって、SQLエンジンは文字列'V_MONTH'を認識しますが、その名前の列がないため、識別子は無効です。 。動的SQLを使用する場合は、自分で値の置換を行う必要があります。同じことが他の変数にも当てはまります。だから:
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);
必要なフォーマット変換を行う必要がある場合もあります。