Skip to content

qorelanguage/module-oracle

Repository files navigation

oracle module for Qore

Requires qore 0.8.12.10+ and oracle 9i+ headers and libraries to build in order to
support the maximum feature set (oracle instant client is also supporteed - see
BUILD AND INSTALL below)

The "oracle" DBI driver is stable and has been extensively tested.
*) transaction management is supported
*) automatic transparent character set conversion is supported when necessary
*) threading support
*) it's possible to call functions and procedures
*) the "optimal-numbers" option is set by default as of module version 2.2
*) supports a server timezone setting for correctly handling date/time value
   when communicating with a DB server in another time zone
*) it's possible to bind and retrieve *LOB values
*) named types, nested tables, collections are supported for binding by value
   and retrieving on output
*) the prepared statement API is support (SQLStatement class)

The driver's name is "oracle" and the Datasource type constant is SQL::DSOracle
ex: Datasource db(DSOracle, user, pass, db);
ex: Datasource db(("type": "oracle", "user": user, "pass": pass, "db": db));
ex: Datasource db("oracle:user/pass@db(al32utf8)%host:1521{optimal-numbers}");

Documentation in docs/oracle-module-doc.html

see tests/examples in test/*

Note that a highly modified form of ocilib (http://orclib.sourceforge.net) is included here to provide most of the named type and collection support to the module.  ocilib was written by Vincent Rogier and the code is included here under the terms of the LGPL 2.1 (same license as the rest of this module).


LICENSE
-------
This module is released under a choice of two licenses: LGPL 2.1 and MIT, see
COPYING.LGPL and COPYING.MIT for more information


BUILD AND INSTALL
-----------------

If you have Oracle 9i or higher or have Oracle Instant Client with development
files included, you can build the oracle module.

Make sure your ORACLE_HOME is set before calling configure (otherwise use the
--with-oracle configure option).

Header files and libraries must be available in the standard locations.

Oracle Instant Client installation: Make sure the ORACLE_INSTANT_CLIENT
environment variable is set before you run configure (or use the
--with-oracle-instant-client configure option).

Also note that with the instant client distributions (except for oracle 11g
instant client rpms), the libclntsh.sl1.10.* (libclntsh.so.10.*,
libclntsh.dylib.10.*) must be manually symlinked to libclintsh.sl (libclntsh.so,
libclntsh.dylib) in order to link with the included Oracle libraries.

configure options:
--with-oracle=<dir>                 : directory of Oracle installation ("oracle" module)
--with-oracle-instant-client=<dir>  : directory of Oracle Instant Client installation ("oracle" module)

configure
make
sudo make install

The configure script will find out where your qore module directory is found and set this for the install directory.


DARWIN / MACOS
--------------

If you have moved/upgraded your Oracle libraries or are using a binary module
build on another system, execute the following command to update the module's
internal rpath:
    install_name_tool -add_rpath ${ORACLE_LIB_DIR} ${MODULE_NAME}

for example:
    sudo install_name_tool -add_rpath ${ORACLE_INSTANT_CLIENT} /usr/local/lib/qore-modules/oracle*.qmod


BUILD FROM GIT
--------------

./reconf.sh
./configure
make
sudo make install