2012-06-04 5 views
-1

누락 된 오른쪽 paranthesis 오류가 발생합니다. iterator.next() 문 주위의 주석을 제거하면 잘 동작합니다. 잘못된 점을 파악할 수 없습니다. 내가 전달하는 데이터 없음 "("가있다.ORA-00907 오류를 벗어날 수 없습니다.

String ORACLE_SUM_QUERY = "select item_number, sum(system_quantity) from ITEMS " + 
     "where sndate = ? and item_id in" + 
     " (select item_id from ap.system_items where org_id = 4 " + 
     " and segment1 in "; 
...... 
while (iterator.hasNext()) { 
//iterator.next(); 
String oracleQuery = String.format(ORACLE_SUM_QUERY + "(%s)) GROUP BY item_number", iterator.next()); 
     preparedStat = connection.prepareStatement(oracleQuery); 
     preparedStat.setDate(1, getSnDate()); 
+0

'while (iterator.hasNext()) {'의 왼쪽 중괄호와 일치하는 오른쪽 중괄호는 어디입니까? –

답변

1

오류는 oracleQuery에 구축 된 SQL 문이 괄호의 잘못된 번호를 가지고 있음을 나타내는 것 같다. 아마 SQL 것을 인쇄 할 도움이 될 것입니다 문 밖으로 prepareStatement 호출에 전달하기 전에 쉽게 디버깅 할 수 있습니다.

내 생각 엔 iterator.next()에 의해 반환되는 문자열은 당신이 기대되지 않는 것입니다.

1

로 코드를 재 작성하십시오3210
String ORACLE_SUM_QUERY = "select item_number, sum(system_quantity) from ITEMS " + 
     "where sndate = ? and item_id in" + 
     " (select item_id from ap.system_items where org_id = 4 " + 
     " and segment1 in ("; 
...... 
while (iterator.hasNext()) 
    { 
    ORACLE_SUM_QUERY = ORACLE_SUM_QUERY + String.format("%s", iterator.next()); 

    if(iterator.hasNext()) 
    ORACLE_SUM_QUERY = ORACLE_SUM_QUERY + ","; 
    } 

ORACLE_SUM_QUERY = ORACLE_SUM_QUERY + ")) GROUP BY item_number"; 

preparedStat = connection.prepareStatement(ORACLE_SUM_QUERY); 
preparedStat.setDate(1, getSnDate()); 

정확하게 테스트 할 수 없기 때문에 정확한 결과를 얻지 못할 수도 있지만 가까이 오게 될 수도 있습니다.

공유하고 즐기십시오.