void OCI_ExceptionOCI ( OCIError *p_err, OCI_Connection *con, OCI_Statement *stmt, boolean warning ) { OCI_Error *err = OCI_ExceptionGetError(); if (err) { int dbsize = (int) (osizeof(err->str) - (size_t) 1); dbtext *dbstr = OCI_StringGetOracleString(err->str, &dbsize); err->type = (warning ? OCI_ERR_WARNING : OCI_ERR_ORACLE); err->con = con; err->stmt = stmt; /* get oracle description */ OCIErrorGet((dvoid *) p_err, (ub4) 1, (OraText *) NULL, &err->sqlcode, (OraText *) dbstr, (ub4) dbsize, (ub4) OCI_HTYPE_ERROR); OCI_StringCopyOracleStringToNativeString(dbstr, err->str, dbcharcount(dbsize)); OCI_StringReleaseOracleString(dbstr); } OCI_ExceptionRaise(err); }
boolean OCI_API OCI_DateToText ( OCI_Date *date, const otext *fmt, int size, otext *str ) { dbtext *dbstr1 = NULL; dbtext *dbstr2 = NULL; int dbsize1 = size * (int) sizeof(otext); int dbsize2 = -1; OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_DATE, date) OCI_CHECK_PTR(OCI_IPC_STRING, str) /* initialize output buffer in case of OCI failure */ str[0] = 0; if (!fmt || !fmt[0]) { fmt = OCI_GetFormat(date->con, OCI_FMT_DATE); } dbstr1 = OCI_StringGetOracleString(str, &dbsize1); dbstr2 = OCI_StringGetOracleString(fmt, &dbsize2); call_status = TRUE; OCI_CALL4 ( call_status, date->err, date->con, OCIDateToText(date->err, date->handle, (oratext *) dbstr2, (ub1) dbsize2, (oratext *) NULL, (ub4) 0, (ub4*) &dbsize1, (oratext *) dbstr1) ) OCI_StringCopyOracleStringToNativeString(dbstr1, str, dbcharcount(dbsize1)); OCI_StringReleaseOracleString(dbstr1); OCI_StringReleaseOracleString(dbstr2); /* set null string terminator */ str[dbcharcount(dbsize1)] = 0; call_retval = call_status; OCI_LIB_CALL_EXIT() }