我对JDBC很新,一直在尝试着使用它。论坛中的其他帖子指出Oracle的JDBC驱动程序不支持Oracle PLSQL布尔类型。我觉得这真的很奇怪:
从Oracle JDBC文档来看,似乎支持:
但在另一节中,它说它不允许将BOOLEAN参数传递给PL/SQL存储过程。
难道文档自相矛盾吗?
它不允许我从PL/SQL过程/函数传递或接受布尔值。它会给我以下异常:
Exception occured in the database
Exception message: Invalid column type: 16
Database error code: 17004
java.sql.SQLException: Invalid column type: 16
at oracle.jdbc.driver.OracleStatement.getInternalType(OracleStatement.java:3963)
at oracle.jdbc.driver.OracleCallableStatement.registerOutParameterInternal(OracleCallableStatement.java:135)
at oracle.jdbc.driver.OracleCallableStatement.registerOutParameter(OracleCallableStatement.java:304)
at oracle.jdbc.driver.OracleCallableStatement.registerOutParameter(OracleCallableStatement.java:393)
at oracle.jdbc.driver.OracleCallableStatementWrapper.registerOutParameter(OracleCallableStatementWrapper.java:1579)
at com.HrManager.insertNewEmployee(HrManager.java:1300)
at com.HrManager.main(HrManager.java:1411)
我正在尝试理解为什么JDBC Oracle驱动程序不支持布尔类型。这是因为PL/SQL中的“Boolean”接受null值,而Java的原始类型“boolean”不接受吗?
但反驳的是,Java的包装类“Boolean”确实接受null值。这可以用来映射到PL/SQL的布尔类型。有人可以更详细地解释一下吗?