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

PreparedStatement ma wartość null w klauzuli Where bez warunkowych warunkowych (zapytanie dynamiczne) lub bezużytecznych wartości

Twoje rozwiązanie robocze jest w porządku (i podobne do tego, którego używałem wcześniej ). Jeśli chcesz powiązać tylko raz, możesz użyć widoku CTE lub wbudowanego, aby podać wartość rzeczywistemu zapytaniu:

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

Jest więc tylko jeden symbol zastępczy do powiązania.

Jednak naprawdę nie widzę problemu z gałęzią po stronie Javy, chyba że twoje rzeczywiste zapytanie jest znacznie bardziej skomplikowane i prowadziłoby do znacznego powielania.



  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 SQL - Not Exists - ciąg nie istnieje na liście wartości

  2. Wystąpił błąd podczas wykonywania procedury od programisty sql

  3. FROM_TZ() Funkcja w Oracle

  4. Ukrywanie hasła w postaci zwykłego tekstu za pomocą wiersza poleceń sqlplus

  5. Oracle View a łączenie tabel w Oracle