--- parser3/src/sql/oracle/Attic/parser3oracle.C 2001/08/23 11:08:52 1.4 +++ parser3/src/sql/oracle/Attic/parser3oracle.C 2001/08/23 12:21:31 1.9 @@ -7,7 +7,7 @@ 2001.07.30 using Oracle 8.1.6, tested with Oracle 7.x.x */ -static const char *RCSId="$Id: parser3oracle.C,v 1.4 2001/08/23 11:08:52 parser Exp $"; +static const char *RCSId="$Id: parser3oracle.C,v 1.9 2001/08/23 12:21:31 parser Exp $"; #include "config_includes.h" @@ -118,17 +118,16 @@ public: int api_version() { return SQL_DRIVER_API_VERSION; } /// initialize driver by loading sql dynamic link library const char *initialize(const char *dlopen_file_spec) { -/* const char *error=dlopen_file_spec? + const char *error=dlopen_file_spec? dlink(dlopen_file_spec):"client library column is empty"; - if(!error) {*/ + if(!error) { OCIInitialize((ub4)OCI_THREADED, (dvoid *)0, - (dvoid * (*)(void *, unsigned int)) 0, - (dvoid * (*)(void*, void*, unsigned int)) 0, - (void (*)(void*, void*)) 0 ); - /*} + (dvoid * (*)(void *, unsigned int))0, + (dvoid * (*)(void*, void*, unsigned int))0, + (void (*)(void*, void*))0 ); + } - return error;*/ - return 0; + return error; } /** connect @@ -188,7 +187,7 @@ public: // set attribute server context in the service context check(services, cs, "AttrSet server-service", OCIAttrSet( (dvoid *)cs.svchp, (ub4)OCI_HTYPE_SVCCTX, - (dvoid *)cs.srvhp, (ub4) 0, + (dvoid *)cs.srvhp, (ub4)0, (ub4)OCI_ATTR_SERVER, (OCIError *)cs.errhp)); // allocate a user context handle check(services, cs, "HandleAlloc usrhp", OCIHandleAlloc( @@ -290,8 +289,7 @@ public: if(setjmp(cs.mark)) { failed=true; goto cleanup; - } - { + } else { const char *statement=preprocess_statement(services, cs, astatement, lobs); @@ -308,10 +306,10 @@ public: check(services, cs, "bind output", OCIBindByPos(stmthp, &lobs.items[i].bind, cs.errhp, - (ub4) 1+i, + (ub4)1+i, (dvoid *)&lobs.items[i].locator, - (sword)sizeof (lobs.items[i].locator), SQLT_CLOB, (dvoid *) 0, - (ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DATA_AT_EXEC)); + (sword)sizeof (lobs.items[i].locator), SQLT_CLOB, (dvoid *)0, + (ub2 *)0, (ub2 *)0, (ub4)0, (ub4 *)0, OCI_DATA_AT_EXEC)); lobs.items[i].rows.count=0; OracleSQL_query_lobs::cbf_context_struct cbf_context={ @@ -416,7 +414,7 @@ private: // private funcs for(i=0; iOCIErrorGet((dvoid *)cs.errhp, (ub4)1, (text *) NULL, &errcode, (text *) reason, (ub4) sizeof(reason), OCI_HTYPE_ERROR)==OCI_SUCCESS) msg=reason; else msg="[can not get error description]"; + break; } case OCI_SUCCESS_WITH_INFO: msg="SUCCESS_WITH_INFO"; break; @@ -726,7 +842,7 @@ static sb4 cbf_no_data( ub4 *alenpp, ub1 *piecep, dvoid **indpp) { - *bufpp=(dvoid *) 0; + *bufpp=(dvoid *)0; *alenpp=0; static sb2 null_ind=-1; *indpp=(dvoid *) &null_ind; @@ -750,9 +866,11 @@ static sb4 cbf_get_data(dvoid *ctxp, *(OracleSQL_query_lobs::cbf_context_struct *)ctxp; if(index==0) { - static ub4 rows=0; - OCIAttrGet((CONST dvoid *) bindp, OCI_HTYPE_BIND, (dvoid *)&rows, - (ub4 *)sizeof(ub2), OCI_ATTR_ROWS_RETURNED, context.cs->errhp); + static ub4 rows; + check(*context.services, *context.cs, "AttrGet cbf_get_data ROWS_RETURNED", + OracleSQL_driver->OCIAttrGet( + (CONST dvoid *) bindp, OCI_HTYPE_BIND, (dvoid *)&rows, + (ub4 *)sizeof(ub2), OCI_ATTR_ROWS_RETURNED, context.cs->errhp)) ; context.rows->count=(ub2)rows; context.rows->row=(OracleSQL_query_lobs::return_rows::return_row *) context.services->malloc(sizeof(OracleSQL_query_lobs::return_rows::return_row)*rows); @@ -760,10 +878,10 @@ static sb4 cbf_get_data(dvoid *ctxp, OracleSQL_query_lobs::return_rows::return_row &var=context.rows->row[index]; - check(*context.services, *context.cs, "alloc output var desc dynamic", OCIDescriptorAlloc( + check(*context.services, *context.cs, "alloc output var desc dynamic", OracleSQL_driver->OCIDescriptorAlloc( (dvoid *) context.cs->envhp, (dvoid **)&var.locator, (ub4)OCI_DTYPE_LOB, - 0, (dvoid **) 0)); + 0, (dvoid **)0)); *bufpp=var.locator; *alenp=&var.len; @@ -780,5 +898,5 @@ void tolower(char *out, const char *in, } extern "C" SQL_Driver *create() { - return new OracleSQL_Driver(); + return OracleSQL_driver=new OracleSQL_Driver(); }