Re: OCI/Borland C++ Builder
Date: 1998/01/23
Message-ID: <34cfb9c1.267959675_at_newshost.us.oracle.com>
On Sat, 17 Jan 1998 09:20:47 -0600, Jim DeCicco <decj1_at_interaccess.com> wrote:
>Has anyone used this combination successfully? > >Thanks in advance, > >Jim
I haven't tried it, but as long as you can call the Windows API then it should work...call LoadLibrary() on the OCIW32.DLL, (or ORAxx.DLL), then do a GetProcAddress() on the functions you want to call..
mark
p.s. Here is a class that will do this for the 7.x versions, just inherit from this class and start using the OCI...
//******************************* BEGIN WOCI.H *********************************
#ifndef __W_OCI_H
#define __W_OCI_H
#ifndef WINVER
#include <windows.h>
#endif
#ifndef ORATYPES
#include "oratypes.h" //this is the oratypes.h with text
redefined to otext to prevent collision with IOS
#endif
#ifndef OCIDFN
#include "ocidfn.h"
#endif
/* OCI Function Pointer type Definitions */
typedef sword (*OCI_01) (struct cda_def *,ub1 *,otext *,sword,otext
*,sword,otext *, sword, ub4);
typedef sword (*OCI_02) (struct cda_def *,struct cda_def *,otext
*,sword,sword,otext *,sword);
typedef sword (*OCI_03) (struct cda_def *,otext *,sb4,sword,ub4); typedef sword (*OCI_04) (struct cda_def *); typedef sword (*OCI_05) (struct cda_def *,sb2,otext *,sword); typedef sword (*OCI_06) (struct cda_def *,ub1 *,otext *,sword,otext*,sword, sword);
typedef sword (*OCI_07) (struct cda_def *,ub1,otext *,sb4,ub1 *,sb4,sword,sword,sb2 *,ub2 *,ub2 *,sb4,sb4,sb4,sb4,ub4,ub4 *,otext *,sb4,sword);
typedef sword (*OCI_08) (struct cda_def *,otext *,sword,ub1 *,sword,sword,sword,sb2 *,ub2 *,ub2 *,ub4,ub4 *,otext *,sword,sword); typedef sword (*OCI_09) (struct cda_def *,sword,ub1*,sword,sword,sword,sb2 *,otext *,sword,sword); typedef sword (*OCI_10) (struct cda_def *,otext *,sword,ub1 *,sword,sword,sword,sb2 *,otext *,sword,sword); typedef sword (*OCI_11) (struct cda_def *,otext *,sword,ub1 *,sword,sword,sword,sb2 *,otext *,sword,sword); typedef sword (*OCI_12) (struct cda_def *,sword,ub1 *,sword,sword,sword,sb2 *,otext *,sword,sword,ub2 *,ub2 *); typedef sword (*OCI_13) (struct cda_def *,ub1,sword,ub1 *,sb4,sword,sword,sb2 *,otext *,sb4,sword,ub2 *,ub2 *,sb4,sb4,sb4,sb4);
typedef sword (*OCI_14) (struct cda_def *,sword,sb4 *,sb2 *,sb1 *,sb4 *,sb4 *,sb2 *,sb2 *,sb2 *);
typedef sword (*OCI_15) (struct cda_def *,otext *,size_t,ub1 *,size_t,ub1 *,size_t,ub2 *,ub2 *,ub2 *,otext **,ub2 *,ub2 *,ub1 *,ub1 *,ub4 *,sb2 *,sb2 *,ub1 *,ub4 *,ub4 *);
typedef sword (*OCI_16) (struct cda_def *,ub4,sword,sword); typedef sword (*OCI_17) (struct cda_def *,sword,sword); typedef sword (*OCI_18) (struct cda_def *,sword); typedef sword (*OCI_19) (struct cda_def *,sword,ub1 *,sb4,sword,ub4*,sb4);
typedef sword (*OCI_20) (struct cda_def *,sb1 *,dvoid **,eword *,eword *);
typedef sword (*OCI_21) (ub4); typedef sword (*OCI_22) (struct cda_def *,sb1,dvoid *,ub4 *); typedef dvoid (*OCI_23) (struct cda_def *,otext *,sb4 *); typedef dvoid (*OCI_24) (struct cda_def *); typedef sword (*OCI_25) (struct cda_def *,sword,sb2 *,sb2 *,sb2 *,sb2*,otext *,sb2 *,sb2 *);
typedef sword (*OCI_26) (ub2,otext *);
typedef sword (*OCI_27) (struct cda_def *,otext *, sword, otext *, sword, sword);
typedef sword (*OCI_28) (struct cda_def *,sword,sb1 *,sb2 *,sb1 *,sb2 *);
typedef sword (*OCI_29) (struct cda_def *,otext *, sword);
/*Funtion names*/
#define SZ_OBINDPS "obindps"
#define SZ_OBNDRA "obndra"
#define SZ_OBNDRN "obndrn"
#define SZ_OBNDRV "obndrv"
#define SZ_OBREAK "obreak"
#define SZ_OCAN "ocan"
#define SZ_OCLOSE "oclose"
#define SZ_OCOF "ocof"
#define SZ_OCOM "ocom"
#define SZ_OCON "ocon"
#define SZ_ODEFIN "odefin"
#define SZ_ODEFINPS "odefinps"
#define SZ_ODSC "odsc"
#define SZ_ODESCR "odescr"
#define SZ_ODESSP "odessp"
#define SZ_OERHMS "oerhms"
#define SZ_OERMSG "oermsg"
#define SZ_OEXEC "oexec"
#define SZ_OEXFET "oexfet"
#define SZ_OEXN "oexn"
#define SZ_OFEN "ofen"
#define SZ_OFETCH "ofetch"
#define SZ_OFLNG "oflng"
#define SZ_OGETPI "ogetpi"
#define SZ_OLOG "olog"
#define SZ_OLOGOF "ologof"
#define SZ_OLON "olon"
#define SZ_ONAME "oname"
#define SZ_ONBCLR "onbclr"
#define SZ_ONBSET "onbset"
#define SZ_ONBTST "onbtst"
#define SZ_OOPEN "oopen"
#define SZ_OOPT "oopt"
#define SZ_ORLON "orlon"
#define SZ_OPARSE "oparse"
#define SZ_OPINIT "opinit"
#define SZ_OROL "orol"
#define SZ_OSETPI "osetpi"
#define SZ_OSQL3 "osql3"
#define SZ_OSQLLD2 "sqlld2"
#define SZ_OSQLLDA "sqllda"
class WOCI {
public:
enum OCIHandles {
E_obindps,
E_obndra,
E_obndrn,
E_obndrv,
E_obreak,
E_ocan,
E_oclose,
E_ocof,
E_ocom,
E_ocon,
E_odefin,
E_odefinps,
E_odsc,
E_odescr,
E_odessp,
E_oerhms,
E_oermsg,
E_oexec,
E_oexfet,
E_oexn,
E_ofen,
E_ofetch,
E_oflng,
E_ogetpi,
E_olog,
E_ologof,
E_olon,
E_oname,
E_onbclr,
E_onbset,
E_onbtst,
E_oopen,
E_oopt,
E_orlon,
E_oparse,
E_opinit,
E_orol,
E_osetpi,
E_osql3,
E_sqlld2,
E_sqllda,
E_End,
};
/* OCI Function Pointer Declarations */
OCI_07 o_bindps; OCI_08 o_bndra; OCI_09 o_bndrn; OCI_10 o_bndrv; OCI_04 o_break; OCI_04 o_can; OCI_04 o_close; OCI_04 o_cof; OCI_04 o_com; OCI_04 o_con; OCI_12 o_defin; OCI_13 o_definps; OCI_25 o_dsc; OCI_14 o_descr; OCI_15 o_dessp; OCI_05 o_erhms; OCI_26 o_ermsg; OCI_04 o_exec; OCI_16 o_exfet; OCI_17 o_exn; OCI_18 o_fen; OCI_04 o_fetch; OCI_19 o_flng; OCI_20 o_getpi; OCI_01 o_log; OCI_04 o_logof; OCI_27 o_lon; OCI_28 o_name; OCI_04 o_nbclr; OCI_04 o_nbset; OCI_04 o_nbtst; OCI_02 o_open; OCI_17 o_opt; OCI_06 o_rlon; OCI_03 o_parse; OCI_21 o_pinit; OCI_04 o_rol; OCI_22 o_setpi; OCI_29 o_sql3; OCI_23 o_sqlld2; OCI_24 o_sqllda;
//instance handle for OCI DLL
HINSTANCE hOCI;
//version of OCI loaded
int m_ver;
char m_msg[512];
public:
WOCI();
WOCI(int);
virtual ~WOCI();
int InitOCI(int ver = 0);
void DeinitOCI(void);
sword obindps(struct cda_def *cursor,ub1 opcode,otext
*sqlvar,sb4 sqlvl,ub1 *pvctx,sb4 progvl,sword ftype,sword scale,sb2
*indp,ub2 *alenp,ub2 *rcodep,sb4 pv_skip,sb4 ind_skip,sb4
alen_skip,sb4 rc_skip,ub4 maxsiz,ub4 *cursiz,otext *fmt,sb4 fmtl,sword
fmtt);
sword obndra(struct cda_def *cursor,otext *sqlvar,sword sqlvl,ub1 *progv,sword progvl,sword ftype,sword scale,sb2 *indp,ub2 *alen,ub2 *arcode,ub4 maxsiz,ub4 *cursiz,otext *fmt,sword fmtl,sword fmtt);
sword obndrn(struct cda_def *cursor,sword sqlvn,ub1 *progv,sword progvl,sword ftype,sword scale,sb2 *indp,otext *fmt,sword fmtl,sword fmtt);
sword obndrv(struct cda_def *cursor,otext *sqlvar,sword sqlvl,ub1 *progv,sword progvl,sword ftype,sword scale,sb2 *indp,otext *fmt,sword fmtl,sword fmtt);
sword obreak(struct cda_def *lda);
sword ocan(struct cda_def *cursor);
sword oclose(struct cda_def *cursor);
sword ocof(struct cda_def *lda);
sword ocom(struct cda_def *lda);
sword ocon(struct cda_def *lda);
sword odefin(struct cda_def *cursor,sword pos,ub1 *buf,sword
buf1,sword ftype,sword scale,sb2 *indp,otext *fmt,sword fmtl,sword
fmtt,ub2 *rlen,ub2 *rcode);
sword odefinps(struct cda_def *cursor,ub1 opcode,sword pos,ub1 *bufctx,sb4 bufl,sword ftype,sword scale,sb2 *indp,otext *fmt,sb4 fmtl,sword fmtt,ub2 *rlenp,ub2 *rcodep,sb4 buf_skip,sb4 ind_skip,sb4 len_skip,sb4 rc_skip);
sword odsc(struct cda_def *cursor,sword pos,sb2 *dbsize,sb2 *fsize,sb2 *rcode,sb2 *dbtype,otext *cbuf,sb2 *cbufl,sb2 *dsize);
sword odescr(struct cda_def *cursor,sword pos,sb4 *dbsize,sb2 *dbtype,sb1 *cbuf,sb4 *cbufl,sb4 *dsize,sb2 *prec,sb2 *scale,sb2 *nullok);
sword odessp(struct cda_def *lda,otext *objnam,size_t onlen,ub1 *rsv1,size_t rsv1ln,ub1 *rsv2,size_t rsv2ln,ub2 *ovrld,ub2
*pos,ub2 *level,otext **argnm,ub2 *arnlen,ub2 *dtype,ub1 *defsup,ub1
*mode,ub4 *dtsiz,sb2 *prec,sb2 *scale,ub1 *radix,ub4 *spare,ub4
*arrsiz);
sword oerhms(struct cda_def *lda,sb2 rcode,otext *buf,sword
bufsiz);
sword oermsg(ub2 rcode,otext *msg);
sword oexec(struct cda_def *cursor);
sword oexfet(struct cda_def *cursor,ub4 nrows,sword
cancel,sword exact);
sword oexn(struct cda_def *cursor,sword iters,sword rowoff);
sword ofen(struct cda_def *cursor,sword nrows);
sword ofetch(struct cda_def *cursor);
sword oflng(struct cda_def *cursor,sword pos,ub1 *buf,sb4
bufl,sword dtype,ub4 *retl,sb4 offset);
sword ogetpi(struct cda_def *cursor,sb1 *piecep,dvoid
**ctxpp,eword *iterp,eword *indexp);
sword olog(struct cda_def *lda,ub1 *hda,otext *uid,sword
uidl,otext *pswd,sword pswdl,otext *conn, sword connl, ub4 mode);
sword ologof(struct cda_def *lda);
sword olon(struct cda_def *lda,otext *uid, sword uidl, otext
*pswd, sword pswdl, sword audit);
sword oname(struct cda_def *cursor,sword pos,sb1 *tbuf,sb2
*tubfl,sb1 *cbuf,sb2 *cbufl);
sword onbclr(struct cda_def *lda);
sword onbset(struct cda_def *lda);
sword onbtst(struct cda_def *lda);
sword oopen(struct cda_def *cursor,struct cda_def *lda,otext
*dbn,sword dbnl,sword arsize,otext *uid,sword uidl);
sword oopt(struct cda_def *cursor,sword rbopt,sword waitopt);
sword orlon(struct cda_def *lda,ub1 *hda,otext *uid,sword
uidl,otext *pswd,sword pswdl, sword audit);
sword oparse(struct cda_def *cursor,otext *sqlstm,sb4
sqll,sword defflg,ub4 lngflg);
sword opinit(ub4 mode);
sword orol(struct cda_def *lda);
sword osetpi(struct cda_def *cursor,sb1 piece,dvoid *bufp,ub4
*lenp);
sword osql3(struct cda_def *cursor,otext *sqlstm, sword sqll);
dvoid sqlld2(struct cda_def *lda,otext *cname,sb4 *cnlen);
dvoid sqllda(struct cda_def *lda);
const char *GetError(struct cda_def *lda, struct cda_def *cda);
private:
void Initialize(int ver = 0, char *fname = NULL);
};
#endif
//******************************* END WOCI.H
*********************************
/******************************* BEGIN WOCI.CPP
*********************************
A simple class to encapsulate dynamically loading the OCI...
A good starting point for something more complex if you need.
********************************************************************************/
#include <windows.h>
#include "WOCI.h"
#define CHKFNPTR(p,s) if (p == NULL) {}
#define GPA(m,p,t,n,i) p = (t) GetProcAddress(m,n); \
CHKFNPTR(p,i)
WOCI::WOCI()
{
Initialize();
}
WOCI::WOCI(int ver)
{
Initialize(ver);
}
WOCI::~WOCI()
{
DeinitOCI();
}
void WOCI::Initialize(int ver, char *fname) {
o_bindps = NULL;
o_bndra = NULL;
o_bndrn = NULL;
o_bndrv = NULL;
o_break = NULL;
o_can = NULL;
o_close = NULL;
o_cof = NULL;
o_com = NULL;
o_con = NULL;
o_defin = NULL;
o_definps = NULL;
o_dsc = NULL;
o_descr = NULL;
o_dessp = NULL;
o_erhms = NULL;
o_ermsg = NULL;
o_exec = NULL;
o_exfet = NULL;
o_exn = NULL;
o_fen = NULL;
o_fetch = NULL;
o_flng = NULL;
o_getpi = NULL;
o_log = NULL;
o_logof = NULL;
o_lon = NULL;
o_name = NULL;
o_nbclr = NULL;
o_nbset = NULL;
o_nbtst = NULL;
o_open = NULL;
o_opt = NULL;
o_rlon = NULL;
o_parse = NULL;
o_pinit = NULL;
o_rol = NULL;
o_setpi = NULL;
o_sql3 = NULL;
o_sqlld2 = NULL;
o_sqllda = NULL;
m_ver = InitOCI(ver);
}
int WOCI::InitOCI(int ver)
{
int i;
hOCI = NULL;
switch(ver) { //load an OCI interface DLL
case 0:
hOCI = LoadLibrary("ORA73.DLL");
i = 73;
if(hOCI == NULL) {
hOCI = LoadLibrary("ORA72.DLL");
i = 72;
if(hOCI == NULL) {
hOCI = LoadLibrary("ORANT71.DLL");
i = 71;
if(hOCI == NULL) {
hOCI =
LoadLibrary("ORA7NT.DLL");
i = 70;
}
}
}
break;
case 70:
hOCI = LoadLibrary("ORA7NT.DLL");
i = 70;
break;
case 71:
hOCI = LoadLibrary("ORANT71.DLL");
i = 71;
break;
case 72:
hOCI = LoadLibrary("ORA72.DLL");
i = 72;
break;
case 73:
hOCI = LoadLibrary("ORA73.DLL");
i = 73;
break;
}
if(hOCI==NULL)
return 0;
ver = i;
switch(ver) { //now load function entry points for
OCI
case 73: //piecewise manipulation extensions
GPA(hOCI,o_bindps,OCI_07,SZ_OBINDPS,E_obindps)
GPA(hOCI,o_definps,OCI_13,SZ_ODEFINPS,E_odefinps)
GPA(hOCI,o_getpi,OCI_20,SZ_OGETPI,E_ogetpi)
GPA(hOCI,o_pinit,OCI_21,SZ_OPINIT,E_opinit)
GPA(hOCI,o_setpi,OCI_22,SZ_OSETPI,E_osetpi)
case 72: //non-blocking extensions
GPA(hOCI,o_log,OCI_01,SZ_OLOG,E_olog)
GPA(hOCI,o_nbclr,OCI_04,SZ_ONBCLR,E_onbclr)
GPA(hOCI,o_nbset,OCI_04,SZ_ONBSET,E_onbset)
GPA(hOCI,o_nbtst,OCI_04,SZ_ONBTST,E_onbtst)
case 71: //no significant changes
case 70: //base
GPA(hOCI,o_bndra,OCI_08,SZ_OBNDRA,E_obndra)
GPA(hOCI,o_bndrn,OCI_09,SZ_OBNDRN,E_obndrn)
GPA(hOCI,o_bndrv,OCI_10,SZ_OBNDRV,E_obndrv)
GPA(hOCI,o_break,OCI_04,SZ_OBREAK,E_obreak)
GPA(hOCI,o_can,OCI_04,SZ_OCAN,E_ocan)
GPA(hOCI,o_close,OCI_04,SZ_OCLOSE,E_oclose)
GPA(hOCI,o_cof,OCI_04,SZ_OCOF,E_ocof)
GPA(hOCI,o_com,OCI_04,SZ_OCOM,E_ocom)
GPA(hOCI,o_con,OCI_04,SZ_OCON,E_ocon)
GPA(hOCI,o_defin,OCI_12,SZ_ODEFIN,E_odefin)
GPA(hOCI,o_descr,OCI_14,SZ_ODESCR,E_odescr)
GPA(hOCI,o_dessp,OCI_15,SZ_ODESSP,E_odessp)
GPA(hOCI,o_erhms,OCI_05,SZ_OERHMS,E_oerhms)
GPA(hOCI,o_exec,OCI_04,SZ_OEXEC,E_oexec)
GPA(hOCI,o_exfet,OCI_16,SZ_OEXFET,E_oexfet)
GPA(hOCI,o_exn,OCI_17,SZ_OEXN,E_oexn)
GPA(hOCI,o_fen,OCI_18,SZ_OFEN,E_ofen)
GPA(hOCI,o_fetch,OCI_04,SZ_OFETCH,E_ofetch)
GPA(hOCI,o_flng,OCI_19,SZ_OFLNG,E_oflng)
GPA(hOCI,o_logof,OCI_04,SZ_OLOGOF,E_ologof)
GPA(hOCI,o_open,OCI_02,SZ_OOPEN,E_oopen)
GPA(hOCI,o_opt,OCI_17,SZ_OOPT,E_oopt)
GPA(hOCI,o_rlon,OCI_06,SZ_ORLON,E_orlon)
GPA(hOCI,o_parse,OCI_03,SZ_OPARSE,E_oparse)
GPA(hOCI,o_rol,OCI_04,SZ_OROL,E_orol)
// GPA(hOCI,o_sqlld2,OCI_23,SZ_OSQLLD2)
// GPA(hOCI,o_sqllda,OCI_24,SZ_OSQLLDA)
//actually v 6
GPA(hOCI,o_sql3,OCI_29,SZ_OSQL3,E_osql3)
GPA(hOCI,o_name,OCI_28,SZ_ONAME,E_oname)
GPA(hOCI,o_dsc,OCI_25,SZ_ODSC,E_odsc)
GPA(hOCI,o_lon,OCI_27,SZ_OLON,E_olon)
GPA(hOCI,o_ermsg,OCI_26,SZ_OERMSG,E_oermsg)
break;
}
return ver;
}
void WOCI::DeinitOCI()
{
o_bindps = NULL;
o_bndra = NULL;
o_bndrn = NULL;
o_bndrv = NULL;
o_break = NULL;
o_can = NULL;
o_close = NULL;
o_cof = NULL;
o_com = NULL;
o_con = NULL;
o_defin = NULL;
o_definps = NULL;
o_dsc = NULL;
o_descr = NULL;
o_dessp = NULL;
o_erhms = NULL;
o_ermsg = NULL;
o_exec = NULL;
o_exfet = NULL;
o_exn = NULL;
o_fen = NULL;
o_fetch = NULL;
o_flng = NULL;
o_getpi = NULL;
o_log = NULL;
o_logof = NULL;
o_lon = NULL;
o_name = NULL;
o_nbclr = NULL;
o_nbset = NULL;
o_nbtst = NULL;
o_open = NULL;
o_opt = NULL;
o_rlon = NULL;
o_parse = NULL;
o_pinit = NULL;
o_rol = NULL;
o_setpi = NULL;
o_sql3 = NULL;
o_sqlld2 = NULL;
o_sqllda = NULL;
FreeLibrary(hOCI);
}
//public interface
sword WOCI::obindps(struct cda_def *cursor,ub1 opcode,otext *sqlvar,sb4 sqlvl,ub1 *pvctx,sb4 progvl,sword ftype,sword scale,sb2 *indp,ub2 *alenp,ub2 *rcodep,sb4 pv_skip,sb4 ind_skip,sb4 alen_skip,sb4 rc_skip,ub4 maxsiz,ub4 *cursiz,otext *fmt,sb4 fmtl,sword fmtt)
{
return
(o_bindps)(cursor,opcode,sqlvar,sqlvl,pvctx,progvl,ftype,scale,indp,alenp,rcodep,pv_skip,ind_skip,alen_skip,rc_skip,maxsiz,cursiz,fmt,fmtl,fmtt);
}
sword WOCI::obndra(struct cda_def *cursor,otext *sqlvar,sword
sqlvl,ub1 *progv,sword progvl,sword ftype,sword scale,sb2 *indp,ub2
*alen,ub2 *arcode,ub4 maxsiz,ub4 *cursiz,otext *fmt,sword fmtl,sword
fmtt)
{
return
(o_bndra)(cursor,sqlvar,sqlvl,progv,progvl,ftype,scale,indp,alen,arcode,maxsiz,cursiz,fmt,fmtl,fmtt);
}
sword WOCI::obndrn(struct cda_def *cursor,sword sqlvn,ub1 *progv,sword
progvl,sword ftype,sword scale,sb2 *indp,otext *fmt,sword fmtl,sword
fmtt)
{
return
(o_bndrn)(cursor,sqlvn,progv,progvl,ftype,scale,indp,fmt,fmtl,fmtt);
}
sword WOCI::obndrv(struct cda_def *cursor,otext *sqlvar,sword
sqlvl,ub1 *progv,sword progvl,sword ftype,sword scale,sb2 *indp,otext
*fmt,sword fmtl,sword fmtt)
{
return
(o_bndrv)(cursor,sqlvar,sqlvl,progv,progvl,ftype,scale,indp,fmt,fmtl,fmtt);
}
sword WOCI::obreak(struct cda_def *lda)
{
return (o_break)(lda);
}
sword WOCI::ocan(struct cda_def *cursor) {
return (o_can)(cursor);
}
sword WOCI::oclose(struct cda_def *cursor) {
return (o_close)(cursor);
}
sword WOCI::ocof(struct cda_def *lda)
{
return (o_cof)(lda);
}
sword WOCI::ocom(struct cda_def *lda)
{
return (o_com)(lda);
}
sword WOCI::ocon(struct cda_def *lda)
{
return (o_con)(lda);
}
sword WOCI::odefin(struct cda_def *cursor,sword pos,ub1 *buf,sword
bufl,sword ftype,sword scale,sb2 *indp,otext *fmt,sword fmtl,sword
fmtt,ub2 *rlen,ub2 *rcode)
{
return
(o_defin)(cursor,pos,buf,bufl,ftype,scale,indp,fmt,fmtl,fmtt,rlen,rcode);
}
sword WOCI::odefinps(struct cda_def *cursor,ub1 opcode,sword pos,ub1
*bufctx,sb4 bufl,sword ftype,sword scale,sb2 *indp,otext *fmt,sb4
fmtl,sword fmtt,ub2 *rlenp,ub2 *rcodep,sb4 buf_skip,sb4 ind_skip,sb4
len_skip,sb4 rc_skip)
{
return
(o_definps)(cursor,opcode,pos,bufctx,bufl,ftype,scale,indp,fmt,fmtl,fmtt,rlenp,rcodep,buf_skip,ind_skip,len_skip,rc_skip);
}
sword WOCI::odsc(struct cda_def *cursor,sword pos,sb2 *dbsize,sb2 *fsize,
sb2 *rcode,sb2 *dbtype,otext
*cbuf,sb2 *cbufl,sb2 *dsize)
{
return
(o_dsc)(cursor,pos,dbsize,fsize,rcode,dbtype,cbuf,cbufl,dsize);
}
sword WOCI::odescr(struct cda_def *cursor,sword pos,sb4 *dbsize,sb2
*dbtype,sb1 *cbuf,sb4 *cbufl,sb4 *dsize,sb2 *prec,sb2 *scale,sb2
*nullok)
{
return
(o_descr)(cursor,pos,dbsize,dbtype,cbuf,cbufl,dsize,prec,scale,nullok);
}
sword WOCI::odessp(struct cda_def *lda,otext *objnam,size_t onlen,ub1
*rsv1,size_t rsv1ln,ub1 *rsv2,size_t rsv2ln,ub2 *ovrld,ub2 *pos,ub2
*level,otext **argnm,ub2 *arnlen,ub2 *dtype,ub1 *defsup,ub1 *mode,ub4
*dtsiz,sb2 *prec,sb2 *scale,ub1 *radix,ub4 *spare,ub4 *arrsiz)
{
return
(o_dessp)(lda,objnam,onlen,rsv1,rsv1ln,rsv2,rsv2ln,ovrld,pos,level,argnm,arnlen,dtype,defsup,mode,dtsiz,prec,scale,radix,spare,arrsiz); }
sword WOCI::oerhms(struct cda_def *lda,sb2 rcode,otext *buf,sword
bufsiz)
{
return (o_erhms)(lda,rcode,buf,bufsiz); }
sword WOCI::oermsg(ub2 rcode,otext *msg) {
return (o_ermsg)(rcode,msg);
}
sword WOCI::oexec(struct cda_def *cursor) {
return (o_exec)(cursor);
}
sword WOCI::oexfet(struct cda_def *cursor,ub4 nrows,sword cancel,sword
exact)
{
return (o_exfet)(cursor,nrows,cancel,exact); }
sword WOCI::oexn(struct cda_def *cursor,sword iters,sword rowoff) {
return (o_exn)(cursor,iters,rowoff); }
sword WOCI::ofen(struct cda_def *cursor,sword nrows) {
return (o_fen)(cursor,nrows);
}
sword WOCI::ofetch(struct cda_def *cursor) {
return (o_fetch)(cursor);
}
sword WOCI::oflng(struct cda_def *cursor,sword pos,ub1 *buf,sb4
bufl,sword dtype,ub4 *retl,sb4 offset)
{
return (o_flng)(cursor,pos,buf,bufl,dtype,retl,offset); }
sword WOCI::ogetpi(struct cda_def *cursor,sb1 *piecep,dvoid
**ctxpp,eword *iterp,eword *indexp)
{
return (o_getpi)(cursor,piecep,ctxpp,iterp,indexp); }
sword WOCI::olog(struct cda_def *lda,ub1 *hda,otext *uid,sword uidl,otext *pswd,sword pswdl,otext *conn, sword connl, ub4 mode) {
return (o_log)(lda,hda,uid,uidl,pswd,pswdl,conn,connl,mode);
}
sword WOCI::ologof(struct cda_def *lda)
{
return (o_logof)(lda);
}
sword WOCI::olon(struct cda_def *lda,otext *uid, sword uidl, otext
*pswd,sword pswdl, sword audit)
{
return (o_lon)(lda,uid,uidl,pswd,pswdl,audit); }
sword WOCI::oname(struct cda_def *cursor,sword pos,sb1 *tbuf,sb2
*tubfl,sb1 *cbuf,sb2 *cbufl)
{
return (o_name)(cursor,pos,tbuf,tubfl,cbuf,cbufl); }
sword WOCI::onbclr(struct cda_def *lda)
{
return (o_nbclr)(lda);
}
sword WOCI::onbset(struct cda_def *lda)
{
return (o_nbset)(lda);
}
sword WOCI::onbtst(struct cda_def *lda)
{
return (o_nbtst)(lda);
}
sword WOCI::oopen(struct cda_def *cursor,struct cda_def *lda,otext *dbn,sword dbnl,sword arsize,otext *uid,sword uidl) {
return (o_open)(cursor,lda,dbn,dbnl,arsize,uid,uidl); }
sword WOCI::oopt(struct cda_def *cursor,sword rbopt,sword waitopt) {
return (o_opt)(cursor,rbopt,waitopt); }
sword WOCI::orlon(struct cda_def *lda,ub1 *hda,otext *uid,sword uidl,otext *pswd,sword pswdl, sword audit) {
return (o_rlon)(lda,hda,uid,uidl,pswd,pswdl,audit); }
sword WOCI::oparse(struct cda_def *cursor,otext *sqlstm,sb4 sqll,sword
defflg,ub4 lngflg)
{
return (o_parse)(cursor,sqlstm,sqll,defflg,lngflg); }
sword WOCI::opinit(ub4 mode)
{
return (o_pinit)(mode);
}
sword WOCI::orol(struct cda_def *lda)
{
return (o_rol)(lda);
}
sword WOCI::osetpi(struct cda_def *cursor,sb1 piece,dvoid *bufp,ub4
*lenp)
{
return (o_setpi)(cursor,piece,bufp,lenp); }
sword WOCI::osql3(struct cda_def *cursor,otext *sqlstm, sword sqll) {
return (o_sql3)(cursor,sqlstm,sqll); }
dvoid WOCI::sqlld2(struct cda_def *lda,otext *cname,sb4 *cnlen) {
(o_sqlld2)(lda,cname,cnlen);
}
dvoid WOCI::sqllda(struct cda_def *lda)
{
(o_sqllda)(lda);
}
const char *WOCI::GetError(struct cda_def *lda, struct cda_def *cda) {
memset(m_msg,0,512);
oerhms(lda, cda->rc, (unsigned char *)m_msg,
(sizeof(m_msg)-1));
return m_msg;
}
#undef CHKFNPTR
#undef GPA
//******************************* END WOCI.CPP *********************************Received on Fri Jan 23 1998 - 00:00:00 CET
