sql >> Databáze >  >> RDS >> Oracle

Chyba neplatného identifikátoru pro v_MONTH v dynamickém dotazu

Protože jste SQL příkaz složili jako řetězec, PLSQL engine NEnahrazuje název proměnné (jejich pouze část doslovného řetězce), proto SQL engine vidí řetězec 'V_MONTH', ale neexistuje žádný sloupec s tímto názvem, takže neplatný identifikátor . Pokud zůstanete u dynamického SQL, budete muset provést substituci hodnoty sami. Totéž platí i pro ostatní proměnné. Takže:

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

Možná budete muset provést všechny nezbytné převody formátu.




  1. PHP, MySQL:nelze vysvětlit tuto nedefinovanou chybu indexu

  2. Jak se správně vyhnout Mysql Race Conditions

  3. jak uložit data, která uživatel zadá na stránce formuláře po provedení skriptu?

  4. Cizí klíč odkazující na více tabulek