com.sybase.jdbc2.jdbc.SybSQLException:参数太多 - 符号表溢出

时间:2011-12-13 16:55:22

标签: java jdbc sybase

我正在使用jconn2.jar(5.5)jdbc驱动程序进行Sybase连接 从独立的Java应用程序到sybase数据库。 我的java应用程序将读取数千个 来自文本文件的记录并插入到表中 sybase数据库。 我有一个带有IN子句的select查询。这个IN子句将有超过10,000个值。在执行此查询时, 应用程序返回以下错误:

  

引起:com.sybase.jdbc2.jdbc.SybSQLException:参数太多    - 符号表溢出。

     

at com.sybase.jdbc2.tds.Tds.processEed(Tds.java:3281)at at   com.sybase.jdbc2.tds.Tds.nextResult(Tds.java:2548)at at   com.sybase.jdbc2.jdbc.ResultGetter.nextResult(ResultGetter.java:69)   在   com.sybase.jdbc2.jdbc.SybStatement.nextResult(SybStatement.java:220)   在   com.sybase.jdbc2.jdbc.SybStatement.nextResult(SybStatement.java:203)   在   com.sybase.jdbc2.jdbc.SybStatement.queryLoop(SybStatement.java:1614)   在   com.sybase.jdbc2.jdbc.SybStatement.executeQuery(SybStatement.java:1599)   在   com.sybase.jdbc2.jdbc.SybPreparedStatement.executeQuery(SybPreparedStatement.java:96)

     

在   org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93)

     

在   org.springframework.jdbc.core.JdbcTemplate $ 1.doInPreparedStatement(JdbcTemplate.java:648)

     

在   org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:591)   ......还有10个

相同的查询适用于IN子句中的值 最多10,000个值。

我试过jconnect6和jconnect7。但结果相同。

任何人都有任何想法,为什么会这样 对于具有更多值的值,返回如上所述的错误 超过10,000?

提前致谢

1 个答案:

答案 0 :(得分:0)

听起来你只是达到了硬限制?我不建议使用那么多值的IN条件:如果你需要那么多,你在SQL中做了一些非常不可取的事情,可能是时候看一个重构了吗?