Why does Oracle's JDBC driver not support Oracle's Boolean type

oracle database
what does oracle do
oracle products
oracle cloud
oracle sql
oracle corporation
oracle wiki
larry ellison

I am new to JDBC and have been playing with it. Other posts in the forum indicate that Oracle's JDBC driver does not support Oracle PLSQL Boolean type. I find that really strange:

From the oracle jdbc documentation it seems like it does:

But in another section it says it does not allow passing of BOOLEAN parameters to PL/SQL stored procedures.

Isn't the the documentation contradicting itself ?

It does not let me pass or accept Boolean values from PL/SQL procedures/functions. It gives me the following exception:

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)

I am trying to understand why JDBC Oracle Drivers do not support Boolean types. Is it because PL/SQL "Boolean" accepts null values and Java's primitive type "boolean" does not ?

But the counter to it would be , Java's wrapper class "Boolean" does accept nulls. This can be used to map to PLSQL's Boolean type . Can some one throw more light on this.

From: PL/SQL TABLE, BOOLEAN, and RECORD Types

It is not feasible for Oracle JDBC drivers to support calling arguments or return values of the PL/SQL RECORD, BOOLEAN, or table with non-scalar element types. However, Oracle JDBC drivers support PL/SQL index-by table of scalar element types.

...

As a workaround to PL/SQL RECORD, BOOLEAN, or non-scalar table types, create container procedures that handle the data as types supported by JDBC. For example, to wrap a stored procedure that uses PL/SQL boolean, create a stored procedure that takes a character or number from JDBC and passes it to the original procedure as BOOLEAN or, for an output parameter, accepts a BOOLEAN argument from the original procedure and passes it as a CHAR or NUMBER to JDBC. Similarly, to wrap a stored procedure that uses PL/SQL records, create a stored procedure that handles a record in its individual components, such as CHAR and NUMBER, or in a structured object type. To wrap a stored procedure that uses PL/SQL tables, break the data into components or perhaps use Oracle collection types.

Introduction to the Oracle Database, Oracle is pleased to provide information about our company, customers, Our mission is to help people see data in new ways, discover insights, unlock endless � Oracle Corporation is an American multinational computer technology corporation headquartered in Redwood Shores, California.The company sells database software and technology, cloud engineered systems, and enterprise software products—particularly its own brands of database management systems.

As answered here https://stackoverflow.com/a/55413745/4612499 (with code examples) the Oracle JDBC thin driver supports the PLSQL BOOLEAN type starting in 12.2.

Company Information, Oracle Cloud Infrastructure platform is built for enterprises that are looking for higher performance computing with easy migration of their on-premises� Comment and share: Why does Oracle keep trashing MySQL, its own product? By Matt Asay Matt Asay is a veteran technology columnist who has written for CNET, ReadWrite, and other tech media.

I faced the same error while using Boolean in an entity. Resolved it by changing oracle dialect to 'org.hibernate.dialect.Oracle10gDialect' from 'org.hibernate.dialect.OracleDialect'.

Oracle United Kingdom, From web applications to DevOps, Oracle Cloud solutions can support any application or workload to ensure your success in digital transformation. Here are the top 10 reasons why you should consider it. Support. If you pay for an Oracle support contract, only Oracle 12.1.0.2, the latest version of Oracle Database 12c currently available for on-premises use, is covered under Premier Support.

Java supports null values for primitive values using the wasNull method on ResultSet and CallableStatement, so that is no reason for not supporting BOOLEAN.

However the documentation you link to says it is not supported. You may be able to use oracle specific extensions. The documentation also links to an example workaround (for parameter passing, but the analogue for OUT is easy to deduce).

Solutions, Get the latest version at java.com. If you are building an embedded or consumer device and would like to include Java, please contact Oracle for more information � Check the spam folder in your email client for an email from oracle-acct_ww@oracle.com. Add the Oracle email to your address book to ensure that it is not handled as spam. Sign in to www.oracle.com with your existing Oracle Account (with your original email address and password). Go to your Account

What is Java and why do I need it?, Oracle CTO Larry Ellison can't get enough MySQL bashing into his earnings calls . Is there a method to this madness? Oracle Database,commonly referred to as Oracle RDBMS or simply as Oracle is an object-relational database management system produced and marketed by Oracle Corporation. Oracle is one of the largest vendors in the enterprise IT market, offering a wide variety of software and hardware technologies for use in corporate applications.

Why does Oracle keep trashing MySQL, its own product , Pebbles present, Learn Oracle 10g with Step By Step Video Tutorials. Learn Oracle 10g Duration: 3:16 Posted: 29 Jun 2016 Oracle Java SE product releases, which includes the Oracle JDK for Java 8 and later, and Oracle JRE with Java Web Start in Java 8, under the OTN License Agreement for Java SE. This license permits personal use, development, testing, prototyping, demonstrating and some other uses at no cost.

The Oracle | Matrix Wiki, While the Aconex acquisition was valued at $1.2 billion,1 this does not represent Oracle's most expensive purchase, that would be when� Oracle database is an RDMS system from Oracle Corporation. The software is built around the relational database framework. It allows data objects to be accessed by users using SQL language. Oracle is a completely scalable RDBMS architecture which is widely used all over the world.

Comments
  • There's precedent to suggest that you're getting an integer back instead of a boolean, but show us what you've written to get this error.
  • If it's a case as mentioned by @Makato change the value of the property "hibernate.dialect" from "org.hibernate.dialect.OracleDialect" to "org.hibernate.dialect.Oracle9iDialect"