You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When binding a java.lang.Double to ojdbc, we shouldn't call PreparedStatement.setDouble(), but OraclePreparedStatement.setBinaryDouble(). Otherwise, some double values cannot be bound to the JDBC driver:
Caused by: java.lang.IllegalArgumentException: Underflow
at oracle.jdbc.driver.OraclePreparedStatement.setDoubleInternal(OraclePreparedStatement.java:5626)
at oracle.jdbc.driver.OraclePreparedStatement.setDouble(OraclePreparedStatement.java:5596)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.setDouble(OraclePreparedStatementWrapper.java:193)
at org.jooq.tools.jdbc.DefaultPreparedStatement.setDouble(DefaultPreparedStatement.java:143)
at org.jooq.impl.DefaultBinding$DefaultDoubleBinding.set0(DefaultBinding.java:2092)
at org.jooq.impl.DefaultBinding$DefaultDoubleBinding.set0(DefaultBinding.java:1)
at org.jooq.impl.DefaultBinding$AbstractBinding.set(DefaultBinding.java:758)
at org.jooq.impl.DefaultBindContext.bindValue0(DefaultBindContext.java:62)
... 43 more
When binding a
java.lang.Double
to ojdbc, we shouldn't callPreparedStatement.setDouble()
, butOraclePreparedStatement.setBinaryDouble()
. Otherwise, some double values cannot be bound to the JDBC driver:Adaptations:
PreparedStatement.setDouble()
->OraclePreparedStatement.setBinaryDouble()
PreparedStatement.setFloat()
->OraclePreparedStatement.setBinaryFloat()
CallableStatement.registerOutParameter(.., Types.Double)
->registerOutParameter(.., OracleTypes.BINARY_DOUBLE)
(101)CallableStatement.registerOutParameter(.., Types.Double)
->registerOutParameter(.., OracleTypes.BINARY_FLOAT)
(100)These work:
CallableStatement.getDouble()
seems OKCallableStatement.getFloat()
seems OKSQLInput.readDouble()
seems OKSQLInput.readFloat()
seems OKSQLOutput.writeDouble()
seems OKSQLOutput.writeFloat()
seems OKResultSet.getDouble()
seems OKResultSet.getFloat()
seems OKSee:
https://groups.google.com/forum/#!topic/jooq-user/LCN5zG57FBU
The text was updated successfully, but these errors were encountered: