增加instant client for osx 64位版本
diff --git a/sdk/include/ocidef.h b/sdk/include/ocidef.h
new file mode 100644
index 0000000..9fde50b
--- /dev/null
+++ b/sdk/include/ocidef.h
@@ -0,0 +1,886 @@
+/* Copyright (c) 1981, 2005, Oracle. All rights reserved. */
+/* Copyright (c) 1984, 2005, Oracle. All rights reserved. */
+
+/*
+NAME
+ ocidef
+CONTENTS
+ Oracle Call Interface cursor area and LDA definitions
+NOTES
+ none
+OWNER
+ Oates
+DATE
+ 09/07/82
+MODIFIED
+ mbastawa 09/16/05 - dbhygiene
+ dmukhin 06/29/05 - ANSI prototypes; miscellaneous cleanup
+ srseshad 03/25/03 - convert oci public api to ansi
+ csteinba 11/05/02 - bug 2521931: redefine OTYACL
+ aahluwal 06/03/02 - bug 2360115
+ bpalaval 02/08/01 - Change text to oratext.
+ chliang 02/01/01 - fix olint error.
+ bpalaval 11/16/00 - Bug 1244685 : Fix ALTER CLUSTER issue..
+ slari 11/08/00 - remove functions duplicated in ociapr.h
+ whe 09/01/99 - 976457:check __cplusplus for C++ code
+ skmishra 04/23/97 - Provide C++ compatibility
+ lchidamb 06/26/96 - put upidef.h, riddef.h within #ifndef
+ slari 06/12/96 - add ocigft_getFcnType
+ dchatter 11/10/95 - ocignfd - oci get native file descriptor
+ slari 05/11/95 - change OCIEVDEF/OCIEVTSF to UPIEVDEF/UPIEVTSF
+ dchatter 04/06/95 - add ifdef flags around OCI_flags
+ lchidamb 04/06/95 - drop maxdsz from ocibndps/ocidfnps
+ slari 04/07/95 - rename opinit to ocipin
+ slari 03/13/95 - thread safety changes
+ dchatter 03/08/95 - piece definitions OCI_*_PIECE
+ lchidamb 12/06/94 - add support for binding/defining with skips
+ dchatter 03/06/95 - merge changes from branch 1.12.720.1
+ dchatter 02/06/95 - add defines for login mode parameters
+ dchatter 07/06/94 - Deleting CRSCHK, with refcursor, no way to set this
+ dchatter 06/13/94 - add a new LDA flag LDANBL
+ rkooi 11/18/92 - update ocidpr interface
+ mmoore 10/31/92 - add ocidpr
+ gpongrac 11/17/92 - fix oexfet prototype
+ sjain 01/03/92 - Add ocibra
+ rjenkins 11/04/91 - adding prototypes for oparse and oexfet
+ sjain 04/15/91 - Change ocistf proto
+ sjain 04/01/91 - Rearrange oty codes. Add new ones
+ Jain 12/03/90 - Add #define for new describe call
+ Jain 11/29/90 - Add new function code for the new oci calls
+ Mendels 01/20/89 - fix 19170: make ocitbl CONST_DATA
+ Kabcene 01/27/88 - change interfaces to match V5
+ Navab 12/09/87 - add a parameter to ocierr call
+ Navab 11/30/87 - add ocierr, rename ocioer
+ Navab 10/08/87 - add prototypes for procedure declarations
+ Howard 09/07/87 - endif blah
+ Howard 05/11/87 - Add OTY types
+ Howard 04/27/87 - move ocldef defines here
+ Oates 10/15/85 - Add OCANCEL
+ Oates 09/30/85 - Implement ORA*Net
+ Oates 06/27/85 - Make datatype compatible with upidef.h
+ Andy 05/07/85 - delete CSRFBPIC
+*/
+
+#ifndef UPIDEF
+#include <upidef.h>
+#endif
+
+#ifndef RIDDEF
+#include <riddef.h>
+#endif
+
+#include <ociapr.h>
+
+#ifndef OCIDEF
+#define OCIDEF
+
+
+#define CSRCHECK 172 /* csrdef is a cursor */
+#define LDACHECK 202 /* csrdef is a login data area */
+struct csrdef
+{
+ sb2 csrrc; /* return code: v2 codes, v4 codes negative */
+ ub2 csrft; /* function type */
+ ub4 csrrpc; /* rows processed count */
+ ub2 csrpeo; /* parse error offset */
+ ub1 csrfc; /* function code */
+ ub1 csrlfl; /* lda flag to indicate type of login */
+ ub2 csrarc; /* actual untranslated return code */
+ ub1 csrwrn; /* warning flags */
+ ub1 csrflg; /* error action */
+ sword csrcn; /* cursor number */
+ riddef csrrid; /* rowid structure */
+ sword csrose; /* os dependent error code */
+ ub1 csrchk; /* check byte = CSRCHECK - in cursor */
+ /* check byte = LDACHECK - in LDA */
+ struct hstdef *csrhst; /* pointer to the hst */
+};
+typedef struct csrdef csrdef;
+typedef struct csrdef ldadef; /* lda is the same as a csr */
+
+
+/* values for csrlfl */
+#define LDAFLG 1 /* ...via ologon */
+#define LDAFLO 2 /* ...via olon or orlon */
+#define LDANBL 3 /* ...nb logon in progress */
+
+/* valuses for crsfc */
+#define csrfpa 2 /* ...OSQL */
+#define csrfex 4 /* ...OEXEC */
+#define csrfbi 6 /* ...OBIND */
+#define csrfdb 8 /* ...ODFINN */
+#define csrfdi 10 /* ...ODSRBN */
+#define csrffe 12 /* ...OFETCH */
+#define csrfop 14 /* ...OOPEN */
+#define csrfcl 16 /* ...OCLOSE */
+#define csrfds 22 /* ...ODSC */
+#define csrfnm 24 /* ...ONAME */
+#define csrfp3 26 /* ...OSQL3 */
+#define csrfbr 28 /* ...OBNDRV */
+#define csrfbx 30 /* ...OBNDRN */
+/*#defe csrfdf 32*/ /* ???? */
+#define csrfso 34 /* ...OOPT */
+#define csrfre 36 /* ...ORESUM */
+#define csrfbn 50 /* ...OBINDN */
+#define csrfca 52 /* ..OCANCEL */
+#define csrfsd 54 /* ..OSQLD */
+#define csrfef 56 /* ..OEXFEN */
+#define csrfln 58 /* ..OFLNG */
+#define csrfdp 60 /* ..ODSCSP */
+#define csrfba 62 /* ..OBNDRA */
+#define csrfbps 63 /*..OBINDPS */
+#define csrfdps 64 /*..ODEFINPS */
+#define csrfgpi 65 /* ...OGETPI */
+#define csrfspi 66 /* ...OSETPI */
+
+/* values for csrwrn */
+#define CSRWANY 0x01 /* there is a warning flag set */
+#define CSRWTRUN 0x02 /* a data item was truncated */
+#define CSRWNVIC 0x04 /* NULL values were used in an aggregate function */
+#define CSRWITCE 0x08 /* column count not equal to into list count */
+#define CSRWUDNW 0x10 /* update or delete without where clause */
+#define CSRWRSV0 0x20
+#define CSRWROLL 0x40 /* rollback required */
+#define CSRWRCHG 0x80 /* change after query start on select for update */
+
+/* values fro csrflg */
+#define CSRFSPND 0x01 /* current operation suspended */
+#define CSRFATAL 0x02 /* fatal operation: transaction rolled back */
+#define CSRFBROW 0x04 /* current row backed out */
+#define CSRFREFC 0x08 /* ref cursor type CRSCHK disabled for this cursor */
+#define CSRFNOAR 0x10 /* ref cursor type binds, so no array bind/execute */
+
+/* define function codes; in order of octdef.h */
+#define OTYCTB 1 /* CREATE TABLE */
+#define OTYSER 2 /* set role */
+#define OTYINS 3 /* INSERT */
+#define OTYSEL 4 /* SELECT */
+#define OTYUPD 5 /* UPDATE */
+#define OTYDRO 6 /* drop role */
+#define OTYDVW 7 /* DROP VIEW */
+ /* once was validate index */
+ /* once was create partition */
+ /* once was alter partition */
+#define OTYDTB 8 /* DROP TABLE */
+ /* once was alter space */
+ /* once was drop space */
+#define OTYDEL 9 /* DELETE */
+#define OTYCVW 10 /* create view */
+#define OTYDUS 11 /* drop user */
+#define OTYCRO 12 /* create role */
+#define OTYCSQ 13 /* create sequence */
+#define OTYASQ 14 /* alter sequence */
+#define OTYACL 15 /* alter cluster */
+#define OTYDSQ 16 /* drop sequence */
+#define OTYCSC 17 /* create schema */
+#define OTYCCL 18 /* CREATE CLUSTER */
+ /* once was alter cluster */
+#define OTYCUS 19 /* create user */
+#define OTYCIX 20 /* CREATE INDEX */
+#define OTYDIX 21 /* DROP INDEX */
+#define OTYDCL 22 /* DROP CLUSTER */
+#define OTYVIX 23 /* validate index */
+#define OTYCPR 24 /* create procedure */
+#define OTYAPR 25 /* alter procedure */
+#define OTYATB 26 /* alter table */
+ /* once was evaluate */
+#define OTYXPL 27 /* explain */
+#define OTYGRA 28 /* grant */
+#define OTYREV 29 /* revoke */
+#define OTYCSY 30 /* create synonym */
+#define OTYDSY 31 /* drop synonym */
+#define OTYASY 32 /* alter system switch log */
+#define OTYSET 33 /* set transaction */
+#define OTYPLS 34 /* pl/sql execute */
+#define OTYLTB 35 /* lock */
+#define OTYNOP 36 /* noop */
+#define OTYRNM 37 /* rename */
+#define OTYCMT 38 /* comment */
+#define OTYAUD 39 /* audit */
+#define OTYNOA 40 /* no audit */
+#define OTYAIX 41 /* ALTER INDEX */
+#define OTYCED 42 /* create external database */
+#define OTYDED 43 /* drop external database */
+#define OTYCDB 44 /* create database */
+#define OTYADB 45 /* alter database */
+#define OTYCRS 46 /* create rollback segment */
+#define OTYARS 47 /* alter rollback segment */
+#define OTYDRS 48 /* drop rollback segment */
+#define OTYCTS 49 /* create tablespace */
+#define OTYATS 50 /* alter tablespace */
+#define OTYDTS 51 /* drop tablespace */
+#define OTYASE 52 /* alter session */
+#define OTYAUR 53 /* alter user */
+#define OTYCWK 54 /* commit (work) */
+#define OTYROL 55 /* rollback */
+#define OTYSPT 56 /* savepoint */
+
+/* For number greater than 56 the the type is the same as defined in
+** octdef.h for that number. So for completion look at octdef.h
+*/
+
+#define OTYDEV OTYCVW /* old DEFINE VIEW = create view */
+
+/* FUNCTION CODES */
+#define OCLFPA 2 /* parse - OSQL */
+#define OCLFEX 4 /* execute - OEXEC */
+#define OCLFBI 6 /* BIND by name - OBIND */
+#define OCLFDB 8 /* define buffer - ODEFIN */
+#define OCLFDI 10 /* describe item - ODSC */
+#define OCLFFE 12 /* fetch - OFETCH */
+#define OCLFOC 14 /* open cursor - OOPEN */
+# define OCLFLI OCLFOC /* old name for open cursor - OOPEN */
+#define OCLFCC 16 /* close cursor - OCLOSE */
+# define OCLFLO OCLFCC /* old name for close cursor - OCLOSE */
+#define OCLFDS 22 /* describe - ODSC */
+#define OCLFON 24 /* get table and column names - ONAME */
+#define OCLFP3 26 /* parse - OSQL3 */
+#define OCLFBR 28 /* bind reference by name - OBNDRV */
+#define OCLFBX 30 /* bind referecne numeric - OBNDRN */
+#define OCLFSO 34 /* special function - OOPT */
+#define OCLFRE 36 /* resume - ORESUM */
+#define OCLFBN 50 /* bindn */
+#define OCLFMX 52 /* maximum function number */
+
+#ifdef NEVER /* unused codes */
+# define OCLFLK 18 /* open for kernel operations */
+# define OCLFEK 20 /* execute kernel operations */
+# define OCLFOK 22 /* kernel close */
+# define OCLFIN 28 /* logon to oracle */
+# define OCLFOF 30 /* logoff from oracle */
+# define OCLFAX 32 /* allocate a context area */
+# define OCLFPI 34 /* page in context area */
+# define OCLFIS 36 /* special system logon */
+# define OCLFCO 38 /* cancel the current operation */
+# define OCLFGI 40 /* get database id */
+# define OCLFJN 42 /* journal operation */
+# define OCLFCL 44 /* cleanup prior execute operation */
+# define OCLFMC 46 /* map a cursor area */
+# define OCLFUC 48 /* unmap cursor and restore user maping */
+#endif /*NEVER *//* obsolete codes */
+
+
+/* values for ocimode in ocipin call */
+
+#define OCIEVDEF UPIEVDEF /* default : non-thread safe enivronment */
+#define OCIEVTSF UPIEVTSF /* thread-safe environment */
+
+
+/* OCIL* flags used to determine the mode of login, using ocilog().
+** Currently defined only for non-blocking and thread-safe logins.
+*/
+
+#define OCILMDEF UPILMDEF /* default, regular login */
+#define OCILMNBL UPILMNBL /* non-blocking logon */
+#define OCILMESY UPILMESY /* thread safe but external sync */
+#define OCILMISY UPILMISY /* internal sync, we do it */
+#define OCILMTRY UPILMTRY /* try to, but do not block on mutex */
+
+
+/*
+ * since sqllib uses both ocidef and ocidfn the following defines
+ * need to be guarded
+ */
+#ifndef OCI_FLAGS
+#define OCI_FLAGS
+
+/* OCI_*_PIECE defines the piece types that are returned or set
+*/
+
+#define OCI_ONE_PIECE UPI_ONE_PIECE /* there or this is the only piece */
+#define OCI_FIRST_PIECE UPI_FIRST_PIECE /* the first of many pieces */
+#define OCI_NEXT_PIECE UPI_NEXT_PIECE /* the next of many pieces */
+#define OCI_LAST_PIECE UPI_LAST_PIECE /* the last piece of this column */
+#endif
+
+/*
+** OCITAB: define return code pairs for version 2 to 3 conversions
+*/
+struct ocitab
+{
+ sb2 ocitv3; /* Version 3/4 return code */
+ sb2 ocitv2; /* Version 2 equivalent return code */
+};
+typedef struct ocitab ocitab;
+
+externref const ocitab ocitbl[];
+
+/* macros to check cursors and LDA's. */
+/* macros to set error codes */
+
+# define CRSCHK(c) if ((c->csrchk != CSRCHECK)\
+ && !bit(c->csrflg, CSRFREFC))\
+ return(ocir32(c, OER(1001)))
+# define ldaerr(l, e) ( l->csrrc = (sb2)(-( l->csrarc = (ub2)(e)) ) )
+# define LDACHK(l) if (l->csrchk != LDACHECK) \
+ return(ldaerr(l, OER(1001)))
+
+
+/************************************************/
+/* OCI PROCEDURE DECLARATIONS */
+/************************************************/
+
+
+
+
+/*****************************/
+/* Database logon/logout */
+/*****************************/
+sword ocilog( ldadef *lda, struct hstdef *hst, oratext *uid, sword uidl,
+ oratext *psw, sword pswl, oratext* conn, sword connl,
+ ub4 mode );
+sword ocilon( ldadef *lda, oratext *uid, sword uidl, oratext *psw,
+ sword pswl, sword audit );
+sword ocilgi( ldadef *lda, sb2 areacount );
+sword ocirlo( ldadef *lda, struct hstdef *hst, oratext *uid, sword uidl,
+ oratext *psw, sword pswl, sword audit );
+ /* ocilon - logon to oracle
+ ** ocilgi - version 2 compatible ORACLE logon call.
+ ** no login to ORACLE is performed: the LDA is initialized
+ ** ocirlo - version 5 compatible ORACLE Remote Login call,
+ ** oracle login is executed.
+ ** lda - pointer to ldadef
+ ** uid - user id [USER[/PASSWORD]]
+ ** uidl - length of uid, if -1 strlen(uid) is used
+ ** psw - password string; ignored if specified in uid
+ ** pswl - length of psw, if -1 strlen(psw) is used
+ ** audit - is not supported; the only permissible value is 0
+ ** areacount - unused
+ */
+
+sword ocilof( ldadef *lda );
+ /*
+ ** ocilof - disconnect from ORACLE
+ ** lda - pointer to ldadef
+ */
+
+
+/*********************/
+/* Error Messages */
+/*********************/
+sword ocierr( ldadef *lda, sb2 rcode, oratext *buffer, sword bufl );
+sword ocidhe( sb2 rcode, oratext *buffer );
+ /*
+ ** Move the text explanation for an ORACLE error to a user defined buffer
+ ** ocierr - will return the message associated with the hstdef stored
+ ** in the lda.
+ ** ocidhe - will return the message associated with the default host.
+ ** lda - lda associated with the login session
+ ** rcode - error code as returned by V3 call interface
+ ** buffer - address of a user buffer of at least 132 characters
+ */
+
+
+/***********************/
+/* Cursor Open/Close */
+/***********************/
+sword ociope( struct csrdef *cursor, ldadef *lda, oratext *dbn, sword dbnl,
+ sword areasize, oratext *uid, sword uidl );
+
+sword ociclo( struct csrdef *cursor );
+ /*
+ ** open or close a cursor.
+ ** cursor - pointer to csrdef
+ ** ldadef - pointer to ldadef
+ ** dbn - unused
+ ** dbnl - unused
+ ** areasize - if (areasize == -1) areasize <- system default initial size
+ ** else if (areasize IN [1..256]) areasize <- areasize * 1024;
+ ** most applications should use the default size since context
+ ** areas are extended as needed until memory is exhausted.
+ ** uid - user id
+ ** uidl - userid length
+ */
+
+/***********************************/
+/* CONTROL AND OPTIONS */
+/***********************************/
+sword ocibre( ldadef *lda );
+ /*
+ ** ocibrk - Oracle Call Interface send BReaK Sends a break to
+ ** oracle. If oracle is active, the current operation is
+ ** cancelled. May be called asynchronously. DOES NOT SET
+ ** OERRCD in the hst. This is because ocibrk may be called
+ ** asynchronously. Callers must test the return code.
+ ** lda - pointer to a ldadef
+ */
+
+sword ocican( struct csrdef *cursor );
+ /*
+ ** cancel the operation on the cursor, no additional OFETCH calls
+ ** will be issued for the existing cursor without an intervening
+ ** OEXEC call.
+ ** cursor - pointer to csrdef
+ */
+
+sword ocisfe( struct csrdef *cursor, sword erropt, sword waitopt );
+ /*
+ ** ocisfe - user interface set error options
+ ** set the error and cursor options.
+ ** allows user to set the options for dealing with fatal dml errors
+ ** and other cursor related options
+ ** see oerdef for valid settings
+ ** cursor - pointer to csrdef
+ ** erropt - error optionsn
+ ** waitopr - wait options
+ */
+
+
+/***************************************/
+/* COMMIT/ROLLBACK/AUTOCOMMIT */
+/***************************************/
+sword ocicom( ldadef *lda );
+sword ocirol( ldadef *lda );
+ /*
+ ** ocicom - commit the current transaction
+ ** ocirol - roll back the current transaction
+ */
+
+sword ocicon( ldadef *lda );
+sword ocicof( ldadef *lda );
+ /*
+ ** ocicon - auto Commit ON
+ ** ocicof - auto Commit OFf
+ */
+
+
+
+/************************/
+/* parsing */
+/************************/
+sword ocisq3(struct csrdef *cursor, oratext * /* sqlstm */, sword sqllen);
+ /*
+ ** ocisq3 - user interface parse sql statement
+ ** cursor - pointer to csrdef
+ ** sqlstm - pointer to SQL statement
+ ** sqllen - length of SQL statement. if -1, strlen(sqlstm) is used
+ */
+
+
+
+/***************************/
+/* BINDING */
+/***************************/
+/* these are for the opcode in ocibndps, ocidfnps */
+#define OCI_PCWS 0
+#define OCI_SKIP 1
+
+sword ocibin( struct csrdef *cursor, oratext *sqlvar, sword sqlvl,
+ ub1 *progv, sword progvl, sword ftype, sword scale,
+ oratext *fmt, sword fmtl, sword fmtt );
+sword ocibrv( struct csrdef *cursor, oratext *sqlvar, sword sqlvl,
+ ub1 *progv, sword progvl, sword ftype, sword scale, sb2 *indp,
+ oratext *fmt, sword fmtl, sword fmtt );
+sword ocibra( struct csrdef *cursor, oratext *sqlvar, sword sqlvl,
+ ub1 *progv, sword progvl, sword ftype, sword scale,
+ sb2 *indp, ub2 *aln, ub2 *rcp, ub4 mal, ub4 *cal,
+ oratext *fmt, sword fmtl, sword fmtt );
+sword ocibndps( struct csrdef *cursor, ub1 opcode, oratext *sqlvar,
+ sb4 sqlvl, ub1 *progv, sb4 progvl, sword ftype,
+ sword scale, sb2 *indp, ub2 *aln, ub2 *rcp, sb4 pv_skip,
+ sb4 ind_skip, sb4 len_skip, sb4 rc_skip, ub4 mal,
+ ub4 *cal, oratext *fmt, sb4 fmtl, sword fmtt );
+sword ocibnn ( struct csrdef *cursor, ub2 sqlvn, ub1 *progv, sword progvl,
+ sword ftype, sword scale, oratext *fmt, sword fmtl,
+ sword fmtt );
+sword ocibrn( struct csrdef *cursor, sword sqlvn, ub1 *progv, sword progvl,
+ sword ftype, sword scale, sb2 *indp, oratext *fmt, sword fmtl,
+ sword fmtt );
+ /*
+ ** ocibin - bind by value by name
+ ** ocibrv - bind by reference by name
+ ** ocibra - bind by reference by name (array)
+ ** ocibndps - bind by reference by name (array) piecewise or with skips
+ ** ocibnn - bind by value numeric
+ ** ocibrn - bind by reference numeric
+ **
+ ** the contents of storage specified in bind-by-value calls are
+ ** evaluated immediately.
+ ** the addresses of storage specified in bind-by-reference calls are
+ ** remembered, and the contents are examined at every execute.
+ **
+ ** cursor - pointer to csrdef
+ ** sqlvn - the number represented by the name of the bind variables
+ ** for variables of the form :n or &n for n in [1..256)
+ ** (i.e. &1, :234). unnecessarily using larger numbers
+ ** in the range wastes space.
+ ** sqlvar - the name of the bind variable (:name or &name)
+ ** sqlval - the length of the name;
+ ** in bindif -1, strlen(bvname) is used
+ ** progv - pointer to the object to bind.
+ ** progvl - length of object to bind.
+ ** in bind-by-value if specified as -1 then strlen(bfa) is
+ ** used (really only makes sends with character types)
+ ** in bind-by-value, if specified as -1 then UB2MAXVAL
+ ** is used. Again this really makes sense only with
+ ** SQLT_STR.
+ ** ftype - datatype of object
+ ** indp - pointer to indicator variable.
+ ** -1 means to ignore bfa/bfl and bind NULL;
+ ** not -1 means to bind the contents of bfa/bfl
+ ** bind the contents pointed to by bfa
+ ** aln - Alternate length pointer
+ ** rcp - Return code pointer
+ ** mal - Maximum array length
+ ** cal - Current array length pointer
+ ** fmt - format string
+ ** fmtl - length of format string; if -1, strlen(fmt) is used
+ ** fmtt - desired output type after applying forat mask. Not
+ ** really yet implemented
+ ** scale - number of decimal digits in a cobol packed decimal (type 7)
+ **
+ ** Note that the length of bfa when bound as SQLT_STR is reduced
+ ** to strlen(bfa).
+ ** Note that trailing blanks are stripped of storage of SQLT_STR.
+ */
+
+/***************************/
+/* DESCRIBING */
+/***************************/
+sword ocidsc ( struct csrdef *cursor, sword pos, sb2 *dbsize, sb2 *fsize,
+ sb2 *rcode, sb2 *dtype, sb1 *buf, sb2 *bufl, sb2 *dsize );
+sword ocidsr( struct csrdef *cursor, sword pos, sb2 *dbsize, sb2 *dtype,
+ sb2 *fsize );
+sword ocinam( struct csrdef *cursor, sword pos, sb1 *tbuf, sb2 *tbufl,
+ sb1 *buf, sb2 *bufl );
+ /*
+ ** ocidsc, ocidsr: Obtain information about a column
+ ** ocinam : get the name of a column
+ ** cursor - pointer to csrdef
+ ** pos - position in select list from [1..N]
+ ** dbsize - place to store the database size
+ ** fsize - place to store the fetched size
+ ** rcode - place to store the fetched column returned code
+ ** dtype - place to store the data type
+ ** buf - array to store the column name
+ ** bufl - place to store the column name length
+ ** dsize - maximum display size
+ ** tbuf - place to store the table name
+ ** tbufl - place to store the table name length
+ */
+
+sword ocidsp ( struct csrdef *cursor, sword pos, sb4 *dbsize, sb2 *dbtype,
+ sb1 *cbuf, sb4 *cbufl, sb4 *dsize, sb2 *pre, sb2 *scl,
+ sb2 *nul );
+
+sword ocidpr( ldadef *lda, oratext *object_name, size_t object_length,
+ void * reserved1, size_t reserved1_length, void * reserved2,
+ size_t reserved2_length, ub2 *overload, ub2 *position,
+ ub2 *level, oratext **argument_name, ub2 *argument_length,
+ ub2 *datatype, ub1 *default_supplied, ub1 *in_out,
+ ub4 *length, sb2 *precision, sb2 *scale, ub1 *radix,
+ ub4 *spare, ub4 *total_elements );
+ /*
+ ** OCIDPR - User Program Interface: Describe Stored Procedure
+ **
+ ** This routine is used to obtain information about the calling
+ ** arguments of a stored procedure. The client provides the
+ ** name of the procedure using "object_name" and "database_name"
+ ** (database name is optional). The client also supplies the
+ ** arrays for OCIDPR to return the values and indicates the
+ ** length of array via the "total_elements" parameter. Upon return
+ ** the number of elements used in the arrays is returned in the
+ ** "total_elements" parameter. If the array is too small then
+ ** an error will be returned and the contents of the return arrays
+ ** are invalid.
+ **
+ **
+ ** EXAMPLE :
+ **
+ ** Client provides -
+ **
+ ** object_name - SCOTT.ACCOUNT_UPDATE@BOSTON
+ ** total_elements - 100
+ **
+ **
+ ** ACCOUNT_UPDATE is an overloaded function with specification :
+ **
+ ** type number_table is table of number index by binary_integer;
+ ** table account (account_no number, person_id number,
+ ** balance number(7,2))
+ ** table person (person_id number(4), person_nm varchar2(10))
+ **
+ ** function ACCOUNT_UPDATE (account number,
+ ** person person%rowtype, amounts number_table,
+ ** trans_date date) return accounts.balance%type;
+ **
+ ** function ACCOUNT_UPDATE (account number,
+ ** person person%rowtype, amounts number_table,
+ ** trans_no number) return accounts.balance%type;
+ **
+ **
+ ** Values returned -
+ **
+ ** overload position argument level datatype length prec scale rad
+ ** -------------------------------------------------------------------
+ ** 0 0 0 NUMBER 22 7 2 10
+ ** 0 1 ACCOUNT 0 NUMBER 22 0 0 0
+ ** 0 2 PERSON 0 RECORD 0 0 0 0
+ ** 0 2 PERSON_ID 1 NUMBER 22 4 0 10
+ ** 0 2 PERSON_NM 1 VARCHAR2 10 0 0 0
+ ** 0 3 AMOUNTS 0 TABLE 0 0 0 0
+ ** 0 3 1 NUMBER 22 0 0 0
+ ** 0 4 TRANS_NO 0 NUMBER 22 0 0 0
+ **
+ ** 1 0 0 NUMBER 22 7 2 10
+ ** 1 1 ACCOUNT 0 NUMBER 22 0 0 0
+ ** 1 2 PERSON 0 RECORD 0 0 0 0
+ ** 1 2 PERSON_ID 1 NUMBER 22 4 0 10
+ ** 1 2 PERSON_NM 1 VARCHAR2 10 0 0 0
+ ** 1 3 AMOUNTS 0 TABLE 0 0 0 0
+ ** 1 3 1 NUMBER 22 0 0 0
+ ** 1 4 TRANS_DATE 0 NUMBER 22 0 0 0
+ **
+ **
+ ** OCIDPR Argument Descriptions -
+ **
+ ** ldadef - pointer to ldadef
+ ** object_name - object name, synonyms are also accepted and will
+ ** be translate, currently only procedure and function
+ ** names are accepted, also NLS names are accepted.
+ ** Currently, the accepted format of a name is
+ ** [[part1.]part2.]part3[@dblink] (required)
+ ** object_length - object name length (required)
+ ** reserved1 - reserved for future use
+ ** reserved1_length - reserved for future use
+ ** reserved2 - reserved for future use
+ ** reserved2_length - reserved for future use
+ ** overload - array indicating overloaded procedure # (returned)
+ ** position - array of argument positions, position 0 is a
+ ** function return argument (returned)
+ ** level - array of argument type levels, used to describe
+ ** sub-datatypes of data structures like records
+ ** and arrays (returned)
+ ** argument_name - array of argument names, only returns first
+ ** 30 characters of argument names, note storage
+ ** for 30 characters is allocated by client (returned)
+ ** argument_length - array of argument name lengths (returned)
+ ** datatype - array of oracle datatypes (returned)
+ ** default_supplied - array indicating parameter has default (returned)
+ ** 0 = no default, 1 = default supplied
+ ** in_out - array indicating if argument is IN or OUT (returned
+ ** 0 = IN param, 1 = OUT param, 2 = IN/OUT param
+ ** length - array of argument lengths (returned)
+ ** precision - array of precisions (if number type)(returned)
+ ** scale - array of scales (if number type)(returned)
+ ** radix - array of radix (if number type)(returned)
+ ** spare - array of spares.
+ ** total_elements - size of arrays supplied by client (required),
+ ** total number of elements filled (returned)
+ */
+
+/*************************************/
+/* DEFINING */
+/*************************************/
+sword ocidfi( struct csrdef *cursor, sword pos, ub1 *buf, sword bufl,
+ sword ftype, sb2 *rc, sword scale );
+sword ocidfn( struct csrdef *cursor, sword pos, ub1 *buf, sword bufl,
+ sword ftype, sword scale, sb2 *indp, oratext *fmt, sword fmtl,
+ sword fmtt, ub2 *rl, ub2 *rc );
+sword ocidfnps( struct csrdef *cursor, ub1 opcode, sword pos, ub1 *buf,
+ sb4 bufl, sword ftype, sword scale,
+ sb2 *indp, oratext *fmt, sb4 fmtl,
+ sword fmtt, ub2 *rl, ub2 *rc,
+ sb4 pv_skip, sb4 ind_skip, sb4 len_skip,
+ sb4 rc_skip );
+
+
+ /* Define a user data buffer using upidfn
+ ** cursor - pointer to csrdef
+ ** pos - position of a field or exp in the select list of a query
+ ** bfa/bfl - address and length of client-supplied storage
+ to receive data
+ ** ftype - user datatype
+ ** scale - number of fractional digits for cobol packed decimals
+ ** indp - place to store the length of the returned value. If returned
+ ** value is:
+ ** negative, the field fetched was NULL
+ ** zero , the field fetched was same length or shorter than
+ ** the buffer provided
+ ** positive, the field fetched was truncated
+ ** fmt - format string
+ ** fmtl - length of format string, if -1 strlent(fmt) used
+ ** rl - place to store column length after each fetch
+ ** rc - place to store column error code after each fetch
+ ** fmtt - fomat type
+ */
+
+/********************************/
+/* PIECE INFORMATION GET/SET */
+/********************************/
+sword ocigetpi( struct csrdef *cursor, ub1 *piecep,
+ void **ctxpp, ub4 *iterp, ub4 *indexp );
+sword ocisetpi( struct csrdef *cursor, ub1 piece,
+ void *bufp, ub4 *lenp );
+
+
+/********************************/
+/* EXECUTE */
+/********************************/
+sword ociexe( struct csrdef *cursor );
+sword ociexn( struct csrdef *cursor, sword iters, sword roff );
+sword ociefn( struct csrdef *cursor, ub4 nrows, sword can, sword exact );
+ /*
+ ** ociexe - execute a cursor
+ ** ociexn - execute a cursosr N times
+ ** cursor - pointer to a csrdef
+ ** iters - number of times to execute cursor
+ ** roff - offset within the bind variable array at which to begin
+ ** operations.
+ */
+
+
+/*********************************/
+/* FETCHING */
+/*********************************/
+sword ocifet( struct csrdef *cursor );
+sword ocifen( struct csrdef *cursor, sword nrows );
+ /* ocifet - fetch the next row
+ ** ocifen - fetch n rows
+ ** cursor - pointer to csrdef
+ ** nrows - number of rows to be fetched
+ */
+
+sword ocilng( struct csrdef *cursor, sword posit, ub1 *bfa, sb4 bfl,
+ sword dty, ub4 *rln, sb4 off );
+
+/*********************************/
+/* CONVERSION */
+/*********************************/
+sword ocic32( struct csrdef *cursor );
+ /*
+ ** Convert selected version 3 return codes to the equivalent
+ ** version 2 code.
+ ** csrdef->csrrc is set to the converted code
+ ** csrdef->csrft is set to v2 oracle statment type
+ ** csrdef->csrrpc is set to the rows processed count
+ ** csrdef->csrpeo is set to error postion
+ **
+ ** cursor - pointer to csrdef
+ */
+
+
+sword ocir32( struct csrdef *cursor, sword retcode );
+ /*
+ ** Convert selected version 3 return codes to the equivalent version 2
+ ** code.
+ **
+ ** cursor - pointer to csrdef
+ ** retcode - place to store the return code
+ */
+
+
+void ociscn( sword **arglst, char *mask_addr, sword **newlst );
+ /*
+ ** Convert call-by-ref to call-by-value:
+ ** takes an arg list and a mask address, determines which args need
+ ** conversion to a value, and creates a new list begging at the address
+ ** of newlst.
+ **
+ ** arglst - list of arguments
+ ** mast_addr _ mask address determines args needing conversion
+ ** newlst - new list of args
+ */
+
+sword ocistf ( sword typ, sword bufl, sword rdig, oratext *fmt,
+ struct csrdef *cursor, sword *err );
+/* Convert a packed decimal buffer length (bytes) and scale to a format
+** string of the form mm.+/-nn, where mm is the number of packed
+** decimal digits, and nn is the scaling factor. A positive scale name
+** nn digits to the rights of the decimal; a negative scale means nn zeros
+** should be supplied to the left of the decimal.
+** bufl - length of the packed decimal buffer
+** rdig - number of fractional digits
+** fmt - pointer to a string holding the conversion format
+** cursor - pointer to csrdef
+** err - pointer to word storing error code
+*/
+
+
+/******************************************/
+/* Non-blocking operations */
+/******************************************/
+sword ocinbs( ldadef *lda ); /* set a connection to non-blocking */
+sword ocinbt( ldadef *lda ); /* test if connection is non-blocking */
+sword ocinbc( ldadef *lda ); /* clear a connection to blocking */
+sword ocinlo( ldadef *lda, struct hstdef *hst, oratext *conn,
+ sword connl, oratext *uid, sword uidl,
+ oratext *psw, sword pswl, sword audit );
+ /* logon in non-blocking fashion */
+/* ocinlo allows an application to logon in non-blocking fashion.
+** lda - pointer to ldadef
+** hst - pointer to a 256 byte area, must be cleared to zero before call
+** conn - the database link (if specified @LINK in uid will be ignored)
+** connl - length of conn; if -1 strlen(conn) is used
+** uid - user id [USER[/PASSWORD][@LINK]]
+** uidl - length of uid, if -1 strlen(uid) is used
+** psw - password string; ignored if specified in uid
+** pswl - length of psw, if -1 strlen(psw) is used
+** audit - is not supported; the only permissible value is 0
+*/
+
+/***************************************************/
+/* Procedure Declaration for Pro*C */
+/***************************************************/
+/* Note: The following routines are used in Pro*C and have the
+ same interface as their couterpart in OCI.
+ Althought the interface follows for more details please refer
+ to the above routines */
+
+/******************************************/
+/* initialization/logon/logof */
+/******************************************/
+sword ocipin( ub4 mode );
+
+sword ologin( ldadef *lda, sb2 areacount );
+sword ologon( ldadef *lda, sb2 areacount );
+
+/*****************************************/
+/* Open/Close/Parse Cursor */
+/*****************************************/
+
+/*
+** ocisqd - oci delayed parse (Should be used only with deferred upi/oci)
+** FUNCTION: Call upidpr to delay the parse of the sql statement till the
+** time that a call needs to be made to the kernel (execution or
+** describe time )
+** RETURNS: Oracle return code.
+*/
+sword ocisq7( struct csrdef *cursor, oratext * /* sqlstm */, sb4 sqllen,
+ sword defflg, ub4 sqlt );
+
+/*****************************************/
+/* Bind */
+/*****************************************/
+sword obind( struct csrdef *cursor, oratext *sqlvar, sword sqlvl,
+ ub1 *progv, sword progvl, sword ftype, sword scale,
+ oratext *fmt, sword fmtl, sword fmtt );
+sword obindn( struct csrdef *cursor, ub2 sqlvn, ub1 *progv, sword progvl,
+ sword ftype, sword scale, oratext *fmt, sword fmtl,
+ sword fmtt );
+
+/**********************************************/
+/* Define */
+/**********************************************/
+sword odfinn( struct csrdef *cursor, sword pos, ub1 *buf, sword bufl,
+ sword ftype, sb2 *rc, sword scale );
+
+/**********************************************/
+/* Describe */
+/**********************************************/
+sword odsrbn( struct csrdef *cursor, sword pos, sb2 *dbsize, sb2 *dtype,
+ sb2 *fsize );
+
+
+/******************************************/
+/* Non-blocking operations */
+/******************************************/
+sword onblon( ldadef *lda, struct hstdef *hst, oratext *conn,
+ sword connl, oratext *uid, sword uidl,
+ oratext *psw, sword pswl, sword audit );
+ /* logon in non-blocking fashion */
+sword ocignfd( ldadef *lda, void *nfdp ); /* get native fd */
+
+ub2 ocigft_getFcnType( ub2 oertyp ); /* get sql function code */
+
+#endif