-1

正しいparanthesisエラーがありません。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

このエラーは、作成している SQL ステートメントoracleQueryの括弧の数が間違っていることを示しているようです。prepareStatementデバッグを容易にするために、呼び出しに渡す前にその SQL ステートメントを出力すると役立つでしょう。

私の推測では、によって返される文字列はiterator.next()期待したものではありません。

于 2012-06-04T17:50:49.620 に答える
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 に答える