Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Lỗi số nhận dạng không hợp lệ cho v_MONTH trong truy vấn động

Bởi vì bạn đã soạn câu lệnh SQL dưới dạng một chuỗi, công cụ PLSQL KHÔNG thay thế cho tên biến (chỉ là một phần của chuỗi chữ), do đó, công cụ SQL nhìn thấy chuỗi 'V_MONTH' nhưng không có cột nào có tên đó do đó định danh không hợp lệ . Nếu bạn ở lại với SQL động, bạn sẽ phải tự thay thế giá trị. Điều tương tự cũng áp dụng cho các biến khác. Vì vậy:

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

Bạn cũng có thể cần thực hiện bất kỳ chuyển đổi định dạng cần thiết nào.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi năm thập phân thành ngày tháng

  2. Định cấu hình SQL * Plus để trả về không có gì ngoài dữ liệu

  3. tạo chế độ xem oracle dựa trên so sánh dữ liệu giữa hai bảng cơ sở dữ liệu

  4. PreparedStatement là rỗng trong mệnh đề Where mà không có if có điều kiện (truy vấn động) hoặc giá trị vô nghĩa

  5. Phân tích cú pháp json qua json_table trong oracle 18