sql >> Database teknologi >  >> RDS >> Oracle

Ugyldig identifikationsfejl for v_MONTH i dynamisk forespørgsel

Fordi du komponerede SQL-sætningen som en streng, erstatter PLSQL-motoren IKKE variabelnavnet (deres kun en del af en bogstavelig streng), derfor ser SQL-motoren strengen 'V_MONTH', men der er ingen kolonne med det navn og derfor ugyldig identifikator . Hvis du forbliver med dynamisk SQL, skal du selv foretage værdisubstitution. Det samme gælder også for de øvrige variable. Så:

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

Du skal muligvis også foretage de nødvendige formatkonverteringer.




  1. PostgreSQL visuel grænseflade, der ligner phpMyAdmin?

  2. Sådan finder du alle SQL Agent-job, der kalder en given lagret-proc

  3. Få medarbejdere, der er under gennemsnitsløn efter en lønforhøjelse

  4. Søg i alle felter i alle tabeller for en bestemt værdi (Oracle)