Hello Tim,
When I was trying to install DBD-Oracle module on our box with Oracle 8.0.5 , I was
unable to go through "make" step of the installation of the module. Here is the last
part of log:
-----------------
cc -c -I/usr/oracle/product/8.0.5/rdbms/demo -I/usr/oracle/product/8.0.5/rdbms/public
-/usr/oracle/product/8.0.5/plsql/public -I/usr/oracle/product/8.0.5/network/public
-I/usr/oracle/product/8.0.5/rdbms/demo -I/usr/oracle/product/8.0.5/rdbms/demo
-I/usr/banner/perl/lib/site/alpha-dec_osf/auto/DBI -std -fprm d -ieee -D_INTRINSICS
-DLANGUAGE_C -O4 -DVERSION=\"1.12\" -DXS_VERSION=\"1.12\"
-I/usr/banner/perl/lib/alpha-dec_osf/CORE oci8.c
cc: Error: oci8.c, line 100: In this statement, "OCI_HTYPE_SUBSCRIPTION" is not
declared. (undeclared)
case OCI_HTYPE_SUBSCRIPTION: return "OCI_HTYPE_SUBSCRIPTION";
---------^
cc: Error: oci8.c, line 109: In this statement, "OCI_DTYPE_LOCATOR" is not declared.
(undeclared)
case OCI_DTYPE_LOCATOR: return "OCI_DTYPE_LOCATOR";
---------^
cc: Warning: oci8.c, line 267: In this statement, the referenced type of the pointer
value "(void ...)oci_st_handle" is "void", which is not compatible with "function
(pointer to struct imp_dbh_st, int, int) returning pointer to void". (ptr
mismatch)
imp_sth->get_oci_handle = (void*)oci_st_handle;
----^
*** Exit 1
Stop.
-----------------
I have found that Oracle 8.0.5 does not "define" symbols OCI_HTYPE_SUBSCRIPTION and
OCI_DTYPE_LOCATOR in the file $ORACLE_HOME\rdbms\demo\oci.h.
So I suggest you to change the function oci_hdtype_name in your oci8.c file this way:
-------------------
char *
oci_hdtype_name(ub4 hdtype)
{
SV *sv;
switch (hdtype) {
/* Handles */
case OCI_HTYPE_ENV: return "OCI_HTYPE_ENV";
case OCI_HTYPE_ERROR: return "OCI_HTYPE_ERROR";
case OCI_HTYPE_SVCCTX: return "OCI_HTYPE_SVCCTX";
case OCI_HTYPE_STMT: return "OCI_HTYPE_STMT";
case OCI_HTYPE_BIND: return "OCI_HTYPE_BIND";
case OCI_HTYPE_DEFINE: return "OCI_HTYPE_DEFINE";
case OCI_HTYPE_DESCRIBE: return "OCI_HTYPE_DESCRIBE";
case OCI_HTYPE_SERVER: return "OCI_HTYPE_SERVER";
case OCI_HTYPE_SESSION: return "OCI_HTYPE_SESSION";
case OCI_HTYPE_TRANS: return "OCI_HTYPE_TRANS";
case OCI_HTYPE_COMPLEXOBJECT: return "OCI_HTYPE_COMPLEXOBJECT";
case OCI_HTYPE_SECURITY: return "OCI_HTYPE_SECURITY";
#ifdef OCI_HTYPE_SUBSCRIPTION
case OCI_HTYPE_SUBSCRIPTION: return "OCI_HTYPE_SUBSCRIPTION";
#endif
/* Descriptors */
case OCI_DTYPE_LOB: return "OCI_DTYPE_LOB";
case OCI_DTYPE_SNAP: return "OCI_DTYPE_SNAP";
case OCI_DTYPE_RSET: return "OCI_DTYPE_RSET";
case OCI_DTYPE_PARAM: return "OCI_DTYPE_PARAM";
case OCI_DTYPE_ROWID: return "OCI_DTYPE_ROWID";
case OCI_DTYPE_COMPLEXOBJECTCOMP: return "OCI_DTYPE_COMPLEXOBJECTCOMP";
case OCI_DTYPE_FILE: return "OCI_DTYPE_FILE";
#ifdef OCI_DTYPE_LOCATOR
case OCI_DTYPE_LOCATOR: return "OCI_DTYPE_LOCATOR";
#endif
}
sv = sv_2mortal(newSViv(hdtype));
return SvPV(sv,na);
}
-------------------
which was a perfect workaround for me.
Have a nice day
Radek Porazil