Oracle 데이터베이스에서 데이터를 가져 오는 Java 준비 문과 함께 작업하고 있습니다. 일부 성능 문제로 인해 쿼리는 "가상 열"을 인덱스로 사용합니다.준비된 문 - where 절의 일부로 함수 사용
쿼리는 다음과 같습니다 :이 작동하지 않습니다
String status = "processed";
String customerId = 123;
String query = "SELECT DISTINCT trans_id FROM trans WHERE status = " + status + " AND FN_GET_CUST_ID(trans.trans_id) = " + customerId;
Connection conn = getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = conn.prepareStatement(query);
ps.execute();
...
} catch (...)
. where 절의 일부로 함수를 사용하면 SQLException이 발생합니다. 나는 CallableStatement에 대해 알고 있으며, 먼저 그것을 사용할 수 있고 그 결과를 연결시킬 수 있다는 것을 알고있다. 그러나이 테이블은 인덱스의 일부로 FN_GET_CUST_ID (trans_id)를 사용합니다. 쿼리 매개 변수로 데이터베이스 함수와 함께 준비된 문을 사용하는 방법이 있습니까?
처리 된 상태를 인용 부호로 묶어야합니다. 예외의 원인이 그 때문일까요? – quosoo
WHERE 절에 함수가 있어야만 문제가 발생할 수 있습니다. 오류 코드 및 메시지 (SQLException.getErrorCode)를 게시 할 수 있습니까? 쿼리가 실제로 SQL * Plus에서 작동합니까? –
죄송합니다. 게시 한 예가 그대로 복사되지 않았습니다. 나는 과도한 비 필수적인 것들을 많이 제거하기 위해 그것을 다듬 으려고 노력했다. 누락 된 따옴표는 문제가 아닙니다. – emulcahy