sql >> Database >  >> RDS >> Oracle

Ongeldige identificatiefout voor v_MONTH in dynamische zoekopdracht

Omdat u de SQL-instructie als een tekenreeks hebt samengesteld, vervangt de PLSQL-engine NIET de variabelenaam (hun slechts een deel van een letterlijke tekenreeks), daarom ziet de SQL-engine de tekenreeks 'V_MONTH' maar er is geen kolom met die naam, dus ongeldige identifier . Als je bij dynamische SQL blijft, zul je zelf aan waardevervanging moeten doen. Hetzelfde geldt ook voor de andere variabelen. Dus:

  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);

Mogelijk moet u ook de nodige formaatconversies uitvoeren.




  1. Migraties uitvoeren met Rails in een Docker-container met meerdere containerinstanties

  2. FOUT 1005 (HY000):Kan tabel x niet maken (errno:-1)

  3. Maakt partitionering in mysql tabellen of alleen virtuele tabellen?

  4. JPA-toewijzing aan door de gebruiker gedefinieerde typen van Oracle