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

Reply via email to