चूंकि आपने SQL कथन को एक स्ट्रिंग के रूप में बनाया है, PLSQL इंजन को चर नाम (उनके एक शाब्दिक स्ट्रिंग का सिर्फ एक हिस्सा) के लिए प्रतिस्थापित नहीं किया गया है, इसलिए SQL इंजन स्ट्रिंग 'V_MONTH' को देखता है लेकिन उस नाम से कोई कॉलम नहीं है इस प्रकार अमान्य पहचानकर्ता . यदि आप गतिशील एसक्यूएल के साथ रहते हैं तो आपको स्वयं मूल्य प्रतिस्थापन करना होगा। यही बात अन्य चरों पर भी लागू होती है। तो:
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);
आपको कोई भी आवश्यक प्रारूप रूपांतरण करने की भी आवश्यकता हो सकती है।