Oracle Call Interface
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)(Learn how and when to remove this template message)
OCI offers a procedural API for not only performing certain database administration tasks (such as system startup and shutdown), but also for using PL/SQL or SQL to query, access, and manipulate data. The OCI library, based on Oracle's undocumented User Programmatic Interface (UPI), acts as an "interpreter" between applications and the low-level database network protocol.
Oracle Corporation first released OCI (under the name HLI, the Host Language Interface) with Oracle Database version 6 in 1988. As HLI (and subsequently OCI) operated as wrappers for UPI, their original naming conventions closely resembled those of the UPI calls they were based upon. For example, the rollback statement: the call
upirol in UPI became
orol in OCI.
Later, in Oracle8 (released in 1997), OCI calls acquired more descriptive names;
OCITransRollback. Subsequent improvements have been made in every version of OCI, including 11g (released in 2007). Oracle Corporation claims that OCI is "So reliable that every SQL statement in the Oracle Database executes with OCI".
OCI is so popular that, in addition to Oracle, several other vendors have implemented their own libraries compatible with the OCI API. To date, OCI-compatible libraries exist for the ANTs Data Server (ADS), EnterpriseDB, and the Linter SQL RDBMS
Several libraries are based on top of OCI, including:
- Oracle's Type-II JDBC Driver (part-Java, part native)
- Oracle's enhanced C++ library, Oracle C++ Call Interface (OCCI), which provides an object-oriented interface with the object-relational features of the Oracle database.
- Oracle's OLE DB Driver
- Oracle's ODBC Driver
- Oracle's .NET Data Provider, ODP.NET
- Microsoft's ODBC Driver for Oracle
- Easysoft's ODBC-Oracle Driver
- Trolltech's Qt C++ toolkit OCI driver (QOCI)
Due to the complexity of the OCI API, several easier-to-use OCI wrapper libraries also exist, such as:
- the open-source libsqlora8 library (deprecated).
- the open-source OCILIB library.
- the Open BSD licensed Oracle Template Library OTL library.