-1

我收到缺少右括号错误。如果我删除围绕 iterator.next() 语句的注释,它工作正常。无法弄清楚出了什么问题。我传递的数据中没有“(”。

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());
4

2 回答 2

1

尝试将您的代码重写为

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());

这可能无法完全得到它,因为我无法测试它,但它可能会让你更接近。

分享和享受。

于 2012-06-04T19:21:05.857 回答
1

该错误似乎表明您正在构建的 SQL 语句oracleQuery的括号数不正确。prepareStatement在将 SQL 语句传递给调用之前将其打印出来以使调试更容易,这可能会有所帮助。

我的猜测是返回的字符串iterator.next()不是您所期望的。

于 2012-06-04T17:50:49.620 回答