我遇到了由Sybase IQ服务器引发的模糊的错误消息。绑定主机变量的长度超过MaxLength
com.sybase.jdbc2.jdbc.SybSQLException:ASA错误-1001019:不支持VARCHAR处理功能 绑定的长度超过255个长度主机变量 超过的MaxLength, - (df_Heap.cxx 2145) 在com.sybase.jdbc2.tds.Tds.processEed(Tds.java:2636) at com.sybase.jdbc2.tds.Tds.nextResult(Tds.java:1996) at com.sybase.jdbc2.jdbc.ResultGetter。 nextResult在(ResultGetter.java:69) 在com.sybase.jdbc2.jdbc.SybStatement.nextResult(SybStatement.java:204) 在com.sybase.jdbc2.jdbc.SybStatement.nextResult(SybStatement.java:187) com.sybase.jdbc2.jd bc.SybStatement.updateLoop(SybStatement.java:1642) at com.sybase.jdbc2.jdbc.SybStatement.executeUpdate(SybStatement.java:1625) at com.sybase.jdbc2.jdbc.SybPreparedStatement.executeUpdate(SybPreparedStatement.java: 91) 在ibs.dao.CM3RM1DAO.updateToTable(CM3RM1DAO.java:197) 在ibs.dao.CM3RM1DAO.isXMLProcessed(CM3RM1DAO.java:88) 在ibs.xml.parser.XMLParser.parsingXMLIntoBO(XMLParser.java: 2125) 在ibs.common.util.MainClass.main(MainClass.java:74)
我们有几列(DESCRIPTION
等),这是varchar(4000)
类型。不过,我可以直接更新它们而不会有任何错误。而且,我没有看到任何代码指定任何绑定变量,所以我不知道该消息来自哪里。
这是代码(我已经修改了它一下):
String sql = "UPDATE TABLEX SET " +
"COMPANY = ?, CUSTOMER_REFERENCE= ?, " +
"STATUS = ?, CONTACT_FIRST_NAME = ?, CONTACT_LAST_NAME = ?, " +
"SEVERITY = ?, PRIORITY_CODE = ?, REQUESTEDDATE = ?, " +
"CLOSE_TIME = ?, LEAD_TIME = ?, CHANGE_REASON = ?, MODTIME = ? WHERE NUMBER = ?";
stmt = conn.prepareStatement(sql);
for loop here
{
stmt.setString(...);
.
.
stmt.executeUpdate();
}
任何帮助表示赞赏