Oracle
 sql >> база данни >  >> RDS >> Oracle

PreparedStatement е null в клаузата Where без if условни (динамична заявка) или безсмислени стойности

Вашето работещо решение е наред (и подобно на това, което използвах преди ). Ако искате да обвържете само веднъж, можете да използвате CTE или вграден изглед, за да предоставите стойността на истинската заявка:

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

Така че има само един заместител за обвързване.

Наистина не виждам проблем с клон от страна на Java обаче, освен ако действителната ви заявка не е много по-сложна и би довела до значително дублиране.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да попълним календарна таблица в Oracle?

  2. Как да изпълня частни процедури в пакет на Oracle?

  3. Как да получа списък със заключени потребители в база данни на Oracle?

  4. Как да пусна таблица в oracle

  5. Източници за експортиране на Oracle SQL Developer за контрол на версиите