请看下面的查询:
select nvl(max(transaction_id),0) as transaction_id from exception_details;
如果我通过我的JDBC代码执行上述查询,它会给我一个java.sql.SQLException: Fail to convert to internal representation
错误提示。我的JDBC代码如下:
public int fetchColumnVal(String query) throws SQLException, IllegalAccessException,
InvocationTargetException, NoSuchMethodException, ClassNotFoundException, InstantiationException {
PreparedStatement pstmt = null;
Connection con = null;
try {
con = getConnection(true);
pstmt = con.prepareStatement(query);
ResultSet rs = pstmt.executeQuery();
rs.next();
int count=rs.getInt(1);
return count;
} finally {
if (isBatchMode) {
this.cleanResources(null, pstmt);
}
else {
this.cleanResources(con, pstmt);
}
}
}
该表中列transaction_id的数据类型为NUMBER。
varchar2
类型的变量;您能否再次确认一下transaction_id
是否确实定义为number
类型(我知道您已经说过了,但还是要确认一下),并且这是否是导致错误的查询语句?在执行查询之前,您至少可以记录/显示query
的值以验证您要运行的内容吗?(它肯定不会完全相同 - 结尾的分号会导致错误)。 - Alex Poole