java.sql.SQLException:缺少定义

时间:2016-07-05 21:27:21

标签: oracle jdbc

我们有一个非常简单的Java代码,它使用CallableStatement API执行Oracle存储过程。 Oracle存储过程没有定义OUTPUT参数,但是在Java代码中我们尝试注册OUT参数并检索它:

 cs = cnDBCon.prepareCall("{call "+strStoredProcedureName+ "}");
 cs.registerOutParameter(1, Types.NUMERIC);
 cs.execute();
 int isOk = cs.getInt(1);

根据Java API(https://docs.oracle.com/javase/8/docs/api/java/sql/CallableStatement.html#getInt-int-),当返回值为SQL NULL时,结果为0.

当我们在Java7 / WebLogic 12.1.3上运行时,它运行得非常好。自从我们切换到Java8 / WebLogic 12.2.1后,我们开始收到错误:

  

java.sql.SQLException:缺少定义
  在oracle.jdbc.driver.Accessor.isNull(Accessor.java:744)
  at oracle.jdbc.driver.NumberCommonAccessor.getInt(NumberCommonAccessor.java:73)
  在oracle.jdbc.driver.OracleCallableStatement.getInt(OracleCallableStatement.java:1815)
  at oracle.jdbc.driver.OracleCallableStatementWrapper.getInt(OracleCallableStatementWrapper.java:780)
  at weblogic.jdbc.wrapper.CallableStatement_oracle_jdbc_driver_OracleCallableStatementWrapper.getInt(Unknown Source)

显而易见的选择是更新存储过程或java代码,但我想知道行为改变的原因。它是一个更严格的JDBC驱动程序吗?

0 个答案:

没有答案