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

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

Giải pháp hoạt động của bạn ổn (và tương tự như giải pháp tôi đã sử dụng trước đây ). Nếu bạn chỉ muốn liên kết một lần, bạn có thể sử dụng CTE hoặc chế độ xem nội tuyến để cung cấp giá trị cho truy vấn thực:

WITH CTE AS (
    SELECT ? AS REAL_VALUE FROM DUAL
)
SELECT C.*   -- but not * really, list all the columns
FROM CTE
JOIN CUSTOMERS C
ON (CTE.REAL_VALUE IS NULL AND C.CUSTOMER_ID IS NULL)
    OR C.CUSTOMER_ID = CTE.REAL_VALUE

Vì vậy, chỉ có một trình giữ chỗ để liên kết.

Mặc dù vậy, tôi thực sự không thấy có vấn đề gì với một nhánh bên Java, trừ khi truy vấn thực tế của bạn phức tạp hơn nhiều và sẽ dẫn đến trùng lặp đáng kể.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm add_months của oracle khác với Java

  2. Oracle OCI, biến ràng buộc và các truy vấn như ID IN (1, 2, 3)

  3. ODP.Net - OracleDataReader.Read rất chậm

  4. Làm cách nào để trích xuất một tập hợp con của cơ sở dữ liệu thành tệp dbunit bằng cách sử dụng truy vấn sql?

  5. Cách thêm số hàng trong một nhóm trong truy vấn của tôi