Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Błąd nieprawidłowego identyfikatora dla v_MONTH w zapytaniu dynamicznym

Ponieważ skomponowałeś instrukcję SQL jako ciąg znaków, silnik PLSQL NIE zastępuje nazwy zmiennej (jej tylko część literału ciągu), dlatego silnik SQL widzi ciąg 'V_MONTH', ale nie ma kolumny o tej nazwie, dlatego niepoprawny identyfikator . Jeśli pozostaniesz przy dynamicznym SQL, będziesz musiał samodzielnie wykonać podstawianie wartości. To samo dotyczy również pozostałych zmiennych. A więc:

  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że być również konieczne wykonanie niezbędnych konwersji formatu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server odpowiednik Oracle „CONNECT BY PRIOR” i „ORDER SIBLINGS BY”

  2. Transakcyjność sekwencji Oracle

  3. eksportowanie obiektów db do kontroli wersji

  4. Oracle Loader dla pliku .xlsx

  5. Oracle Merge vs Select, następnie wstaw lub zaktualizuj