diff options
| author | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2008-01-26 15:28:25 +0000 |
|---|---|---|
| committer | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2008-01-26 15:28:25 +0000 |
| commit | 8c2a9763ddeb27dc34f2869a26ff6a07fc3a9146 (patch) | |
| tree | 3e31c7c219d9cb316aad571a0e44991aa1d604d4 /packages/oracle | |
| parent | 979ea4beed80e4f256d04567b7617760e0986451 (diff) | |
| download | fpc-8c2a9763ddeb27dc34f2869a26ff6a07fc3a9146.tar.gz | |
* oracle moved + makefile.fpc + fpmake
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@9934 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/oracle')
| -rw-r--r-- | packages/oracle/Makefile.fpc | 36 | ||||
| -rw-r--r-- | packages/oracle/README | 21 | ||||
| -rw-r--r-- | packages/oracle/examples/Makefile.fpc | 21 | ||||
| -rw-r--r-- | packages/oracle/examples/oraclew.pp | 437 | ||||
| -rw-r--r-- | packages/oracle/examples/test01.pp | 58 | ||||
| -rw-r--r-- | packages/oracle/src/nzerror.inc | 658 | ||||
| -rw-r--r-- | packages/oracle/src/nzt.inc | 2707 | ||||
| -rw-r--r-- | packages/oracle/src/oci.inc | 3909 | ||||
| -rw-r--r-- | packages/oracle/src/oci.pp | 8 | ||||
| -rw-r--r-- | packages/oracle/src/oci1.inc | 183 | ||||
| -rw-r--r-- | packages/oracle/src/ociap.inc | 10997 | ||||
| -rw-r--r-- | packages/oracle/src/ocidfn.inc | 336 | ||||
| -rw-r--r-- | packages/oracle/src/ocidyn.pp | 8 | ||||
| -rw-r--r-- | packages/oracle/src/oraoci.pp | 1436 | ||||
| -rw-r--r-- | packages/oracle/src/oratypes.pp | 308 | ||||
| -rw-r--r-- | packages/oracle/src/orl.inc | 3911 | ||||
| -rw-r--r-- | packages/oracle/src/oro_implementation.inc | 644 | ||||
| -rw-r--r-- | packages/oracle/src/oro_interface.inc | 1201 | ||||
| -rw-r--r-- | packages/oracle/src/ort.inc | 2676 |
19 files changed, 29555 insertions, 0 deletions
diff --git a/packages/oracle/Makefile.fpc b/packages/oracle/Makefile.fpc new file mode 100644 index 0000000000..5ec8bee75b --- /dev/null +++ b/packages/oracle/Makefile.fpc @@ -0,0 +1,36 @@ +# +# Makefile.fpc for oracle units +# + +[package] +name=oracle +version=2.0.0 + +[target] +units=oci ocidyn oratypes oraoci +exampledirs=examples + +[require] +libc=y + +[install] +fpcpackage=y + +[default] +fpcdir=../.. + +[compiler] +includedir=src +sourcedir=src tests + +# in libdir variable must be path to libraries +# libclntsh.*,libnlsrtl3.* +#[compiler] +#libdir=/usr/local/oracle8cli/lib + +[shared] +build=n + +[rules] +.NOTPARALLEL: + diff --git a/packages/oracle/README b/packages/oracle/README new file mode 100644 index 0000000000..047e671b83 --- /dev/null +++ b/packages/oracle/README @@ -0,0 +1,21 @@ +These units provides interface to Oracle Call Interface. + +For the older 'oraoci' unit to compile you need oracle +server installed, these units was tested and performed +on Oracle 8.0.1.5 Standard server. One developer license +of Oracle server is free of charge... + +Unit oraclew contains some procedures and functions, +which makes usage of oraoci not so painfull... But - +if you wanna to program in RAW OCI, you really can ;) + +The oci and ocidyn units are a complete conversion from +Oracle's .h files. The former links statically to the +library, the latter dynamically. + +You need to have oracle lib directory in ldpath, too, +or you can this path set in Makefile.fpc (is commented +there) + +Joost van der Sluis, +joost@cnoc.nl diff --git a/packages/oracle/examples/Makefile.fpc b/packages/oracle/examples/Makefile.fpc new file mode 100644 index 0000000000..9b862eb957 --- /dev/null +++ b/packages/oracle/examples/Makefile.fpc @@ -0,0 +1,21 @@ +# +# Makefile.fpc for oracle units example +# + +[target] +units=oraclew +examples=test01 + +[require] +packages=oracle fcl-base fcl-db fcl-xml + +[install] +fpcpackage=y + +[default] +fpcdir=../../.. + +# in libdir variable must be path to libraries +# libclntsh.*,libnlsrtl3.* +#[compiler] +#libdir=/usr/local/oracle8cli/lib diff --git a/packages/oracle/examples/oraclew.pp b/packages/oracle/examples/oraclew.pp new file mode 100644 index 0000000000..2fcfd78a69 --- /dev/null +++ b/packages/oracle/examples/oraclew.pp @@ -0,0 +1,437 @@ +{ + Copyright (c) 1999-2000 by Pavel Stingl <stingp1.eti@mail.cez.cz> + + + OCI workaround + + See the file COPYING.FPC, included in this distribution, + for details about the copyright. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + **********************************************************************} +unit oraclew; + +interface + +{$H+} +{$mode objfpc} + +uses OCI, oratypes,Classes, SysUtils; + +{ all pos parameters are indexed from 1..x! } + + procedure OraInit; + procedure OraFin; + procedure OraLogin(name, pass, server: string); + procedure OraLogout; + procedure OraSQLExec(sql: string); + function OraGetFieldAsString(pos : integer) : string; + function OraGetFieldAsInteger(pos : integer) : longint; + function OraNext: boolean; + function OraGetFieldCount: integer; + function OraGetFieldName(pos : integer) : string; + function OraGetFieldType(pos : integer) : longint; + function IsFieldDate(Pos : integer): boolean; + procedure OraError(errcode: integer; err: POCIError; msg : string); + +const + cDescribeBuf = 1024; + cPCharBufLen = 4097; + cPrefetchCnt = 100; + +type + + PDescribeRec = ^TDescribeRec; + TDescribeRec = record + dbsize : sb4; + dbtype : sb2; + buf : array [0..cDescribeBuf] of char; + buflen : sb4; + dsize : sb4; + precision : sb2; + scale : sb2; + nullok : sb2; + + // Define part + valbuf : array [0..cDescribeBuf] of char; + flt_buf : double; + int_buf : cardinal; + int64_buf : int64; + indp : sb2; + col_retlen: ub2; + col_retcode: ub2; + end; + +var + Env : POCIEnv; + Err : POCIError; + Svc : POCISvcCtx; + Stmt: POCIStmt; + FieldList : TList; + + ecode : integer; + +implementation + + function DecodeDataType(dtype : longint): string; + begin + case dtype of + SQLT_CHR : DecodeDataType := '(ORANET TYPE) character string'; + SQLT_NUM : DecodeDataType := '(ORANET TYPE) oracle numeric'; + SQLT_INT : DecodeDataType := '(ORANET TYPE) integer'; + SQLT_FLT : DecodeDataType := '(ORANET TYPE) Floating point number'; + SQLT_STR : DecodeDataType := 'zero terminated string'; + SQLT_VNU : DecodeDataType := 'NUM with preceding length byte'; + SQLT_PDN : DecodeDataType := '(ORANET TYPE) Packed Decimal Numeric'; + SQLT_LNG : DecodeDataType := 'long'; + SQLT_VCS : DecodeDataType := 'Variable character string'; + SQLT_NON : DecodeDataType := 'Null/empty PCC Descriptor entry'; + SQLT_RID : DecodeDataType := 'rowid'; + SQLT_DAT : DecodeDataType := 'date in oracle format'; + SQLT_VBI : DecodeDataType := 'binary in VCS format'; + SQLT_BIN : DecodeDataType := 'binary data(DTYBIN)'; + SQLT_LBI : DecodeDataType := 'long binary'; + SQLT_UIN : DecodeDataType := 'unsigned integer'; + SQLT_SLS : DecodeDataType := 'Display sign leading separate'; + SQLT_LVC : DecodeDataType := 'Longer longs (char)'; + SQLT_LVB : DecodeDataType := 'Longer long binary'; + SQLT_AFC : DecodeDataType := 'Ansi fixed char'; + SQLT_AVC : DecodeDataType := 'Ansi Var char'; + SQLT_CUR : DecodeDataType := 'cursor type'; + SQLT_RDD : DecodeDataType := 'rowid descriptor'; + SQLT_LAB : DecodeDataType := 'label type'; + SQLT_OSL : DecodeDataType := 'oslabel type'; + SQLT_NTY : DecodeDataType := 'named object type'; + SQLT_REF : DecodeDataType := 'ref type'; + SQLT_CLOB : DecodeDataType := 'character lob'; + SQLT_BLOB : DecodeDataType := 'binary lob'; + SQLT_BFILEE : DecodeDataType := 'binary file lob'; + SQLT_CFILEE : DecodeDataType := 'character file lob'; + SQLT_RSET : DecodeDataType := 'result set type'; + SQLT_NCO : DecodeDataType := 'named collection type (varray or nested table)'; + SQLT_VST : DecodeDataType := 'OCIString type'; + SQLT_ODT : DecodeDataType := 'OCIDate type'; + else DecodeDataType := 'Unknown'; + end; + end; + + procedure FieldListClear; + var + x: longint; + PDesc: PDescribeRec; + begin + if FieldList.Count = 0 then Exit; + for x := 0 to FieldList.Count - 1 do + begin + PDesc := FieldList[x]; + Dispose(PDesc); + end; + FieldList.Clear; + end; + + procedure Describe; + var + fldc : longint; + paramd : POCIParam; + colname : PChar; + colsize : ub4; + Rec : PDescribeRec; + begin + fldc := 1; + + FieldListClear; + ecode := OCIParamGet(Stmt, OCI_HTYPE_STMT, Err, paramd, fldc); + if ecode <> OCI_SUCCESS then + ORAError(ecode, Err, 'OCIParamGetError'); + while ecode = OCI_SUCCESS do + begin + New(Rec); + FillChar(Rec^.buf, sizeof(Rec^.buf), #0); + ecode := OCIAttrGet(paramd, OCI_DTYPE_PARAM, @Rec^.dbtype, nil, + OCI_ATTR_DATA_TYPE, Err); + if ecode <> 0 then + begin + ORAError(ecode, Err, 'Retrieving DTYPE_PARAM:'); + end; + colsize := 0; + colname := nil; + ecode := OCIAttrGet(paramd, OCI_DTYPE_PARAM, @colname, @colsize, + OCI_ATTR_NAME, Err); + if ecode <> 0 then + begin + ORAError(ecode, Err, 'Retrieving DTYPE_PARAM:'); + end; + Move(Colname^,Rec^.buf, colsize); + Rec^.buflen := colsize; +// WriteLn('Column: ',Rec^.buf:15,' DataType: ',DecodeDataType(Rec^.dbtype)); + inc(fldc); + + FieldList.Add(Rec); + ecode := OCIParamGet(Stmt, OCI_HTYPE_STMT, Err, paramd, fldc); + end; + end; + + procedure Define; + var + x : longint; + def: POCIDefine; + PDesc : PDescribeRec; + defptr: pointer; + deflen: sword; + deftyp: sword; + begin + def := nil; + for x := 0 to FieldList.Count - 1 do + begin + PDesc := FieldList[x]; + case PDesc^.dbtype of + SQLT_NUM: begin + if PDesc^.scale <> 0 then + begin + defptr := @PDesc^.flt_buf; + deflen := SizeOf(PDesc^.flt_buf); + deftyp := SQLT_FLT; + PDesc^.dbtype := SQLT_FLT; + end + else begin + if PDesc^.dbsize > 4 then + begin + // WriteLn('BIG FAT WARNING!!!! dbsize int > 4 (',PDesc^.dbsize,')'); + defptr := @PDesc^.int64_buf; + deflen := SizeOf(PDesc^.int64_buf); + deftyp := SQLT_INT; + PDesc^.dbtype := SQLT_INT; + end + else begin + defptr := @PDesc^.int_buf; + deflen := SizeOf(PDesc^.int_buf); + deftyp := SQLT_INT; + PDesc^.dbtype := SQLT_INT; + end; + end; + end; + else begin + defptr := @PDesc^.valbuf; + deflen := cDescribeBuf; + deftyp := PDesc^.dbtype; + end; + end; + ecode := OCIDefineByPos(Stmt, def, Err, x + 1, defptr, + deflen, deftyp, @PDesc^.indp, @PDesc^.col_retlen, + @PDesc^.col_retcode, OCI_DEFAULT); + if ecode <> 0 then + begin + OraError(ecode, Err, 'OCIDefineByPos: '); + end; + end; + end; + + procedure OraError( errcode : integer; err: POCIError; msg : string ); + var + buff : array [0..1024] of char; + + begin + if err <> nil then + begin + case errcode of + OCI_INVALID_HANDLE: Msg := Msg + ' OCI_INVALID_HANDLE'; + end; + OCIErrorGet( err, 1, nil, errcode, @buff[0], 1024, OCI_HTYPE_ERROR); + writeln(stderr, msg, ' ', buff); + end + else begin + WriteLn(stderr, msg); + Halt(1); + end; + end; + + procedure OraInit; + begin + ecode := OCIInitialize({OCI_DEFAULT or }OCI_OBJECT, nil, nil, nil, nil); + if ecode <> 0 then OraError( ecode, nil, 'Error initializing OCI'); + ecode := OCIEnvInit(Env, OCI_DEFAULT, 0, nil); + if ecode <> 0 then OraError( ecode, nil, 'Error initializing OCI environment'); + ecode := OCIHandleAlloc(Env, Err, OCI_HTYPE_ERROR, 0, nil); + if ecode <> 0 then OraError( ecode, nil, 'Error allocating error handle'); + ecode := OCIHandleAlloc(Env, Stmt, OCI_HTYPE_STMT, 0, nil); + if ecode <> 0 then OraError( ecode, nil, 'Error allocating statement handle'); + end; + + procedure OraLogin(name, pass, server: string); + begin + ecode := OCILogon(Env, Err, Svc, @name[1], Length(name), + @pass[1], Length(pass), @server[1], Length(server)); + if ecode <> 0 then OraError(ecode, Err, ''); + end; + + procedure OraLogout; + begin + ecode := OCILogoff(Svc, Err); + if ecode <> 0 then + OraError(ecode, Err, 'OCILogoff: '); + end; + + procedure OraFin; + begin + OCIHandleFree(Stmt, OCI_HTYPE_STMT); + OCIHandleFree(Err, OCI_HTYPE_ERROR); + end; + + procedure OraSQLExec(sql: string); + var + dtype: longint; + begin +// writeLn(Length(sql)); + ecode := OCIStmtPrepare(Stmt, Err, @sql[1], Length(sql), + OCI_NTV_SYNTAX, OCI_DEFAULT); + if ecode <> 0 then + begin + OraError(ecode, Err, 'OCIStmtPrepare:'); + Exit; + end; + + dtype := cPrefetchCnt; + ecode := OCIAttrSet(Stmt, OCI_HTYPE_STMT, @dtype, + SizeOf(dtype), OCI_ATTR_PREFETCH_ROWS, Err); + if ecode <> 0 then + begin + OraError(ecode, Err, 'ociattrset:'); + Exit; + end; + + dtype := 0; + ecode := OCIAttrGet(Stmt, OCI_HTYPE_STMT, @dtype, nil, + OCI_ATTR_STMT_TYPE, Err); + if ecode <> 0 then + begin + OraError(ecode, Err, 'ociattrget:'); + Exit; + end; + + ecode := 0; + if dtype = OCI_STMT_SELECT then + ecode := OCIStmtExecute(Svc, Stmt, Err, 0, 0, nil, nil, OCI_DEFAULT) + else ecode := OCIStmtExecute(Svc, Stmt, Err, 1, 0, nil, nil, OCI_DEFAULT); + if ecode <> 0 then + begin + OraError(ecode, Err, 'OCIStmtExecute:'); + Exit; + end; + + if dtype = OCI_STMT_SELECT then + begin + Describe; + Define; + end; + end; + + function OraGetFieldCount : integer; + begin + OraGetFieldCount := FieldList.Count; + end; + + function IsFieldDate(Pos : integer): boolean; + var + Desc : TDescribeRec; + begin + Result := False; + if (Pos > FieldList.Count) or (Pos < 1) then + Exit; + Desc := TDescribeRec(FieldList[Pos-1]^); + Result := (Desc.dbtype = SQLT_DAT); + end; + + function OraGetFieldAsString(pos : integer) : string; + var + Desc : TDescribeRec; + Date : array [0..6] of byte; + begin + if (Pos > FieldList.Count) or (Pos < 1) then + Exit; + Desc := TDescribeRec(FieldList[pos-1]^); + if Desc.indp < 0 then + begin + OraGetFieldAsString := 'null'; + Exit; + end; + if Desc.dbtype = SQLT_STR then + begin + Desc.valbuf[Desc.col_retlen] := #0; + OraGetFieldAsString := strpas(Desc.valbuf); + end + else if Desc.dbtype = SQLT_CHR then + begin + Desc.valbuf[Desc.col_retlen] := #0; + OraGetFieldAsString := strpas(Desc.valbuf); + end + else if Desc.dbtype = SQLT_INT then + begin + OraGetFieldAsString := IntToStr(Desc.int_buf); + end + else if Desc.dbtype = SQLT_FLT then + OraGetFieldAsString := FloatToStr(Desc.flt_buf) + else if Desc.dbtype = SQLT_DAT then + begin + Move(Desc.valbuf,Date,SizeOf(Date)); + OraGetFieldAsString := + Format('%0.2d.%0.2d.%0.4d %0.2d:%0.2d:%0.2d', + [Date[3],Date[2],(((Date[0]-100)*100)+(Date[1] - 100)), + Date[4]-1, + Date[5]-1, + Date[6]-1]); + end + else if Desc.dbtype = SQLT_AFC then + begin + Desc.valbuf[Desc.col_retlen] := #0; + OraGetFieldAsString := strpas(Desc.valbuf); + end + else OraGetFieldAsString := 'dbtype not implemented ' + IntToStr(Desc.dbtype); + end; + + function OraGetFieldAsInteger(pos : integer) : longint; + begin + OraGetFieldAsInteger := 0; + end; + + function OraNext: boolean; + begin + ecode := OCIStmtFetch(Stmt, Err, 1, OCI_FETCH_NEXT, OCI_DEFAULT); + if ecode = 0 then + OraNext := true + else if ecode = OCI_SUCCESS_WITH_INFO then + OraNext := false + else if ecode = OCI_NO_DATA then + OraNext := false + else begin + OraNext := false; + OraError(ecode, err, 'OCIStmtFetch:'); + end; + end; + + function OraGetFieldType(pos : integer) : longint; + begin + if (Pos > FieldList.Count) or (pos < 1) then + Exit; + OraGetFieldType := TDescribeRec(FieldList[pos-1]^).dbtype; + end; + + function OraGetFieldName(pos : integer) : string; + begin + if (Pos > FieldList.Count) or (Pos < 1) then + Exit; + OraGetFieldName := strpas(TDescribeRec(FieldList[pos-1]^).buf); + end; + +initialization + + FieldList := TList.Create; + +finalization + + FieldListClear; + FieldList.Free; + +end. diff --git a/packages/oracle/examples/test01.pp b/packages/oracle/examples/test01.pp new file mode 100644 index 0000000000..e75a0db954 --- /dev/null +++ b/packages/oracle/examples/test01.pp @@ -0,0 +1,58 @@ +{ + Copyright (c) 1999-2000 by Pavel Stingl <stingp1.eti@mail.cez.cz> + + + Test program for OraOCI units + + See the file COPYING.FPC, included in this distribution, + for details about the copyright. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + **********************************************************************} +program test01; + +uses + oraclew, + oci,oratypes; + +{$H+} + +{ + Constants user, pass & tnsc you must set by hand to values, + which you prefer. + + user = username + pass = password + tnsc = TNS connect string + **********************************************************************} + +const + user = 'every'; + pass = 'tisova'; + tnsc = 'etil.world'; + +var + x : integer; + p : integer; +begin + OraInit; + OraLogin(user,pass,tnsc); + OraSQLExec('select sysdate from sys.dual'); + writeln(OraGetFieldName(1):20); + p := OraGetFieldCount; + for x := 1 to p do + write(OraGetFieldName(x), ';'); + WriteLn; + while OraNext do + begin + for x := 1 to p do + write(OraGetFieldAsString(x), ';'); + writeln; + end; + + OraLogout; + OraFin; +end. diff --git a/packages/oracle/src/nzerror.inc b/packages/oracle/src/nzerror.inc new file mode 100644 index 0000000000..ed135a9056 --- /dev/null +++ b/packages/oracle/src/nzerror.inc @@ -0,0 +1,658 @@ +{ + Automatically converted by H2Pas 1.0.0 from nzerror.h + The following command line parameters were used: + -p + -D + -l + jojo.so + nzerror.h +} + +{$PACKRECORDS C} + + { DISABLE check_long_lines } + { + * $Header: nzerror.h 30-jan-2005.21:20:26 skalyana Exp $ + * + * Copyright (c) 1995, 2005, Oracle. All rights reserved. + } + { ENABLE check_long_lines } + { + NAME + nzerror.h - error numbers for the Oracle Security Server + DESCRIPTION + None. + PUBLIC FUNCTION(S) + None. + PRIVATE FUNCTION(S) + None. + NOTES + A pragma is used to silence olint about the enum value names not being + unique within 7 characters. This limit is being changed to 30. + MODIFIED + skalyana 01/30/05 - + rchahal 07/16/04 - add cert label + rchahal 07/06/04 - + rchahal 10/15/03 - bug 2513821 + rchahal 08/14/03 - new error range (43000 - 43499) + skalyana 08/25/03 - Error changes + rchahal 06/27/03 - RSA errors + rchahal 05/27/03 - convert wallet + skalyana 03/07/03 - Move FIPS errors + rchahal 02/28/03 - bug 2648177 + rchahal 01/20/03 - use sltsky + rchahal 11/11/02 - pkcs11 support + skalyana 11/29/02 - Add mutex errors + akoyfman 11/01/02 - adding crl cache + rchahal 10/23/02 - crldp error + rchahal 10/15/02 - fetch crl from ldap + rchahal 10/07/02 - crl support + akoyfman 10/16/02 - Update with SSL PLus 4.2 errors + skalyana 10/04/02 - Certicom SSL Plus 4.2 Upgrade changes + akoyfman 08/06/02 - adding sso wallet errors + akoyfman 07/12/02 - adding secret store errors + skalyana 07/07/02 - Add more errors for FIPS self tests + skalyana 07/01/02 - Add more errors + skalyana 06/03/02 - Add NZ error for self test failure. + ajacobs 02/22/01 - Add some entrust errors + vle 02/09/01 - add error mesg + lkethana 08/11/00 - Extension Errors + lkethana 07/30/00 - add pkcs12 errors + lkethana 06/17/00 - mult cert errors + lkethana 06/11/00 - multiple cert support + rturlapa 03/29/00 - Add error meesage for Entrust Login failure. + rwessman 07/07/99 - Deleted include of sslerrs.h. It caused the RDBMS bu + rwessman 07/02/99 - fixed merge errors + rwessman 07/01/99 - moved NZOS errors to nzerror to make them visible + supriya 12/16/98 - add new error for cert chain. + arswamin 12/04/98 - add NZERROR_NO_MATCHING_PRIVATE_KEY + qdinh 11/12/98 - add NZERROR_VALIDITY_EXPIRED. + arswamin 06/17/98 - add INIT_FAILED + sdange 06/10/98 - change wrong password to bad password + amthakur 06/09/98 - adding error messages + wliau 03/10/97 - Add new error message for snzdfo.c. + rwessman 03/14/97 - Consolidated PL/SQL toolkit errors into generic erro + rwessman 02/26/97 - Added NZERROR_UNSUPPORTED. Corrected values of + errors outside the valid range. + asriniva 03/02/97 - Fix olint warning + rwessman 02/26/97 - Added NZERROR_UNSUPPORTED + rwessman 01/02/97 - Changed PLSQL package errors to be TK_PLSQL to + separate them from the errors generated by the + Oracle interface. + rwessman 12/30/96 - Merged in PL/SQL toolkit errors + sdange 11/14/96 - (Added NZERROR_DECRYPT_FAILED to the enum list) + rwessman 12/02/96 - + rwessman 11/25/96 - Added error messages for PL/SQL functions. + asriniva 10/31/96 - Include oratypes.h + asriniva 10/29/96 - Fix numbering. + asriniva 10/29/96 - Fix error numbers + asriniva 10/29/96 - Correct type-o + asriniva 10/28/96 - Add more TK errors + asriniva 10/28/96 - Convert OKAPI errors to TK errors. + rwessman 10/17/96 - still more OSS TK errors + asriniva 10/16/96 - OKAPI errors + asriniva 10/15/96 - OSSTK errors + rwessman 10/15/96 - Added more OSS TK errors + asriniva 10/09/96 - Add OSSTK errors. + rwessman 09/05/96 - Added errors for PL/SQL functions. + wliau 09/05/96 - correct error numbers. + $Log: $ + * Revision 1.26 1996/07/15 23:07:23 wliau + * Added NZERROR_AUTH_SHARED_MEMORY + * + * Revision 1.25 1996/07/01 20:40:15 asriniva + * Finished RSA verify/sign. + * + * Revision 1.24 1996/06/27 20:39:41 rwessman + * Added more errors. + * + * Revision 1.23 1996/05/31 17:33:40 rwessman + * Updated nzerror.h to contain bug # for olint enum bug. + * + * Revision 1.22 1996/05/31 17:12:30 rwessman + * Assigned values to the various errors. + * + * Revision 1.21 1996/05/13 20:46:58 ggilchri + * Added more attribute related error conditions + * + } + { ORATYPES } + { + ** Errors - when an error is added here, a message corresponding to the + ** error number must be added to the message file. + ** New errors must be assigned numbers, otherwise the compiler can assign any + ** value that it wants, which may lead to invalid error numbers being + ** generated. + ** The number range currently assigned to the OSS is 28750 - 29249 + ** New number range 43000 - 43499 + } + { A catchall for errors } + { No more memory } + { Failed to init data source } + { Failed to terminate data source } + { Store object in data source failed } + { Failed to obtain object from data source } + { Callback failed to allocate memory } + { Attempted to ask for 0 bytes of memory } + { Callback failed to free memory } + { Open of file failed } + { Creation of list failed } + { No list element found } + { Addition of list element failed } + { Retrieval of an unknown parameter type } + { Retrieval of parameter failed } + { Data method list does not exist } + { Failed to terminate } + { Bad version number } + { Bad magic number } + { Data retrieval method specified does not exist } + {The data source is already initialized } + { The data source is not initialized } + { File ID is bad } + { Failed to write magic and version } + { Failed to write to file } + { Failed to close file } + { The buffer supplied by the caller is too small } + { NL failed in creating a binding } + { A parameter was in a bad format } + { No method was specified for a data type } + { Illegal method for data type } + { No method specified when required } + { Data source is not allocated } + { Invalid parameter name } + { Could not translate OSD file name } + { Selected parameter is non-existent } + { Encrypted private key decryption failure } { Private key encryption failed } + { Incorrect input or unknown error } { Type of name requested is not available } + { Failure to generate an NLS string } + { Failed to verify a certificate } + { an OCI call to process some plsql failed } + { an OCI call to bind an internal var. failed } + { failed to init role retrieval } + { Did not complete role retrieval } + { Data method specified not supported } + { Invalid data type specified for key } + { Number of sub-keys to bind does not match count in initialized key } + { Failed to retreieve authentication information from the shared memory } + { RIO Open Failed } + { RIO object type invalid } + { RIO mode invalid } + { RIO io set or numberinvalid } + { RIO close failed } + { RIO retrieve failed } + { RIO store failed } + { RIO update failed } + { RIO info failed } + { RIO delete failed } + { Key descriptor create failed } + { access descriptor invalid } + { record invalid } + { record type and AD type not matched } + { A number passed to PL/SQL could not be converted to real format } + { A number in machine format could not be converted to Oracle format } + { A password was not provided to a PL/SQL function } + { A PL/SQL function returned an error } + { The package context was not specified to a PL/SQL function } + { The user's distinguished name was not provided to a PL/SQL function } + { The state of either a signature or decryption/encryption was not provided } + { An input buffer was specified to a PL/SQL function } + { No seed was specified to the PL/SQL seed initialization function } + { Number of bytes was not specified to the PL/SQL random number generator } + { Invalid encryption/decryption/signature state passed } + { No crypto engine function was passed in } + { An invalid crypto engine function was passed in } + { An invalid cipher type was passed in } + { An invalid identity type was specified } + { No cipher type was specified } + { No identity type was specified } + { No data unit format was specified } + { Invalid data unit format was provided to function } + { Not enough info (usually parameters) provided to a PL/SQL function } + { Buffer provided by PL/SQL is too small for data to be returned } + { Identity descriptor not present or too small } + { Wallet has not been opened yet } + { No wallet descriptor specified to PL/SQL function } + { No identity descriptor specified to PL/SQL function } + { No persona descriptor was specified to PL/SQL function } + { Wallet was already opened } + { Operation is not supported } + { Bad file permission specified } + { OSD error when opening file } + { cert + privkey + tp files do not exist } + { no certificate } + { no private-key } + { no clear key-file } + { no encrypted priv key } + { no trustpoints } + { no clear trustpoints } + { no encrypted trustpoints } + { bad password } + { init failed or + module loading failed } + {****************************** SSL ERRORS ******************************* } + { + * In order to allow SSL errors to be mapped to Oracle errors, space is + * provided here. One Oracle error is provided for each SSL error to make + * error handling easier. A macro is provided to do the conversion. + * NOTE: ANY CHANGE IN SSL ERRORS MUST BE REFLECTED HERE. + * To add an SSL error, use the following formula to calculate the Oracle + * error: + * new_oracle_error = (new_ssl_error - SSLMemoryError) + NZERROR_SSLMemoryErr + * or numerically: + * new_oracle_error = (new_ssl_error - -7000) + 28854 + } + { ============>>> ENTRUST ERRORS } + { ============>>> NZERRORS CONTINUED } + { ============>>> PKI VENDORS ERRORS 29050 - 29099 } + { ============>>> SSL Errors CONTINUED } + { ============>>> PKCS12 error 29100 - 29149 } + { ===========>>> SSL Errors CONTINUED 29135 - 29139 } + { ==========>>> Mutex Errors 29138 - 29139 } + { ============>>> EXTENSIONS Errors 29140 - 29149 } + { ============>>> FIPS ERRORS 29150 - 29175 } + { ============>>> CRL ERRORS 29176 - 29200 } + {CRL signature verification failed } {Cert is not in CRL - cert is not revoked } {Cert is in CRL - cert is revoked } {Cert revocation check failed } { ldap_open failed } + { ldap_bind failed } + { ldap_search failed } + { ldap_result failed } + { ldap_first_attribute failed } + { ldap_get_values_len failed } + { unsupported validation mechanism } + { ldap_count_entries failed } + { No entry found in OID } + { Multiple entries in OID } + { Validation mechanism not set in OID } + { No CRL found using CRLDP mechanism } + { No CRL found in the cache } + { CRL nextUpdate time is in the past } + { ============>>> ADD ERRORS HERE -- NOTE DECREASING numbers } + { for nztCompareDN } + { unable to create a cert chain + * with the existing TPs for the + * cert to be installed. + } + { No matching cert_req was + * found the corresponding to + * the privatekey which + * matches the cert to be + * installed } + { we are attempting to + * install a cert again into + * a persona which already + * has it installed. + } + { could not find a matching + * persona-private(privatekey) in + * the Persona, for the given + * cert(public key). + } + { certificate validity date expired } + { Couldn't determine # of bytes needed } + { Magic number found in header does not match expected } + { Header length passed in not sufficient for message header } + { Crypto engine failed to initialize } + { Crypto engine key initialization failed } + { Count not encode key object } + { Could not decode key into object } + { Crypto engine failed to get key info } + { Couldn't seed random number generator } + { Couldn't finish algorithm } + { Couldn't apply algorithm to data } + { Couldn't init CE for algorithm } + { Have no idea what algorithm you want } + { Cannot grow output buffer block } + { Key not large enough for data } + { Unknown key type. } + { Wallet resource locator not specified to PL/SQL function } + { Unknown crypto engine function } + { Unknown TDU format } + { Object must be open } + { Bad WRL type } + { Bad state specified for the crypto engine } + { After 29249, use error numbers in block 43000 - 43499 } + { PKCS #11 library not found } + { can't find token with given label } + { passphrase is incorrect/expired } + { C_GetFunctionList returned error } + { C_Initialize returned error } + { No tokens present } + { C_GetSlotList returned error } + { C_GetTokenInfo returned error } + { Symbol not found in PKCS11 lib } + { Token login failed } + { Change providers error } + { Error trying to find private key on token } + { Key pair gen error } + { Wallet already contains + pkcs11 info } + { No cert found on token } + {No user cert found on token } + {No cert found on token with given certificate label. } + {Multiple certs found on token with given certificate label. } + {Cert with given cert is not a user cert because no corresponding pvt key found on token } + { RSA ERRORS 43050 - 43059 } + { C_BindService returned error } + { B_CreateKeyObject returned error } + { C_GetCertFields returned error } + { C_CreatePKCS10Object returned error } + { C_SetPKCS10Fields returned error } + { C_SignCertRequest returned error } + { C_GetPKCS10DER returned error } + { C_InitializeCertC returned error } + { C_InsertPrivateKey returned error } + { RSA error. See trace output } + { slts ERRORS 43060 - 43069 } + { sltsini() returned error } + { sltskyc() returned error } + { sltster() returned error } + { sltskys() returned error } + { bad sso header length } + { wallet not empty } + { Last available error } + { MAXIMUM ERROR NUMBER IS 43499 } + { + * DO NOT JUST INSERT NEW ERRORS IN ANY OLD PLACE. New errors should be + * added such the current error retains their integer values. Duplicate + * values will cause compiler errors. + } + + type + + Pnzerror = ^nzerror; + nzerror = (NZERROR_OK := 0,NZERROR_GENERIC := 28750, + NZERROR_NO_MEMORY := 28751,NZERROR_DATA_SOURCE_INIT_FAILED := 28752, + NZERROR_DATA_SOURCE_TERM_FAILED := 28753, + NZERROR_OBJECT_STORE_FAILED := 28754,NZERROR_OBJECT_GET_FAILED := 28755, + NZERROR_MEMORY_ALLOC_FAILED := 28756,NZERROR_MEMORY_ALLOC_0_BYTES := 28757, + NZERROR_MEMORY_FREE_FAILED := 28758,NZERROR_FILE_OPEN_FAILED := 28759, + NZERROR_LIST_CREATION_FAILED := 28760, + NZERROR_NO_ELEMENT := 28761,NZERROR_ELEMENT_ADD_FAILED := 28762, + NZERROR_PARAMETER_BAD_TYPE := 28763,NZERROR_PARAMETER_RETRIEVAL := 28764, + NZERROR_NO_LIST := 28765,NZERROR_TERMINATE_FAIL := 28766, + NZERROR_BAD_VERSION_NUMBER := 28767,NZERROR_BAD_MAGIC_NUMBER := 28768, + NZERROR_METHOD_NOT_FOUND := 28769,NZERROR_ALREADY_INITIALIZED := 28770, + NZERROR_NOT_INITIALIZED := 28771,NZERROR_BAD_FILE_ID := 28772, + NZERROR_WRITE_MAGIC_VERSION := 28773,NZERROR_FILE_WRITE_FAILED := 28774, + NZERROR_FILE_CLOSE_FAILED := 28775,NZERROR_OUTPUT_BUFFER_TOO_SMALL := 28776, + NZERROR_BINDING_CREATION_FAILED := 28777, + NZERROR_PARAMETER_MALFORMED := 28778,NZERROR_PARAMETER_NO_METHOD := 28779, + NZERROR_BAD_PARAMETER_METHOD := 28780, + NZERROR_PARAMETER_NO_DATA := 28781,NZERROR_NOT_ALLOCATED := 28782, + NZERROR_INVALID_PARAMETER := 28783,NZERROR_FILE_NAME_TRANSLATION := 28784, + NZERROR_NO_SUCH_PARAMETER := 28785,NZERROR_DECRYPT_FAILED := 28786, + NZERROR_ENCRYPT_FAILED := 28787,NZERROR_INVALID_INPUT := 28788, + NZERROR_NAME_TYPE_NOT_FOUND := 28789,NZERROR_NLS_STRING_OPEN_FAILED := 28790, + NZERROR_CERTIFICATE_VERIFY := 28791,NZERROR_OCI_PLSQL_FAILED := 28792, + NZERROR_OCI_BIND_FAILED := 28793,NZERROR_ATTRIBUTE_INIT := 28794, + NZERROR_ATTRIBUTE_FINISH_FAILED := 28795, + NZERROR_UNSUPPORTED_METHOD := 28796,NZERROR_INVALID_KEY_DATA_TYPE := 28797, + NZEROR_BIND_SUBKEY_COUNT := 28798,NZERROR_AUTH_SHARED_MEMORY := 28799, + NZERROR_RIO_OPEN := 28800,NZERROR_RIO_OBJECT_TYPE := 28801, + NZERROR_RIO_MODE := 28802,NZERROR_RIO_IO := 28803, + NZERROR_RIO_CLOSE := 28804,NZERROR_RIO_RETRIEVE := 28805, + NZERROR_RIO_STORE := 28806,NZERROR_RIO_UPDATE := 28807, + NZERROR_RIO_INFO := 28808,NZERROR_RIO_DELETE := 28809, + NZERROR_KD_CREATE := 28810,NZERROR_RIO_ACCESS_DESCRIPTOR := 28811, + NZERROR_RIO_RECORD := 28812,NZERROR_RIO_RECORD_TYPE := 28813, + NZERROR_PLSQL_ORACLE_TO_REAL := 28814, + NZERROR_PLSQL_REAL_TO_ORACLE := 28815, + NZERROR_TK_PLSQL_NO_PASSWORD := 28816, + NZERROR_TK_PLSQL_GENERIC := 28817,NZERROR_TK_PLSQL_NO_CONTEXT := 28818, + NZERROR_TK_PLSQL_NO_DIST_NAME := 28819, + NZERROR_TK_PLSQL_NO_STATE := 28820,NZERROR_TK_PLSQL_NO_INPUT := 28821, + NZERROR_TK_PLSQL_NO_SEED := 28822,NZERROR_TK_PLSQL_NO_BYTES := 28823, + NZERROR_TK_INVALID_STATE := 28824,NZERROR_TK_PLSQL_NO_ENG_FUNC := 28825, + NZERROR_TK_INV_ENG_FUNC := 28826,NZERROR_TK_INV_CIPHR_TYPE := 28827, + NZERROR_TK_INV_IDENT_TYPE := 28828,NZERROR_TK_PLSQL_NO_CIPHER_TYPE := 28829, + NZERROR_TK_PLSQL_NO_IDENT_TYPE := 28830, + NZERROR_TK_PLSQL_NO_DATA_FMT := 28831, + NZERROR_TK_INV_DATA_FMT := 28832,NZERROR_TK_PLSQL_INSUFF_INFO := 28833, + NZERROR_TK_PLSQL_BUF_TOO_SMALL := 28834, + NZERROR_TK_PLSQL_INV_IDENT_DESC := 28835, + NZERROR_TK_PLSQL_WALLET_NOTOPEN := 28836, + NZERROR_TK_PLSQL_NO_WALLET := 28837,NZERROR_TK_PLSQL_NO_IDENTITY := 28838, + NZERROR_TK_PLSQL_NO_PERSONA := 28839,NZERROR_TK_PLSQL_WALLET_OPEN := 28840, + NZERROR_UNSUPPORTED := 28841,NZERROR_FILE_BAD_PERMISSION := 28842, + NZERROR_FILE_OSD_ERROR := 28843,NZERROR_NO_WALLET := 28844, + NZERROR_NO_CERTIFICATE_ALERT := 28845, + NZERROR_NO_PRIVATE_KEY := 28846,NZERROR_NO_CLEAR_PRIVATE_KEY_FILE := 28847, + NZERROR_NO_ENCRYPTED_PRIVATE_KEY_FILE := 28848, + NZERROR_NO_TRUSTPOINTS := 28849,NZERROR_NO_CLEAR_TRUSTPOINT_FILE := 28850, + NZERROR_NO_ENCRYPTED_TRUSTPOINT_FILE := 28851, + NZERROR_BAD_PASSWORD := 28852,NZERROR_INITIALIZATION_FAILED := 28853, + NZERROR_SSLMemoryErr := 28854,NZERROR_SSLUnsupportedErr := 28855, + NZERROR_SSLOverflowErr := 28856,NZERROR_SSLUnknownErr := 28857, + NZERROR_SSLProtocolErr := 28858,NZERROR_SSLNegotiationErr := 28859, + NZERROR_SSLFatalAlert := 28860,NZERROR_SSLWouldBlockErr := 28861, + NZERROR_SSLIOErr := 28862,NZERROR_SSLSessionNotFoundErr := 28863, + NZERROR_SSLConnectionClosedGraceful := 28864, + NZERROR_SSLConnectionClosedError := 28865, + NZERROR_ASNBadEncodingErr := 28866,NZERROR_ASNIntegerTooBigErr := 28867, + NZERROR_X509CertChainInvalidErr := 28868, + NZERROR_X509CertExpiredErr := 28869,NZERROR_X509NamesNotEqualErr := 28870, + NZERROR_X509CertChainIncompleteErr := 28871, + NZERROR_X509DataNotFoundErr := 28872,NZERROR_SSLBadParameterErr := 28873, + NZERROR_SSLIOClosedOverrideGoodbyeKiss := 28874, + NZERROR_X509MozillaSGCErr := 28875,NZERROR_X509IESGCErr := 28876, + NZERROR_ImproperServerCredentials := 28877, + NZERROR_ImproperClientCredentials := 28878, + NZERROR_NoProtocolSideSet := 28879,NZERROR_setPersonaFailed := 28880, + NZERROR_setCertFailed := 28881,NZERROR_setVKeyFailed := 28882, + NZERROR_setTPFailed := 28883,NZERROR_BadCipherSuite := 28884, + NZERROR_NoKeyPairForKeyUsage := 28885, + NZERROR_EntrustLoginFailed := 28890,NZERROR_EntrustGetInfoFailed := 28891, + NZERROR_EntrustLoadCertificateFailed := 28892, + NZERROR_EntrustGetNameFailed := 28893, + NZERROR_CertNotInstalled := 29000,NZERROR_ServerDNMisMatched := 29002, + NZERROR_ServerDNMisConfigured := 29003, + NZERROR_CIC_ERR_SSL_ALERT_CB_FAILURE := 29004, + NZERROR_CIC_ERR_SSL_BAD_CERTIFICATE := 29005, + NZERROR_CIC_ERR_SSL_BAD_CERTIFICATE_REQUEST := 29006, + NZERROR_CIC_ERR_SSL_BAD_CLEAR_KEY_LEN := 29007, + NZERROR_CIC_ERR_SSL_BAD_DHPARAM_KEY_LENGTH := 29008, + NZERROR_CIC_ERR_SSL_BAD_ENCRYPTED_KEY_LEN := 29009, + NZERROR_CIC_ERR_SSL_BAD_EXPORT_KEY_LENGTH := 29010, + NZERROR_CIC_ERR_SSL_BAD_FINISHED_MESSAGE := 29011, + NZERROR_CIC_ERR_SSL_BAD_KEY_ARG_LEN := 29012, + NZERROR_CIC_ERR_SSL_BAD_MAC := 29013,NZERROR_CIC_ERR_SSL_BAD_MAX_FRAGMENT_LENGTH_EXTENSION := 29014, + NZERROR_CIC_ERR_SSL_BAD_MESSAGE_LENGTH := 29015, + NZERROR_CIC_ERR_SSL_BAD_PKCS1_PADDING := 29016, + NZERROR_CIC_ERR_SSL_BAD_PREMASTER_SECRET_LENGTH := 29017, + NZERROR_CIC_ERR_SSL_BAD_PREMASTER_SECRET_VERSION := 29018, + NZERROR_CIC_ERR_SSL_BAD_PROTOCOL_VERSION := 29019, + NZERROR_CIC_ERR_SSL_BAD_RECORD_LENGTH := 29020, + NZERROR_CIC_ERR_SSL_BAD_SECRET_KEY_LEN := 29021, + NZERROR_CIC_ERR_SSL_BAD_SIDE := 29022, + NZERROR_CIC_ERR_SSL_BUFFERS_NOT_EMPTY := 29023, + NZERROR_CIC_ERR_SSL_CERTIFICATE_VALIDATE_FAILED := 29024, + NZERROR_CIC_ERR_SSL_CERT_CHECK_CALLBACK := 29025, + NZERROR_CIC_ERR_SSL_DECRYPT_FAILED := 29026, + NZERROR_CIC_ERR_SSL_ENTROPY_COLLECTION := 29027, + NZERROR_CIC_ERR_SSL_FAIL_SERVER_VERIFY := 29028, + NZERROR_CIC_ERR_SSL_HANDSHAKE_ALREADY_COMPLETED := 29029, + NZERROR_CIC_ERR_SSL_HANDSHAKE_REQUESTED := 29030, + NZERROR_CIC_ERR_SSL_HANDSHAKE_REQUIRED := 29031, + NZERROR_CIC_ERR_SSL_INCOMPLETE_IDENTITY := 29032, + NZERROR_CIC_ERR_SSL_INVALID_PFX := 29033, + NZERROR_CIC_ERR_SSL_NEEDS_CIPHER_OR_CLIENTAUTH := 29034, + NZERROR_CIC_ERR_SSL_NEEDS_PRNG := 29035, + NZERROR_CIC_ERR_SSL_NOT_SUPPORTED := 29036, + NZERROR_CIC_ERR_SSL_NO_CERTIFICATE := 29037, + NZERROR_CIC_ERR_SSL_NO_MATCHING_CERTIFICATES := 29038, + NZERROR_CIC_ERR_SSL_NO_MATCHING_CIPHER_SUITES := 29039, + NZERROR_CIC_ERR_SSL_NO_SUPPORTED_CIPHER_SUITES := 29040, + NZERROR_CIC_ERR_SSL_NULL_CB := 29041,NZERROR_CIC_ERR_SSL_READ_BUFFER_NOT_EMPTY := 29042, + NZERROR_CIC_ERR_SSL_READ_REQUIRED := 29043, + NZERROR_CIC_ERR_SSL_RENEGOTIATION_ALREADY_REQUESTED := 29044, + NZERROR_CIC_ERR_SSL_RENEGOTIATION_REFUSED := 29045, + NZERROR_CIC_ERR_SSL_RESUMABLE_SESSION := 29046, + NZERROR_CIC_ERR_SSL_TLS_EXTENSION_MISMATCH := 29047, + NZERROR_CIC_ERR_SSL_UNEXPECTED_MSG := 29048, + NZERROR_CIC_ERR_SSL_UNKNOWN_RECORD := 29049, + NZERROR_CIC_ERR_SSL_UNSUPPORTED_CLIENT_AUTH_MODE := 29050, + NZERROR_CIC_ERR_SSL_UNSUPPORTED_PUBKEY_TYPE := 29051, + NZERROR_CIC_ERR_SSL_WRITE_BUFFER_NOT_EMPTY := 29052, + NZERROR_CIC_ERR_PKCS12_MISSING_ALG := 29053, + NZERROR_CIC_ERR_PKCS_AUTH_FAILED := 29054, + NZERROR_CIC_ERR_PKCS_BAD_CONTENT_TYPE := 29055, + NZERROR_CIC_ERR_PKCS_BAD_INPUT := 29056, + NZERROR_CIC_ERR_PKCS_BAD_PADDING := 29057, + NZERROR_CIC_ERR_PKCS_BAD_SN := 29058,NZERROR_CIC_ERR_PKCS_BAD_SN_LENGTH := 29059, + NZERROR_CIC_ERR_PKCS_BAD_VERSION := 29060, + NZERROR_CIC_ERR_PKCS_BASE := 29061,NZERROR_CIC_ERR_PKCS_FIELD_NOT_PRESENT := 29062, + NZERROR_CIC_ERR_PKCS_NEED_CERTVAL := 29063, + NZERROR_CIC_ERR_PKCS_NEED_PASSWORD := 29064, + NZERROR_CIC_ERR_PKCS_NEED_PKC := 29065, + NZERROR_CIC_ERR_PKCS_NEED_PRV_KEY := 29066, + NZERROR_CIC_ERR_PKCS_NEED_TRUSTED := 29067, + NZERROR_CIC_ERR_PKCS_UNSUPPORTED_CERT_FORMAT := 29068, + NZERROR_CIC_ERR_PKCS_UNSUP_PRVKEY_TYPE := 29069, + NZERROR_CIC_ERR_CODING_BAD_PEM := 29070, + NZERROR_CIC_ERR_CODING_BASE := 29071,NZERROR_CIC_ERR_DER_BAD_ENCODING := 29072, + NZERROR_CIC_ERR_DER_BAD_ENCODING_LENGTH := 29073, + NZERROR_CIC_ERR_DER_BASE := 29074,NZERROR_CIC_ERR_DER_ELEMENT_TOO_LONG := 29075, + NZERROR_CIC_ERR_DER_INDEFINITE_LENGTH := 29076, + NZERROR_CIC_ERR_DER_NO_MORE_ELEMENTS := 29077, + NZERROR_CIC_ERR_DER_OBJECT_TOO_LONG := 29078, + NZERROR_CIC_ERR_DER_TAG_SIZE := 29079, + NZERROR_CIC_ERR_DER_TIME_OUT_OF_RANGE := 29080, + NZERROR_CIC_ERR_DER_UNUSED_BITS_IN_BIT_STR := 29081, + NZERROR_CIC_ERR_GENERAL_BASE := 29082, + NZERROR_CIC_ERR_HASH_BASE := 29083,NZERROR_CIC_ERR_ILLEGAL_PARAM := 29084, + NZERROR_CIC_ERR_MEM_NOT_OURS := 29085, + NZERROR_CIC_ERR_MEM_OVERRUN := 29086,NZERROR_CIC_ERR_MEM_UNDERRUN := 29087, + NZERROR_CIC_ERR_MEM_WAS_FREED := 29088, + NZERROR_CIC_ERR_NOT_FOUND := 29090,NZERROR_CIC_ERR_NO_PTR := 29091, + NZERROR_CIC_ERR_TIMEOUT := 29092,NZERROR_CIC_ERR_UNIT_MASK := 29093, + NZERROR_CIC_ERR_BAD_CTX := 29094,NZERROR_CIC_ERR_BAD_INDEX := 29095, + NZERROR_CIC_ERR_BAD_LENGTH := 29096,NZERROR_CIC_ERR_CODING_BAD_ENCODING := 29097, + NZERROR_CIC_ERR_SSL_NO_CLIENT_AUTH_MODES := 29098, + NZERROR_LOCKEYID_CREATE_FAILED := 29100, + NZERROR_P12_ADD_PVTKEY_FAILED := 29101, + NZERROR_P12_ADD_CERT_FAILED := 29102,NZERROR_P12_WLT_CREATE_FAILED := 29103, + NZERROR_P12_ADD_CERTREQ_FAILED := 29104, + NZERROR_P12_WLT_EXP_FAILED := 29105,NZERROR_P12_WLT_IMP_FAILED := 29106, + NZERROR_P12_CREATE_FAILED := 29107,NZERROR_P12_DEST_FAILED := 29107, + NZERROR_P12_RAND_ERROR := 29108,NZERROR_P12_PVTKEY_CRT_FAILED := 29109, + NZERROR_P12_INVALID_BAG := 29110,NZERROR_P12_INVALID_INDEX := 29111, + NZERROR_P12_GET_CERT_FAILED := 29112,NZERROR_P12_GET_PVTKEY_FAILED := 29113, + NZERROR_P12_IMP_PVTKEY_FAILED := 29114, + NZERROR_P12_EXP_PVTKEY_FAILED := 29115, + NZERROR_P12_GET_ATTRIB_FAILED := 29116, + NZERROR_P12_ADD_ATTRIB_FAILED := 29117, + NZERROR_P12_CRT_ATTRIB_FAILED := 29118, + NZERROR_P12_IMP_CERT_FAILED := 29119,NZERROR_P12_EXP_CERT_FAILED := 29120, + NZERROR_P12_ADD_SECRET_FAILED := 29121, + NZERROR_P12_ADD_PKCS11INFO_FAILED := 29122, + NZERROR_P12_GET_PKCS11INFO_FAILED := 29123, + NZERROR_P12_MULTIPLE_PKCS11_LIBNAME := 29124, + NZERROR_P12_MULTIPLE_PKCS11_TOKENLABEL := 29125, + NZERROR_P12_MULTIPLE_PKCS11_TOKENPASSPHRASE := 29126, + NZERROR_P12_UNKNOWN_PKCS11INFO := 29127, + NZERROR_P12_PKCS11_LIBNAME_NOT_SET := 29128, + NZERROR_P12_PKCS11_TOKENLABEL_NOT_SET := 29129, + NZERROR_P12_PKCS11_TOKENPASSPHRASE_NOT_SET := 29130, + NZERROR_P12_MULTIPLE_PKCS11_CERTLABEL := 29131, + NZERROR_CIC_ERR_RANDOM := 29135,NZERROR_CIC_ERR_SMALL_BUFFER := 29136, + NZERROR_CIC_ERR_SSL_BAD_CONTEXT := 29137, + NZERROR_MUTEX_INITIALIZE_FAILED := 29138, + NZERROR_MUTEX_DESTROY_FAILED := 29139, + NZERROR_BS_CERTOBJ_CREAT_FAILED := 29140, + NZERROR_BS_DER_IMP_FAILED := 29141,NZERROR_DES_SELF_TEST_FAILED := 29150, + NZERROR_3DES_SELF_TEST_FAILED := 29151, + NZERROR_SHA_SELF_TEST_FAILED := 29152, + NZERROR_RSA_SELF_TEST_FAILED := 29153, + NZERROR_DRNG_SELF_TEST_FAILED := 29154, + NZERROR_CKEYPAIR_SELF_TEST_FAILED := 29155, + NZERROR_CRNG_SELF_TEST_FAILED := 29156, + NZERROR_FIPS_PATHNAME_ERROR := 29157,NZERROR_FIPS_LIB_OPEN_FAILED := 29158, + NZERROR_FIPS_LIB_READ_ERROR := 29159,NZERROR_FIPS_LIB_DIFFERS := 29160, + NZERROR_DAC_SELF_TEST_FAILED := 29161, + NZERROR_NONFIPS_CIPHERSUITE := 29162,NZERROR_VENDOR_NOT_SUPPORTED_FIPS_MODE := 29163, + NZERROR_EXTERNAL_PKCS12_NOT_SUPPORTED_FIPS_MODE := 29164, + NZERROR_AES_SELF_TEST_FAILED := 29165, + NZERROR_CRL_SIG_VERIFY_FAILED := 29176, + NZERROR_CERT_NOT_IN_CRL := 29177,NZERROR_CERT_IN_CRL := 29178, + NZERROR_CERT_IN_CRL_CHECK_FAILED := 29179, + NZERROR_INVALID_CERT_STATUS_PROTOCOL := 29180, + NZERROR_LDAP_OPEN_FAILED := 29181,NZERROR_LDAP_BIND_FAILED := 29182, + NZERROR_LDAP_SEARCH_FAILED := 29183,NZERROR_LDAP_RESULT_FAILED := 29184, + NZERROR_LDAP_FIRSTATTR_FAILED := 29185, + NZERROR_LDAP_GETVALUESLEN_FAILED := 29186, + NZERROR_LDAP_UNSUPPORTED_VALMEC := 29187, + NZERROR_LDAP_COUNT_ENTRIES_FAILED := 29188, + NZERROR_LDAP_NO_ENTRY_FOUND := 29189,NZERROR_LDAP_MULTIPLE_ENTRIES_FOUND := 29190, + NZERROR_OID_INFO_NOT_SET := 29191,NZERROR_LDAP_VALMEC_NOT_SET := 29192, + NZERROR_CRLDP_NO_CRL_FOUND := 29193,NZERROR_CRL_NOT_IN_CACHE := 29194, + NZERROR_CRL_EXPIRED := 29195,NZERROR_DN_MATCH := 29222, + NZERROR_CERT_CHAIN_CREATION := 29223,NZERROR_NO_MATCHING_CERT_REQ := 29224, + NZERROR_CERT_ALREADY_INSTALLED := 29225, + NZERROR_NO_MATCHING_PRIVATE_KEY := 29226, + NZERROR_VALIDITY_EXPIRED := 29227,NZERROR_TK_BYTES_NEEDED := 29228, + NZERROR_TK_BAD_MAGIC_NUMBER := 29229,NZERROR_TK_BAD_HEADER_LENGTH := 29230, + NZERROR_TK_CE_INIT := 29231,NZERROR_TK_CE_KEYINIT := 29232, + NZERROR_TK_CE_ENCODE_KEY := 29233,NZERROR_TK_CE_DECODE_KEY := 29234, + NZERROR_TK_CE_GEYKEYINFO := 29235,NZERROR_TK_SEED_RANDOM := 29236, + NZERROR_TK_CE_ALGFINISH := 29237,NZERROR_TK_CE_ALGAPPLY := 29238, + NZERROR_TK_CE_ALGINIT := 29239,NZERROR_TK_ALGORITHM := 29240, + NZERROR_TK_CANNOT_GROW := 29241,NZERROR_TK_KEYSIZE := 29242, + NZERROR_TK_KEYTYPE := 29243,NZERROR_TK_PLSQL_NO_WRL := 29244, + NZERROR_TK_CE_FUNC := 29245,NZERROR_TK_TDU_FORMAT := 29246, + NZERROR_TK_NOTOPEN := 29247,NZERROR_TK_WRLTYPE := 29248, + NZERROR_TK_CE_STATE := 29249,NZERROR_PKCS11_LIBRARY_NOT_FOUND := 43000, + NZERROR_PKCS11_TOKEN_NOT_FOUND := 43001, + NZERROR_PKCS11_BAD_PASSPHRASE := 43002, + NZERROR_PKCS11_GET_FUNC_LIST := 43003, + NZERROR_PKCS11_INITIALIZE := 43004,NZERROR_PKCS11_NO_TOKENS_PRESENT := 43005, + NZERROR_PKCS11_GET_SLOT_LIST := 43006, + NZERROR_PKCS11_GET_TOKEN_INFO := 43008, + NZERROR_PKCS11_SYMBOL_NOT_FOUND := 43009, + NZERROR_PKCS11_TOKEN_LOGIN_FAILED := 43011, + NZERROR_PKCS11_CHANGE_PROVIDERS_ERROR := 43013, + NZERROR_PKCS11_GET_PRIVATE_KEY_ERROR := 43014, + NZERROR_PKCS11_CREATE_KEYPAIR_ERROR := 43015, + NZERROR_PKCS11_WALLET_CONTAINS_P11_INFO := 43016, + NZERROR_PKCS11_NO_CERT_ON_TOKEN := 43017, + NZERROR_PKCS11_NO_USER_CERT_ON_TOKEN := 43018, + NZERROR_PKCS11_NO_CERT_ON_TOKEN_WITH_GIVEN_LABEL := 43019, + NZERROR_PKCS11_MULTIPLE_CERTS_ON_TOKEN_WITH_GIVEN_LABEL := 43020, + NZERROR_PKCS11_CERT_WITH_LABEL_NOT_USER_CERT := 43021, + NZERROR_BIND_SERVICE_ERROR := 43050,NZERROR_CREATE_KEY_OBJ_ERROR := 43051, + NZERROR_GET_CERT_FIELDS := 43052,NZERROR_CREATE_PKCS10_OBJECT := 43053, + NZERROR_SET_PKCS10_FIELDS := 43054,NZERROR_SIGN_CERT_REQUEST := 43055, + NZERROR_GET_PKCS10_DER := 43056,NZERROR_INITIALIZE_CERTC := 43057, + NZERROR_INSERT_PRIVATE_KEY := 43058,NZERROR_RSA_ERROR := 43059, + NZERROR_SLTSCTX_INIT_FAILED := 43060,NZERROR_SLTSKYC_FAILED := 43061, + NZERROR_SLTSCTX_TERM_FAILED := 43062,NZERROR_SLTSKYS_FAILED := 43063, + NZERROR_INVALID_HEADER_LENGTH := 43070, + NZERROR_WALLET_CONTAINS_USER_CREDENTIALS := 43071, + NZERROR_LAST_ERROR := 43499,NZERROR_THIS_MUST_BE_LAST + ); + { + * Macro to convert SSL errors to Oracle errors. As SSL errors are negative + * and Oracle numbers are positive, the following needs to be done. + * 1. The base error number, which is the highest, is added to the + * SSL error to get the index into the number range. + * 2. The result is added to the base Oracle number to get the Oracle error. + } + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } +// function NZERROR_SSL_TO_ORACLE(ssl_error_ : longint) : longint; + +{implementation + + function NZERROR_SSL_TO_ORACLE(ssl_error_ : longint) : longint; + var + if_local1 : longint; + (* result types are not known *) + begin + if ssl_error_=SSLNoErr then + if_local1:=NZERROR_OK + else + if_local1:=nzerror((ssl_error_-SSLMemoryErr)+(uword(NZERROR_SSLMemoryErr))); + NZERROR_SSL_TO_ORACLE:=if_local1; + end; + + +end.} diff --git a/packages/oracle/src/nzt.inc b/packages/oracle/src/nzt.inc new file mode 100644 index 0000000000..ef714cd74e --- /dev/null +++ b/packages/oracle/src/nzt.inc @@ -0,0 +1,2707 @@ + +{ + Automatically converted by H2Pas 1.0.0 from nzt.h + The following command line parameters were used: + -p + -D + -l + jojo.so + nzt.h +} + +{$PACKRECORDS C} + +type + Pnzctx = pointer; + PPub1 = pointer; + PPnzttIdentity = pointer; + PPnzttPersona = pointer; + PPtext = pointer; + Pnzstrc = pointer; + + { DISABLE check_long_lines } + { Copyright (c) 1996, 2004, Oracle. All rights reserved. } + { Copyright (c) 1996, 2004, Oracle. All rights reserved. } + { + * $Header: nzt.h 10-aug-2004.11:55:06 rchahal Exp $ + } + { + * NAME + * nzt.h + * + * DESCRIPTION + * Toolkit public declarations. + * + * PUBLIC FUNCTIONS + * nztwOpenWallet - Open a wallet based on a WRL and pwd. + * nztwCloseWallet - Close a wallet. + * + nztwCreateWallet - Create a new wallet. + * + nztwDestroyWallet - Destroy an existing wallet. + * nztwRetrievePersonaCopy - Retieve a copy of a particular persona. + * + nzteStorePersona - Store a persona in the wallet. + * nzteOpenPersona - Open a persona. + * nzteClosePersona - Close a persona. + * + nzteRemovePersona - Remove a persona from a wallet. + * + nzteCreatePersona - Create a persona. + * nzteDestroyPersona - Destroy a persona. + * nztiStoreTrustedIdentity - Store an identity with associated trust. + * nzteRetrieveTrustedIdentCopy - Retrieves a trusted identity from persona + * + nzteSetProtection - Modify the protection set in a persona. + * + nzteGetProtection - Get the protection set in a persona + * nztePriKey - Get the Private Key (X509 Only) + * nzteMyCert - Get the Certificate (X509 only) + * nzteX509CreatePersona - Create a persona given an X509 Certificate. + * + nztiRemoveIdentity - Remove an identity from a persona. + * nztiCreateIdentity - Create an identity. + * nztiDuplicateIdentity - Create a complete copy of an identity. + * nztiAbortIdentity - Discard an unstored identity. + * nztidGetIdentityDesc - Gets Identity Description from Identity. + * nztidFreeIdentityDesc - Frees memory for Identity Desc object. + * nztSign - Generate an attached signature. + * + nztxSignExpansion - Determine size of signature. + * nztVerify - Verify an attached signature. + * nztValidate - Validate an identity. + * nztsd_SignDetached - Generate a detached signature. + * + nztxsd_SignDetachedExpansion - Determine size of detached signature. + * nztved_VerifyDetached - Verify a detached signature. + * + nztEncrypt - Symmetric key encryption. + * + nztxEncryptExpansion - Determine the tdu length for encryption. + * + nztDecrypt - Symmetric key decryption. + * + nztEnvelope - Sign then encrypt data for recipient(s). + * + nztDeEnvelope - Reverse nztEnvelope. + * + nztKeyedHash - Generate keyed hash. + * + nztxKeyedHashExpansion - Determine size of TDU for keyed hash. + * nztHash - Generate hash. + * + nztxHashExpansion - Determine the size of the TDU for a hash. + * nztSeedRandom - See the random number generator. + * nztrb_RandomBytes - Generate a series of random bytes. + * nztrn_RandomNumber - Generate a random number. + * nztbbInitBlock - Initialize a buffer block. + * nztbbReuseBlock - Reuse a buffer block. + * nztbbSizeBlock - Find the size of the buffer block. + * nztbbGrowBlock - Grow initialized buffer block by 'inc' bytes. + * nztbbPurgeBlock - Purge the memory used within a buffer block. + * nztbbSetBlock - Set block to known state. + * nztkec_PKEncrypt - Encrypt data then encrypt key for recipient. + * nztkdc_PKDecrypt - Decrypt PKEncrypt'ed data. + * nztific_FreeIdentityContent - Free the contents of an identity. + * nztifdn - Create an identity from a distinguished name + * nztcts_CipherSpecToStr - Converts the Cipher Spec Code To String + * nztiae_IsAuthEnabled - Checks to see if Authentication is Enabled + * in the current Cipher Spec. + * nztiae_IsEncrEnabled - Checks to see if Encryption is Enabled + * in the current Cipher Spec. + * nztiae_IsHashEnabled - Checks to see if Hashing is Enabled + * in the current Cipher Spec. + * nztwGetCertInfo - Get peer certificate info + * + * NOTE: the '+' indicates that these functions are UNSUPPORTED at this time. + * + * NOTES + * + * MODIFIED + * rchahal 07/27/04 - add keyusage + * srtata 11/10/03 - fix nztSetAppDefaultLocation header + * rchahal 10/15/03 - bug 2513821 + * rchahal 11/11/02 - pkcs11 support + * akoyfman 07/05/02 - adding secret store to persona + * supriya 10/11/01 - Fix for bug # 2015732 + * ajacobs 04/04/01 - make NZT_REGISTRY_WRL always available + * ajacobs 03/06/01 - olint fix + * ajacobs 03/02/01 - Add GetCertInfo + * supriya 02/23/01 - Move nzttKPUsage from nzt0.h + * rchahal 01/26/01 - olint fixes + * supriya 12/07/00 - Change fn name + * supriya 12/01/00 - Certificate API's needed for iAS + * supriya 06/19/00 - Adding definitions for MCS and ENTR + * lkethana 05/31/00 - multiple cert support + * skanjila 06/25/99 - Remove nztcts_CipherSpecToStr() to NZOS. + * skanjila 06/23/99 - Change API of nztcts_CipherSpecToStr. + * lkethana 06/18/99 - rem nztIPrivateAlloc, etc + * lkethana 06/10/99 - changing size_t to ub4 + * lkethana 06/02/99 - add api for getting auth/encry/hash capability of c + * arswamin 12/28/98 - add NZT_MAX_MD5. + * arswamin 12/21/98 - change signature of compareDN + * qdinh 12/21/98 - change size_t to ub4. + * inetwork 11/22/98 - Removing NZDEPRECATED definition + * amthakur 09/14/98 - deprecating and updating the c-structures. + * arswamin 09/24/98 - adding NZTTWRL_NULL for SSO support. + * amthakur 07/30/98 - changing the prototype of nztGetCertChain. + * qdinh 05/01/98 - add NZTTIDENTTYPE_INVALID_TYPE + * qdinh 04/17/98 - add NZTTWRL_ORACLE. + * ascott 10/08/97 - implement nztiStoreTrustedIdentity + * ascott 10/07/97 - add nztiGetIdentityDesc + * ascott 09/28/97 - clarify prototype comments and error codes + * ascott 09/05/97 - update identity: create, destroy, duplicate + * ascott 08/21/97 - add GetCert and GetPriKey + * ascott 08/07/97 - add other WRL settings + * asriniva 03/25/97 - Add ANSI prototypes + * rwessman 03/19/97 - Added prototypes for nztific_FreeIdentityContent() + * asriniva 03/11/97 - Fix olint errors + * sdange 02/28/97 - Removed inclusion of nz0decl.h + * sdange 02/18/97 - Moved nzt specific declarations from nz0decl.h + * asriniva 01/21/97 - Remove prototypes. + * asriniva 10/31/96 - Include oratypes.h + * asriniva 10/15/96 - Declare buffer block helper functions + * asriniva 10/08/96 - First pass at wallet open/close + * asriniva 10/04/96 - Add random number seed function + * asriniva 10/03/96 - Reorder parameters in nztbbSetBlock + * asriniva 10/03/96 - Keep editing. + * asriniva 10/03/96 - Continued edits. + * asriniva 10/02/96 - Continue editing. + * asriniva 09/26/96 - + } + { ENABLE check_long_lines } + { ORATYPES } +{$include nzerror.inc} // NZ error type + { NZERROR_ORACLE } + + const + NZT_MAX_SHA1 = 20; + NZT_MAX_MD5 = 16; + {************************************* } + { PUBLIC CONSTANTS, MACROS, AND TYPES } + {************************************* } + { + * Wallet Resource Locator Type Strings + * + * WRL TYPE PARAMETERS BEHAVIOR + * ======== ========== ===================================== + * default: <none> Uses directory defined by the parameter + * SNZD_DEFAULT_FILE_DIRECTORY which in + * unix is "$HOME/oracle/oss" + * + * file: file path Find the Oracle wallet in this directory. + * example: file:<dir-path> + * + * sqlnet: <none> In this case, the directory path will be + * retrieved from the sqlnet.ora file under + * the oss.source.my_wallet parameter. + * + * mcs: <none> Microsoft WRL. + * + * entr: dir path Entrust WRL. eg: ENTR:<dir-path> + * + } + { Note that there is no NZT_NULL_WRL. Instead look in snzd.h for DEFAULT_WRP + * which is used in our new defaulting mechanism. The NZT_DEFAULT_WRL + * should be deprecated. + } + + const + NZT_DEFAULT_WRL:Ptext = 'default:'; + NZT_SQLNET_WRL:Ptext ='sqlnet:'; + NZT_FILE_WRL:Ptext='file:'; + NZT_ENTR_WRL:Ptext='entr:'; + NZT_MCS_WRL:Ptext='mcs:'; + NZT_ORACLE_WRL:Ptext='oracle:'; + NZT_REGISTRY_WRL:Ptext='reg:'; + + { Default, use SNZD_DEFAULT_FILE_DIRECTORY } + { Use oss.source.my_wallet in sqlnet.ora file } + { Find the oracle wallet in this directory } + { Find the entrust profile in this directory } + { WRL for Microsoft } + { Get the wallet from OSS db } + { New SSO defaulting mechanism } + { Find the wallet in Windows Registry } + + type + nzttwrl = (NZTTWRL_DEFAULT := 1,NZTTWRL_SQLNET, + NZTTWRL_FILE,NZTTWRL_ENTR,NZTTWRL_MCS, + NZTTWRL_ORACLE,NZTTWRL_NULL,NZTTWRL_REGISTRY + ); + + + Pnzttwrl = ^nzttwrl; +{$ifndef NZ0DECL_ORACLE} + { + * With the elimination of nz0decl.h from public, we need this + * redundant typedef. + } + +{$endif} + { NZ0DECL_ORACLE } + { Moved from nz0decl.h } + + type + PnzttIdentityPrivate = pointer; + PnzttPersonaPrivate = pointer; + PnzttWalletPrivate = pointer; + PnzttWalletObj = pointer; // For wallet object + PnzssEntry = pointer; // For secretstore + Pnzpkcs11_Info = pointer; + + { + * Crypto Engine State + * + * Once the crypto engine (CE) has been initialized for a particular + * cipher, it is either at the initial state, or it is continuing to + * use the cipher. NZTCES_END is used to change the state back to + * initialized and flush any remaining output. NZTTCES_RESET can be + * used to change the state back to initialized and throw away any + * remaining output. + } + { Continue processing input } + { End processing input } + { Reset processing and skip generating output } + nzttces = (NZTTCES_CONTINUE := 1,NZTTCES_END,NZTTCES_RESET + ); + + + Pnzttces = ^nzttces; + { + * Crypto Engine Functions + * + * List of crypto engine categories; used to index into protection + * vector. + } + { Signature, detached from content } + { Signature combined with content } + { Signature and encryption with content } + { Encryption for one or more recipients } + { Symmetric encryption } + { Keyed hash/checkusm } + { Hash/checsum } + { Random byte generation } + { Used for array size } + nzttcef = (NZTTCEF_DETACHEDSIGNATURE := 1,NZTTCEF_SIGNATURE, + NZTTCEF_ENVELOPING,NZTTCEF_PKENCRYPTION, + NZTTCEF_ENCRYPTION,NZTTCEF_KEYEDHASH, + NZTTCEF_HASH,NZTTCEF_RANDOM,NZTTCEF_LAST + ); + + + Pnzttcef = ^nzttcef; + { + * State of the persona. + } + { is not in any state(senseless???) } + { cert-request } + { certificate } + { certificate } + { renewal-requested } + nzttState = (NZTTSTATE_EMPTY := 0,NZTTSTATE_REQUESTED, + NZTTSTATE_READY,NZTTSTATE_INVALID,NZTTSTATE_RENEWAL + ); + + + PnzttState = ^nzttState; + { + * Cert-version types + * + * This is used to quickly look-up the cert-type + } + { X.509v1 } + { X.509v3 } +{$ifdef NZDEPRECATED} + { Symmetric } +{$endif} + { For Initialization } + + type + nzttVersion = (NZTTVERSION_X509v1 := 1,NZTTVERSION_X509v3, + NZTTVERSION_SYMMETRIC,NZTTVERSION_INVALID_TYPE + ); + + + PnzttVersion = ^nzttVersion; + { + * Cipher Types + * + * List of all cryptographic algorithms, some of which may not be + * available. + } + { RSA public key } + { DES } + { RC4 } + { DES encrypted MD5 with salt (PBE) } + { RC2 encrypted MD5 with salt (PBE) } + { MD5 } + { SHA } + nzttCipherType = (NZTTCIPHERTYPE_RSA := 1,NZTTCIPHERTYPE_DES, + NZTTCIPHERTYPE_RC4,NZTTCIPHERTYPE_MD5DES, + NZTTCIPHERTYPE_MD5RC2,NZTTCIPHERTYPE_MD5, + NZTTCIPHERTYPE_SHA); + + + PnzttCipherType = ^nzttCipherType; + { + * TDU Formats + * + * List of possible toolkit data unit (TDU) formats. Depending on the + * function and cipher used some may be not be available. + } + { PKCS7 format } + { RSA padded format } + { Oracle v1 format } + { Used for array size } + nztttdufmt = (NZTTTDUFMT_PKCS7 := 1,NZTTTDUFMT_RSAPAD, + NZTTTDUFMT_ORACLEv1,NZTTTDUFMT_LAST + ); + + + Pnztttdufmt = ^nztttdufmt; + { + * Validate State + * + * Possible validation states an identity can be in. + } + { Needs to be validated } + { Validated } + { Failed to validate } + nzttValState = (NZTTVALSTATE_NONE := 1,NZTTVALSTATE_GOOD, + NZTTVALSTATE_REVOKED); + + + PnzttValState = ^nzttValState; + { + * Policy Fields <----NEW (09/14/98) + * + * Policies enforced + } + { number of retries for decryption = 1 } + { number of retries for decryption = 2 } + { number of retries for decryption = 3 } + nzttPolicy = (NZTTPOLICY_NONE := 0,NZTTPOLICY_RETRY_1, + NZTTPOLICY_RETRY_2,NZTTPOLICY_RETRY_3 + ); + + + PnzttPolicy = ^nzttPolicy; + { + * Persona Usage <----NEW (09/14/98) + * + * what a persona will be used for? + } +{ $ifdef NZDEPRECATED_MULTIPLECERTS} + { persona for SSL usage } + + type + nzttUsage = (NZTTUSAGE_NONE := 0,NZTTUSAGE_SSL); + + + PnzttUsage = ^nzttUsage; +// nzttUsage = nzttUsage; +{ $endif} + { + * Personas and identities have unique id's that are represented with + * 128 bits. + } + + type + + PnzttID = ^nzttID; + nzttID = ub1; + { + * Identity Types + * + * List of all Identity types.. + } + nzttIdentType = (NZTTIDENTITYTYPE_INVALID_TYPE := 0, + NZTTIDENTITYTYPE_CERTIFICTAE,NZTTIDENTITYTYPE_CERT_REQ, + NZTTIDENTITYTYPE_RENEW_CERT_REQ,NZTTIDENTITYTYPE_CLEAR_ETP, + NZTTIDENTITYTYPE_CLEAR_UTP,NZTTIDENTITYTYPE_CLEAR_PTP + ); + + + PnzttIdentType = ^nzttIdentType; + + PnzttKPUsage = ^nzttKPUsage; + nzttKPUsage = ub4; + { IF new types are added nztiMUS should be changed } + + const + NZTTKPUSAGE_NONE = 0; + { SSL Server } + NZTTKPUSAGE_SSL = 1; + NZTTKPUSAGE_SMIME_ENCR = 2; + NZTTKPUSAGE_SMIME_SIGN = 4; + NZTTKPUSAGE_CODE_SIGN = 8; + NZTTKPUSAGE_CERT_SIGN = 16; + { SSL Client } + NZTTKPUSAGE_SSL_CLIENT = 32; + NZTTKPUSAGE_INVALID_USE = $ffff; + { + * Timestamp as 32 bit quantity in UTC. + } + + type + + PnzttTStamp = ^nzttTStamp; + nzttTStamp = ub1; + { + * Buffer Block + * + * A function that needs to fill (and possibly grow) an output buffer + * uses an output parameter block to describe each buffer. + * + * The flags_nzttBufferBlock member tells the function whether the + * buffer can be grown or not. If flags_nzttBufferBlock is 0, then + * the buffer will be realloc'ed automatically. + * + * The buflen_nzttBufferBLock member is set to the length of the + * buffer before the function is called and will be the length of the + * buffer when the function is finished. If buflen_nzttBufferBlock is + * 0, then the initial pointer stored in pobj_nzttBufferBlock is + * ignored. + * + * The objlen_nzttBufferBlock member is set to the length of the + * object stored in the buffer when the function is finished. If the + * initial buffer had a non-0 length, then it is possible that the + * object length is shorter than the buffer length. + * + * The pobj_nzttBufferBlock member is a pointer to the output object. + } + { # define NZT_NO_AUTO_REALLOC 0x1 } + { Flags } + { Total length of buffer } + { Length of used buffer part } + { Pointer to buffer } + PnzttBufferBlock = ^nzttBufferBlock; + nzttBufferBlock = record + flags_nzttBufferBlock : uword; + buflen_nzttBufferBlock : ub4; + usedlen_nzttBufferBlock : ub4; + buffer_nzttBufferBlock : Pub1; + end; + + { + * Wallet. + } + { user's LDAP Name } + { len of user's LDAP Name } + { secured-policy of the wallet } + { open-policy of the wallet } + { List of personas in wallet } + { Private wallet information } +{$ifdef NZDEPRECATED} + { Number of personas } +{$endif} + + type + PnzttPersona = ^nzttPersona; + PnzttWallet = ^nzttWallet; + PnzttIdentity = ^nzttIdentity; + nzttWallet = record + ldapName_nzttWallet : Pub1; + ldapNamelen_nzttWallet : ub4; + securePolicy_nzttWallet : nzttPolicy; + openPolicy_nzttWallet : nzttPolicy; + persona_nzttWallet : PnzttPersona; + private_nzttWallet : PnzttWalletPrivate; + npersona_nzttWallet : ub4; + end; + + { + * The wallet contains, one or more personas. A persona always + * contains its private key and its identity. It may also contain + * other 3rd party identites. All identities qualified with trust + * where the qualifier can indicate anything from untrusted to trusted + * for specific operations. + } + { + * Persona + * + * Structure containing information about a persona. + } + { user-friendly persona name } + { persona-name length } + { Opaque part of persona } + { My cert-requests } + { My certificates } + { List of trusted identities } + { List of secrets } + { PKCS11 token info } + { Next persona } +{$ifdef NZDEPRECATED_MULTIPLECERTS} + { As Persona has multiple certs for different + usages, Persona Usage does not mean anything. Similarly + each key pair has its own state and Persona state itself + does not mean anything. - lk 5/31/00 + } + { persona usage; SSL/SET/.. } + { persona state-requested/ready } + { Num of trusted identities } +{$endif} + + nzttPersona = record + genericName_nzttPersona : Pub1; + genericNamelen_nzttPersona : ub4; + private_nzttPersona : PnzttPersonaPrivate; + mycertreqs_nzttPersona : PnzttIdentity; + mycerts_nzttPersona : PnzttIdentity; + mytps_nzttPersona : PnzttIdentity; + mystore_nzttPersona : PnzssEntry; + mypkcs11Info_nzttPersona : Pnzpkcs11_Info; + next_nzttPersona : PnzttPersona; + usage_nzttPersona : nzttUsage; + state_nzttPersona : nzttState; + ntps_nzttPersona : ub4; + end; + + { + * Identity + * + * Structure containing information about an identity. + * + * NOTE + * -- the next_trustpoint field only applies to trusted identities and + * has no meaning (i.e. is NULL) for self identities. + } + { Alias } + { Length of alias } + { Comment } + { Length of comment } + { Opaque part of identity } + { next identity in list } + nzttIdentity = record + dn_nzttIdentity : Ptext; + dnlen_nzttIdentity : ub4; + comment_nzttIdentity : Ptext; + commentlen_nzttIdentity : ub4; + private_nzttIdentity : PnzttIdentityPrivate; + next_nzttIdentity : PnzttIdentity; + end; + + PnzttB64Cert = ^nzttB64Cert; + nzttB64Cert = record + b64Cert_nzttB64Cert : Pub1; + b64Certlen_nzttB64Cert : ub4; + next_nzttB64Cert : PnzttB64Cert; + end; + + { Hash cipher } + { Symmetric cipher } + { Length of key to use } + PnzttPKCS7ProtInfo = ^nzttPKCS7ProtInfo; + nzttPKCS7ProtInfo = record + mictype_nzttPKCS7ProtInfo : nzttCipherType; + symmtype_nzttPKCS7ProtInfo : nzttCipherType; + keylen_nzttPKCS7ProtInfo : ub4; + end; + + { + * Protection Information. + * + * Information specific to a type of protection. + } + PnzttProtInfo = ^nzttProtInfo; + nzttProtInfo = record + case longint of + 0 : ( pkcs7_nzttProtInfo : nzttPKCS7ProtInfo ); + end; + + + { + * A description of a persona so that the toolkit can create one. A + * persona can be symmetric or asymmetric and both contain an + * identity. The identity for an asymmetric persona will be the + * certificate and the identity for the symmetric persona will be + * descriptive information about the persona. In either case, an + * identity will have been created before the persona is created. + * + * A persona can be stored separately from the wallet that references + * it. By default, a persona is stored with the wallet (it inherits + * with WRL used to open the wallet). If a WRL is specified, then it + * is used to store the actuall persona and the wallet will have a + * reference to it. + } + { Length of private info (key) } + { Private information } + { Length of PRL } + { PRL for storage } + { Length of alias } + { Alias } + { Length of longer description } + { Longer persona description } + PnzttPersonaDesc = ^nzttPersonaDesc; + nzttPersonaDesc = record + privlen_nzttPersonaDesc : ub4; + priv_nzttPersonaDesc : Pub1; + prllen_nzttPersonaDesc : ub4; + prl_nzttPersonaDesc : Ptext; + aliaslen_nzttPersonaDesc : ub4; + alias_nzttPersonaDesc : Ptext; + longlen_nzttPersonaDesc : ub4; + long_nzttPersonaDesc : Ptext; + end; + + { + * A description of an identity so that the toolkit can create one. + * Since an identity can be symmetric or asymmetric, the asymmetric + * identity information will not be used when a symmetric identity is + * created. This means the publen_nzttIdentityDesc and + * pub_nzttIdentityDesc members will not be used when creating a + * symmetric identity. + } + { Length of identity } + { Type specific identity } + { Length of alias } + { Alias } + { Length of longer description } + { Longer description } + { Length of trust qualifier } + { Trust qualifier } + PnzttIdentityDesc = ^nzttIdentityDesc; + nzttIdentityDesc = record + publen_nzttIdentityDesc : ub4; + pub_nzttIdentityDesc : Pub1; + dnlen_nzttIdentityDesc : ub4; + dn_nzttIdentityDesc : Ptext; + longlen_nzttIdentityDesc : ub4; + long_nzttIdentityDesc : Ptext; + quallen_nzttIdentityDesc : ub4; + trustqual_nzttIdentityDesc : Ptext; + end; + + {****************************** } + { PUBLIC FUNCTION DECLARATIONS } + {****************************** } + {---------------------- nztwOpenWallet ---------------------- } + { + * NAME + * nztwOpenWallet - Open a wallet based on a wallet Resource Locator (WRL). + * + * PARAMETERS + * osscntxt IN OSS context. + * wrllen IN Length of WRL. + * wrl IN WRL. + * pwdlen IN Length of password. + * pwd IN Password. + * wallet IN/OUT Initialized wallet structure. + * + * NOTES + * The syntax for a WRL is <Wallet Type>:<Wallet Type Parameters>. + * + * Wallet Type Wallet Type Parameters. + * ----------- ---------------------- + * File Pathname (e.g. "file:/home/asriniva") + * Oracle Connect string (e.g. "oracle:scott/tiger@oss") + * + * There are also defaults. If the WRL is NZT_DEFAULT_WRL, then + * the platform specific WRL default is used. If only the wallet + * type is specified, then the WRL type specific default is used + * (e.g. "oracle:") + * + * There is an implication with Oracle that should be stated: An + * Oracle based wallet can be implemented in a user's private space + * or in world readable space. + * + * When the wallet is opened, the password is verified by hashing + * it and comparing against the password hash stored with the + * wallet. The list of personas (and their associated identities) + * is built and stored into the wallet structure. + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_RIO_OPEN RIO could not open wallet (see network trace file). + * NZERROR_TK_PASSWORD Password verification failed. + * NZERROR_TK_WRLTYPE WRL type is not known. + * NZERROR_TK_WRLPARM WRL parm does not match type. + } +{$IFNDEF LinkDynamically} + function nztwOpenWallet(_para1:Pnzctx; _para2:ub4; _para3:Ptext; _para4:ub4; _para5:Ptext; + _para6:PnzttWallet):nzerror;cdecl;external ocilib name 'nztwOpenWallet'; +{$ELSE} +var nztwOpenWallet : function (_para1:Pnzctx; _para2:ub4; _para3:Ptext; _para4:ub4; _para5:Ptext; + _para6:PnzttWallet):nzerror;cdecl; +{$ENDIF} + + + {---------------------- nztwCloseWallet ---------------------- } + { + * NAME + * nztwCloseWallet - Close a wallet + * + * PARAMETERS + * osscntxt IN OSS context. + * wallet IN/OUT Wallet. + * + * NOTES + * Closing a wallet also closes all personas associated with that + * wallet. It does not cause a persona to automatically be saved + * if it has changed. The implication is that a persona can be + * modified by an application but if it is not explicitly saved it + * reverts back to what was in the wallet. + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_RIO_CLOSE RIO could not close wallet (see network trace file). + } +{$IFNDEF LinkDynamically} + function nztwCloseWallet(_para1:Pnzctx; _para2:PnzttWallet):nzerror;cdecl;external ocilib name 'nztwCloseWallet'; +{$ELSE} + nztwCloseWallet : function (_para1:Pnzctx; _para2:PnzttWallet):nzerror;cdecl; +{$ENDIF} + {--------------------nztwGetCertInfo---------------------------- } + {***NOTE: This function is a temporary hack.*** } + {***DO NOT CALL. It will soon disappear.*** } + {_ nzctx *nz_context, + nzosContext *nzosCtx, + nzttWallet *walletRef, + void *peerCert _ }(* error + void *peerCert _*/); + in declarator_list *) + {------------------------ nztwConstructWallet ----------------------- } + { + * + * nzerror nztwConstructWallet( nzctx *oss_context, + * nzttPolicy openPolicy, + * nzttPolicy securePolicy, + * ub1 *ldapName, + * ub4 ldapNamelen, + * nzstrc *wrl, + * nzttPersona *personas, + * nzttWallet **wallet ); + } + {---------------------- nztwRetrievePersonaCopy ---------------------- } + { + * NAME + * nztwRetrievePersonaCopy - Retrieves a persona based from wallet + * + * PARAMETERS + * osscntxt IN OSS context. + * wallet IN Wallet. + * index IN Which wallet index to remove (first persona is zero). + * persona OUT Persona found. + * + * NOTES + * Retrieves a persona from the wallet based on the index number passed + * in. This persona is a COPY of the one stored in the wallet, therefore + * it is perfectly fine for the wallet to be closed after this call is + * made. + * + * The caller is responsible for disposing of the persona when completed. + * + * RETURNS + * NZERROR_OK Success. + } + +{$IFNDEF LinkDynamically} + function nztwRetrievePersonaCopy(_para1:Pnzctx; _para2:PnzttWallet; _para3:ub4; _para4:PPnzttPersona):nzerror;cdecl;external ocilib name 'nztwRetrievePersonaCopy'; +{$ELSE} + nztwRetrievePersonaCopy : function (_para1:Pnzctx; _para2:PnzttWallet; _para3:ub4; _para4:PPnzttPersona):nzerror;cdecl; +{$ENDIF} + + {---------------------- nztwRetrievePersonaCopyByName ---------------------- } + { + * NAME + * nztwRetrievePersonaCopyByName - Retrieves a persona based on its name. + * + * PARAMETERS + * osscntxt IN OSS context. + * wallet IN Wallet. + * name IN Name of the persona + * persona OUT Persona found. + * + * NOTES + * Retrieves a persona from the wallet based on the name of the persona. + * This persona is a COPY of the one stored in the wallet, therefore + * it is perfectly fine for the wallet to be closed after this call is + * made. + * + * The caller is responsible for disposing of the persona when completed. + * + * RETURNS + * NZERROR_OK Success. + } + +{$IFNDEF LinkDynamically} + function nztwRetrievePersonaCopyByName(_para1:Pnzctx; _para2:PnzttWallet; _para3:Pchar; _para4:PPnzttPersona):nzerror;cdecl;external ocilib name 'nztwRetrievePersonaCopyByName'; +{$ELSE} + nztwRetrievePersonaCopyByName : function (_para1:Pnzctx; _para2:PnzttWallet; _para3:Pchar; _para4:PPnzttPersona):nzerror;cdecl; +{$ENDIF} + + {---------------------- nzteOpenPersona ---------------------- } + { + * NAME + * nzteOpenPersona - Open a persona. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN/OUT Persona. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_PASSWORD Password failed to decrypt persona. + * NZERROR_TK_BADPRL Persona resource locator did not work. + * NZERROR_RIO_OPEN Could not open persona (see network trace file). + } + +{$IFNDEF LinkDynamically} + function nzteOpenPersona(_para1:Pnzctx; _para2:PnzttPersona):nzerror;cdecl;external ocilib name 'nzteOpenPersona'; +{$ELSE} + nzteOpenPersona : function (_para1:Pnzctx; _para2:PnzttPersona):nzerror;cdecl; +{$ENDIF} + + {--------------------- nzteClosePersona --------------------- } + { + * NAME + * nzteClosePersona - Close a persona. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN/OUT Persona. + * + * NOTES + * Closing a persona does not store the persona, it simply releases + * the memory associated with the crypto engine. + * + * RETURNS + * NZERROR_OK Success. + } + +{$IFNDEF LinkDynamically} + function nzteClosePersona(_para1:Pnzctx; _para2:PnzttPersona):nzerror;cdecl;external ocilib name 'nzteClosePersona'; +{$ELSE} + nzteClosePersona : function (_para1:Pnzctx; _para2:PnzttPersona):nzerror;cdecl; +{$ENDIF} + + {--------------------- nzteDestroyPersona --------------------- } + { + * NAME + * nzteDestroyPersona - Destroy a persona. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN/OUT Persona. + * + * NOTES + * The persona is destroyd in the open state, but it will + * not be associated with a wallet. + * + * The persona parameter is doubly indirect so that at the + * conclusion of the function, the pointer can be set to NULL. + * + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_TYPE Unsupported itype/ctype combination. + * NZERROR_TK_PARMS Error in persona description. + } + +{$IFNDEF LinkDynamically} + function nzteDestroyPersona(_para1:Pnzctx; _para2:PPnzttPersona):nzerror;cdecl;external ocilib name 'nzteDestroyPersona'; +{$ELSE} + nzteDestroyPersona : function (_para1:Pnzctx; _para2:PPnzttPersona):nzerror;cdecl; +{$ENDIF} + + {---------------------- nzteRetrieveTrustedIdentCopy ---------------------- } + { + * NAME + * nzteRetrieveTrustedIdentCopy - Retrieves a trusted identity from persona + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * index IN Which wallet index to remove (first element is zero). + * identity OUT Trusted Identity from this persona. + * + * NOTES + * Retrieves a trusted identity from the persona based on the index + * number passed in. This identity is a COPY of the one stored in + * the persona, therefore it is perfectly fine to close the persona + * after this call is made. + * + * The caller is responsible for freeing the memory of this object + * by calling nztiAbortIdentity it is no longer needed + * + * RETURNS + * NZERROR_OK Success. + } + +{$IFNDEF LinkDynamically} + function nzteRetrieveTrustedIdentCopy(_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:PPnzttIdentity):nzerror;cdecl;external ocilib name 'nzteRetrieveTrustedIdentCopy'; +{$ELSE} + nzteRetrieveTrustedIdentCopy : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:PPnzttIdentity):nzerror;cdecl; +{$ENDIF} + + {--------------------- nztePriKey --------------------- } + { + * NAME + * nztePriKey - Get the decrypted Private Key for the Persona + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * vkey OUT Private Key [B_KEY_OBJ] + * vkey_len OUT Private Key Length + * + * NOTES + * This funiction will only work for X.509 based persona which contain + * a private key. + * A copy of the private key is returned to the caller so that they do not + * have to worry about the key changeing "underneath them". + * Memory will be allocated for the vkey and therefore, the CALLER + * will be responsible for freeing this memory. + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_NO_MEMORY ossctx is null. + * NZERROR_TK_BADPRL Persona resource locator did not work. + } + +{$IFNDEF LinkDynamically} + function nztePriKey(_para1:Pnzctx; _para2:PnzttPersona; _para3:PPub1; _para4:Pub4):nzerror;cdecl;external ocilib name 'nztePriKey'; +{$ELSE} + nztePriKey : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:PPub1; _para4:Pub4):nzerror;cdecl; +{$ENDIF} + + {--------------------- nzteMyCert --------------------- } + { + * NAME + * nzteMyCert - Get the X.509 Certificate for a persona + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * cert OUT X.509 Certificate [BER encoded] + * cert_len OUT Certificate length + * + * NOTES + * This funiction will only work for X.509 based persona which contain + * a certificate for the self identity. + * A copy of the certificate is returned to the caller so that they do not + * have to worry about the certificate changeing "underneath them". + * Memory will be allocated for the cert and therefore, the CALLER + * will be responsible for freeing this memory. + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_NO_MEMORY ossctx is null. + } + +{$IFNDEF LinkDynamically} + function nzteMyCert(_para1:Pnzctx; _para2:PnzttPersona; _para3:PPub1; _para4:Pub4):nzerror;cdecl;external ocilib name 'nzteMyCert'; +{$ELSE} + nzteMyCert : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:PPub1; _para4:Pub4):nzerror;cdecl; +{$ENDIF} + + {--------------------- nzteX509CreatePersona --------------------- } + { + * NAME + * nzteX509CreatePersona - Given a BER X.509 cert, create a persona + * + * PARAMETERS + * osscntxt IN OSS context. + * cert IN X.509 Certificate [BER encoded] + * cert_len IN Certificate length + * persona OUT Persona. + * + * NOTES + * Memory will be allocated for the persona and therefore, the CALLER + * will be responsible for freeing this memory. + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_NO_MEMORY ossctx is null. + } + +{$IFNDEF LinkDynamically} + function nzteX509CreatePersona(_para1:Pnzctx; _para2:Pub1; _para3:ub4; _para4:PPnzttPersona):nzerror;cdecl;external ocilib name 'nzteX509CreatePersona'; +{$ELSE} + nzteX509CreatePersona : function (_para1:Pnzctx; _para2:Pub1; _para3:ub4; _para4:PPnzttPersona):nzerror;cdecl; +{$ENDIF} + + {-------------------- nztiCreateIdentity -------------------- } + { + * NAME + * nztiCreateIdentity - Create an identity. + * + * PARAMETERS + * osscntxt IN OSS context. + * itype IN Identity type. + * desc IN Description of identity. + * identity IN/OUT Identity. + * + * NOTES + * Memory is only allocated for the identity structure. The elements in + * the description struct are not copied. Rather their pointers are copied + * into the identity structure. Therefore, the caller should not free + * the elements referenced by the desc. These elements will be freed + * when the nztiDestroyIdentity is called. + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_PARMS Error in description. + } + +{$IFNDEF LinkDynamically} + function nztiCreateIdentity(_para1:Pnzctx; _para2:nzttVersion; _para3:PnzttIdentityDesc; _para4:PPnzttIdentity):nzerror;cdecl;external ocilib name 'nztiCreateIdentity'; +{$ELSE} + nztiCreateIdentity : function (_para1:Pnzctx; _para2:nzttVersion; _para3:PnzttIdentityDesc; _para4:PPnzttIdentity):nzerror;cdecl; +{$ENDIF} + +{$ifdef NZ_OLD_TOOLS} + {-------------------- nztiDuplicateIdentity -------------------- } + { + * NAME + * nztiDuplicateIdentity - Duplicate an identity. + * + * PARAMETERS + * osscntxt IN OSS context. + * identity IN Target Identity. + * new_identity IN New Identity. + * + * NOTES + * Memory for the identity is allocated inside the function, and all + * internal identity elements as well. + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_NOTFOUND Identity not found. + * NZERROR_PARMS Error in description. + } + +{$IFNDEF LinkDynamically} + function nztiDuplicateIdentity(_para1:Pnzctx; _para2:PnzttIdentity; _para3:PPnzttIdentity):nzerror;cdecl;external ocilib name 'nztiDuplicateIdentity'; +{$ELSE} + nztiDuplicateIdentity : function (_para1:Pnzctx; _para2:PnzttIdentity; _para3:PPnzttIdentity):nzerror;cdecl; +{$ENDIF} + +{$endif} + { NZ_OLD_TOOLS } + {--------------------- nztiAbortIdentity --------------------- } + { + * NAME + * nztiAbortIdentity - Abort an unassociated identity. + * + * PARAMETERS + * osscntxt IN OSS context. + * identity IN/OUT Identity. + * + * NOTES + * It is an error to try to abort an identity that can be + * referenced through a persona. + * + * The identity pointer is set to NULL at the conclusion. + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_CANTABORT Identity is associated with persona. + } + +{$IFNDEF LinkDynamically} + function nztiAbortIdentity(_para1:Pnzctx; _para2:PPnzttIdentity):nzerror;cdecl;external ocilib name 'nztiAbortIdentity'; +{$ELSE} + nztiAbortIdentity : function (_para1:Pnzctx; _para2:PPnzttIdentity):nzerror;cdecl; +{$ENDIF} + +{$ifdef NZ_OLD_TOOLS} + {----------------- nztidGetIdentityDesc ----------------- } + { + * NAME + * nztidGetIdentityDesc - Gets an Identity Description from the identity + * + * PARAMETERS + * osscntxt IN Success. + * identity IN Identity. + * description IN/OUT Identity Description. + * + * NOTES + * Memory is allocated for the Identity Description. It + * is the callers responsibility to free this memory by calling + * nztiFreeIdentityDesc. + * + * RETURNS + * NZERROR_OK Success. + } + +{$IFNDEF LinkDynamically} + function nztidGetIdentityDesc(_para1:Pnzctx; _para2:PnzttIdentity; _para3:PPnzttIdentityDesc):nzerror;cdecl;external ocilib name 'nztidGetIdentityDesc'; +{$ELSE} + nztidGetIdentityDesc : function (_para1:Pnzctx; _para2:PnzttIdentity; _para3:PPnzttIdentityDesc):nzerror;cdecl; +{$ENDIF} + + {----------------- nztidFreeIdentityDesc ----------------- } + { + * NAME + * nztidFreeIdentityDesc - Frees memory for Identity Desc object. + * + * PARAMETERS + * osscntxt IN oss context. + * description IN/OUT Identity Description. + * + * NOTES + * Memory is freed for all Identity description elements. Pointer is + * then set to null. + * + * RETURNS + * NZERROR_OK Success. + } + +{$IFNDEF LinkDynamically} + function nztidFreeIdentityDesc(_para1:Pnzctx; _para2:PPnzttIdentityDesc):nzerror;cdecl;external ocilib name 'nztidFreeIdentityDesc'; +{$ELSE} + nztidFreeIdentityDesc : fucntion (_para1:Pnzctx; _para2:PPnzttIdentityDesc):nzerror;cdecl; +{$ENDIF} + +{$endif} + { NZ_OLD_TOOLS } + {---------------- nztific_FreeIdentityContent ---------------- } + { + * NAME + * nztific_FreeIdentityContent - free the contents of an identity. + * + * PARAMETERS + * osscntxt IN OSS context. + * identity IN/OUT freed identity + * + * NOTES + * Free a created identity. + * + * RETURNS + * NZERROR_OK Success. + } + { + * Free the identity content. + } + +{$IFNDEF LinkDynamically} + function nztific_FreeIdentityContent(ossctx:Pnzctx; identity:PnzttIdentity):nzerror;cdecl;external ocilib name 'nztific_FreeIdentityContent'; +{$ELSE} + nztific_FreeIdentityContent : function (ossctx:Pnzctx; identity:PnzttIdentity):nzerror;cdecl; +{$ENDIF} + + {-------------------------- nztSign -------------------------- } + { + * NAME + * nztSign - Create an attached signature. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Open persona acting as signer. + * state IN State of signature. + * inlen IN Length of this input part. + * in IN This input part. + * tdubuf IN/OUT TDU buffer. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_CANTGROW Needed to grow output buffer but could not. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztSign(_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttces; _para4:ub4; _para5:Pub1; + _para6:PnzttBufferBlock):nzerror;cdecl;external ocilib name 'nztSign'; +{$ELSE} + nztSign : function(_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttces; _para4:ub4; _para5:Pub1; + _para6:PnzttBufferBlock):nzerror;cdecl; +{$ENDIF} + + {------------------------- nztVerify ------------------------- } + { + * NAME + * nztVerify - Verify an attached signature. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * state IN State of verification. + * intdulen IN TDU length. + * intdu IN TDU. + * out IN/OUT Extracted message. + * verified OUT TRUE if signature verified. + * validatedOUT TRUE if signing identity validated. + * identity OUT Identity of signing party. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_CANTGROW Needed to grow outptu buffer but could not. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztVerify(_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttces; _para4:ub4; _para5:Pub1; + _para6:PnzttBufferBlock; _para7:Pboolean; _para8:Pboolean; _para9:PPnzttIdentity):nzerror;cdecl;external ocilib name 'nztVerify'; +{$ELSE} + nztVerify : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttces; _para4:ub4; _para5:Pub1; + _para6:PnzttBufferBlock; _para7:Pboolean; _para8:Pboolean; _para9:PPnzttIdentity):nzerror;cdecl; +{$ENDIF} + + {------------------------ nztValidate ------------------------ } + { + * NAME + * nztValidate - Validate an identity. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * identity IN Identity. + * validatedOUT TRUE if identity was validated. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztValidate(_para1:Pnzctx; _para2:PnzttPersona; _para3:PnzttIdentity; _para4:Pboolean):nzerror;cdecl;external ocilib name 'nztValidate'; +{$ELSE} + nztValidate : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:PnzttIdentity; _para4:Pboolean):nzerror;cdecl; +{$ENDIF} + + {-------------------- nztsd_SignDetached -------------------- } + { + * NAME + * nztsd_SignDetached - Generate a detached signature. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * state IN State of signature. + * inlen IN Length of this input part. + * in IN This input part. + * tdubuf IN/OUT TDU buffer. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_CANTGROW Needed to grow output buffer but could not. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztsd_SignDetached(_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttces; _para4:ub4; _para5:Pub1; + _para6:PnzttBufferBlock):nzerror;cdecl;external ocilib name 'nztsd_SignDetached'; +{$ELSE} + nztsd_SignDetached : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttces; _para4:ub4; _para5:Pub1; + _para6:PnzttBufferBlock):nzerror;cdecl; +{$ENDIF} + + {------------------- nztved_VerifyDetached ------------------- } + { + * NAME + * nztved_VerifyDetached - Verify a detached signature. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * state IN State of verification. + * inlen IN Length of data. + * in IN Data. + * intdulen IN Input TDU length. + * tdu IN Input TDU. + * verified OUT TRUE if signature verified. + * validatedOUT TRUE if signing identity validated. + * identity OUT Identity of signing party. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztved_VerifyDetached(_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttces; _para4:ub4; _para5:Pub1; + _para6:ub4; _para7:Pub1; _para8:Pboolean; _para9:Pboolean; _para10:PPnzttIdentity):nzerror;cdecl;external ocilib name 'nztved_VerifyDetached'; +{$ELSE} + nztved_VerifyDetached : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttces; _para4:ub4; _para5:Pub1; + _para6:ub4; _para7:Pub1; _para8:Pboolean; _para9:Pboolean; _para10:PPnzttIdentity):nzerror;cdecl; +{$ENDIF} + + {--------------------- nztkec_PKEncrypt --------------------- } + { + * NAME + * nztkec_PKEncrypt - Encrypt data symmetrically, encrypt key asymmetrically + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * nrecipients IN Number of recipients for this encryption. + * recipients IN List of recipients. + * state IN State of encryption. + * inlen IN Length of this input part. + * in IN This input part. + * tdubuf IN/OUT TDU buffer. + * + * NOTES + * There is a limitation of 1 recipient (nrecipients = 1) at this + * time. + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_CANTGROW Needed to grow output buffer but could not. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztkec_PKEncrypt(_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:PnzttIdentity; _para5:nzttces; + _para6:ub4; _para7:Pub1; _para8:PnzttBufferBlock):nzerror;cdecl;external ocilib name 'nztkec_PKEncrypt'; +{$ELSE} + nztkec_PKEncrypt : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:PnzttIdentity; _para5:nzttces; + _para6:ub4; _para7:Pub1; _para8:PnzttBufferBlock):nzerror;cdecl; +{$ENDIF} + + {---------------- nztxkec_PKEncryptExpansion ---------------- } + { + * NAME + * nztxkec_PKEncryptExpansion - Determine the buffer needed for PKEncrypt + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * nrecipients IN Number of recipients. + * inlen IN Length of input. + * tdulen out Length of buffer need. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztxkec_PKEncryptExpansion(_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:ub4; _para5:Pub4):nzerror;cdecl;external ocilib name 'nztxkec_PKEncryptExpansion'; +{$ELSE} + nztxkec_PKEncryptExpansion : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:ub4; _para5:Pub4):nzerror;cdecl; +{$ENDIF} + + {--------------------- nztkdc_PKDecrypt --------------------- } + { + * NAME + * nztkdc_PKDecrypt - Decrypt a PKEncrypted message. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * state IN State of encryption. + * inlen IN Length of this input part. + * in IN This input part. + * tdubuf IN/OUT TDU buffer. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_CANTGROW Needed to grow output buffer but could not. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztkdc_PKDecrypt(_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttces; _para4:ub4; _para5:Pub1; + _para6:PnzttBufferBlock):nzerror;cdecl;external ocilib name 'nztkdc_PKDecrypt'; +{$ELSE} + nztkdc_PKDecrypt : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttces; _para4:ub4; _para5:Pub1; + _para6:PnzttBufferBlock):nzerror;cdecl; +{$ENDIF} + + {-------------------------- nztHash -------------------------- } + { + * NAME + * nztHash - Generate a hash. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * state IN State of hash. + * inlen IN Length of this input. + * in IN This input. + * tdu IN/OUT Output tdu. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_CANTGROW Needed to grow TDU buffer but could not. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztHash(_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttces; _para4:ub4; _para5:Pub1; + _para6:PnzttBufferBlock):nzerror;cdecl;external ocilib name 'nztHash'; +{$ELSE} + nztHash : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttces; _para4:ub4; _para5:Pub1; + _para6:PnzttBufferBlock):nzerror;cdecl; +{$ENDIF} + + {----------------------- nztSeedRandom ----------------------- } + { + * NAME + * nztSeedRandom - Seed the random function + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * seedlen IN Length of seed. + * seed IN Seed. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztSeedRandom(_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:Pub1):nzerror;cdecl;external ocilib name 'nztSeedRandom'; +{$ELSE} + nztSeedRandom : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:Pub1):nzerror;cdecl; +{$ENDIF} + + {--------------------- nztrb_RandomBytes --------------------- } + { + * NAME + * nztrb_RandomBytes - Generate a buffer random bytes. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * nbytes IN Number of bytes desired. + * out IN/OUT Buffer block for bytes. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_CANTGROW Needed to grow TDU buffer but could not. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztrb_RandomBytes(_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:PnzttBufferBlock):nzerror;cdecl;external ocilib name 'nztrb_RandomBytes'; +{$ELSE} + nztrb_RandomBytes : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:PnzttBufferBlock):nzerror;cdecl; +{$ENDIF} + + {-------------------- nztrn_RandomNumber -------------------- } + { + * NAME + * nztrn_RandomNumber - Generate a random number + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * num OUT Number. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztrn_RandomNumber(_para1:Pnzctx; _para2:PnzttPersona; _para3:Puword):nzerror;cdecl;external ocilib name 'nztrn_RandomNumber'; +{$ELSE} + nztrn_RandomNumber : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:Puword):nzerror;cdecl; +{$ENDIF} + + {---------------------- nztbbInitBlock ---------------------- } + { + * NAME + * nztbbInitBlock - Initialize a buffer block. + * + * PARAMETERS + * osscntxt IN OSS context. + * block IN/OUT Buffer block. + * + * NOTES + * The buffer block is initialized to be empty (all members are set + * to 0/NULL). Such a block will be allocated memory as needed. + * + * RETURNS + * NZERROR_OK Success. + } + +{$IFNDEF LinkDynamically} + function nztbbInitBlock(_para1:Pnzctx; _para2:PnzttBufferBlock):nzerror;cdecl;external ocilib name 'nztbbInitBlock'; +{$ELSE} + nztbbInitBlock : function (_para1:Pnzctx; _para2:PnzttBufferBlock):nzerror;cdecl; +{$ENDIF} + + {---------------------- nztbbReuseBlock ---------------------- } + { + * NAME + * nztbbReuseBlock - Reuse an already initialized and possibly used block. + * + * PARAMETERS + * osscntxt IN OSS context. + * block IN/OUT Buffer block. + * + * NOTES + * This function simply sets the used length member of the buffer + * block to 0. If the block already has memory allocated to it, + * this will cause it to be reused. + * + * RETURNS + * NZERROR_OK Success. + } + +{$IFNDEF LinkDynamically} + function nztbbReuseBlock(_para1:Pnzctx; _para2:PnzttBufferBlock):nzerror;cdecl;external ocilib name 'nztbbReuseBlock'; +{$ELSE} + nztbbReuseBlock : function (_para1:Pnzctx; _para2:PnzttBufferBlock):nzerror;cdecl; +{$ENDIF} + + {---------------------- nztbbSizeBlock ---------------------- } + { + * NAME + * nztbbSizeBlock - Size an initialized block to a particular size. + * + * PARAMETERS + * osscntxt IN OSS context. + * len IN Minimum number of unused bytes desired. + * block IN/OUT Buffer block. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + } + +{$IFNDEF LinkDynamically} + function nztbbSizeBlock(_para1:Pnzctx; _para2:ub4; _para3:PnzttBufferBlock):nzerror;cdecl;external ocilib name 'nztbbSizeBlock'; +{$ELSE} + nztbbSizeBlock : function (_para1:Pnzctx; _para2:ub4; _para3:PnzttBufferBlock):nzerror;cdecl; +{$ENDIF} + + {----------------------- nztbbGrowBlock ----------------------- } + { + * NAME + * nzbbGrowBlock - Increase the size of the buffer block. + * + * PARAMETERS + * osscntxt IN OSS context. + * inc IN Number of bytes to increase. + * block IN/OUT Buffer block. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + } + +{$IFNDEF LinkDynamically} + function nztbbGrowBlock(_para1:Pnzctx; _para2:ub4; _para3:PnzttBufferBlock):nzerror;cdecl;external ocilib name 'nztbbGrowBlock'; +{$ELSE} + nztbbGrowBlock : function (_para1:Pnzctx; _para2:ub4; _para3:PnzttBufferBlock):nzerror;cdecl; +{$ENDIF} + + {---------------------- nztbbPurgeBlock ---------------------- } + { + * NAME + * nztbbPurgeBlock - Purge a buffer block of its memory. + * + * PARAMETERS + * osscntxt IN OSS context. + * block IN/OUT Buffer block. + * + * NOTES + * The memory used by the buffer block as the buffer is released. + * The buffer block itself is not affected. + * + * RETURNS + * NZERROR_OK Success. + } + +{$IFNDEF LinkDynamically} + function nztbbPurgeBlock(_para1:Pnzctx; _para2:PnzttBufferBlock):nzerror;cdecl;external ocilib name 'nztbbPurgeBlock'; +{$ELSE} + nztbbPurgeBlock : function (_para1:Pnzctx; _para2:PnzttBufferBlock):nzerror;cdecl; +{$ENDIF} + + {----------------------- nztbbSetBlock ----------------------- } + { + * NAME + * nztbbSetBlock - Set a buffer block to a known state. + * + * PARAMETERS + * osscntxt IN OSS context. + * flags IN Flags to set. + * buflen IN Length of buffer. + * usedlen IN Used length. + * buffer IN Buffer. + * block IN/OUT Buffer block + * + * NOTES + * If buflen > 0, objlen == 0, and obj == NULL, then buflen bytes + * of memory is allocated and a pointer is stored in the buffer + * block. + * + * The buffer parameter remains unchanged. + * + * RETURNS + * NZERROR_OK Success. + } + +{$IFNDEF LinkDynamically} + function nztbbSetBlock(_para1:Pnzctx; _para2:uword; _para3:ub4; _para4:ub4; _para5:Pub1; + _para6:PnzttBufferBlock):nzerror;cdecl;external ocilib name 'nztbbSetBlock'; +{$ELSE} + nztbbSetBlock : function (_para1:Pnzctx; _para2:uword; _para3:ub4; _para4:ub4; _para5:Pub1; + _para6:PnzttBufferBlock):nzerror;cdecl; +{$ENDIF} + + {--------------------- nztiGetSecInfo --------------------- } + { + * NAME + * nztiGetSecInfo - Get some security information for SSL + * + * PARAMETERS + * Name IN/OUT Description + * osscntxt IN OSS context. + * persona IN persona + * dname OUT distinguished name of the certificate + * dnamelen OUT length of the distinguished name + * issuername OUT issuer name of the certificate + * certhash OUT SHA1 hash of the certificate + * certhashlenOUT length of the hash + * NOTES + * This function allocate memories for issuername, certhash, and dname. + * To deallocate memory for those params, you should call nztdbuf_DestroyBuf. + * RETURNS + * + } + +{$IFNDEF LinkDynamically} + function nztiGetSecInfo(_para1:Pnzctx; _para2:PnzttPersona; _para3:PPtext; _para4:Pub4; _para5:PPtext; + _para6:Pub4; _para7:PPub1; _para8:Pub4):nzerror;cdecl;external ocilib name 'nztiGetSecInfo'; +{$ELSE} + nztiGetSecInfo : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:PPtext; _para4:Pub4; _para5:PPtext; + _para6:Pub4; _para7:PPub1; _para8:Pub4):nzerror;cdecl; +{$ENDIF} + + {---------------------- nztiGetDName ---------------------- } + { + * NAME + * nztiGetDName - Get the distinguished name for the given identity + * + * PARAMETERS + * Name IN/OUT Description + * osscntxt IN OSS context. + * identity IN identity need to get dname from + * dn OUT distinguished name + * dnlen OUT length of the dname + * + * NOTES + * + * RETURNS + * + } + +{$IFNDEF LinkDynamically} + function nztiGetDName(_para1:Pnzctx; _para2:PnzttIdentity; _para3:PPtext; _para4:Pub4):nzerror;cdecl;external ocilib name 'nztiGetDName'; +{$ELSE} + nztiGetDName : function (_para1:Pnzctx; _para2:PnzttIdentity; _para3:PPtext; _para4:Pub4):nzerror;cdecl; +{$ENDIF} + + {------------------- nztiGetIssuerName ------------------- } + { + * NAME + * nztiGetIssuerName - Get IssuerName for the given identity + * + * PARAMETERS + * Name IN/OUT Description + * osscntxt IN OSS context. + * identity IN identity need to get issuername from + * issuername OUT issuer's name + * issuernamelen OUT length of the issuer's name + * + * NOTES + * + * RETURNS + * + } + +{$IFNDEF LinkDynamically} + function nztiGetIssuerName(_para1:Pnzctx; _para2:PnzttIdentity; _para3:PPtext; _para4:Pub4):nzerror;cdecl;external ocilib name 'nztiGetIssuerName'; +{$ELSE} + nztiGetIssuerName : function (_para1:Pnzctx; _para2:PnzttIdentity; _para3:PPtext; _para4:Pub4):nzerror;cdecl; +{$ENDIF} + + {-------------------- nztgch_GetCertHash -------------------- } + { + * NAME + * nztgch_GetCertHash - Get SHA1 hash for the certificate of the identity + * + * PARAMETERS + * Name IN/OUT Description + * osscntxt IN OSS context. + * identity IN identity need to get issuername from + * certHash OUT certHash buffer + * hashLen OUT length of the certHash + * + * NOTES + * Need to call nztdbuf_DestroyBuf to deallocate memory for certHash. + * RETURNS + * + } + +{$IFNDEF LinkDynamically} + function nztgch_GetCertHash(_para1:Pnzctx; _para2:PnzttIdentity; _para3:PPub1; _para4:Pub4):nzerror;cdecl;external ocilib name 'nztgch_GetCertHash'; +{$ELSE} + nztgch_GetCertHash : function (_para1:Pnzctx; _para2:PnzttIdentity; _para3:PPub1; _para4:Pub4):nzerror;cdecl; +{$ENDIF} + + {-------------------- nztdbuf_DestroyBuf -------------------- } + { + * NAME + * nztdbuf_DestroyBuf - Deallocation funtions for ub1 and text buffer + * + * PARAMETERS + * Name IN/OUT Description + * osscntxt IN OSS context. + * buf IN Allocated buffer to be destroyed. + * + * NOTES + * + * RETURNS + * + } + +{$IFNDEF LinkDynamically} + function nztdbuf_DestroyBuf(_para1:Pnzctx; _para2:PPdvoid):nzerror;cdecl;external ocilib name 'nztdbuf_DestroyBuf'; +{$ELSE} + nztdbuf_DestroyBuf : function (_para1:Pnzctx; _para2:PPdvoid):nzerror;cdecl; +{$ENDIF} + + {----------------------- nztGetCertChain ----------------------- } + { + * NAME + * nztGetCertChain - + * + * PARAMETERS + * Name IN/OUT Description + * osscntxt IN OSS context. + * + * NOTES + * + * RETURNS + * + } + +{$IFNDEF LinkDynamically} + function nztGetCertChain(_para1:Pnzctx; _para2:PnzttWallet):nzerror;cdecl;external ocilib name 'nztGetCertChain'; +{$ELSE} + nztGetCertChain : function (_para1:Pnzctx; _para2:PnzttWallet):nzerror;cdecl; +{$ENDIF} + + {----------------------- nztCompareDN ----------------------- } + { + * NAME + * nztCompareDN - + * + * PARAMETERS + * Name IN/OUT Description + * osscntxt IN OSS context. + * dn1 IN distinguished name 1 + * dn2 IN distinguished name 2 + * + * NOTES + * + * RETURNS + * NZERROR_OK succeeded + * others failed + * + } + +{$IFNDEF LinkDynamically} + function nztCompareDN(_para1:Pnzctx; _para2:Pub1; _para3:ub4; _para4:Pub1; _para5:ub4; + _para6:Pboolean):nzerror;cdecl;external ocilib name 'nztCompareDN'; +{$ELSE} + nztCompareDN : function (_para1:Pnzctx; _para2:Pub1; _para3:ub4; _para4:Pub1; _para5:ub4; + _para6:Pboolean):nzerror;cdecl; +{$ENDIF} + +{$ifdef NZ_OLD_TOOLS} + {--------------------- nztIdentityAlloc --------------------- } + { + * NAME + * nztIdentityAlloc - Allocate memory for nzttIdentity context + * + * PARAMETERS + * Name IN/OUT Description + * osscntxt IN OSS context. + * identity OUT nzttIdentity context + * + * NOTES + * + * RETURNS + * NZERROR_OK succeeded + * others failed + * + } + +{$IFNDEF LinkDynamically} + function nztIdentityAlloc(_para1:Pnzctx; _para2:PPnzttIdentity):nzerror;cdecl;external ocilib name 'nztIdentityAlloc'; +{$ELSE} + nztIdentityAlloc : function (_para1:Pnzctx; _para2:PPnzttIdentity):nzerror;cdecl; +{$ENDIF} + + {--------------------- nztIPrivateAlloc --------------------- } + { + * NAME + * nztIPrivateAlloc - Allocate memory for nzttIdentityPrivate + * + * PARAMETERS + * Name IN/OUT Description + * + * osscntxt IN OSS context. + * ipriv OUT identityPrivate structure + * NOTES + * + * RETURNS + * NZERROR_OK succeeded + * others failed + * + } + +{$IFNDEF LinkDynamically} + function nztIPrivateAlloc(_para1:Pnzctx; _para2:PPnzttIdentityPrivate):nzerror;cdecl;external ocilib name 'nztIPrivateAlloc'; +{$ELSE} + nztIPrivateAlloc : function (_para1:Pnzctx; _para2:PPnzttIdentityPrivate):nzerror;cdecl; +{$ENDIF} + + {---------------------- nztIDupContent ---------------------- } + { + * NAME + * nztIDupContent - + * + * PARAMETERS + * Name IN/OUT Description + * osscntxt IN OSS context. + * targetIdentityOUT target identity + * sourceIdentity IN source identity + * NOTES + * + * RETURNS + * NZERROR_OK succeeded + * others failed + * + } + +{$IFNDEF LinkDynamically} + function nztIDupContent(_para1:Pnzctx; _para2:PnzttIdentity; _para3:PnzttIdentity):nzerror;cdecl;external ocilib name 'nztIDupContent'; +{$ELSE} + nztIDupContent : function (_para1:Pnzctx; _para2:PnzttIdentity; _para3:PnzttIdentity):nzerror;cdecl; +{$ENDIF} + + {---------------------- nztIPDuplicate ---------------------- } + { + * NAME + * nztIPDuplicate - + * + * PARAMETERS + * Name IN/OUT Description + * osscntxt IN OSS context. + * target_ipriv OUT target identityPrivate + * source_ipriv IN source identityPrivate + * + * NOTES + * + * RETURNS + * NZERROR_OK succeeded + * others failed + * + } + +{$IFNDEF LinkDynamically} + function nztIPDuplicate(_para1:Pnzctx; _para2:PPnzttIdentityPrivate; _para3:PnzttIdentityPrivate):nzerror;cdecl;external ocilib name 'nztIPDuplicate'; +{$ELSE} + nztIPDuplicate : function (_para1:Pnzctx; _para2:PPnzttIdentityPrivate; _para3:PnzttIdentityPrivate):nzerror;cdecl; +{$ENDIF} + + {--------------------- nztiDupIdentList --------------------- } + { + * NAME + * nztiDupIdentList - + * + * PARAMETERS + * Name IN/OUT Description + * osscntxt IN OSS context. + * source_identities IN source identity list + * numIdent OUT number of identity in the list + * ppidentity OUT Target of identity + * + * NOTES + * + * RETURNS + * NZERROR_OK succeeded + * others failed + * + } + +{$IFNDEF LinkDynamically} + function nztiDupIdentList(_para1:Pnzctx; _para2:PnzttIdentity; _para3:Pub4; _para4:PPnzttIdentity):nzerror;cdecl;external ocilib name 'nztiDupIdentList'; +{$ELSE} + nztiDupIdentList : function (_para1:Pnzctx; _para2:PnzttIdentity; _para3:Pub4; _para4:PPnzttIdentity):nzerror;cdecl; +{$ENDIF} + + {--------------------- nztFreeIdentList --------------------- } + { + * NAME + * nztFreeIdentList - Free memory for a list of Identities + * + * PARAMETERS + * Name IN/OUT Description + * osscntxt IN OSS context. + * identity IN identity context + * + * NOTES + * + * RETURNS + * NZERROR_OK succeeded + * others failed + * + } + +{$IFNDEF LinkDynamically} + function nztFreeIdentList(_para1:Pnzctx; _para2:PPnzttIdentity):nzerror;cdecl;external ocilib name 'nztFreeIdentList'; +{$ELSE} + nztFreeIdentList : function (_para1:Pnzctx; _para2:PPnzttIdentity):nzerror;cdecl; +{$ENDIF} + +{$endif} + { NZ_OLD_TOOLS } + {--------------------- nztCheckVaLidity --------------------- } + { + * NAME + * nztCheckVaLidity - Check the validity of certificate + * + * PARAMETERS + * Name IN/OUT Description + * osscntxt IN OSS context. + * start_time Start time of the certificate + * end_time End time of the certificate + * + * NOTES + * + * RETURNS + * NZERROR_OK succeeded + * others failed + * + } + +{$IFNDEF LinkDynamically} + function nztCheckValidity(_para1:Pnzctx; _para2:ub4; _para3:ub4):nzerror;cdecl;external ocilib name 'nztCheckValidity'; +{$ELSE} + nztCheckValidity : function (_para1:Pnzctx; _para2:ub4; _para3:ub4):nzerror;cdecl; +{$ENDIF} + + {--------------------- nztwCreateWallet --------------------- } + { + * NAME + * nztwCreateWallet - Create a new wallet. + * + * PARAMETERS + * osscntxt IN OSS context. + * wrllen IN Length of wallet resource locator. + * wrl IN WRL. + * pwdlen IN Length of password (see notes below). + * pwd IN Password. + * wallet IN/OUT Wallet. + * + * NOTES + * It is an error to try to create a wallet that already exists. + * The previously existing wallet must be destroyed first. + * + * The wallet itself is not encrypted. Rather, all the personas in + * the wallet are encrypted under the same password. A hash of the + * password is stored in the wallet. + * + * Upon success, an empty open wallet is stored in the wallet + * parameter. + * + * RETURNS + * NZERROR_OK Sucess. + * NZERROR_TK_WALLET_EXISTS Wallet already exists. + * NZERROR_RIO_OPEN RIO could not create wallet (see trace file). + } + +{$IFNDEF LinkDynamically} + function nztwCreateWallet(_para1:Pnzctx; _para2:ub4; _para3:Ptext; _para4:ub4; _para5:Ptext; + _para6:PnzttWallet):nzerror;cdecl;external ocilib name 'nztwCreateWallet'; +{$ELSE} + nztwCreateWallet : function (_para1:Pnzctx; _para2:ub4; _para3:Ptext; _para4:ub4; _para5:Ptext; + _para6:PnzttWallet):nzerror;cdecl; +{$ENDIF} + + {--------------------- nztwDestroyWallet --------------------- } + { + * NAME + * nztwDestroyWallet - Destroy an existing wallet. + * + * PARAMETERS + * osscntxt IN OSS context. + * wrllen IN Length of wallet resource locator. + * wrl IN WRL. + * pwdlen IN Length of password. + * pwd IN Password. + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_PASSWORD Password verification failed. + * NZERROR_RIO_OPEN RIO could not open wallet (see trace file). + * NZERROR_RIO_DELETE Delete failed (see trace file). + } + +{$IFNDEF LinkDynamically} + function nztwDestroyWallet(_para1:Pnzctx; _para2:ub4; _para3:Ptext; _para4:ub4; _para5:Ptext):nzerror;cdecl;external ocilib name 'nztwDestroyWallet'; +{$ELSE} + nztwDestroyWallet : function (_para1:Pnzctx; _para2:ub4; _para3:Ptext; _para4:ub4; _para5:Ptext):nzerror;cdecl; +{$ENDIF} + + {--------------------- nzteStorePersona --------------------- } + { + * NAME + * nzteStorePersona - Store an open persona in a wallet. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN/OUT Persona. + * wallet IN/OUT Wallet. + * + * NOTES + * If the open persona is not associated with any wallet (it was + * created via the nzteClosePersona function), then storing the + * persona creates that association. The wallet will also have an + * updated persona list that reflects this association. + * + * If the open persona was associated with wallet 'A' (it was + * opened via the nztwOpenWallet function), and is stored back into + * wallet 'A', then then the old persona is overwritten by the new + * persona if the password can be verified. Recall that all + * personas have a unique identity id. If that id changes then + * storing the persona will put a new persona in the wallet. + * + * If the open persona was associated with wallet 'A' and is stored + * into wallet 'B', and if wallet 'B' does not contain a persona + * with that unique identity id, then the persona will be copied + * into wallet 'B', wallet 'B''s persona list will be updated, and + * the persona structure will be updated to be associated with + * wallet 'B'. If wallet 'B' already contained the persona, it + * would be overwritten by the new persona. + * + * The persona parameter is doubly indirect so that at the + * conclusion of the function call, the pointer can be directed to + * the persona in the wallet. + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_PASSWORD Password verification failed. + * NZERROR_RIO_STORE Store failed (see network trace file). + } + +{$IFNDEF LinkDynamically} + function nzteStorePersona(_para1:Pnzctx; _para2:PPnzttPersona; _para3:PnzttWallet):nzerror;cdecl;external ocilib name 'nzteStorePersona'; +{$ELSE} + nzteStorePersona : function (_para1:Pnzctx; _para2:PPnzttPersona; _para3:PnzttWallet):nzerror;cdecl; +{$ENDIF} + + {--------------------- nzteRemovePersona --------------------- } + { + * NAME + * nzteRemovePersona - Remove a persona from the wallet. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN/OUT Persona. + * + * NOTES + * The password is verified before trying to remove the persona. + * + * If the persona is open, it is closed. The persona is removed + * from the wallet list and the persona pointer is set to NULL. + * + * A double indirect pointer to the persona is required so that the + * persona pointer can be set to NULL upon completion. + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_PASSWORD Password verification failed. + * NZERROR_RIO_DELETE Delete failed. + } + +{$IFNDEF LinkDynamically} + function nzteRemovePersona(_para1:Pnzctx; _para2:PPnzttPersona):nzerror;cdecl;external ocilib name 'nzteRemovePersona'; +{$ELSE} + nzteRemovePersona : function (_para1:Pnzctx; _para2:PPnzttPersona):nzerror;cdecl; +{$ENDIF} + + {--------------------- nzteCreatePersona --------------------- } + { + * NAME + * nzteCreatePersona - Create a persona. + * + * PARAMETERS + * osscntxt IN OSS context. + * itype IN Identity type. + * ctype IN Cipher type. + * desc IN Persona description. + * persona OUT Persona. + * + * NOTES + * The resulting persona is created in the open state, but it will + * not be associated with a wallet. + * + * The memory for the persona is allocated by the function. + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_TYPE Unsupported itype/ctype combination. + * NZERROR_TK_PARMS Error in persona description. + } + +{$IFNDEF LinkDynamically} + function nzteCreatePersona(_para1:Pnzctx; _para2:nzttVersion; _para3:nzttCipherType; _para4:PnzttPersonaDesc; _para5:PPnzttPersona):nzerror;cdecl;external ocilib name 'nzteCreatePersona'; +{$ELSE} + nzteCreatePersona : function (_para1:Pnzctx; _para2:nzttVersion; _para3:nzttCipherType; _para4:PnzttPersonaDesc; _para5:PPnzttPersona):nzerror;cdecl; +{$ENDIF} + + {----------------- nztiStoreTrustedIdentity ----------------- } + { + * NAME + * nztiStoreTrustedIdentity - Store an identity into a persona. + * + * PARAMETERS + * osscntxt IN Success. + * identity IN/OUT Trusted Identity. + * persona IN/OUT Persona. + * + * NOTES + * The identity is not saved with the persona in the wallet until + * the persona is stored. + * + * The identity parameter is double indirect so that it can point + * into the persona at the conclusion of the call. + * + * RETURNS + * NZERROR_OK Success. + } + +{$IFNDEF LinkDynamically} + function nztiStoreTrustedIdentity(_para1:Pnzctx; _para2:PPnzttIdentity; _para3:PnzttPersona):nzerror;cdecl;external ocilib name 'nztiStoreTrustedIdentity'; +{$ELSE} + nztiStoreTrustedIdentity : function (_para1:Pnzctx; _para2:PPnzttIdentity; _para3:PnzttPersona):nzerror;cdecl; +{$ENDIF} + + {--------------------- nzteSetProtection --------------------- } + { + * NAME + * nzteSetProtection - Set the protection type for a CE function. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN/OUT Persona. + * func IN CE function. + * tdufmt IN TDU Format. + * protinfo IN Protection information specific to this format. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_PROTECTION Unsupported protection. + * NZERROR_TK_PARMS Error in protection info. + } + +{$IFNDEF LinkDynamically} + function nzteSetProtection(_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttcef; _para4:nztttdufmt; _para5:PnzttProtInfo):nzerror;cdecl;external ocilib name 'nzteSetProtection'; +{$ELSE} + nzteSetProtection : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttcef; _para4:nztttdufmt; _para5:PnzttProtInfo):nzerror;cdecl; +{$ENDIF} + + {--------------------- nzteGetProtection --------------------- } + { + * NAME + * nzteGetProtection - Get the protection type for a CE function. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * func IN CE function. + * tdufmt OUT TDU format. + * protinfo OUT Protection information. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + } + +{$IFNDEF LinkDynamically} + function nzteGetProtection(_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttcef; _para4:Pnztttdufmt; _para5:PnzttProtInfo):nzerror;cdecl;external ocilib name 'nzteGetProtection'; +{$ELSE} + nzteGetProtection : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttcef; _para4:Pnztttdufmt; _para5:PnzttProtInfo):nzerror;cdecl; +{$ENDIF} + + {-------------------- nztiRemoveIdentity -------------------- } + { + * NAME + * nztiRemoveIdentity - Remove an identity from an open persona. + * + * PARAMETERS + * osscntxt IN OSS context. + * identity IN/OUT Identity. + * + * NOTES + * If the persona is not stored, this identity will still be in the + * persona stored in the wallet. + * + * The identity parameter is doubly indirect so that at the + * conclusion of the function, the pointer can be set to NULL. + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_NOTFOUND Identity not found. + * NZERROR_TK_NOTOPEN Persona is not open. + } + +{$IFNDEF LinkDynamically} + function nztiRemoveIdentity(_para1:Pnzctx; _para2:PPnzttIdentity):nzerror;cdecl;external ocilib name 'nztiRemoveIdentity'; +{$ELSE} + nztiRemoveIdentity : function (_para1:Pnzctx; _para2:PPnzttIdentity):nzerror;cdecl; +{$ENDIF} + + {----------------- nztifdn ----------------- } + { + * NAME + * nztifdn - create an Identity From a Distinguished Name + * + * PARAMETERS + * osscntxt IN OSS context. + * length IN Length of the distinguished name + * distinguished_name IN distinguished name string + * ppidentity OUT created identity + * + * NOTES + * Given a distinguished name, return the identity that corresponds to it. + * + * RETURNS + * NZERROR_OK Success. + } + +{$IFNDEF LinkDynamically} + function nztifdn(ossctx:Pnzctx; length:ub4; distinguished_name:Ptext; ppidentity:PPnzttIdentity):nzerror;cdecl;external ocilib name 'nztifdn'; +{$ELSE} + nztifdn : function (ossctx:Pnzctx; length:ub4; distinguished_name:Ptext; ppidentity:PPnzttIdentity):nzerror;cdecl; +{$ENDIF} + + {--------------------- nztxSignExpansion --------------------- } + { + * NAME + * nztxSignExpansion - Determine the size of the attached signature buffer. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * inlen IN Length of input. + * tdulen OUT Buffer needed for signature. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztxSignExpansion(_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:Pub4):nzerror;cdecl;external ocilib name 'nztxSignExpansion'; +{$ELSE} + nztxSignExpansion : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:Pub4):nzerror;cdecl; +{$ENDIF} + + {--------------- nztxsd_SignDetachedExpansion --------------- } + { + * NAME + * nztxsd_SignDetachedExpansion - Determine the size of buffer needed. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * inlen IN Length of input. + * tdulen OUT Buffer needed for signature. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztxsd_SignDetachedExpansion(_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:Pub4):nzerror;cdecl;external ocilib name 'nztxsd_SignDetachedExpansion'; +{$ELSE} + nztxsd_SignDetachedExpansion : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:Pub4):nzerror;cdecl; +{$ENDIF} + + {------------------------ nztEncrypt ------------------------ } + { + * NAME + * nztEncrypt - Symmetrically encrypt + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * inlen IN Length of this input part. + * in IN This input part. + * tdubuf IN/OUT TDU buffer. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_CANTGROW Needed to grow TDU buffer but could not. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztEncrypt(_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttces; _para4:ub4; _para5:Pub1; + _para6:PnzttBufferBlock):nzerror;cdecl;external ocilib name 'nztEncrypt'; +{$ELSE} + nztEncrypt : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttces; _para4:ub4; _para5:Pub1; + _para6:PnzttBufferBlock):nzerror;cdecl; +{$ENDIF} + + {------------------- nztxEncryptExpansion ------------------- } + { + * NAME + * nztxEncryptExpansion - Determine the size of the TDU to encrypt. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * inlen IN Length of this input part. + * tdulen OUT Length of TDU. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztxEncryptExpansion(_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:Pub4):nzerror;cdecl;external ocilib name 'nztxEncryptExpansion'; +{$ELSE} + nztxEncryptExpansion : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:Pub4):nzerror;cdecl; +{$ENDIF} + + {------------------------ nztDecrypt ------------------------ } + { + * NAME + * nztDecrypt - Decrypt an Encrypted message. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * state IN State of decryption. + * inlen IN Length of this input part. + * in IN This input part. + * out IN/OUT Cleartext message. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_CANTGROW Needed to grow TDU buffer but could not. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztDecrypt(_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttces; _para4:ub4; _para5:Pub1; + _para6:PnzttBufferBlock):nzerror;cdecl;external ocilib name 'nztDecrypt'; +{$ELSE} + nztDecrypt : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttces; _para4:ub4; _para5:Pub1; + _para6:PnzttBufferBlock):nzerror;cdecl; +{$ENDIF} + + {------------------------ nztEnvelope ------------------------ } + { + * NAME + * nztEnvelope - Sign and PKEncrypt a message. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * nrecipients IN Number of recipients for this encryption. + * recipients IN List of recipients. + * state IN State of encryption. + * inlen IN Length of this input part. + * in IN This input part. + * tdubuf IN/OUT TDU buffer. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_CANTGROW Needed to grow output buffer but could not. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztEnvelope(_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:PnzttIdentity; _para5:nzttces; + _para6:ub4; _para7:Pub1; _para8:PnzttBufferBlock):nzerror;cdecl;external ocilib name 'nztEnvelope'; +{$ELSE} + nztEnvelope : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:PnzttIdentity; _para5:nzttces; + _para6:ub4; _para7:Pub1; _para8:PnzttBufferBlock):nzerror;cdecl; +{$ENDIF} + + {----------------------- nztDeEnvelope ----------------------- } + { + * NAME + * nztDeEnvelope - PKDecrypt and verify a message. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * state IN State of encryption. + * inlen IN Length of this input part. + * in IN This input part. + * out OUT Message from TDU. + * verified OUT TRUE if verified. + * validated OUT TRUE if validated. + * sender OUT Identity of sender. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_CANTGROW Needed to grow TDU buffer but could not. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztDeEnvelope(_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttces; _para4:ub4; _para5:Pub1; + _para6:PnzttBufferBlock; _para7:Pboolean; _para8:Pboolean; _para9:PPnzttIdentity):nzerror;cdecl;external ocilib name 'nztDeEnvelope'; +{$ELSE} + nztDeEnvelope : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttces; _para4:ub4; _para5:Pub1; + _para6:PnzttBufferBlock; _para7:Pboolean; _para8:Pboolean; _para9:PPnzttIdentity):nzerror;cdecl; +{$ENDIF} + + {----------------------- nztKeyedHash ----------------------- } + { + * NAME + * nztKeyedHash - Generate a keyed hash. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * state IN State of hash. + * inlen IN Length of this input. + * in IN This input. + * tdu IN/OUT Output tdu. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_CANTGROW Needed to grow TDU buffer but could not. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztKeyedHash(_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttces; _para4:ub4; _para5:Pub1; + _para6:PnzttBufferBlock):nzerror;cdecl;external ocilib name 'nztKeyedHash'; +{$ELSE} + nztKeyedHash : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:nzttces; _para4:ub4; _para5:Pub1; + _para6:PnzttBufferBlock):nzerror;cdecl; +{$ENDIF} + + {------------------ nztxKeyedHashExpansion ------------------ } + { + * NAME + * nztxKeyedHashExpansion - Determine the space needed for a keyed hash. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * inlen IN Length of this input. + * tdulen OUT TDU length. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztxKeyedHashExpansion(_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:Pub4):nzerror;cdecl;external ocilib name 'nztxKeyedHashExpansion'; +{$ELSE} + nztxKeyedHashExpansion : function (_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:Pub4):nzerror;cdecl; +{$ENDIF} + + {--------------------- nztxHashExpansion --------------------- } + { + * NAME + * nztxHashExpansion - Determine the size of the TDU for a hash. + * + * PARAMETERS + * osscntxt IN OSS context. + * persona IN Persona. + * inlen IN Length of this input. + * tdulen OUT TDU length. + * + * NOTES + * + * RETURNS + * NZERROR_OK Success. + * NZERROR_TK_NOTOPEN Persona is not open. + * NZERROR_TK_NOTSUPP Function not supported with persona. + } + +{$IFNDEF LinkDynamically} + function nztxHashExpansion(_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:Pub4):nzerror;cdecl;external ocilib name 'nztxHashExpansion'; +{$ELSE} + nztxHashExpansion : function(_para1:Pnzctx; _para2:PnzttPersona; _para3:ub4; _para4:Pub4):nzerror;cdecl; +{$ENDIF} + + {---------------- nztiae_IsAuthEnabled ---------------- } + { + * NAME + * nztiae_IsAuthEnabled - Checks to see if Authentication is Enabled + * in the current Cipher Spec. + * + * PARAMETERS + * ctx IN Oracle SSL Context + * ncipher IN CipherSuite + * authEnabled OUT Boolean for is Auth Enabled? + * + * NOTES + * + * RETURNS + * NZERROR_OK on success. + * NZERROR_TK_INV_CIPHR_TYPE if Cipher Spec is not Recognized. + } + +{$IFNDEF LinkDynamically} + function nztiae_IsAuthEnabled(_para1:Pnzctx; _para2:ub2; _para3:Pboolean):nzerror;cdecl;external ocilib name 'nztiae_IsAuthEnabled'; +{$ELSE} + nztiae_IsAuthEnabled : function (_para1:Pnzctx; _para2:ub2; _para3:Pboolean):nzerror;cdecl; +{$ENDIF} + + {---------------- nztiee_IsEncrEnabled ---------------- } + { + * NAME + * nztiee_IsEncrEnabled - Checks to see if Encryption is Enabled + * in the current Cipher Spec. + * + * PARAMETERS + * ctx IN Oracle SSL Context + * ncipher IN CipherSuite + * EncrEnabled OUT Boolean for is Auth Enabled? + * + * NOTES + * + * RETURNS + * NZERROR_OK on success. + * NZERROR_TK_INV_CIPHR_TYPE if Cipher Spec is not Recognized. + } + +{$IFNDEF LinkDynamically} + function nztiee_IsEncrEnabled(_para1:Pnzctx; _para2:ub2; _para3:Pboolean):nzerror;cdecl;external ocilib name 'nztiee_IsEncrEnabled'; +{$ELSE} + nztiee_IsEncrEnabled : function (_para1:Pnzctx; _para2:ub2; _para3:Pboolean):nzerror;cdecl; +{$ENDIF} + + {---------------- nztihe_IsHashEnabled ---------------- } + { + * NAME + * nztihe_IsHashEnabled - Checks to see if HAshing is Enabled + * in the current Cipher Spec. + * + * PARAMETERS + * ctx IN Oracle SSL Context + * ncipher IN CipherSuite + * hashEnabled OUT Boolean for is Auth Enabled? + * + * NOTES + * + * RETURNS + * NZERROR_OK on success. + * NZERROR_TK_INV_CIPHR_TYPE if Cipher Spec is not Recognized. + } + +{$IFNDEF LinkDynamically} + function nztihe_IsHashEnabled(_para1:Pnzctx; _para2:ub2; _para3:Pboolean):nzerror;cdecl;external ocilib name 'nztihe_IsHashEnabled'; +{$ELSE} + nztihe_IsHashEnabled : function (_para1:Pnzctx; _para2:ub2; _para3:Pboolean):nzerror;cdecl; +{$ENDIF} + + { + * + } +{$IFNDEF LinkDynamically} + + function nztGetIssuerName(_para1:Pnzctx; _para2:PnzttIdentity; _para3:PPub1; _para4:Pub4):nzerror;cdecl;external ocilib name 'nztGetIssuerName'; + + + function nztGetSubjectName(_para1:Pnzctx; _para2:PnzttIdentity; _para3:PPub1; _para4:Pub4):nzerror;cdecl;external ocilib name 'nztGetSubjectName'; + + + function nztGetBase64Cert(_para1:Pnzctx; _para2:PnzttIdentity; _para3:PPub1; _para4:Pub4):nzerror;cdecl;external ocilib name 'nztGetBase64Cert'; + + function nztGetSerialNumber(_para1:Pnzctx; _para2:PnzttIdentity; _para3:PPub1; _para4:Pub4):nzerror;cdecl;external ocilib name 'nztGetSerialNumber'; + + function nztGetValidDate(_para1:Pnzctx; _para2:PnzttIdentity; _para3:Pub4; _para4:Pub4):nzerror;cdecl;external ocilib name 'nztGetValidDate'; + + function nztGetVersion(_para1:Pnzctx; _para2:PnzttIdentity; _para3:Pnzstrc):nzerror;cdecl;external ocilib name 'nztGetVersion'; + + function nztGetPublicKey(_para1:Pnzctx; _para2:PnzttIdentity; _para3:PPub1; _para4:Pub4):nzerror;cdecl;external ocilib name 'nztGetPublicKey'; + + function nztGenericDestroy(_para1:Pnzctx; _para2:PPub1):nzerror;cdecl;external ocilib name 'nztGenericDestroy'; + + function nztSetAppDefaultLocation(_para1:Pnzctx; _para2:Ptext; _para3:size_t):nzerror;cdecl;external ocilib name 'nztSetAppDefaultLocation'; + + function nztSearchNZDefault(_para1:Pnzctx; _para2:Pboolean):nzerror;cdecl;external ocilib name 'nztSearchNZDefault'; +{$ELSE} + nztGetIssuerName : function (_para1:Pnzctx; _para2:PnzttIdentity; _para3:PPub1; _para4:Pub4):nzerror;cdecl; + + + nztGetSubjectName: function(_para1:Pnzctx; _para2:PnzttIdentity; _para3:PPub1; _para4:Pub4):nzerror;cdecl; + + + nztGetBase64Cert : function(_para1:Pnzctx; _para2:PnzttIdentity; _para3:PPub1; _para4:Pub4):nzerror;cdecl; + + nztGetSerialNumber : function(_para1:Pnzctx; _para2:PnzttIdentity; _para3:PPub1; _para4:Pub4):nzerror;cdecl; + + nztGetValidDate : function(_para1:Pnzctx; _para2:PnzttIdentity; _para3:Pub4; _para4:Pub4):nzerror;cdecl; + + nztGetVersion : function(_para1:Pnzctx; _para2:PnzttIdentity; _para3:Pnzstrc):nzerror;cdecl; + + nztGetPublicKey : function(_para1:Pnzctx; _para2:PnzttIdentity; _para3:PPub1; _para4:Pub4):nzerror;cdecl; + + nztGenericDestroy : function(_para1:Pnzctx; _para2:PPub1):nzerror;cdecl; + + nztSetAppDefaultLocation : function(_para1:Pnzctx; _para2:Ptext; _para3:size_t):nzerror;cdecl; + + nztSearchNZDefault : function(_para1:Pnzctx; _para2:Pboolean):nzerror;cdecl; +{$ENDIF} + diff --git a/packages/oracle/src/oci.inc b/packages/oracle/src/oci.inc new file mode 100644 index 0000000000..8801038153 --- /dev/null +++ b/packages/oracle/src/oci.inc @@ -0,0 +1,3909 @@ + +{$MODE objfpc} +{$MACRO on} + +interface + +uses ctypes, +{$IFDEF LinkDynamically} + Dynlibs, sysutils, +{$ENDIF} + oratypes; + +{ + Automatically converted by H2Pas 1.0.0 from oci.h + The following command line parameters were used: + -p + -D + -l + jojo.so + oci.h +} + +{$IFDEF Unix} + {$DEFINE extdecl:=cdecl} + const + ocilib = 'libociei.so'; +{$ENDIF} +{$IFDEF Windows} + {$DEFINE extdecl:=stdcall} + const + ocilib = 'oci.dll'; +{$ENDIF} + +{$PACKRECORDS C} + + + { + * $Header: oci.h 11-jan-2005.15:11:45 aahluwal Exp $ + } + { Copyright (c) 1995, 2005, Oracle. All rights reserved. } + { + NAME + oci.h - V8 Oracle Call Interface public definitions + + DESCRIPTION + This file defines all the constants and structures required by a V8 + OCI programmer. + + RELATED DOCUMENTS + V8 OCI Functional Specification + Oracle Call Interface Programmer's Guide Vol 1 and 2 + + INSPECTION STATUS + Inspection date: + Inspection status: + Estimated increasing cost defects per page: + Rule sets: + + ACCEPTANCE REVIEW STATUS + Review date: + Review status: + Reviewers: + + PUBLIC FUNCTION(S) + None + + PRIVATE FUNCTION(S) + None + + EXAMPLES + + NOTES + + + MODIFIED (MM/DD/YY) + aahluwal 03/15/05 - [Bug 4235014]:add ASM, Preconnect events + ssappara 08/12/04 - Bug3669429 add OCI_ATTR_DESC_SYNBAS + absaxena 03/24/05 - remove OCI_AQ_RESERVED_5 + mbastawa 03/01/05 - add OCI_EXEC_RESERVED_5 + msakayed 02/15/05 - Bug #3147299: Add OCI_ATTR_CURRENT_ERRCOL + aahluwal 01/11/05 - [Bug 3944589]: add OCI_AUTH_RESERVED_5 + nikeda 11/15/04 - Add OCIP_IIO + rvissapr 11/10/04 - bug 3843644 - isencrypted + hohung 11/22/04 - add OCI_BIND_RESERVED_3 + cchui 10/25/04 - add OCI_ATTR_PROXY_CLIENT + aahluwal 09/27/04 - add incarnation, reason, cardinality to event handle + msakayed 09/14/04 - column encryption support (project id 5578) + jacao 08/17/04 - Add OCI_ATTR_DB_CHARSET_ID + mhho 08/29/04 - resolve conflicting mode declaration + sgollapu 05/28/04 - Add OCI_AUTH_RESERVED_3 + mbastawa 08/05/04 - add OCI_ATTR_RESERVED_21 + ebatbout 07/27/04 - add OCI_ATTR_DIRPATH_RESERVED_9 and move all direct + path attributes into a separate area in this file. + clei 06/29/04 - add OCI_ATTR_ENCC_SIZE + weiwang 05/06/04 - add OCIAQListenOpts and OCIAQLisMsgProps + weiwang 04/30/04 - add OCI_AQ_RESERVED_5 + nbhatt 04/27/04 - add new attribute + ssvemuri 06/19/04 - change notification descriptors and attributes + ksurlake 06/01/04 - grabtrans 'ksurlake_txn_skmishra_clone' + ksurlake 05/13/04 - add subscriber handle attributes + mbastawa 06/01/04 - add 3 more OCI_FETCH_RESERVED modes + chliang 05/28/04 - add nchar literal replacement modes + nikeda 05/14/04 - [OLS on RAC] new authentication mode + debanerj 05/17/04 - 13064: add fncodes for LOB array Read and Write + nikeda 05/20/04 - [OCI Events] Add incarnation, cardinality,reason + nikeda 05/18/04 - [OCI Events] Add OCI_ATTR_SERVICENAME + nikeda 05/17/04 - Add event handle + nikeda 05/13/04 - [OCI Events] Rename HACBK->EVTCBK, HACTX->EVTCTX + nikeda 05/10/04 - [OCI Events] code review changes + nikeda 04/15/04 - [OCI Events] OCI_SESSRLS_DROPSESS_FORCE + nikeda 04/12/04 - [OCI Events] Add OCI_ATTR_USER_MEMORY + aahluwal 04/12/04 - add OCI_HNDLFR_RESERVED5 + vraja 04/28/04 - add options for redo sync on commit + aahluwal 05/29/04 - [OCI Events]: add support for svc, svc member events + nikeda 05/28/04 - grabtrans 'nikeda_oci_events_copy' + nikeda 05/18/04 - [OCI Events] Add OCI_ATTR_SERVICENAME + nikeda 05/17/04 - Add event handle + nikeda 05/13/04 - [OCI Events] Rename HACBK->EVTCBK, HACTX->EVTCTX + nikeda 05/10/04 - [OCI Events] code review changes + nikeda 04/15/04 - [OCI Events] OCI_SESSRLS_DROPSESS_FORCE + nikeda 04/12/04 - [OCI Events] Add OCI_ATTR_USER_MEMORY + aahluwal 04/12/04 - add OCI_HNDLFR_RESERVED5 + jciminsk 04/28/04 - merge from RDBMS_MAIN_SOLARIS_040426 + jacao 03/06/04 - add OCI_ATTR_CURRENT_SCHEMA + aahluwal 01/20/04 - remove OCI_KEEP_FETCH_STATE + aahluwal 03/25/04 - [OCI Events] add OCI_HTYPE_HAEVENT and related attrs + nikeda 03/19/04 - [OCI Events] Add OCI_ATTR_HACBK and OCI_ATTR_HACTX + dfrumkin 12/04/03 - Add database startup/shutdown + chliang 12/22/03 - grid/main merge: add OCI_ATTR_RESERVED_20 + jciminsk 12/12/03 - merge from RDBMS_MAIN_SOLARIS_031209 + sgollapu 09/19/03 - Add fetch modes + sgollapu 07/30/03 - Add TSM attributes + sgollapu 06/26/03 - Add OCI_MUTEX_TRY + aime 06/23/03 - sync grid with main + sgollapu 06/07/03 - Add reserved attribute + sgollapu 06/05/03 - Add reserved auth flag + rpingte 05/22/03 - Add OCI_ATCH_RESERVED_5 + sgollapu 05/06/03 - Add TSM attributes + sgollapu 04/10/03 - Session migration Flags/interfaces + dfrumkin 04/23/04 - add OCI_PREP2_RESERVED_1 + rpingte 05/06/04 - add major and minor version information + bsinha 04/06/04 - add new OCI_TRANS flag + chliang 11/26/03 - add OCI_ATTR_RESERVED_19 + preilly 10/23/03 - Make OCI_ATTR_DIRPATH_METADATA_BUF private + chliang 08/07/03 - add OCI_ATTR_SKIP_BUFFER + srseshad 03/12/03 - convert public oci api to ansi + weiwang 05/14/03 - remove iot creation for rule sets + rkoti 04/15/03 - [2746515] add fntcodes for Unlimited size LOB 6003 + tcruanes 05/13/03 - add slave SQL OCI execution mode + rkoti 02/21/03 - [2761455] add OCI_FNCODE_AQENQARRAY, + OCI_FNCODE_AQDEQARRAY and update OCI_FNCODE_MAXFCN + tkeefe 01/29/03 - bug-2773794: Add new interface for setting Kerb attrs + aahluwal 02/06/03 - add OCI_ATTR_TRANSFORMATION_NO + weiwang 12/05/02 - add OCI_ATTR_USER_PROPERTY + ataracha 01/03/03 - includeocixmldb.h + preilly 12/05/02 - Add wait attribute for locking when using dir path + tkeefe 01/03/03 - bug-2623771: Added OCI_ATTR_KERBEROS_KEY + lchidamb 12/13/02 - end-to-end tracing attributes + msakayed 10/28/02 - Bug #2643907: add OCI_ATTR_DIRPATH_SKIPINDEX_METHOD + rphillip 11/13/02 - Add OCIP_ATTR_DIRPATH_INDEX + sagrawal 10/13/02 - liniting + sagrawal 10/03/02 - PL/SQL Compiler warnings + jstenois 11/07/02 - remove ocixad.h + chliang 10/21/02 - add OCI_ATTR_RESERVED_16,17 + hsbedi 10/30/02 - grabtrans 'jstenois_fix_xt_convert' + aahluwal 10/12/02 - add OCI_ATTR_AQ_NUM_E_ERRORS/OCI_ATTR_AQ_ERROR_INDEX + bdagevil 10/21/02 - add SQL analyze internal exec mode + csteinba 10/11/02 - add OCI_ATTR_RESERVED_16 + chliang 10/12/02 - add bind row callback attributes + preilly 10/25/02 - Add new reserved parameters + tkeefe 10/31/02 - bug-2623771: Added OCI_ATTR_AUDIT_SESSION_ID + csteinba 10/04/02 - Add OCI_ATTR_RESERVED_15 + mhho 10/11/02 - add new credential constant + thoang 09/25/02 - Add OCI_XMLTYPE_CREATE_CLOB + skaluska 10/07/02 - describe rules objects + csteinba 09/16/02 - Remove OCI_CACHE + gtarora 10/03/02 - OCI_ATTR_COL_SUBS => OCI_ATTR_OBJ_SUBS + msakayed 09/09/02 - Bug #2482469: add OCI_ATTR_DIRPATH_RESERVED_[3-6] + aahluwal 08/30/02 - adding dequeue across txn group + srseshad 04/24/02 - Add attribute OCI_ATTR_SPOOL_STMTCACHESIZE. + ebatbout 07/22/02 - Remove OCI_ATTR_RESERVED_11. + abande 01/17/02 - Bug 1788921; Add external attribute. + aahluwal 06/04/02 - bug 2360115 + pbagal 05/24/02 - Incorporate review comments + pbagal 05/22/02 - Introduce instance type attribute. + whe 07/01/02 - add OCI_BIND_DEFINE_SOFT flags + gtarora 07/01/02 - Add OCI_ATTR_COL_SUBS + tkeefe 05/30/02 - Add support for new proxy authentication credentials + dgprice 12/18/01 - bug 2102779 add reserved force describe + schandir 11/19/01 - add/modify modes. + schandir 11/15/01 - add OCI_SPC_STMTCACHE. + schandir 12/06/01 - change mode value of OCI_SPOOL. + msakayed 11/02/01 - Bug #2094292: add OCI_ATTR_DIRPATH_INPUT + dsaha 11/09/01 - add OCI_DTYPE_RESERVED1 + skabraha 11/05/01 - new method flag + skabraha 10/25/01 - another flag for XML + skabraha 10/11/01 - describe flags for subtypes + nbhatt 09/18/01 - new reserved AQ flags + celsbern 10/19/01 - merge LOG to MAIN + ksurlake 10/12/01 - add OCI_ATTR_RESERVED_13 + ksurlake 08/13/01 - add OCI_ATTR_RESERVED_12 + schandir 09/24/01 - Adding stmt caching + abande 09/04/01 - Adding session pooling + sagrawal 10/23/01 - add new bit for OCIPHandleFree + preilly 10/25/01 - Add support for specifying metadata on DirPathCtx + skabraha 09/24/01 - describe flags for XML type + schandir 09/24/01 - Adding stmt caching + abande 09/04/01 - Adding session pooling + stakeda 09/17/01 - add OCI_NLS_CHARSET_ID + whe 09/19/01 - add OCIXMLType create options + rpingte 09/11/01 - add OCI_MUTEX_ENV_ONLY and OCI_NO_MUTEX_STMT + cmlim 08/28/01 - mod datecache attrs to use same naming as dpapi attrs + wzhang 08/24/01 - Add new keywords for OCINlsNameMap. + rphillip 05/02/01 - Add date cache attributes + rphillip 08/22/01 - Add new stream version + ebatbout 04/13/01 - add definition, OCI_ATTR_RESERVED_11 + chliang 04/12/01 - add shortnames for newer oci funcation + wzhang 04/11/01 - Add new OCI NLS constants. + cmlim 04/13/01 - remove attrs not used by dpapi (151 & 152 avail) + rkambo 03/23/01 - bugfix 1421793 + cmlim 04/02/01 - remove OCI_ATTR_DIRPATH_NESTED_TBL, SUBST_OBJ_TBL + - note: attribute #s 186 & 205 available + whe 03/28/01 - add OCI_AFC_PAD_ON/OFF mode + preilly 03/05/01 - Add stream versioning support to DirPath context + schandir 12/18/00 - remove attr CONN_INCR_DELAY. + schandir 12/12/00 - change mode from OCI_POOL to OCI_CPOOL. + cbarclay 01/12/01 - add atribute for OCIP_ATTR_TMZ + whe 01/07/01 - add attributes related to UTF16 env mode + slari 12/29/00 - add blank line + slari 12/28/00 - OCI_ATTR_RESERVED_10 + whe 12/19/00 - add OCI_ENVCR_RESERVED3 + rpang 11/29/00 - Added OCI_ATTR_ORA_DEBUG_JDWP attribute + cmlim 11/28/00 - support substitutable object tables in dpapi + akatti 10/09/00 - [198379]:add OCIRowidToChar + sgollapu 10/11/00 - Add OCI_PREP_RESERVED_1 + sgollapu 08/27/00 - add attribute to get erroneous column + sgollapu 07/29/00 - Add snapshot attributes + kmohan 09/18/00 - add OCI_FNCODE_LOGON2 + abrumm 10/08/00 - include ocixad.h + mbastawa 10/04/00 - add OCI_ATTR_ROWS_FETCHED + nbhatt 08/24/00 - add transformation attribute + dmwong 08/22/00 - OCI_ATTR_CID_VALUE -> OCI_ATTR_CLIENT_IDENTIFIER. + cmlim 08/30/00 - add OCI_ATTR_DIRPATH_SID + dsaha 08/18/00 - add OCI_ATTR_RESERVED_5 + amangal 08/17/00 - Merge into 8.2 : 1194361 + slari 08/03/00 - add OCI_ATTR_HANDLE_POSITION + dsaha 07/20/00 - 2rt exec + sgollapu 07/04/00 - Add virtual session flag + cmlim 07/07/00 - add OCI_ATTR_DIRPATH_OID, OCI_ATTR_DIRPATH_NESTED_TBL + etucker 07/28/00 - add OCIIntervalFromTZ + rwessman 06/26/00 - N-tier: added new credential attributes + whe 07/27/00 - add OCI_UTF16 mode + vjayaram 07/18/00 - add connection pooling changes + etucker 07/12/00 - add dls apis + cmlim 07/07/00 - add OCI_ATTR_DIRPATH_OID, OCI_ATTR_DIRPATH_NESTED_TBL + sgollapu 07/04/00 - Add virtual session flag + najain 05/01/00 - AQ Signature support + sgollapu 06/14/00 - Add reserved OCI mode + rkambo 06/08/00 - notification presentation support + sagrawal 06/04/00 - ref cursor to c + ksurlake 06/07/00 - define OCI_POOL + mbastawa 06/05/00 - added scrollable cursor attributes + weiwang 03/31/00 - add LDAP support + whe 05/30/00 - add OCI_ATTR_MAXCHAR_SIZE + whe 05/23/00 - validate OCI_NO_CACHE mode + dsaha 02/02/00 - Add no-cache attr in statement handle + whe 05/23/00 - add OCIP_ICACHE + allee 05/17/00 - describe support for JAVA implmented TYPE + preilly 05/30/00 - Continue adding support for objects in direct path lo + cmlim 05/16/00 - 8.2 dpapi support of ADTs + rxgovind 05/04/00 - OCIAnyDataSet changes + rkasamse 05/25/00 - add OCIAnyDataCtx + rmurthy 04/26/00 - describe support for inheritance + ksurlake 04/18/00 - Add credential type + whe 05/24/00 - add OCI_ATTR_CHAR_ attrs + rkambo 04/19/00 - subscription enhancement + rmurthy 04/26/00 - describe support for inheritance + delson 03/28/00 - add OCI_ATTR_RESERVED_2 + abrumm 03/31/00 - external table support + rkasamse 03/13/00 - add declarations for OCIAnyData + najain 02/24/00 - support for dequeue as select + dsaha 03/10/00 - Add OCI_ALWAYS_BLOCKING + esoyleme 04/25/00 - separated transactions + sgollapu 12/23/99 - OCIServerAttach extensions + slari 08/23/99 - add OCI_DTYPE_UCB + slari 08/20/99 - add OCI_UCBTYPE_REPLACE + hsbedi 08/31/99 - Memory Stats . + sgollapu 08/02/99 - oci sql routing + slari 08/06/99 - rename values for OCI_SERVER_STATUS + slari 08/02/99 - add OCI_ATTR_SERVER_STATUS + tnbui 07/28/99 - Remove OCI_DTYPE_TIMESTAMP_ITZ + amangal 07/19/99 - Merge into 8.1.6 : bug 785797 + tnbui 07/07/99 - Change ADJUSTMENT modes + dsaha 07/07/99 - OCI_SAHRED_EXT + dmwong 06/08/99 - add OCI_ATTR_APPCTX_* + vyanaman 06/23/99 - + vyanaman 06/21/99 - Add new OCI Datetime and Interval descriptors + esoyleme 06/29/99 - expose MTS performance enhancements + rshaikh 04/23/99 - add OCI_SQL_VERSION_* + tnbui 05/24/99 - Remove OCIAdjStr + dsaha 05/21/99 - Add OCI_ADJUST_UNK + mluong 05/17/99 - fix merge + tnbui 04/05/99 - ADJUSTMENT values + abrumm 04/16/99 - dpapi: more attributes + dsaha 02/24/99 - Add OCI_SHOW_DML_WARNINGS + jiyang 12/07/98 - Add OCI_NLS_DUAL_CURRENCY + slari 12/07/98 - change OCI_NOMUTEX to OCI_NO_MUTEX + aroy 11/30/98 - change OCI_NOCALLBACK to OCI_NO_UCB + aroy 11/13/98 - add env modes to process modes + slari 09/08/98 - add OCI_FNCODE_SVC2HST and _SVCRH + aroy 09/04/98 - Add OCI_ATTR_MIGSESSION + skray 08/14/98 - server groups for session switching + mluong 08/11/98 - add back OCI_HTYPE_LAST. + aroy 05/25/98 - add process handle type + aroy 04/06/98 - add shared mode + slari 07/13/98 - merge forward to 8.1.4 + slari 07/09/98 - add OCI_BIND_RESERVED_2 + slari 07/08/98 - add OCI_EXACT_FETCH_RESERVED_1 + dsaha 07/07/98 - Add OCI_PARSE_ONLY + dsaha 06/29/98 - Add OCI_PARSE_ONLY + slari 07/01/98 - add OCI_BIND_RESERVED_2 + sgollapu 06/25/98 - Fix bug 683565 + slari 06/17/98 - remove OC_FETCH_RESERVED_2 + slari 06/11/98 - add OCI_FETCH_RESERVED_1 and 2 + jhasenbe 05/27/98 - Remove definitions for U-Calls (Unicode) + jiyang 05/18/98 - remove OCI_ATTR_CARTLANG + nbhatt 05/20/98 - OCI_DEQ_REMOVE_NODATA + nbhatt 05/19/98 - correct AQ opcode + skmishra 05/06/98 - Add precision attribute to Attributes list + aroy 04/20/98 - merge forward 8.0.5 -> 8.1.3 + schandra 05/01/98 - OCI sender id + sgollapu 02/19/98 - enhanced array DML + nbhatt 05/15/98 - AQ listen call + sgollapu 04/27/98 - more attributes + skaluska 04/06/98 - Add OCI_PTYPE_SCHEMA, OCI_PTYPE_DATABASE + slari 04/28/98 - add OCI_ATTR_PDPRC + lchidamb 05/05/98 - change OCI_NAMESPACE_AQ to 1 + nbhatt 04/27/98 - AQ Notification Descriptor + abrumm 06/24/98 - more direct path attributes + abrumm 05/27/98 - OCI direct path interface support + abrumm 05/08/98 - OCI direct path interface support + lchidamb 03/02/98 - client notification additions + kkarun 04/17/98 - Add more Interval functions + vyanaman 04/16/98 - Add get/set TZ + kkarun 04/14/98 - Add OCI Datetime shortnames + vyanaman 04/13/98 - Add OCI DateTime and Interval check error codes + kkarun 04/07/98 - Add OCI_DTYPE_DATETIME and OCI_DTYPE_INTERVAL + esoyleme 12/15/97 - support failover callback retry + esoyleme 04/22/98 - merge support for failover callback retry + mluong 04/16/98 - add OCI_FNCODE_LOBLOCATORASSIGN + rkasamse 04/17/98 - add short names for OCIPickler(Memory/Ctx) cart servi + slari 04/10/98 - add OCI_FNCODE_SVCCTXTOLDA + slari 04/09/98 - add OCI_FNCODE_RESET + slari 04/07/98 - add OCI_FNCODE_LOBFILEISOPEN + slari 04/06/98 - add OCI_FNCODE_LOBOPEN + slari 03/20/98 - change OCI_CBTYPE_xxx to OCI_UCBTYPE_xxx + slari 03/18/98 - add OCI_FNCODE_MAXFCN + slari 02/12/98 - add OCI_ENV_NO_USRCB + skabraha 04/09/98 - adding shortnames for OCIFile + rhwu 04/03/98 - Add short names for the OCIThread package + tanguyen 04/03/98 - add OCI_ATTR_xxxx for type inheritance + rkasamse 04/02/98 - add OCI_ATTR_UCI_REFRESH + nramakri 04/01/98 - Add short names for the OCIExtract package + ewaugh 03/31/98 - Add short names for the OCIFormat package. + jhasenbe 04/06/98 - Add definitions for U-Calls (Unicode) + (OCI_TEXT, OCI_UTEXT, OCI_UTEXT4) + skmishra 03/03/98 - Add OCI_ATTR_PARSE_ERROR_OFFSET + rwessman 03/11/98 - Added OCI_CRED_PROXY for proxy authentication + abrumm 03/31/98 - OCI direct path interface support + nmallava 03/03/98 - add constants for temp lob apis + skotsovo 03/05/98 - resolve merge conflicts + skotsovo 02/24/98 - add OCI_DTYPE_LOC + skaluska 01/21/98 - Add OCI_ATTR_LTYPE + rkasamse 01/06/98 - add OCI_ATTR* for obj cache enhancements + dchatter 01/08/98 - more comments + skabraha 12/02/97 - moved oci1.h to the front of include files. + jiyang 12/18/97 - Add OCI_NLS_MAX_BUFSZ + rhwu 12/02/97 - move oci1.h up + ewaugh 12/15/97 - Add short names for the OCIFormat package. + rkasamse 12/02/97 - Add a constant for memory cartridge services -- OCI_M + nmallava 12/31/97 - open/close for internal lobs + khnguyen 11/27/97 - add OCI_ATTR_LFPRECISION, OCI_ATTR_FSPRECISION + rkasamse 11/03/97 - add types for pickler cartridge services + mluong 11/20/97 - changed ubig_ora to ub4 per skotsovo + ssamu 11/14/97 - add oci1.h + jiyang 11/13/97 - Add NLS service for cartridge + esoyleme 12/15/97 - support failover callback retry + jwijaya 10/21/97 - change OCILobOffset/Length from ubig_ora to ub4 + cxcheng 07/28/97 - fix compile with SLSHORTNAME + schandra 06/25/97 - AQ OCI interface + sgollapu 07/25/97 - Add OCI_ATTR_DESC_PUBLIC + cxcheng 06/16/97 - add OCI_ATTR_TDO + skotsovo 06/05/97 - add fntcodes for lob buffering subsystem + esoyleme 05/13/97 - move failover callback prototype + skmishra 05/06/97 - stdc compiler fixes + skmishra 04/22/97 - Provide C++ compatibility + lchidamb 04/19/97 - add OCI_ATTR_SESSLANG + ramkrish 04/15/97 - Add OCI_LOB_BUFFER_(NO)FREE + sgollapu 04/18/97 - Add OCI_ATTR_TABLESPACE + skaluska 04/17/97 - Add OCI_ATTR_SUB_NAME + schandra 04/10/97 - Use long OCI names + aroy 03/27/97 - add OCI_DTYPE_FILE + sgollapu 03/26/97 - Add OCI_OTYPEs + skmishra 04/09/97 - Added constant OCI_ROWID_LEN + dchatter 03/21/97 - add attr OCI_ATTR_IN_V8_MODE + lchidamb 03/21/97 - add OCI_COMMIT_ON_SUCCESS execution mode + skmishra 03/20/97 - Added OCI_ATTR_LOBEMPTY + sgollapu 03/19/97 - Add OCI_ATTR_OVRLD_ID + aroy 03/17/97 - add postprocessing callback + sgollapu 03/15/97 - Add OCI_ATTR_PARAM + cxcheng 02/07/97 - change OCI_PTYPE codes for type method for consistenc + cxcheng 02/05/97 - add OCI_PTYPE_TYPE_RESULT + cxcheng 02/04/97 - rename OCI_PTYPE constants to be more consistent + cxcheng 02/03/97 - add OCI_ATTR, OCI_PTYPE contants for describe type + esoyleme 01/23/97 - merge neerja callback + sgollapu 12/30/96 - Remove OCI_DTYPE_SECURITY + asurpur 12/26/96 - CHanging OCI_NO_AUTH to OCI_AUTH + sgollapu 12/23/96 - Add more attrs to COL, ARG, and SEQ + sgollapu 12/12/96 - Add OCI_DESCRIBE_ONLY + slari 12/11/96 - change prototype of OCICallbackInBind + nbhatt 12/05/96 - "callback" + lchidamb 11/19/96 - handle subclassing + sgollapu 11/09/96 - OCI_PATTR_* + dchatter 11/04/96 - add attr OCI_ATTR_CHRCNT + mluong 11/01/96 - test + cxcheng 10/31/96 - add #defines for OCILobLength etc + dchatter 10/31/96 - add lob read write call back fp defs + dchatter 10/30/96 - more changes + rhari 10/30/96 - Include ociextp.h at the very end + lchidamb 10/22/96 - add fdo attribute for bind/server handle + dchatter 10/22/96 - change attr defn for prefetch parameters & lobs/file + calls + slari 10/21/96 - add OCI_ENV_NO_MUTEX + rhari 10/25/96 - Include ociextp.h + rxgovind 10/25/96 - add OCI_LOBMAXSIZE, remove OCI_FILE_READWRITE + sgollapu 10/24/96 - Correct OCILogon and OCILogoff + sgollapu 10/24/96 - Correct to OCILogon and OCILogoff + sgollapu 10/21/96 - Add ocilon and ociloff + skaluska 10/31/96 - Add OCI_PTYPE values + sgollapu 10/17/96 - correct OCI_ATTR_SVCCTX to OCI_ATTR_SERVER + rwessman 10/16/96 - Added security functions and fixed olint errors. + sthakur 10/14/96 - add more COR attributes + cxcheng 10/14/96 - re-enable LOB functions + sgollapu 10/10/96 - Add ocibdp and ocibdn + slari 10/07/96 - add back OCIRowid + aroy 10/08/96 - add typedef ocibfill for PRO*C + mluong 10/11/96 - replace OCI_ATTR_CHARSET* with OCI_ATTR_CHARSET_* + cxcheng 10/10/96 - temporarily take out #define for lob functions + sgollapu 10/02/96 - Rename OCI functions and datatypes + skotsovo 10/01/96 - move orl lob fnts to oci + aroy 09/10/96 - fix merge errors + aroy 08/19/96 - NCHAR support + jboonleu 09/05/96 - add OCI attributes for object cache + dchatter 08/20/96 - HTYPE ranges from 1-50; DTYPE from 50-255 + slari 08/06/96 - define OCI_DTYPE_ROWID + sthakur 08/14/96 - complex object support + schandra 06/17/96 - Convert XA to use new OCI + abrik 08/15/96 - OCI_ATTR_HEAPALLOC added + aroy 07/17/96 - terminology change: ocilobd => ocilobl + aroy 07/03/96 - add lob typedefs for Pro*C + slari 06/28/96 - add OCI_ATTR_STMT_TYPE + lchidamb 06/26/96 - reorg #ifndef + schandra 05/31/96 - attribute types for internal and external client name + asurpur 05/30/96 - Changing the value of mode + schandra 05/18/96 - OCI_TRANS_TWOPHASE -> 0x00000001 to 0x00100000 + slari 05/30/96 - add callback function prototypes + jbellemo 05/23/96 - remove ociisc + schandra 04/23/96 - loosely-coupled branches + asurpur 05/15/96 - New mode for ocicpw + aroy 04/24/96 - making ocihandles opaque + slari 04/18/96 - add missing defines + schandra 03/27/96 - V8OCI - add transaction related calls + dchatter 04/01/96 - add OCI_FILE options + dchatter 03/21/96 - add oci2lda conversion routines + dchatter 03/07/96 - add OCI piece definition + slari 03/12/96 - add describe attributes + slari 03/12/96 - add OCI_OTYPE_QUERY + aroy 02/28/96 - Add column attributes + slari 02/09/96 - add OCI_OBJECT + slari 02/07/96 - add OCI_HYTPE_DSC + aroy 01/10/96 - adding function code defines... + dchatter 01/03/96 - define OCI_NON_BLOCKING + dchatter 01/02/96 - Add Any descriptor + dchatter 01/02/96 - Add Select List descriptor + dchatter 12/29/95 - V8 OCI definitions + dchatter 12/29/95 - Creation + + } + + const // forward declarations which aren't possible in pascal + { Attach using server handle from pool } + OCI_CPOOL = $0200; + { char set id } + OCI_ATTR_NCHARSET_ID = 262; + +{$include ocidfn.inc} + + {--------------------------------------------------------------------------- + Short names provided for platforms which do not allow extended symbolic names + --------------------------------------------------------------------------- } +{$ifdef SLSHORTNAME} + { Translation of the long function/type names to short names for IBM only } + { maybe lint will use this too } + + const + OCISessionEnd = ocitac; + OCIResultSetToStmt = ocirs2sh; + OCISessionBegin = ociauth; + OCIServerAttach = ociatch; + OCIDescriptorAlloc = ocigdesc; + OCIServerDetach = ocidtch; + OCIDescriptorFree = ocifdesc; + OCIServerVersion = ocivers; + OCIDescribeAny = ocidsca; + OCIBindDynamic = ocibda; + OCIBindByName = ocibdn; + OCIBindByPos = ocibdp; + OCIErrorGet = ocigdr; + OCIBindArrayOfStruct = ocibsa; + OCIEnvInit = ociinit; + OCIBindObject = ocibndt; + OCIHandleAlloc = ocighndl; + OCIHandleFree = ocifhndl; + OCIRowidToChar = ociri2c; +{$ifdef NEVER} + + const + OCIStmtBindByPos = ocibndp; + OCIStmtBindByName = ocibndn; +{$endif} + + const + OCIAttrGet = ocigattr; + OCIDefineByPos = ocidfne; + OCIAttrSet = ocisattr; + OCIDefineDynamic = ociddf; + OCILdaToSvcCtx = ocild2sv; + OCIDefineArrayOfStruct = ocidarr; + OCIInitialize = ocipi; + OCIDefineObject = ocidndt; + OCIStmtExecute = ociexec; + OCILobAppend = ocilfap; + OCILobOpenFile = ocifopn; + OCILobCloseFile = ocifcls; + OCILobLocator = ocilobd; + OCILobCopy = ocilfcp; + OCILobFileCreate = ocifcrt; + OCILobFileDelete = ocifdel; + OCILobGetLength = ocilfln; + OCILobWrite = ocilfwr; + OCILobRead = ocilfrd; + OCILobErase = ocilfer; + OCILobTrim = ocilftr; + OCIStmtFetch = ocifch; + OCIStmtGetBindInfo = ocigbp; + OCIStmtGetPieceInfo = ocigpi; + OCIStmtPrepare = ocireq; + OCIStmtSetPieceInfo = ocispi; + OCISvcCtxToLda = ocisv2ld; + OCITransCommit = ocitxcm; + OCITransDetach = ocitxdt; + OCITransForget = ocitxfgt; + OCITransPrepare = ocitxpre; + OCITransRollback = ocitxrl; + OCIPasswordChange = ocicpw; + OCITransStart = ocitxst; + OCITransMultiPrepare = ocitxmp; + OCIBreak = ocibreak; + OCIParamGet = ocigparm; + OCIParamSet = ocisparm; + OCISecurityOpenWallet = ocizwOpenWallet; + OCISecurityCloseWallet = ocizwCloseWallet; + OCISecurityCreateWallet = ocizwCreateWallet; + OCISecurityDestroyWallet = ocizwDestroyWallet; + OCISecurityStorePersona = ocizeStorePersona; + OCISecurityOpenPersona = ocizeOpenPersona; + OCISecurityClosePersona = ocizeClosePersona; + OCISecurityRemovePersona = ocizeRemovePersona; + OCISecurityCreatePersona = ocizeCreatePersona; + OCISecuritySetProtection = ocizeSetProtection; + OCISecurityGetProtection = ocizeGetProtection; + OCISecurityRemoveIdentity = ociziRemoveIdentity; + OCISecurityCreateIdentity = ociziCreateIdentity; + OCISecurityAbortIdentity = ociziAbortIdentity; + OCISecurityFreeIdentity = ociziFreeIdentity; + OCISecurityStoreTrustedIdentity = ociziStoreTrustedIdentity; + OCISecuritySign = ocizSign; + OCISecuritySignExpansion = ocizxSignExpansion; + OCISecurityVerify = ocizVerify; + OCISecurityValidate = ocizValidate; + OCISecuritySignDetached = ocizsd_SignDetached; + OCISecuritySignDetExpansion = ocizxsd_SignDetachedExpansion; + OCISecurityVerifyDetached = ocizved_VerifyDetached; + OCISecurity_PKEncrypt = ocizkec_PKEncrypt; + OCISecurityPKEncryptExpansion = ocizxkec_PKEncryptExpansion; + OCISecurityPKDecrypt = ocizkdc_PKDecrypt; + OCISecurityEncrypt = ocizEncrypt; + OCISecurityEncryptExpansion = ocizxEncryptExpansion; + OCISecurityDecrypt = ocizDecrypt; + OCISecurityEnvelope = ocizEnvelope; + OCISecurityDeEnvelope = ocizDeEnvelope; + OCISecurityKeyedHash = ocizKeyedHash; + OCISecurityKeyedHashExpansion = ocizxKeyedHashExpansion; + OCISecurityHash = ocizHash; + OCISecurityHashExpansion = ocizxHashExpansion; + OCISecuritySeedRandom = ocizSeedRandom; + OCISecurityRandomBytes = ocizrb_RandomBytes; + OCISecurityRandomNumber = ocizrn_RandomNumber; + OCISecurityInitBlock = ocizibInitBlock; + OCISecurityReuseBlock = ocizrbReuseBlock; + OCISecurityPurgeBlock = ocizpbPurgeBlock; + OCISecuritySetBlock = ocizsbSetBlock; + OCISecurityGetIdentity = ocizgi_GetIdentity; + OCIExtractInit = ocixeini; + OCIExtractTerm = ocixetrm; + OCIExtractReset = ocixerst; + OCIExtractSetNumKeys = ocixesnk; + OCIExtractSetKey = ocixesk; + OCIExtractFromFile = ocixeff; + OCIExtractFromStr = ocixefs; + OCIExtractToInt = ocixeti; + OCIExtractToBool = ocixetb; + OCIExtractToStr = ocixets; + OCIExtractToOCINum = ocixeton; + OCIExtractToList = ocixetl; + OCIExtractFromList = ocixefl; + OCIDateTimeGetTime = ocidt01_GetTime; + OCIDateTimeGetDate = ocidt02_GetDate; + OCIDateTimeGetTimeZoneOffset = ocidt03_GetTZ; + OCIDateTimeSysTimeStamp = ocidt07_SysTS; + OCIDateTimeAssign = ocidt08_Assign; + OCIDateTimeToText = ocidt09_ToText; + OCIDateTimeFromText = ocidt10_FromText; + OCIDateTimeCompare = ocidt11_Compare; + OCIDateTimeCheck = ocidt12_Check; + OCIDateTimeConvert = ocidt13_Convert; + OCIDateTimeSubtract = ocidt14_Subtract; + OCIDateTimeIntervalAdd = ocidt15_IntervalAdd; + OCIDateTimeIntervalSub = ocidt16_IntervalSub; + OCIDateTimeGetTimeZoneName = ocidt17_Gettzname; + OCIDateTimeToArray = ocidt18_ToArray; + OCIDateTimeFromArray = ocidt19_FromArray; + OCIIntervalSubtract = ociint01_Subtract; + OCIIntervalAdd = ociint02_Add; + OCIIntervalMultiply = ociint03_Multiply; + OCIIntervalDivide = ociint04_Divide; + OCIIntervalCompare = ociint05_Compare; + OCIIntervalFromText = ociint06_FromText; + OCIIntervalToText = ociint07_ToText; + OCIIntervalToNumber = ociint08_ToNumber; + OCIIntervalCheck = ociint09_Check; + OCIIntervalAssign = ociint10_Assign; + OCIIntervalGetYearMonth = ociint11_GetYearMonth; + OCIIntervalSetYearMonth = ociint12_SetYearMonth; + OCIIntervalGetDaySecond = ociint13_GetDaySecond; + OCIIntervalSetDaySecond = ociint14_SetDaySecond; + OCIIntervalFromNumber = ociint15_FromNumber; + OCIIntervalFromTZ = ociint16_FromTZ; + OCIFormatInit = ocixs01_Init; + OCIFormatString = ocixs02_Format; + OCIFormatTerm = ocixs03_Term; + OCIFormatTUb1 = ocixs04_TUb1; + OCIFormatTUb2 = ocixs05_TUb2; + OCIFormatTUb4 = ocixs06_TUb4; + OCIFormatTUword = ocixs07_TUword; + OCIFormatTUbig_ora = ocixs08_TUbig_ora; + OCIFormatTSb1 = ocixs09_TSb1; + OCIFormatTSb2 = ocixs10_TSb2; + OCIFormatTSb4 = ocixs11_TSb4; + OCIFormatTSword = ocixs12_TSword; + OCIFormatTSbig_ora = ocixs13_TSbig_ora; + OCIFormatTEb1 = ocixs14_TEb1; + OCIFormatTEb2 = ocixs15_TEb2; + OCIFormatTEb4 = ocixs16_TEb4; + OCIFormatTEword = ocixs17_TEword; + OCIFormatTChar = ocixs18_TChar; + OCIFormatTText = ocixs19_TText; + OCIFormatTDouble = ocixs20_TDouble; + OCIFormatTDvoid = ocixs21_TDvoid; + OCIFormatTEnd = ocixs22_TEnd; + OCIFileInit = ocifinit; + OCIFileTerm = ocifterm; + OCIFileOpen = ocifopen; + OCIFileClose = ocifclose; + OCIFileRead = ocifread; + OCIFileWrite = ocifwrite; + OCIFileSeek = ocifseek; + OCIFileExists = ocifexists; + OCIFileGetLength = ocifglen; + OCIFileFlush = ocifflush; + { OCIThread short name } + OCIThreadProcessInit = ocitt01_ProcessInit; + OCIThreadInit = ocitt02_Init; + OCIThreadTerm = ocitt03_Term; + OCIThreadIsMulti = ocitt04_IsMulti; + OCIThreadMutexInit = ocitt05_MutexInit; + OCIThreadMutexDestroy = ocitt06_MutexDestroy; + OCIThreadMutexAcquire = ocitt07_MutexAcquire; + OCIThreadMutexRelease = ocitt08_MutexRelease; + OCIThreadKeyInit = ocitt09_KeyInit; + OCIThreadKeyDestroy = ocitt10_KeyDestroy; + OCIThreadKeyGet = ocitt11_KeyGet; + OCIThreadKeySet = ocitt12_KeySet; + OCIThreadIdInit = ocitt13_IdInit; + OCIThreadIdDestroy = ocitt14_IdDestroy; + OCIThreadIdSet = ocitt15_IdSet; + OCIThreadIdSetNull = ocitt16_IdSetNull; + OCIThreadIdGet = ocitt17_IdGet; + OCIThreadIdSame = ocitt18_IdSame; + OCIThreadIdNull = ocitt19_IdNull; + OCIThreadHndInit = ocitt20_HndInit; + OCIThreadHndDestroy = ocitt21_HndDestroy; + OCIThreadCreate = ocitt22_Create; + OCIThreadJoin = ocitt23_Join; + OCIThreadClose = ocitt24_Close; + OCIThreadHandleGet = ocitt25_HandleGet; + { Translation between the old and new datatypes } + OCISession = ociusrh; + OCIBind = ocibndh; + OCIDescribe = ocidsch; + OCIDefine = ocidfnh; + OCIEnv = ocienvh; + OCIError = ocierrh; + OCICPool = ocicpool; + OCISPool = ocispool; + OCIAuthInfo = ociauthinfo; + OCILob = ocilobd; + OCILobLength = ocillen; + OCILobMode = ocilmo; + OCILobOffset = ociloff; + OCILobLocator = ocilobd; + OCIBlobLocator = ociblobl; + OCIClobLocator = ociclobl; + OCIBFileLocator = ocibfilel; + OCIParam = ocipard; + OCIResult = ocirstd; + OCISnapshot = ocisnad; + OCIServer = ocisrvh; + OCIStmt = ocistmh; + OCISvcCtx = ocisvch; + OCITrans = ocitxnh; + OCICallbackInBind = ocibicfp; + OCICallbackOutBind = ocibocfp; + OCICallbackDefine = ocidcfp; + OCICallbackLobRead = ocilrfp; + OCICallbackLobWrite = ocilwfp; + OCISecurity = ociossh; + OCIComplexObject = ocicorh; + OCIComplexObjectComp = ocicord; + OCIRowid = ociridd; + OCIAQDeq = ociaqdeq; + OCIAQEnq = ociaqenq; + OCIConnectionPoolCreate = ociconpc; + OCIConnectionPoolDestroy = ociconpd; + OCIEnvCreate = ocienvct; + OCILobAssign = ociloass; + OCILobCharSetForm = ocilocfm; + OCILobCharSetId = ocilocid; + OCILobDisableBuffering = ocilodbf; + OCILobEnableBuffering = ociloebf; + OCILobFileClose = ocilofcl; + OCILobFileCloseAll = ocilofca; + OCILobFileExists = ocilofex; + OCILobFileGetName = ocilofgn; + OCILobFileIsOpen = ocifiopn; + OCILobFileOpen = ocilofop; + OCILobFileSetName = ocilofsn; + OCILobFlushBuffer = ocilofbf; + OCILobIsEqual = ociloieq; + OCILobLoadFromFile = ocilolff; + OCILobLocatorIsInit = ocilolii; + OCILobLocatorAssign = ocilolas; + OCILogon = ocilogon; + OCILogon2 = ocilgon2; + OCILogoff = ocilgoff; +{$endif} + { ifdef SLSHORTNAME } + {--------------------------------------------------------------------------- + PUBLIC TYPES AND CONSTANTS + --------------------------------------------------------------------------- } + {-----------------------------Handle Types---------------------------------- } + { handle types range from 1 - 49 } + { start value of handle type } + + const + OCI_HTYPE_FIRST = 1; + { environment handle } + OCI_HTYPE_ENV = 1; + { error handle } + OCI_HTYPE_ERROR = 2; + { service handle } + OCI_HTYPE_SVCCTX = 3; + { statement handle } + OCI_HTYPE_STMT = 4; + { bind handle } + OCI_HTYPE_BIND = 5; + { define handle } + OCI_HTYPE_DEFINE = 6; + { describe handle } + OCI_HTYPE_DESCRIBE = 7; + { server handle } + OCI_HTYPE_SERVER = 8; + { authentication handle } + OCI_HTYPE_SESSION = 9; + { SessionGet auth handle } + OCI_HTYPE_AUTHINFO = OCI_HTYPE_SESSION; + { transaction handle } + OCI_HTYPE_TRANS = 10; + { complex object retrieval handle } + OCI_HTYPE_COMPLEXOBJECT = 11; + { security handle } + OCI_HTYPE_SECURITY = 12; + { subscription handle } + OCI_HTYPE_SUBSCRIPTION = 13; + { direct path context } + OCI_HTYPE_DIRPATH_CTX = 14; + { direct path column array } + OCI_HTYPE_DIRPATH_COLUMN_ARRAY = 15; + { direct path stream } + OCI_HTYPE_DIRPATH_STREAM = 16; + { process handle } + OCI_HTYPE_PROC = 17; + { direct path function context } + OCI_HTYPE_DIRPATH_FN_CTX = 18; + { dp object column array } + OCI_HTYPE_DIRPATH_FN_COL_ARRAY = 19; + { access driver session } + OCI_HTYPE_XADSESSION = 20; + { access driver table } + OCI_HTYPE_XADTABLE = 21; + { access driver field } + OCI_HTYPE_XADFIELD = 22; + { access driver granule } + OCI_HTYPE_XADGRANULE = 23; + { access driver record } + OCI_HTYPE_XADRECORD = 24; + { access driver I/O } + OCI_HTYPE_XADIO = 25; + { connection pool handle } + OCI_HTYPE_CPOOL = 26; + { session pool handle } + OCI_HTYPE_SPOOL = 27; + { admin handle } + OCI_HTYPE_ADMIN = 28; + { HA event handle } + OCI_HTYPE_EVENT = 29; + { last value of a handle type } + OCI_HTYPE_LAST = 29; + {--------------------------------------------------------------------------- } + {-------------------------Descriptor Types---------------------------------- } + { descriptor values range from 50 - 255 } + { start value of descriptor type } + OCI_DTYPE_FIRST = 50; + { lob locator } + OCI_DTYPE_LOB = 50; + { snapshot descriptor } + OCI_DTYPE_SNAP = 51; + { result set descriptor } + OCI_DTYPE_RSET = 52; + { a parameter descriptor obtained from ocigparm } + OCI_DTYPE_PARAM = 53; + { rowid descriptor } + OCI_DTYPE_ROWID = 54; + OCI_DTYPE_COMPLEXOBJECTCOMP = 55; + { complex object retrieval descriptor } + { File Lob locator } + OCI_DTYPE_FILE = 56; + { enqueue options } + OCI_DTYPE_AQENQ_OPTIONS = 57; + { dequeue options } + OCI_DTYPE_AQDEQ_OPTIONS = 58; + { message properties } + OCI_DTYPE_AQMSG_PROPERTIES = 59; + { aq agent } + OCI_DTYPE_AQAGENT = 60; + { LOB locator } + OCI_DTYPE_LOCATOR = 61; + { Interval year month } + OCI_DTYPE_INTERVAL_YM = 62; + { Interval day second } + OCI_DTYPE_INTERVAL_DS = 63; + { AQ notify descriptor } + OCI_DTYPE_AQNFY_DESCRIPTOR = 64; + { Date } + OCI_DTYPE_DATE = 65; + { Time } + OCI_DTYPE_TIME = 66; + { Time with timezone } + OCI_DTYPE_TIME_TZ = 67; + { Timestamp } + OCI_DTYPE_TIMESTAMP = 68; + { Timestamp with timezone } + OCI_DTYPE_TIMESTAMP_TZ = 69; + { Timestamp with local tz } + OCI_DTYPE_TIMESTAMP_LTZ = 70; + { user callback descriptor } + OCI_DTYPE_UCB = 71; + { server DN list descriptor } + OCI_DTYPE_SRVDN = 72; + { signature } + OCI_DTYPE_SIGNATURE = 73; + { reserved for internal use } + OCI_DTYPE_RESERVED_1 = 74; + { AQ listen options } + OCI_DTYPE_AQLIS_OPTIONS = 75; + { AQ listen msg props } + OCI_DTYPE_AQLIS_MSG_PROPERTIES = 76; + { Top level change notification desc } + OCI_DTYPE_CHDES = 77; + { Table change descriptor } + OCI_DTYPE_TABLE_CHDES = 78; + { Row change descriptor } + OCI_DTYPE_ROW_CHDES = 79; + { last value of a descriptor type } + OCI_DTYPE_LAST = 79; + {--------------------------------------------------------------------------- } + {--------------------------------LOB types --------------------------------- } + { LOB type - BLOB ------------------ } + OCI_TEMP_BLOB = 1; + { LOB type - CLOB ------------------ } + OCI_TEMP_CLOB = 2; + {--------------------------------------------------------------------------- } + {-------------------------Object Ptr Types---------------------------------- } + { object name } + OCI_OTYPE_NAME = 1; + { REF to TDO } + OCI_OTYPE_REF = 2; + { PTR to TDO } + OCI_OTYPE_PTR = 3; + {--------------------------------------------------------------------------- } + {=============================Attribute Types=============================== } + { + Note: All attributes are global. New attibutes should be added to the end + of the list. Before you add an attribute see if an existing one can be + used for your handle. + + If you see any holes please use the holes first. + + } + {=========================================================================== } + { the OCI function code } + OCI_ATTR_FNCODE = 1; + { is the environment initialized in object mode } + OCI_ATTR_OBJECT = 2; + { non blocking mode } + OCI_ATTR_NONBLOCKING_MODE = 3; + { the SQL verb } + OCI_ATTR_SQLCODE = 4; + { the environment handle } + OCI_ATTR_ENV = 5; + { the server handle } + OCI_ATTR_SERVER = 6; + { the user session handle } + OCI_ATTR_SESSION = 7; + { the transaction handle } + OCI_ATTR_TRANS = 8; + { the rows processed so far } + OCI_ATTR_ROW_COUNT = 9; + { the SQL verb of the statement } + OCI_ATTR_SQLFNCODE = 10; + { sets the number of rows to prefetch } + OCI_ATTR_PREFETCH_ROWS = 11; + { the prefetch rows of nested table } + OCI_ATTR_NESTED_PREFETCH_ROWS = 12; + { memory limit for rows fetched } + OCI_ATTR_PREFETCH_MEMORY = 13; + { memory limit for nested rows } + OCI_ATTR_NESTED_PREFETCH_MEMORY = 14; + OCI_ATTR_CHAR_COUNT = 15; + { this specifies the bind and define size in characters } + { packed decimal scale } + OCI_ATTR_PDSCL = 16; + OCI_ATTR_FSPRECISION = OCI_ATTR_PDSCL; + { fs prec for datetime data types } + { packed decimal format } + OCI_ATTR_PDPRC = 17; + OCI_ATTR_LFPRECISION = OCI_ATTR_PDPRC; + { fs prec for datetime data types } + { number of column in the select list } + OCI_ATTR_PARAM_COUNT = 18; + { the rowid } + OCI_ATTR_ROWID = 19; + { the character set value } + OCI_ATTR_CHARSET = 20; + { NCHAR type } + OCI_ATTR_NCHAR = 21; + { username attribute } + OCI_ATTR_USERNAME = 22; + { password attribute } + OCI_ATTR_PASSWORD = 23; + { statement type } + OCI_ATTR_STMT_TYPE = 24; + { user friendly global name } + OCI_ATTR_INTERNAL_NAME = 25; + { the internal name for global txn } + OCI_ATTR_EXTERNAL_NAME = 26; + { XOPEN defined global transaction id } + OCI_ATTR_XID = 27; + { } + OCI_ATTR_TRANS_LOCK = 28; + { string to identify a global transaction } + OCI_ATTR_TRANS_NAME = 29; + { memory allocated on the heap } + OCI_ATTR_HEAPALLOC = 30; + { Character Set ID } + OCI_ATTR_CHARSET_ID = 31; + { Character Set Form } + OCI_ATTR_CHARSET_FORM = 32; + { Maximumsize of data on the server } + OCI_ATTR_MAXDATA_SIZE = 33; + { object cache optimal size } + OCI_ATTR_CACHE_OPT_SIZE = 34; + { object cache maximum size percentage } + OCI_ATTR_CACHE_MAX_SIZE = 35; + { object cache default pin option } + OCI_ATTR_PINOPTION = 36; + OCI_ATTR_ALLOC_DURATION = 37; + { object cache default allocation duration } + { object cache default pin duration } + OCI_ATTR_PIN_DURATION = 38; + { Format Descriptor object attribute } + OCI_ATTR_FDO = 39; + OCI_ATTR_POSTPROCESSING_CALLBACK = 40; + { Callback to process outbind data } + OCI_ATTR_POSTPROCESSING_CONTEXT = 41; + { Callback context to process outbind data } + OCI_ATTR_ROWS_RETURNED = 42; + { Number of rows returned in current iter - for Bind handles } + { Failover Callback attribute } + OCI_ATTR_FOCBK = 43; + { is the server/service context in V8 mode } + OCI_ATTR_IN_V8_MODE = 44; + { empty lob ? } + OCI_ATTR_LOBEMPTY = 45; + { session language handle } + OCI_ATTR_SESSLANG = 46; + { visibility } + OCI_ATTR_VISIBILITY = 47; + { relative message id } + OCI_ATTR_RELATIVE_MSGID = 48; + { sequence deviation } + OCI_ATTR_SEQUENCE_DEVIATION = 49; + { consumer name } + OCI_ATTR_CONSUMER_NAME = 50; + { dequeue mode } + OCI_ATTR_DEQ_MODE = 51; + { navigation } + OCI_ATTR_NAVIGATION = 52; + { wait } + OCI_ATTR_WAIT = 53; + { dequeue message id } + OCI_ATTR_DEQ_MSGID = 54; + { priority } + OCI_ATTR_PRIORITY = 55; + { delay } + OCI_ATTR_DELAY = 56; + { expiration } + OCI_ATTR_EXPIRATION = 57; + { correlation id } + OCI_ATTR_CORRELATION = 58; + { # of attempts } + OCI_ATTR_ATTEMPTS = 59; + { recipient list } + OCI_ATTR_RECIPIENT_LIST = 60; + { exception queue name } + OCI_ATTR_EXCEPTION_QUEUE = 61; + { enqueue time (only OCIAttrGet) } + OCI_ATTR_ENQ_TIME = 62; + { message state (only OCIAttrGet) } + OCI_ATTR_MSG_STATE = 63; + { NOTE: 64-66 used below } + { agent name } + OCI_ATTR_AGENT_NAME = 64; + { agent address } + OCI_ATTR_AGENT_ADDRESS = 65; + { agent protocol } + OCI_ATTR_AGENT_PROTOCOL = 66; + { user property } + OCI_ATTR_USER_PROPERTY = 67; + { sender id } + OCI_ATTR_SENDER_ID = 68; + { original message id } + OCI_ATTR_ORIGINAL_MSGID = 69; + { queue name } + OCI_ATTR_QUEUE_NAME = 70; + { message id } + OCI_ATTR_NFY_MSGID = 71; + { message properties } + OCI_ATTR_MSG_PROP = 72; + { num of errs in array DML } + OCI_ATTR_NUM_DML_ERRORS = 73; + { row offset in the array } + OCI_ATTR_DML_ROW_OFFSET = 74; + { AQ array error handling uses DML method of accessing errors } + OCI_ATTR_AQ_NUM_ERRORS = OCI_ATTR_NUM_DML_ERRORS; + OCI_ATTR_AQ_ERROR_INDEX = OCI_ATTR_DML_ROW_OFFSET; + { default date format string } + OCI_ATTR_DATEFORMAT = 75; + { buffer address } + OCI_ATTR_BUF_ADDR = 76; + { buffer size } + OCI_ATTR_BUF_SIZE = 77; + { For values 78 - 80, see DirPathAPI attribute section in this file } + { number of rows in column array } + OCI_ATTR_NUM_ROWS = 81; + { NOTE that OCI_ATTR_NUM_COLS is a column + * array attribute too. + } + { columns of column array + processed so far. } + OCI_ATTR_COL_COUNT = 82; + { str off of last row processed } + OCI_ATTR_STREAM_OFFSET = 83; + { Shared Heap Allocation Size } + OCI_ATTR_SHARED_HEAPALLOC = 84; + { server group name } + OCI_ATTR_SERVER_GROUP = 85; + { migratable session attribute } + OCI_ATTR_MIGSESSION = 86; + { Temporary LOBs } + OCI_ATTR_NOCACHE = 87; + { Pool Size } + OCI_ATTR_MEMPOOL_SIZE = 88; + { Instance name } + OCI_ATTR_MEMPOOL_INSTNAME = 89; + { Application name } + OCI_ATTR_MEMPOOL_APPNAME = 90; + { Home Directory name } + OCI_ATTR_MEMPOOL_HOMENAME = 91; + { Pool Model (proc,thrd,both) } + OCI_ATTR_MEMPOOL_MODEL = 92; + { Modes } + OCI_ATTR_MODES = 93; + { name of subscription } + OCI_ATTR_SUBSCR_NAME = 94; + { associated callback } + OCI_ATTR_SUBSCR_CALLBACK = 95; + { associated callback context } + OCI_ATTR_SUBSCR_CTX = 96; + { associated payload } + OCI_ATTR_SUBSCR_PAYLOAD = 97; + { associated namespace } + OCI_ATTR_SUBSCR_NAMESPACE = 98; + { Proxy user credentials } + OCI_ATTR_PROXY_CREDENTIALS = 99; + { Initial client role list } + OCI_ATTR_INITIAL_CLIENT_ROLES = 100; + { unknown attribute } + OCI_ATTR_UNK = 101; + { number of columns } + OCI_ATTR_NUM_COLS = 102; + { parameter of the column list } + OCI_ATTR_LIST_COLUMNS = 103; + { DBA of the segment header } + OCI_ATTR_RDBA = 104; + { whether the table is clustered } + OCI_ATTR_CLUSTERED = 105; + { whether the table is partitioned } + OCI_ATTR_PARTITIONED = 106; + { whether the table is index only } + OCI_ATTR_INDEX_ONLY = 107; + { parameter of the argument list } + OCI_ATTR_LIST_ARGUMENTS = 108; + { parameter of the subprogram list } + OCI_ATTR_LIST_SUBPROGRAMS = 109; + { REF to the type descriptor } + OCI_ATTR_REF_TDO = 110; + { the database link name } + OCI_ATTR_LINK = 111; + { minimum value } + OCI_ATTR_MIN = 112; + { maximum value } + OCI_ATTR_MAX = 113; + { increment value } + OCI_ATTR_INCR = 114; + { number of sequence numbers cached } + OCI_ATTR_CACHE = 115; + { whether the sequence is ordered } + OCI_ATTR_ORDER = 116; + { high-water mark } + OCI_ATTR_HW_MARK = 117; + { type's schema name } + OCI_ATTR_TYPE_SCHEMA = 118; + { timestamp of the object } + OCI_ATTR_TIMESTAMP = 119; + { number of sttributes } + OCI_ATTR_NUM_ATTRS = 120; + { number of parameters } + OCI_ATTR_NUM_PARAMS = 121; + { object id for a table or view } + OCI_ATTR_OBJID = 122; + { type of info described by } + OCI_ATTR_PTYPE = 123; + { parameter descriptor } + OCI_ATTR_PARAM = 124; + { overload ID for funcs and procs } + OCI_ATTR_OVERLOAD_ID = 125; + { table name space } + OCI_ATTR_TABLESPACE = 126; + { TDO of a type } + OCI_ATTR_TDO = 127; + { list type } + OCI_ATTR_LTYPE = 128; + { Parse Error offset } + OCI_ATTR_PARSE_ERROR_OFFSET = 129; + { whether table is temporary } + OCI_ATTR_IS_TEMPORARY = 130; + { whether table is typed } + OCI_ATTR_IS_TYPED = 131; + { duration of temporary table } + OCI_ATTR_DURATION = 132; + { is invoker rights } + OCI_ATTR_IS_INVOKER_RIGHTS = 133; + { top level schema obj name } + OCI_ATTR_OBJ_NAME = 134; + { schema name } + OCI_ATTR_OBJ_SCHEMA = 135; + { top level schema object id } + OCI_ATTR_OBJ_ID = 136; + { For values 137 - 141, see DirPathAPI attribute section in this file } + { transaction timeout } + OCI_ATTR_TRANS_TIMEOUT = 142; + { state of the server handle } + OCI_ATTR_SERVER_STATUS = 143; + { statement txt in stmt hdl } + OCI_ATTR_STATEMENT = 144; + { For value 145, see DirPathAPI attribute section in this file } + { dequeue condition } + OCI_ATTR_DEQCOND = 146; + { reserved } + OCI_ATTR_RESERVED_2 = 147; + { recepient of subscription } + OCI_ATTR_SUBSCR_RECPT = 148; + { protocol for recepient } + OCI_ATTR_SUBSCR_RECPTPROTO = 149; + { For values 150 - 151, see DirPathAPI attribute section in this file } + { LDAP host to connect to } + OCI_ATTR_LDAP_HOST = 153; + { LDAP port to connect to } + OCI_ATTR_LDAP_PORT = 154; + { bind DN } + OCI_ATTR_BIND_DN = 155; + { credentials to connect to LDAP } + OCI_ATTR_LDAP_CRED = 156; + { client wallet location } + OCI_ATTR_WALL_LOC = 157; + { LDAP authentication method } + OCI_ATTR_LDAP_AUTH = 158; + { LDAP adminstration context DN } + OCI_ATTR_LDAP_CTX = 159; + { list of registration server DNs } + OCI_ATTR_SERVER_DNS = 160; + { the number of server DNs } + OCI_ATTR_DN_COUNT = 161; + { server DN attribute } + OCI_ATTR_SERVER_DN = 162; + { max char size of data } + OCI_ATTR_MAXCHAR_SIZE = 163; + { for scrollable result sets } + OCI_ATTR_CURRENT_POSITION = 164; + { Added to get attributes for ref cursor to statement handle } + { reserved } + OCI_ATTR_RESERVED_3 = 165; + { reserved } + OCI_ATTR_RESERVED_4 = 166; + { For value 167, see DirPathAPI attribute section in this file } + { digest algorithm } + OCI_ATTR_DIGEST_ALGO = 168; + { certificate } + OCI_ATTR_CERTIFICATE = 169; + { signature algorithm } + OCI_ATTR_SIGNATURE_ALGO = 170; + { canonicalization algo. } + OCI_ATTR_CANONICAL_ALGO = 171; + { private key } + OCI_ATTR_PRIVATE_KEY = 172; + { digest value } + OCI_ATTR_DIGEST_VALUE = 173; + { signature value } + OCI_ATTR_SIGNATURE_VAL = 174; + { signature } + OCI_ATTR_SIGNATURE = 175; + { attributes for setting OCI stmt caching specifics in svchp } + { size of the stm cache } + OCI_ATTR_STMTCACHESIZE = 176; + { --------------------------- Connection Pool Attributes ------------------ } + OCI_ATTR_CONN_NOWAIT = 178; + OCI_ATTR_CONN_BUSY_COUNT = 179; + OCI_ATTR_CONN_OPEN_COUNT = 180; + OCI_ATTR_CONN_TIMEOUT = 181; + OCI_ATTR_STMT_STATE = 182; + OCI_ATTR_CONN_MIN = 183; + OCI_ATTR_CONN_MAX = 184; + OCI_ATTR_CONN_INCR = 185; + { For value 187, see DirPathAPI attribute section in this file } + { open stmts in session } + OCI_ATTR_NUM_OPEN_STMTS = 188; + { get native info via desc } + OCI_ATTR_DESCRIBE_NATIVE = 189; + { number of bind postions } + OCI_ATTR_BIND_COUNT = 190; + { pos of bind/define handle } + OCI_ATTR_HANDLE_POSITION = 191; + { reserverd } + OCI_ATTR_RESERVED_5 = 192; + { call in progress on server } + OCI_ATTR_SERVER_BUSY = 193; + { For value 194, see DirPathAPI attribute section in this file } + { notification presentation for recipient } + OCI_ATTR_SUBSCR_RECPTPRES = 195; + { AQ message transformation } + OCI_ATTR_TRANSFORMATION = 196; + { rows fetched in last call } + OCI_ATTR_ROWS_FETCHED = 197; + { --------------------------- Snapshot attributes ------------------------- } + { snapshot base } + OCI_ATTR_SCN_BASE = 198; + { snapshot wrap } + OCI_ATTR_SCN_WRAP = 199; + { --------------------------- Miscellanous attributes --------------------- } + { reserved } + OCI_ATTR_RESERVED_6 = 200; + { txn is readonly } + OCI_ATTR_READONLY_TXN = 201; + { reserved } + OCI_ATTR_RESERVED_7 = 202; + { position of erroneous col } + OCI_ATTR_ERRONEOUS_COLUMN = 203; + { reserved } + OCI_ATTR_RESERVED_8 = 204; + { For value 206, see DirPathAPI attribute section in this file } + { oracle instance type } + OCI_ATTR_INST_TYPE = 207; + {*****USED attribute 208 for OCI_ATTR_SPOOL_STMTCACHESIZE****************** } + { is env in utf16 mode? } + OCI_ATTR_ENV_UTF16 = 209; + { reserved for TMZ } + OCI_ATTR_RESERVED_9 = 210; + { reserved } + OCI_ATTR_RESERVED_10 = 211; + { For values 212 and 213, see DirPathAPI attribute section in this file } + { reserved } + OCI_ATTR_RESERVED_12 = 214; + { reserved } + OCI_ATTR_RESERVED_13 = 215; + { whether table is external } + OCI_ATTR_IS_EXTERNAL = 216; + { -------------------------- Statement Handle Attributes ------------------ } + { reserved } + OCI_ATTR_RESERVED_15 = 217; + { stmt has returning clause } + OCI_ATTR_STMT_IS_RETURNING = 218; + { reserved } + OCI_ATTR_RESERVED_16 = 219; + { reserved } + OCI_ATTR_RESERVED_17 = 220; + { reserved } + OCI_ATTR_RESERVED_18 = 221; + { --------------------------- session attributes --------------------------- } + { reserved } + OCI_ATTR_RESERVED_19 = 222; + { reserved } + OCI_ATTR_RESERVED_20 = 223; + { Current Schema } + OCI_ATTR_CURRENT_SCHEMA = 224; + { reserved } + OCI_ATTR_RESERVED_21 = 415; + { ------------------------- notification subscription ---------------------- } + { QOS flags } + OCI_ATTR_SUBSCR_QOSFLAGS = 225; + { Payload callback } + OCI_ATTR_SUBSCR_PAYLOADCBK = 226; + { Timeout } + OCI_ATTR_SUBSCR_TIMEOUT = 227; + { Namespace context } + OCI_ATTR_SUBSCR_NAMESPACE_CTX = 228; + { ----------------------- row callback attributes ------------------------- } + { bind row callback } + OCI_ATTR_BIND_ROWCBK = 301; + { ctx for bind row callback } + OCI_ATTR_BIND_ROWCTX = 302; + { skip buffer in array ops } + OCI_ATTR_SKIP_BUFFER = 303; + { ------------- DB Change Notification reg handle attributes --------------- } + { out: array of table names } + OCI_ATTR_CHNF_TABLENAMES = 401; + { in: rowids needed } OCI_ATTR_CHNF_ROWIDS = 402; + { in: notification operation filter } OCI_ATTR_CHNF_OPERATIONS = 403; + { txn lag between notifications } + OCI_ATTR_CHNF_CHANGELAG = 404; + { DB Change: Notification Descriptor attributes ----------------------- } + { source database } + OCI_ATTR_CHDES_DBNAME = 405; + { notification type flags } + OCI_ATTR_CHDES_NFYTYPE = 406; + { XID of the transaction } + OCI_ATTR_CHDES_XID = 407; + { array of table chg descriptors } + OCI_ATTR_CHDES_TABLE_CHANGES = 408; + { table name } + OCI_ATTR_CHDES_TABLE_NAME = 409; + { table operation flags } + OCI_ATTR_CHDES_TABLE_OPFLAGS = 410; + { array of changed rows } + OCI_ATTR_CHDES_TABLE_ROW_CHANGES = 411; + { rowid of changed row } + OCI_ATTR_CHDES_ROW_ROWID = 412; + { row operation flags } + OCI_ATTR_CHDES_ROW_OPFLAGS = 413; + { Statement handle attribute for db change notification } + { IN: subscription handle } + OCI_ATTR_CHNF_REGHANDLE = 414; + { client name for single session proxy } + OCI_ATTR_PROXY_CLIENT = 416; + { 415 is already taken - see OCI_ATTR_RESERVED_21 } + { TDE attributes on the Table } + { does table have any encrypt columns } + OCI_ATTR_TABLE_ENC = 417; + { Table encryption Algorithm } + OCI_ATTR_TABLE_ENC_ALG = 418; + { Internal Id of encryption Algorithm } + OCI_ATTR_TABLE_ENC_ALG_ID = 419; + { Please use from 143 } + { DB Change: Event types --------------- } + { None } + OCI_EVENT_NONE = $0; + { Startup database } + OCI_EVENT_STARTUP = $1; + { Shutdown database } + OCI_EVENT_SHUTDOWN = $2; + { Startup instance } + OCI_EVENT_SHUTDOWN_ANY = $3; + { Drop database } + OCI_EVENT_DROP_DB = $4; + { Subscription deregistered } + OCI_EVENT_DEREG = $5; + { Object change notification } + OCI_EVENT_OBJCHANGE = $6; + { DB Change: Operation types ----------- } + { all rows invalidated } + OCI_OPCODE_ALLROWS = $1; + { interested in all operations } + OCI_OPCODE_ALLOPS = $0; + { INSERT } + OCI_OPCODE_INSERT = $2; + { UPDATE } + OCI_OPCODE_UPDATE = $4; + { DELETE } + OCI_OPCODE_DELETE = $8; + { ALTER } + OCI_OPCODE_ALTER = $10; + { DROP TABLE } + OCI_OPCODE_DROP = $20; + { GENERIC/ UNKNOWN } + OCI_OPCODE_UNKNOWN = $40; + { -------- client side character and national character set ids ----------- } + { charset id in env } + OCI_ATTR_ENV_CHARSET_ID = OCI_ATTR_CHARSET_ID; + { ncharset id in env } + OCI_ATTR_ENV_NCHARSET_ID = OCI_ATTR_NCHARSET_ID; + { ----------------------- ha event callback attributes -------------------- } + { ha callback } + OCI_ATTR_EVTCBK = 304; + { ctx for ha callback } + OCI_ATTR_EVTCTX = 305; + { ------------------ User memory attributes (all handles) ----------------- } + { pointer to user memory } + OCI_ATTR_USER_MEMORY = 306; + { ----------------- port no attribute in subscription handle ------------- } + { port no to listen } + OCI_ATTR_SUBSCR_PORTNO = 390; + {------------- Supported Values for protocol for recepient ----------------- } + { oci } + OCI_SUBSCR_PROTO_OCI = 0; + { mail } + OCI_SUBSCR_PROTO_MAIL = 1; + { server } + OCI_SUBSCR_PROTO_SERVER = 2; + { http } + OCI_SUBSCR_PROTO_HTTP = 3; + { max current protocols } + OCI_SUBSCR_PROTO_MAX = 4; + {------------- Supported Values for presentation for recepient ------------- } + { default } + OCI_SUBSCR_PRES_DEFAULT = 0; + { xml } + OCI_SUBSCR_PRES_XML = 1; + { max current presentations } + OCI_SUBSCR_PRES_MAX = 2; + {------------- Supported QOS values for notification registrations --------- } + { reliable } + OCI_SUBSCR_QOS_RELIABLE = $01; + { payload delivery } + OCI_SUBSCR_QOS_PAYLOAD = $02; + { replicate to director } + OCI_SUBSCR_QOS_REPLICATE = $04; + { secure payload delivery } + OCI_SUBSCR_QOS_SECURE = $08; + { purge on first ntfn } + OCI_SUBSCR_QOS_PURGE_ON_NTFN = $10; + { multi instance callback } + OCI_SUBSCR_QOS_MULTICBK = $20; + { ----- Temporary attribute value for UCS2/UTF16 character set ID -------- } { UCS2 charset ID } + OCI_UCS2ID = 1000; + { UTF16 charset ID } + OCI_UTF16ID = 1000; + {============================== End OCI Attribute Types ==================== } + {---------------- Server Handle Attribute Values --------------------------- } + { OCI_ATTR_SERVER_STATUS } + OCI_SERVER_NOT_CONNECTED = $0; + OCI_SERVER_NORMAL = $1; + {--------------------------------------------------------------------------- } + {------------------------- Supported Namespaces --------------------------- } + { Anonymous Namespace } + OCI_SUBSCR_NAMESPACE_ANONYMOUS = 0; + { Advanced Queues } + OCI_SUBSCR_NAMESPACE_AQ = 1; + { change notification } + OCI_SUBSCR_NAMESPACE_DBCHANGE = 2; + { Max Name Space Number } + OCI_SUBSCR_NAMESPACE_MAX = 3; + {-------------------------Credential Types---------------------------------- } + { database username/password } + OCI_CRED_RDBMS = 1; + { externally provided credentials } + OCI_CRED_EXT = 2; + { proxy authentication } + OCI_CRED_PROXY = 3; + { reserved } + OCI_CRED_RESERVED_1 = 4; + { reserved } + OCI_CRED_RESERVED_2 = 5; + {--------------------------------------------------------------------------- } + {------------------------Error Return Values-------------------------------- } + { maps to SQL_SUCCESS of SAG CLI } + OCI_SUCCESS = 0; + { maps to SQL_SUCCESS_WITH_INFO } + OCI_SUCCESS_WITH_INFO = 1; + { reserved } OCI_RESERVED_FOR_INT_USE = 200; + { maps to SQL_NO_DATA } + OCI_NO_DATA = 100; + { maps to SQL_ERROR } + OCI_ERROR = -(1); + { maps to SQL_INVALID_HANDLE } + OCI_INVALID_HANDLE = -(2); + { maps to SQL_NEED_DATA } + OCI_NEED_DATA = 99; + { OCI would block error } + OCI_STILL_EXECUTING = -(3123); + {--------------------------------------------------------------------------- } + {--------------------- User Callback Return Values ------------------------- } + { Continue with the body of the OCI function } + OCI_CONTINUE = -(24200); + { done with user row callback } + OCI_ROWCBK_DONE = -(24201); + {--------------------------------------------------------------------------- } + {------------------DateTime and Interval check Error codes------------------ } + { DateTime Error Codes used by OCIDateTimeCheck() } + { Bad day } + OCI_DT_INVALID_DAY = $1; + { Bad DAy Low/high bit (1=low) } + OCI_DT_DAY_BELOW_VALID = $2; + { Bad MOnth } + OCI_DT_INVALID_MONTH = $4; + { Bad MOnth Low/high bit (1=low) } + OCI_DT_MONTH_BELOW_VALID = $8; + { Bad YeaR } + OCI_DT_INVALID_YEAR = $10; + { Bad YeaR Low/high bit (1=low) } + OCI_DT_YEAR_BELOW_VALID = $20; + { Bad HouR } + OCI_DT_INVALID_HOUR = $40; + { Bad HouR Low/high bit (1=low) } + OCI_DT_HOUR_BELOW_VALID = $80; + { Bad MiNute } + OCI_DT_INVALID_MINUTE = $100; + {Bad MiNute Low/high bit (1=low) } + OCI_DT_MINUTE_BELOW_VALID = $200; + { Bad SeCond } + OCI_DT_INVALID_SECOND = $400; + {bad second Low/high bit (1=low) } + OCI_DT_SECOND_BELOW_VALID = $800; + OCI_DT_DAY_MISSING_FROM_1582 = $1000; + { Day is one of those "missing" from 1582 } + { Year may not equal zero } + OCI_DT_YEAR_ZERO = $2000; + { Bad Timezone } + OCI_DT_INVALID_TIMEZONE = $4000; + { Bad date format input } + OCI_DT_INVALID_FORMAT = $8000; + { Interval Error Codes used by OCIInterCheck() } + { Bad day } + OCI_INTER_INVALID_DAY = $1; + { Bad DAy Low/high bit (1=low) } + OCI_INTER_DAY_BELOW_VALID = $2; + { Bad MOnth } + OCI_INTER_INVALID_MONTH = $4; + {Bad MOnth Low/high bit (1=low) } + OCI_INTER_MONTH_BELOW_VALID = $8; + { Bad YeaR } + OCI_INTER_INVALID_YEAR = $10; + {Bad YeaR Low/high bit (1=low) } + OCI_INTER_YEAR_BELOW_VALID = $20; + { Bad HouR } + OCI_INTER_INVALID_HOUR = $40; + {Bad HouR Low/high bit (1=low) } + OCI_INTER_HOUR_BELOW_VALID = $80; + { Bad MiNute } + OCI_INTER_INVALID_MINUTE = $100; + OCI_INTER_MINUTE_BELOW_VALID = $200; + {Bad MiNute Low/high bit(1=low) } + { Bad SeCond } + OCI_INTER_INVALID_SECOND = $400; + OCI_INTER_SECOND_BELOW_VALID = $800; + {bad second Low/high bit(1=low) } + { Bad Fractional second } + OCI_INTER_INVALID_FRACSEC = $1000; + OCI_INTER_FRACSEC_BELOW_VALID = $2000; + { Bad fractional second Low/High } + {------------------------Parsing Syntax Types------------------------------- } + { V815 language - for backwards compatibility } + OCI_V7_SYNTAX = 2; + { V815 language - for backwards compatibility } + OCI_V8_SYNTAX = 3; + { Use what so ever is the native lang of server } + OCI_NTV_SYNTAX = 1; + { these values must match the values defined in kpul.h } + {--------------------------------------------------------------------------- } + {------------------------(Scrollable Cursor) Fetch Options------------------- + * For non-scrollable cursor, the only valid (and default) orientation is + * OCI_FETCH_NEXT + } + { refetching current position } + OCI_FETCH_CURRENT = $00000001; + { next row } + OCI_FETCH_NEXT = $00000002; + { first row of the result set } + OCI_FETCH_FIRST = $00000004; + { the last row of the result set } + OCI_FETCH_LAST = $00000008; + { previous row relative to current } + OCI_FETCH_PRIOR = $00000010; + { absolute offset from first } + OCI_FETCH_ABSOLUTE = $00000020; + { offset relative to current } + OCI_FETCH_RELATIVE = $00000040; + { reserved } + OCI_FETCH_RESERVED_1 = $00000080; + { reserved } + OCI_FETCH_RESERVED_2 = $00000100; + { reserved } + OCI_FETCH_RESERVED_3 = $00000200; + { reserved } + OCI_FETCH_RESERVED_4 = $00000400; + { reserved } + OCI_FETCH_RESERVED_5 = $00000800; + {--------------------------------------------------------------------------- } + {------------------------Bind and Define Options---------------------------- } + { unused } + OCI_SB2_IND_PTR = $00000001; + { data at execute time } + OCI_DATA_AT_EXEC = $00000002; + { fetch dynamically } + OCI_DYNAMIC_FETCH = $00000002; + { piecewise DMLs or fetch } + OCI_PIECEWISE = $00000004; + { reserved } + OCI_DEFINE_RESERVED_1 = $00000008; + { reserved } + OCI_BIND_RESERVED_2 = $00000010; + { reserved } + OCI_DEFINE_RESERVED_2 = $00000020; + { soft bind or define } + OCI_BIND_SOFT = $00000040; + { soft bind or define } + OCI_DEFINE_SOFT = $00000080; + { reserved } + OCI_BIND_RESERVED_3 = $00000100; + {--------------------------------------------------------------------------- } + {----------------------------- Various Modes ------------------------------ } + OCI_DEFAULT = $00000000; + { the default value for parameters and attributes } + {-------------OCIInitialize Modes / OCICreateEnvironment Modes ------------- } + { appl. in threaded environment } + OCI_THREADED = $00000001; + { application in object environment } + OCI_OBJECT = $00000002; + { application is enabled for events } + OCI_EVENTS = $00000004; + { reserved } + OCI_RESERVED1 = $00000008; + { the application is in shared mode } + OCI_SHARED = $00000010; + { reserved } + OCI_RESERVED2 = $00000020; + { The following *TWO* are only valid for OCICreateEnvironment call } + { No user callback called during ini } + OCI_NO_UCB = $00000040; + { the environment handle will not be } + OCI_NO_MUTEX = $00000080; + { protected by a mutex internally } + { Used for shared forms } + OCI_SHARED_EXT = $00000100; + {************************* 0x00000200 free ********************************* } + { all connections always blocking } + OCI_ALWAYS_BLOCKING = $00000400; + {************************* 0x00000800 free ********************************* } + { allow LDAP connections } + OCI_USE_LDAP = $00001000; + { only register to LDAP } + OCI_REG_LDAPONLY = $00002000; + { mode for all UTF16 metadata } + OCI_UTF16 = $00004000; + OCI_AFC_PAD_ON = $00008000; + { turn on AFC blank padding when rlenp present } + { reserved } + OCI_ENVCR_RESERVED3 = $00010000; + { adopt new length semantics } + OCI_NEW_LENGTH_SEMANTICS = $00020000; + { the new length semantics, always bytes, is used by OCIEnvNlsCreate } + { Do not mutex stmt handle } + OCI_NO_MUTEX_STMT = $00040000; + { Mutex only the environment handle } + OCI_MUTEX_ENV_ONLY = $00080000; + { reserved } + OCI_STM_RESERVED4 = $00100000; + { try and acquire mutex } + OCI_MUTEX_TRY = $00200000; + { nchar literal replace on } + OCI_NCHAR_LITERAL_REPLACE_ON = $00400000; + { nchar literal replace off } + OCI_NCHAR_LITERAL_REPLACE_OFF = $00800000; + { reserved } + OCI_SRVATCH_RESERVED5 = $01000000; + {--------------------------------------------------------------------------- } + {------------------------OCIConnectionpoolCreate Modes---------------------- } + OCI_CPOOL_REINITIALIZE = $111; + {--------------------------------------------------------------------------- } + {--------------------------------- OCILogon2 Modes ------------------------- } + { Use session pool } + OCI_LOGON2_SPOOL = $0001; + { Use connection pool } + OCI_LOGON2_CPOOL = OCI_CPOOL; + { Use Stmt Caching } + OCI_LOGON2_STMTCACHE = $0004; + { Proxy authentiaction } + OCI_LOGON2_PROXY = $0008; + {--------------------------------------------------------------------------- } + {------------------------- OCISessionPoolCreate Modes ---------------------- } + { Reinitialize the session pool } + OCI_SPC_REINITIALIZE = $0001; + { Session pool is homogeneneous } + OCI_SPC_HOMOGENEOUS = $0002; + { Session pool has stmt cache } + OCI_SPC_STMTCACHE = $0004; + {--------------------------------------------------------------------------- } + {--------------------------- OCISessionGet Modes --------------------------- } + { SessionGet called in SPOOL mode } + OCI_SESSGET_SPOOL = $0001; + { SessionGet called in CPOOL mode } + OCI_SESSGET_CPOOL = OCI_CPOOL; + { Use statement cache } + OCI_SESSGET_STMTCACHE = $0004; + { SessionGet called in proxy mode } + OCI_SESSGET_CREDPROXY = $0008; + OCI_SESSGET_CREDEXT = $0010; + OCI_SESSGET_SPOOL_MATCHANY = $0020; + {--------------------------------------------------------------------------- } + {------------------------ATTR Values for Session Pool----------------------- } + { Attribute values for OCI_ATTR_SPOOL_GETMODE } + { block till you get a session } + OCI_SPOOL_ATTRVAL_WAIT = 0; + { error out if no session avaliable } + OCI_SPOOL_ATTRVAL_NOWAIT = 1; + { get session even if max is exceeded } + OCI_SPOOL_ATTRVAL_FORCEGET = 2; + {--------------------------------------------------------------------------- } + {--------------------------- OCISessionRelease Modes ----------------------- } + { Drop the Session } + OCI_SESSRLS_DROPSESS = $0001; + { Retag the session } + OCI_SESSRLS_RETAG = $0002; + {--------------------------------------------------------------------------- } + {----------------------- OCISessionPoolDestroy Modes ----------------------- } + { Force the sessions to terminate. + Even if there are some busy + sessions close them } + OCI_SPD_FORCE = $0001; + {--------------------------------------------------------------------------- } + {----------------------------- Statement States ---------------------------- } + OCI_STMT_STATE_INITIALIZED = $0001; + OCI_STMT_STATE_EXECUTED = $0002; + OCI_STMT_STATE_END_OF_FETCH = $0003; + {--------------------------------------------------------------------------- } + {----------------------------- OCIMemStats Modes --------------------------- } + OCI_MEM_INIT = $01; + OCI_MEM_CLN = $02; + OCI_MEM_FLUSH = $04; + OCI_DUMP_HEAP = $80; + OCI_CLIENT_STATS = $10; + OCI_SERVER_STATS = $20; + {----------------------------- OCIEnvInit Modes ---------------------------- } + { NOTE: NO NEW MODES SHOULD BE ADDED HERE BECAUSE THE RECOMMENDED METHOD + * IS TO USE THE NEW OCICreateEnvironment MODES. + } + { A user callback will not be called in + OCIEnvInit() } + OCI_ENV_NO_UCB = $01; + { the environment handle will not be protected + by a mutex internally } + OCI_ENV_NO_MUTEX = $08; + {--------------------------------------------------------------------------- } + {------------------------ Prepare Modes ------------------------------------ } + { turn off statement handle sharing } + OCI_NO_SHARING = $01; + { reserved } + OCI_PREP_RESERVED_1 = $02; + { turn on blank padding for AFC } + OCI_PREP_AFC_PAD_ON = $04; + { turn off blank padding for AFC } + OCI_PREP_AFC_PAD_OFF = $08; + {--------------------------------------------------------------------------- } + {--------------------------------------------------------------------------- } + {----------------------- Execution Modes ----------------------------------- } + { batch the oci statement for execution } + OCI_BATCH_MODE = $01; + { fetch the exact rows specified } + OCI_EXACT_FETCH = $02; + { #define 0x04 available } + { if result set is scrollable } + OCI_STMT_SCROLLABLE_READONLY = $08; + { only describe the statement } + OCI_DESCRIBE_ONLY = $10; + { commit, if successful execution } + OCI_COMMIT_ON_SUCCESS = $20; + { non-blocking } + OCI_NON_BLOCKING = $40; + { batch errors in array dmls } + OCI_BATCH_ERRORS = $80; + { only parse the statement } + OCI_PARSE_ONLY = $100; + { reserved } + OCI_EXACT_FETCH_RESERVED_1 = $200; + OCI_SHOW_DML_WARNINGS = $400; + { return OCI_SUCCESS_WITH_INFO for delete/update w/no where clause } + { reserved } + OCI_EXEC_RESERVED_2 = $800; + { reserved } + OCI_DESC_RESERVED_1 = $1000; + { reserved } + OCI_EXEC_RESERVED_3 = $2000; + { reserved } + OCI_EXEC_RESERVED_4 = $4000; + { reserved } + OCI_EXEC_RESERVED_5 = $8000; + {--------------------------------------------------------------------------- } + {------------------------Authentication Modes------------------------------- } + { migratable auth context } + OCI_MIGRATE = $00000001; + { for SYSDBA authorization } + OCI_SYSDBA = $00000002; + { for SYSOPER authorization } + OCI_SYSOPER = $00000004; + { for preliminary authorization } + OCI_PRELIM_AUTH = $00000008; + { Private OCI cache mode } + OCIP_ICACHE = $00000010; + { reserved } + OCI_AUTH_RESERVED_1 = $00000020; + { enable OCI Stmt Caching } + OCI_STMT_CACHE = $00000040; + { stateless at call boundary } + OCI_STATELESS_CALL = $00000080; + { stateless at txn boundary } + OCI_STATELESS_TXN = $00000100; + { stateless at user-specified pts } + OCI_STATELESS_APP = $00000200; + { reserved } + OCI_AUTH_RESERVED_2 = $00000400; + { reserved } + OCI_AUTH_RESERVED_3 = $00000800; + { reserved } + OCI_AUTH_RESERVED_4 = $00001000; + { reserved } + OCI_AUTH_RESERVED_5 = $00002000; + {--------------------------------------------------------------------------- } + {------------------------Session End Modes---------------------------------- } + { reserved } + OCI_SESSEND_RESERVED_1 = $0001; + { reserved } + OCI_SESSEND_RESERVED_2 = $0002; + {--------------------------------------------------------------------------- } + {------------------------Attach Modes--------------------------------------- } + { The following attach modes are the same as the UPI modes defined in + * UPIDEF.H. Do not use these values externally. + } + { Attach in fast path mode } + OCI_FASTPATH = $0010; + { reserved } + OCI_ATCH_RESERVED_1 = $0020; + { reserved } + OCI_ATCH_RESERVED_2 = $0080; + { reserved } + OCI_ATCH_RESERVED_3 = $0100; + { reserved } + OCI_ATCH_RESERVED_4 = $0400; + { reserved } + OCI_ATCH_RESERVED_5 = $2000; + {---------------------OCIStmtPrepare2 Modes--------------------------------- } + { ONly Search } + OCI_PREP2_CACHE_SEARCHONLY = $0010; + { Get PL/SQL warnings } + OCI_PREP2_GET_PLSQL_WARNINGS = $0020; + { reserved } + OCI_PREP2_RESERVED_1 = $0040; + {---------------------OCIStmtRelease Modes---------------------------------- } + { Delete from Cache } + OCI_STRLS_CACHE_DELETE = $0010; + {-----------------------------End Various Modes ---------------------------- } + {------------------------Piece Information---------------------------------- } + { in parameter } + OCI_PARAM_IN = $01; + { out parameter } + OCI_PARAM_OUT = $02; + {--------------------------------------------------------------------------- } + {------------------------ Transaction Start Flags -------------------------- } + { NOTE: OCI_TRANS_JOIN and OCI_TRANS_NOMIGRATE not supported in 8.0.X } + { starts a new transaction branch } + OCI_TRANS_NEW = $00000001; + { join an existing transaction } + OCI_TRANS_JOIN = $00000002; + { resume this transaction } + OCI_TRANS_RESUME = $00000004; + OCI_TRANS_STARTMASK = $000000ff; + { starts a readonly transaction } + OCI_TRANS_READONLY = $00000100; + { starts a read-write transaction } + OCI_TRANS_READWRITE = $00000200; + OCI_TRANS_SERIALIZABLE = $00000400; + { starts a serializable transaction } + OCI_TRANS_ISOLMASK = $0000ff00; + { a loosely coupled branch } + OCI_TRANS_LOOSE = $00010000; + { a tightly coupled branch } + OCI_TRANS_TIGHT = $00020000; + OCI_TRANS_TYPEMASK = $000f0000; + { non migratable transaction } + OCI_TRANS_NOMIGRATE = $00100000; + { separable transaction (8.1.6+) } + OCI_TRANS_SEPARABLE = $00200000; + { OTS resuming a transaction } + OCI_TRANS_OTSRESUME = $00400000; + {--------------------------------------------------------------------------- } + {------------------------ Transaction End Flags ---------------------------- } + { use two phase commit } + OCI_TRANS_TWOPHASE = $01000000; + { force cmt-redo for local txns } + OCI_TRANS_WRITEBATCH = $00000001; + { no force cmt-redo } + OCI_TRANS_WRITEIMMED = $00000002; + { no sync cmt-redo } + OCI_TRANS_WRITEWAIT = $00000004; + { sync cmt-redo for local txns } + OCI_TRANS_WRITENOWAIT = $00000008; + {--------------------------------------------------------------------------- } + {------------------------- AQ Constants ------------------------------------ + * NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE + * The following constants must match the PL/SQL dbms_aq constants + * NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE + } + { ------------------------- Visibility flags ------------------------------- } + { enqueue is an independent transaction } + OCI_ENQ_IMMEDIATE = 1; + { enqueue is part of current transaction } + OCI_ENQ_ON_COMMIT = 2; + { ----------------------- Dequeue mode flags ------------------------------- } + { read message without acquiring a lock } + OCI_DEQ_BROWSE = 1; + { read and obtain write lock on message } + OCI_DEQ_LOCKED = 2; + { read the message and delete it } + OCI_DEQ_REMOVE = 3; + { delete message w'o returning payload } + OCI_DEQ_REMOVE_NODATA = 4; + { get signature only } + OCI_DEQ_GETSIG = 5; + { ----------------- Dequeue navigation flags ------------------------------- } + { get first message at head of queue } + OCI_DEQ_FIRST_MSG = 1; + { next message that is available } + OCI_DEQ_NEXT_MSG = 3; + { get first message of next txn group } + OCI_DEQ_NEXT_TRANSACTION = 2; + { array dequeue across txn groups } + OCI_DEQ_MULT_TRANSACTION = 5; + { ----------------- Dequeue Option Reserved flags ------------------------- } + OCI_DEQ_RESERVED_1 = $000001; + { --------------------- Message states ------------------------------------- } + { the message delay has not yet completed } + OCI_MSG_WAITING = 1; + { the message is ready to be processed } + OCI_MSG_READY = 0; + { the message has been processed } + OCI_MSG_PROCESSED = 2; + { message has moved to exception queue } + OCI_MSG_EXPIRED = 3; + { --------------------- Sequence deviation --------------------------------- } + { enqueue message before another message } + OCI_ENQ_BEFORE = 2; + { enqueue message before all messages } + OCI_ENQ_TOP = 3; + { ------------------------- Visibility flags ------------------------------- } + { dequeue is an independent transaction } + OCI_DEQ_IMMEDIATE = 1; + { dequeue is part of current transaction } + OCI_DEQ_ON_COMMIT = 2; + { ------------------------ Wait -------------------------------------------- } + { wait forever if no message available } + OCI_DEQ_WAIT_FOREVER = -(1); + { do not wait if no message is available } + OCI_DEQ_NO_WAIT = 0; + { ------------------------ Delay ------------------------------------------- } + { message is available immediately } + OCI_MSG_NO_DELAY = 0; + { ------------------------- Expiration ------------------------------------- } + { message will never expire } + OCI_MSG_NO_EXPIRATION = -(1); + OCI_MSG_PERSISTENT_OR_BUFFERED = 3; + OCI_MSG_BUFFERED = 2; + OCI_MSG_PERSISTENT = 1; + { ------------------------- Reserved --------------------------------------- } + OCI_AQ_RESERVED_1 = $0002; + OCI_AQ_RESERVED_2 = $0004; + OCI_AQ_RESERVED_3 = $0008; + OCI_AQ_RESERVED_4 = $0010; + { -------------------------- END AQ Constants ----------------------------- } + { --------------------END DateTime and Interval Constants ------------------ } + {-----------------------Object Types---------------------------------------- } + {-----------Object Types **** Not to be Used **** -------------------------- } + { Deprecated } + OCI_OTYPE_UNK = 0; + OCI_OTYPE_TABLE = 1; + OCI_OTYPE_VIEW = 2; + OCI_OTYPE_SYN = 3; + OCI_OTYPE_PROC = 4; + OCI_OTYPE_FUNC = 5; + OCI_OTYPE_PKG = 6; + OCI_OTYPE_STMT = 7; + {--------------------------------------------------------------------------- } + {=======================Describe Handle Parameter Attributes =============== } + { + These attributes are orthogonal to the other set of attributes defined + above. These attrubutes are to be used only for the describe handle. + } + {=========================================================================== } + { Attributes common to Columns and Stored Procs } + { maximum size of the data } + OCI_ATTR_DATA_SIZE = 1; + { the SQL type of the column/argument } + OCI_ATTR_DATA_TYPE = 2; + { the display size } + OCI_ATTR_DISP_SIZE = 3; + { the name of the column/argument } + OCI_ATTR_NAME = 4; + { precision if number type } + OCI_ATTR_PRECISION = 5; + { scale if number type } + OCI_ATTR_SCALE = 6; + { is it null ? } + OCI_ATTR_IS_NULL = 7; + OCI_ATTR_TYPE_NAME = 8; + { name of the named data type or a package name for package private types } + { the schema name } + OCI_ATTR_SCHEMA_NAME = 9; + { type name if package private type } + OCI_ATTR_SUB_NAME = 10; + OCI_ATTR_POSITION = 11; + { relative position of col/arg in the list of cols/args } + { complex object retrieval parameter attributes } + OCI_ATTR_COMPLEXOBJECTCOMP_TYPE = 50; + OCI_ATTR_COMPLEXOBJECTCOMP_TYPE_LEVEL = 51; + OCI_ATTR_COMPLEXOBJECT_LEVEL = 52; + OCI_ATTR_COMPLEXOBJECT_COLL_OUTOFLINE = 53; + { Only Columns } + { the display name } + OCI_ATTR_DISP_NAME = 100; + { encrypted data size } + OCI_ATTR_ENCC_SIZE = 101; + { column is encrypted ? } + OCI_ATTR_COL_ENC = 102; + { is encrypted column salted ? } + OCI_ATTR_COL_ENC_SALT = 103; + {Only Stored Procs } + { is this position overloaded } + OCI_ATTR_OVERLOAD = 210; + { level for structured types } + OCI_ATTR_LEVEL = 211; + { has a default value } + OCI_ATTR_HAS_DEFAULT = 212; + { in, out inout } + OCI_ATTR_IOMODE = 213; + { returns a radix } + OCI_ATTR_RADIX = 214; + { total number of arguments } + OCI_ATTR_NUM_ARGS = 215; + { only named type attributes } + { object or collection } + OCI_ATTR_TYPECODE = 216; + { varray or nested table } + OCI_ATTR_COLLECTION_TYPECODE = 217; + { user assigned version } + OCI_ATTR_VERSION = 218; + { is this an incomplete type } + OCI_ATTR_IS_INCOMPLETE_TYPE = 219; + { a system type } + OCI_ATTR_IS_SYSTEM_TYPE = 220; + { a predefined type } + OCI_ATTR_IS_PREDEFINED_TYPE = 221; + { a transient type } + OCI_ATTR_IS_TRANSIENT_TYPE = 222; + { system generated type } + OCI_ATTR_IS_SYSTEM_GENERATED_TYPE = 223; + { contains nested table attr } + OCI_ATTR_HAS_NESTED_TABLE = 224; + { has a lob attribute } + OCI_ATTR_HAS_LOB = 225; + { has a file attribute } + OCI_ATTR_HAS_FILE = 226; + { has a collection attribute } + OCI_ATTR_COLLECTION_ELEMENT = 227; + { number of attribute types } + OCI_ATTR_NUM_TYPE_ATTRS = 228; + { list of type attributes } + OCI_ATTR_LIST_TYPE_ATTRS = 229; + { number of type methods } + OCI_ATTR_NUM_TYPE_METHODS = 230; + { list of type methods } + OCI_ATTR_LIST_TYPE_METHODS = 231; + { map method of type } + OCI_ATTR_MAP_METHOD = 232; + { order method of type } + OCI_ATTR_ORDER_METHOD = 233; + { only collection element } + { number of elements } + OCI_ATTR_NUM_ELEMS = 234; + { only type methods } + { encapsulation level } + OCI_ATTR_ENCAPSULATION = 235; + { method selfish } + OCI_ATTR_IS_SELFISH = 236; + { virtual } + OCI_ATTR_IS_VIRTUAL = 237; + { inline } + OCI_ATTR_IS_INLINE = 238; + { constant } + OCI_ATTR_IS_CONSTANT = 239; + { has result } + OCI_ATTR_HAS_RESULT = 240; + { constructor } + OCI_ATTR_IS_CONSTRUCTOR = 241; + { destructor } + OCI_ATTR_IS_DESTRUCTOR = 242; + { operator } + OCI_ATTR_IS_OPERATOR = 243; + { a map method } + OCI_ATTR_IS_MAP = 244; + { order method } + OCI_ATTR_IS_ORDER = 245; + { read no data state method } + OCI_ATTR_IS_RNDS = 246; + { read no process state } + OCI_ATTR_IS_RNPS = 247; + { write no data state method } + OCI_ATTR_IS_WNDS = 248; + { write no process state } + OCI_ATTR_IS_WNPS = 249; + { public object } + OCI_ATTR_DESC_PUBLIC = 250; + { Object Cache Enhancements : attributes for User Constructed Instances } + OCI_ATTR_CACHE_CLIENT_CONTEXT = 251; + OCI_ATTR_UCI_CONSTRUCT = 252; + OCI_ATTR_UCI_DESTRUCT = 253; + OCI_ATTR_UCI_COPY = 254; + OCI_ATTR_UCI_PICKLE = 255; + OCI_ATTR_UCI_UNPICKLE = 256; + OCI_ATTR_UCI_REFRESH = 257; + { for type inheritance } + OCI_ATTR_IS_SUBTYPE = 258; + OCI_ATTR_SUPERTYPE_SCHEMA_NAME = 259; + OCI_ATTR_SUPERTYPE_NAME = 260; + { for schemas } + { list of objects in schema } + OCI_ATTR_LIST_OBJECTS = 261; + { for database } + { list of schemas } + OCI_ATTR_LIST_SCHEMAS = 263; + { max procedure length } + OCI_ATTR_MAX_PROC_LEN = 264; + { max column name length } + OCI_ATTR_MAX_COLUMN_LEN = 265; + { cursor commit behavior } + OCI_ATTR_CURSOR_COMMIT_BEHAVIOR = 266; + { catalog namelength } + OCI_ATTR_MAX_CATALOG_NAMELEN = 267; + { catalog location } + OCI_ATTR_CATALOG_LOCATION = 268; + { savepoint support } + OCI_ATTR_SAVEPOINT_SUPPORT = 269; + { nowait support } + OCI_ATTR_NOWAIT_SUPPORT = 270; + { autocommit DDL } + OCI_ATTR_AUTOCOMMIT_DDL = 271; + { locking mode } + OCI_ATTR_LOCKING_MODE = 272; + { for externally initialized context } + { count of context to be init } + OCI_ATTR_APPCTX_SIZE = 273; + { count of context to be init } + OCI_ATTR_APPCTX_LIST = 274; + { name of context to be init } + OCI_ATTR_APPCTX_NAME = 275; + { attr of context to be init } + OCI_ATTR_APPCTX_ATTR = 276; + { value of context to be init } + OCI_ATTR_APPCTX_VALUE = 277; + { for client id propagation } + { value of client id to set } + OCI_ATTR_CLIENT_IDENTIFIER = 278; + { for inheritance - part 2 } + { is final type ? } + OCI_ATTR_IS_FINAL_TYPE = 279; + { is instantiable type ? } + OCI_ATTR_IS_INSTANTIABLE_TYPE = 280; + { is final method ? } + OCI_ATTR_IS_FINAL_METHOD = 281; + { is instantiable method ? } + OCI_ATTR_IS_INSTANTIABLE_METHOD = 282; + { is overriding method ? } + OCI_ATTR_IS_OVERRIDING_METHOD = 283; + { Describe the base object } + OCI_ATTR_DESC_SYNBASE = 284; + { char length semantics } + OCI_ATTR_CHAR_USED = 285; + { char length } + OCI_ATTR_CHAR_SIZE = 286; + { SQLJ support } + { is java implemented type ? } + OCI_ATTR_IS_JAVA_TYPE = 287; + { N-Tier support } + { use DN as user name } + OCI_ATTR_DISTINGUISHED_NAME = 300; + { Kerberos ticket as cred. } + OCI_ATTR_KERBEROS_TICKET = 301; + { for multilanguage debugging } + { ORA_DEBUG_JDWP attribute } + OCI_ATTR_ORA_DEBUG_JDWP = 302; + { reserved } + OCI_ATTR_RESERVED_14 = 303; + {---------------------------End Describe Handle Attributes ----------------- } + { For values 303 - 307, see DirPathAPI attribute section in this file } + { ----------------------- Session Pool Attributes ------------------------- } + { session timeout } + OCI_ATTR_SPOOL_TIMEOUT = 308; + { session get mode } + OCI_ATTR_SPOOL_GETMODE = 309; + { busy session count } + OCI_ATTR_SPOOL_BUSY_COUNT = 310; + { open session count } + OCI_ATTR_SPOOL_OPEN_COUNT = 311; + { min session count } + OCI_ATTR_SPOOL_MIN = 312; + { max session count } + OCI_ATTR_SPOOL_MAX = 313; + { session increment count } + OCI_ATTR_SPOOL_INCR = 314; + {Stmt cache size of pool } + OCI_ATTR_SPOOL_STMTCACHESIZE = 208; + {------------------------------End Session Pool Attributes ----------------- } + {---------------------------- For XML Types ------------------------------- } + { For table, view and column } + { Is the type an XML type? } + OCI_ATTR_IS_XMLTYPE = 315; + { Name of XML Schema } + OCI_ATTR_XMLSCHEMA_NAME = 316; + { Name of XML Element } + OCI_ATTR_XMLELEMENT_NAME = 317; + { SQL type's schema for XML Ele } + OCI_ATTR_XMLSQLTYPSCH_NAME = 318; + { Name of SQL type for XML Ele } + OCI_ATTR_XMLSQLTYPE_NAME = 319; + { XML type stored as object? } + OCI_ATTR_XMLTYPE_STORED_OBJ = 320; + {---------------------------- For Subtypes ------------------------------- } + { For type } + { Has subtypes? } + OCI_ATTR_HAS_SUBTYPES = 321; + { Number of subtypes } + OCI_ATTR_NUM_SUBTYPES = 322; + { List of subtypes } + OCI_ATTR_LIST_SUBTYPES = 323; + { XML flag } + { hierarchy enabled? } + OCI_ATTR_XML_HRCHY_ENABLED = 324; + { Method flag } + { Method is overridden? } + OCI_ATTR_IS_OVERRIDDEN_METHOD = 325; + { For values 326 - 335, see DirPathAPI attribute section in this file } + {------------- Attributes for 10i Distributed Objects ---------------------- } + { obj col/tab substitutable } + OCI_ATTR_OBJ_SUBS = 336; + { For values 337 - 338, see DirPathAPI attribute section in this file } + {---------- Attributes for 10i XADFIELD (NLS language, territory ----------- } + { reserved } + OCI_ATTR_XADFIELD_RESERVED_1 = 339; + { reserved } + OCI_ATTR_XADFIELD_RESERVED_2 = 340; + {------------- Kerberos Secure Client Identifier --------------------------- } + { Kerberos db service ticket } + OCI_ATTR_KERBEROS_CID = 341; + {------------------------ Attributes for Rules objects --------------------- } + { rule condition } + OCI_ATTR_CONDITION = 342; + { comment } + OCI_ATTR_COMMENT = 343; + { Anydata value } + OCI_ATTR_VALUE = 344; + { eval context owner } + OCI_ATTR_EVAL_CONTEXT_OWNER = 345; + { eval context name } + OCI_ATTR_EVAL_CONTEXT_NAME = 346; + { eval function name } + OCI_ATTR_EVALUATION_FUNCTION = 347; + { variable type } + OCI_ATTR_VAR_TYPE = 348; + { variable value function } + OCI_ATTR_VAR_VALUE_FUNCTION = 349; + { variable method function } + OCI_ATTR_VAR_METHOD_FUNCTION = 350; + { action context } + OCI_ATTR_ACTION_CONTEXT = 351; + { list of table aliases } + OCI_ATTR_LIST_TABLE_ALIASES = 352; + { list of variable types } + OCI_ATTR_LIST_VARIABLE_TYPES = 353; + { table name } + OCI_ATTR_TABLE_NAME = 356; + { For values 357 - 359, see DirPathAPI attribute section in this file } + { message cscn } + OCI_ATTR_MESSAGE_CSCN = 360; + { message dscn } + OCI_ATTR_MESSAGE_DSCN = 361; + {--------------------- Audit Session ID ------------------------------------ } + { Audit session ID } + OCI_ATTR_AUDIT_SESSION_ID = 362; + {--------------------- Kerberos TGT Keys ----------------------------------- } + { n-tier Kerberos cred key } + OCI_ATTR_KERBEROS_KEY = 363; + { SCID Kerberos cred key } + OCI_ATTR_KERBEROS_CID_KEY = 364; + { AQ enq txn number } + OCI_ATTR_TRANSACTION_NO = 365; + {----------------------- Attributes for End To End Tracing ----------------- } + { module for tracing } + OCI_ATTR_MODULE = 366; + { action for tracing } + OCI_ATTR_ACTION = 367; + { client info } + OCI_ATTR_CLIENT_INFO = 368; + { collect call time } + OCI_ATTR_COLLECT_CALL_TIME = 369; + { extract call time } + OCI_ATTR_CALL_TIME = 370; + { execution-id context } + OCI_ATTR_ECONTEXT_ID = 371; + {execution-id sequence num } + OCI_ATTR_ECONTEXT_SEQ = 372; + {------------------------------ Session attributes ------------------------- } + { session state } + OCI_ATTR_SESSION_STATE = 373; + { valid states } + OCI_SESSION_STATELESS = 1; + OCI_SESSION_STATEFUL = 2; + { session state type } + OCI_ATTR_SESSION_STATETYPE = 374; + { valid state types } + OCI_SESSION_STATELESS_DEF = 0; + OCI_SESSION_STATELESS_CAL = 1; + OCI_SESSION_STATELESS_TXN = 2; + OCI_SESSION_STATELESS_APP = 3; + { session state cleared } + OCI_ATTR_SESSION_STATE_CLEARED = 376; + { did session migrate } + OCI_ATTR_SESSION_MIGRATED = 377; + { preserve session state } + OCI_ATTR_SESSION_PRESERVE_STATE = 388; + { -------------------------- Admin Handle Attributes ---------------------- } + { client-side param file } + OCI_ATTR_ADMIN_PFILE = 389; + {----------------------- Attributes for End To End Tracing ----------------- } + { -------------------------- HA Event Handle Attributes ------------------- } + { SYS_CONTEXT hostname } + OCI_ATTR_HOSTNAME = 390; + { SYS_CONTEXT dbname } + OCI_ATTR_DBNAME = 391; + { SYS_CONTEXT instance name } + OCI_ATTR_INSTNAME = 392; + { SYS_CONTEXT service name } + OCI_ATTR_SERVICENAME = 393; + { v$instance instance start time } + OCI_ATTR_INSTSTARTTIME = 394; + { event time } + OCI_ATTR_HA_TIMESTAMP = 395; + { reserved } + OCI_ATTR_RESERVED_22 = 396; + { reserved } + OCI_ATTR_RESERVED_23 = 397; + { reserved } + OCI_ATTR_RESERVED_24 = 398; + { db domain } + OCI_ATTR_DBDOMAIN = 399; + { event type } + OCI_ATTR_EVENTTYPE = 400; + { valid value for OCI_ATTR_EVENTTYPE } + OCI_EVENTTYPE_HA = 0; + OCI_ATTR_HA_SOURCE = 401; + { valid values for OCI_ATTR_HA_SOURCE } + OCI_HA_SOURCE_INSTANCE = 0; + OCI_HA_SOURCE_DATABASE = 1; + OCI_HA_SOURCE_NODE = 2; + OCI_HA_SOURCE_SERVICE = 3; + OCI_HA_SOURCE_SERVICE_MEMBER = 4; + OCI_HA_SOURCE_ASM_INSTANCE = 5; + OCI_HA_SOURCE_SERVICE_PRECONNECT = 6; + OCI_ATTR_HA_STATUS = 402; + { valid values for OCI_ATTR_HA_STATUS } + OCI_HA_STATUS_DOWN = 0; + OCI_HA_STATUS_UP = 1; + OCI_ATTR_HA_SRVFIRST = 403; + OCI_ATTR_HA_SRVNEXT = 404; + { ------------------------- Server Handle Attributes ----------------------- } + OCI_ATTR_TAF_ENABLED = 405; + { Extra notification attributes } + OCI_ATTR_NFY_FLAGS = 406; + { msg delivery mode } + OCI_ATTR_MSG_DELIVERY_MODE = 407; + { database charset ID } + OCI_ATTR_DB_CHARSET_ID = 416; + { database ncharset ID } + OCI_ATTR_DB_NCHARSET_ID = 417; + { reserved } + OCI_ATTR_RESERVED_25 = 418; + {--------------------------------------------------------------------------- } + { ------------------DirPathAPI attribute Section---------------------------- } + { All DirPathAPI attributes are in this section of the file. Existing } + { attributes prior to this section being created are assigned values < 2000 } + { Add new DirPathAPI attributes to this section and their assigned value } + { should be whatever the last entry is + 1. } + {------------- Supported Values for Direct Path Stream Version ------------- } + OCI_DIRPATH_STREAM_VERSION_1 = 100; + OCI_DIRPATH_STREAM_VERSION_2 = 200; + { default } + OCI_DIRPATH_STREAM_VERSION_3 = 300; + { mode of direct path operation } + OCI_ATTR_DIRPATH_MODE = 78; + { nologging option } + OCI_ATTR_DIRPATH_NOLOG = 79; + { parallel (temp seg) option } + OCI_ATTR_DIRPATH_PARALLEL = 80; + { index that data is sorted on } + OCI_ATTR_DIRPATH_SORTED_INDEX = 137; + { direct path index maint method (see oci8dp.h) } + OCI_ATTR_DIRPATH_INDEX_MAINT_METHOD = 138; + { parallel load: db file, initial and next extent sizes } + { DB file to load into } + OCI_ATTR_DIRPATH_FILE = 139; + { initial extent size } + OCI_ATTR_DIRPATH_STORAGE_INITIAL = 140; + { next extent size } + OCI_ATTR_DIRPATH_STORAGE_NEXT = 141; + { direct path index maint method (see oci8dp.h) } + OCI_ATTR_DIRPATH_SKIPINDEX_METHOD = 145; + { 8.2 dpapi support of ADTs } + { expr type of OCI_ATTR_NAME } + OCI_ATTR_DIRPATH_EXPR_TYPE = 150; + { input in text or stream format } + OCI_ATTR_DIRPATH_INPUT = 151; + OCI_DIRPATH_INPUT_TEXT = $01; + OCI_DIRPATH_INPUT_STREAM = $02; + OCI_DIRPATH_INPUT_UNKNOWN = $04; + { fn ctx ADT attrs or args } + OCI_ATTR_DIRPATH_FN_CTX = 167; + { loading into an OID col } + OCI_ATTR_DIRPATH_OID = 187; + { loading into an SID col } + OCI_ATTR_DIRPATH_SID = 194; + { obj type of subst obj tbl } + OCI_ATTR_DIRPATH_OBJ_CONSTR = 206; + { Attr to allow setting of the stream version PRIOR to calling Prepare } + { version of the stream } + OCI_ATTR_DIRPATH_STREAM_VERSION = 212; + { varray index column } + OCIP_ATTR_DIRPATH_VARRAY_INDEX = 213; + {------------- Supported Values for Direct Path Date cache ----------------- } + { date cache entries } + OCI_ATTR_DIRPATH_DCACHE_NUM = 303; + { date cache limit } + OCI_ATTR_DIRPATH_DCACHE_SIZE = 304; + { date cache misses } + OCI_ATTR_DIRPATH_DCACHE_MISSES = 305; + { date cache hits } + OCI_ATTR_DIRPATH_DCACHE_HITS = 306; + { on set: disable datecache + * on overflow. + * on get: datecache disabled? + * could be due to overflow + * or others } + OCI_ATTR_DIRPATH_DCACHE_DISABLE = 307; + {------------- Attributes for 10i Updates to the DirPath API --------------- } + { reserved } + OCI_ATTR_DIRPATH_RESERVED_7 = 326; + { reserved } + OCI_ATTR_DIRPATH_RESERVED_8 = 327; + { stream conversion needed? } + OCI_ATTR_DIRPATH_CONVERT = 328; + { info about bad row } + OCI_ATTR_DIRPATH_BADROW = 329; + { length of bad row info } + OCI_ATTR_DIRPATH_BADROW_LENGTH = 330; + { column fill order } + OCI_ATTR_DIRPATH_WRITE_ORDER = 331; + { granule size for unload } + OCI_ATTR_DIRPATH_GRANULE_SIZE = 332; + { offset to last granule } + OCI_ATTR_DIRPATH_GRANULE_OFFSET = 333; + { reserved } + OCI_ATTR_DIRPATH_RESERVED_1 = 334; + { reserved } + OCI_ATTR_DIRPATH_RESERVED_2 = 335; + {------ Attributes for 10i DirPathAPI conversion (NLS lang, terr, cs) ------ } + { reserved } + OCI_ATTR_DIRPATH_RESERVED_3 = 337; + { reserved } + OCI_ATTR_DIRPATH_RESERVED_4 = 338; + { reserved } + OCI_ATTR_DIRPATH_RESERVED_5 = 357; + { reserved } + OCI_ATTR_DIRPATH_RESERVED_6 = 358; + { wait for lock in dpapi } + OCI_ATTR_DIRPATH_LOCK_WAIT = 359; + { reserved } + OCI_ATTR_DIRPATH_RESERVED_9 = 2000; + {------ Attribute for 10iR2 for column encryption for Direct Path API ------ } + { vector of functions } + OCI_ATTR_DIRPATH_RESERVED_10 = 2001; + { encryption metadata } + OCI_ATTR_DIRPATH_RESERVED_11 = 2002; + {------ Attribute to determine last column successfully converted ---------- } + { current error column } + OCI_ATTR_CURRENT_ERRCOL = 2003; + { Add DirPathAPI attributes above. Next value to be assigned is 2004 } + { ------------------End of DirPathAPI attribute Section -------------------- } + {--------------------------------------------------------------------------- } + {---------------- Describe Handle Parameter Attribute Values --------------- } + { OCI_ATTR_CURSOR_COMMIT_BEHAVIOR } + OCI_CURSOR_OPEN = 0; + OCI_CURSOR_CLOSED = 1; + { OCI_ATTR_CATALOG_LOCATION } + OCI_CL_START = 0; + OCI_CL_END = 1; + { OCI_ATTR_SAVEPOINT_SUPPORT } + OCI_SP_SUPPORTED = 0; + OCI_SP_UNSUPPORTED = 1; + { OCI_ATTR_NOWAIT_SUPPORT } + OCI_NW_SUPPORTED = 0; + OCI_NW_UNSUPPORTED = 1; + { OCI_ATTR_AUTOCOMMIT_DDL } + OCI_AC_DDL = 0; + OCI_NO_AC_DDL = 1; + { OCI_ATTR_LOCKING_MODE } + OCI_LOCK_IMMEDIATE = 0; + OCI_LOCK_DELAYED = 1; + { ------------------- Instance type attribute values ----------------------- } + OCI_INSTANCE_TYPE_UNKNOWN = 0; + OCI_INSTANCE_TYPE_RDBMS = 1; + OCI_INSTANCE_TYPE_OSM = 2; + {--------------------------------------------------------------------------- } + {---------------------------OCIPasswordChange------------------------------- } + { Change the password but do not login } + OCI_AUTH = $08; + {------------------------Other Constants------------------------------------ } + { max number of OCI Functions } + OCI_MAX_FNS = 100; + OCI_SQLSTATE_SIZE = 5; + { max size of an error message } + OCI_ERROR_MAXMSG_SIZE = 1024; + { maximum lob data size } + OCI_LOBMAXSIZE = 4294967295; // was MINUB4MAXVAL + OCI_ROWID_LEN = 23; + {--------------------------------------------------------------------------- } + {------------------------ Fail Over Events --------------------------------- } + OCI_FO_END = $00000001; + OCI_FO_ABORT = $00000002; + OCI_FO_REAUTH = $00000004; + OCI_FO_BEGIN = $00000008; + OCI_FO_ERROR = $00000010; + {--------------------------------------------------------------------------- } + {------------------------ Fail Over Callback Return Codes ------------------ } + OCI_FO_RETRY = 25410; + {--------------------------------------------------------------------------- } + {------------------------- Fail Over Types --------------------------------- } + OCI_FO_NONE = $00000001; + OCI_FO_SESSION = $00000002; + OCI_FO_SELECT = $00000004; + OCI_FO_TXNAL = $00000008; + {--------------------------------------------------------------------------- } + {-----------------------Function Codes-------------------------------------- } + { OCIInitialize } + OCI_FNCODE_INITIALIZE = 1; + { OCIHandleAlloc } + OCI_FNCODE_HANDLEALLOC = 2; + { OCIHandleFree } + OCI_FNCODE_HANDLEFREE = 3; + { OCIDescriptorAlloc } + OCI_FNCODE_DESCRIPTORALLOC = 4; + { OCIDescriptorFree } + OCI_FNCODE_DESCRIPTORFREE = 5; + { OCIEnvInit } + OCI_FNCODE_ENVINIT = 6; + { OCIServerAttach } + OCI_FNCODE_SERVERATTACH = 7; + { OCIServerDetach } + OCI_FNCODE_SERVERDETACH = 8; + { unused 9 } { OCISessionBegin } + OCI_FNCODE_SESSIONBEGIN = 10; + { OCISessionEnd } + OCI_FNCODE_SESSIONEND = 11; + { OCIPasswordChange } + OCI_FNCODE_PASSWORDCHANGE = 12; + { OCIStmtPrepare } + OCI_FNCODE_STMTPREPARE = 13; + { unused 14- 16 } + { OCIBindDynamic } + OCI_FNCODE_BINDDYNAMIC = 17; + { OCIBindObject } + OCI_FNCODE_BINDOBJECT = 18; + { 19 unused } + { OCIBindArrayOfStruct } + OCI_FNCODE_BINDARRAYOFSTRUCT = 20; + { OCIStmtExecute } + OCI_FNCODE_STMTEXECUTE = 21; + { unused 22-24 } + { OCIDefineObject } + OCI_FNCODE_DEFINEOBJECT = 25; + { OCIDefineDynamic } + OCI_FNCODE_DEFINEDYNAMIC = 26; + { OCIDefineArrayOfStruct } + OCI_FNCODE_DEFINEARRAYOFSTRUCT = 27; + { OCIStmtFetch } + OCI_FNCODE_STMTFETCH = 28; + { OCIStmtGetBindInfo } + OCI_FNCODE_STMTGETBIND = 29; + { 30, 31 unused } + { OCIDescribeAny } + OCI_FNCODE_DESCRIBEANY = 32; + { OCITransStart } + OCI_FNCODE_TRANSSTART = 33; + { OCITransDetach } + OCI_FNCODE_TRANSDETACH = 34; + { OCITransCommit } + OCI_FNCODE_TRANSCOMMIT = 35; + { 36 unused } + { OCIErrorGet } + OCI_FNCODE_ERRORGET = 37; + { OCILobFileOpen } + OCI_FNCODE_LOBOPENFILE = 38; + { OCILobFileClose } + OCI_FNCODE_LOBCLOSEFILE = 39; + { 40 was LOBCREATEFILE, unused } + { 41 was OCILobFileDelete, unused } + { OCILobCopy } + OCI_FNCODE_LOBCOPY = 42; + { OCILobAppend } + OCI_FNCODE_LOBAPPEND = 43; + { OCILobErase } + OCI_FNCODE_LOBERASE = 44; + { OCILobGetLength } + OCI_FNCODE_LOBLENGTH = 45; + { OCILobTrim } + OCI_FNCODE_LOBTRIM = 46; + { OCILobRead } + OCI_FNCODE_LOBREAD = 47; + { OCILobWrite } + OCI_FNCODE_LOBWRITE = 48; + { 49 unused } + { OCIBreak } + OCI_FNCODE_SVCCTXBREAK = 50; + { OCIServerVersion } + OCI_FNCODE_SERVERVERSION = 51; + { OCIKerbAttrSet } + OCI_FNCODE_KERBATTRSET = 52; + { unused 53 } + { OCIAttrGet } + OCI_FNCODE_ATTRGET = 54; + { OCIAttrSet } + OCI_FNCODE_ATTRSET = 55; + { OCIParamSet } + OCI_FNCODE_PARAMSET = 56; + { OCIParamGet } + OCI_FNCODE_PARAMGET = 57; + { OCIStmtGetPieceInfo } + OCI_FNCODE_STMTGETPIECEINFO = 58; + { OCILdaToSvcCtx } + OCI_FNCODE_LDATOSVCCTX = 59; + { 60 unused } + { OCIStmtSetPieceInfo } + OCI_FNCODE_STMTSETPIECEINFO = 61; + { OCITransForget } + OCI_FNCODE_TRANSFORGET = 62; + { OCITransPrepare } + OCI_FNCODE_TRANSPREPARE = 63; + { OCITransRollback } + OCI_FNCODE_TRANSROLLBACK = 64; + { OCIDefineByPos } + OCI_FNCODE_DEFINEBYPOS = 65; + { OCIBindByPos } + OCI_FNCODE_BINDBYPOS = 66; + { OCIBindByName } + OCI_FNCODE_BINDBYNAME = 67; + { OCILobAssign } + OCI_FNCODE_LOBASSIGN = 68; + { OCILobIsEqual } + OCI_FNCODE_LOBISEQUAL = 69; + { OCILobLocatorIsInit } + OCI_FNCODE_LOBISINIT = 70; + { OCILobEnableBuffering } + OCI_FNCODE_LOBENABLEBUFFERING = 71; + { OCILobCharSetID } + OCI_FNCODE_LOBCHARSETID = 72; + { OCILobCharSetForm } + OCI_FNCODE_LOBCHARSETFORM = 73; + { OCILobFileSetName } + OCI_FNCODE_LOBFILESETNAME = 74; + { OCILobFileGetName } + OCI_FNCODE_LOBFILEGETNAME = 75; + { OCILogon } + OCI_FNCODE_LOGON = 76; + { OCILogoff } + OCI_FNCODE_LOGOFF = 77; + { OCILobDisableBuffering } + OCI_FNCODE_LOBDISABLEBUFFERING = 78; + { OCILobFlushBuffer } + OCI_FNCODE_LOBFLUSHBUFFER = 79; + { OCILobLoadFromFile } + OCI_FNCODE_LOBLOADFROMFILE = 80; + { OCILobOpen } + OCI_FNCODE_LOBOPEN = 81; + { OCILobClose } + OCI_FNCODE_LOBCLOSE = 82; + { OCILobIsOpen } + OCI_FNCODE_LOBISOPEN = 83; + { OCILobFileIsOpen } + OCI_FNCODE_LOBFILEISOPEN = 84; + { OCILobFileExists } + OCI_FNCODE_LOBFILEEXISTS = 85; + { OCILobFileCloseAll } + OCI_FNCODE_LOBFILECLOSEALL = 86; + { OCILobCreateTemporary } + OCI_FNCODE_LOBCREATETEMP = 87; + { OCILobFreeTemporary } + OCI_FNCODE_LOBFREETEMP = 88; + { OCILobIsTemporary } + OCI_FNCODE_LOBISTEMP = 89; + { OCIAQEnq } + OCI_FNCODE_AQENQ = 90; + { OCIAQDeq } + OCI_FNCODE_AQDEQ = 91; + { OCIReset } + OCI_FNCODE_RESET = 92; + { OCISvcCtxToLda } + OCI_FNCODE_SVCCTXTOLDA = 93; + { OCILobLocatorAssign } + OCI_FNCODE_LOBLOCATORASSIGN = 94; + OCI_FNCODE_UBINDBYNAME = 95; + { OCIAQListen } + OCI_FNCODE_AQLISTEN = 96; + { reserved } + OCI_FNCODE_SVC2HST = 97; + { reserved } + OCI_FNCODE_SVCRH = 98; + { 97 and 98 are reserved for Oracle internal use } + { OCITransMultiPrepare } + OCI_FNCODE_TRANSMULTIPREPARE = 99; + { OCIConnectionPoolCreate } + OCI_FNCODE_CPOOLCREATE = 100; + { OCIConnectionPoolDestroy } + OCI_FNCODE_CPOOLDESTROY = 101; + { OCILogon2 } + OCI_FNCODE_LOGON2 = 102; + { OCIRowidToChar } + OCI_FNCODE_ROWIDTOCHAR = 103; + { OCISessionPoolCreate } + OCI_FNCODE_SPOOLCREATE = 104; + { OCISessionPoolDestroy } + OCI_FNCODE_SPOOLDESTROY = 105; + { OCISessionGet } + OCI_FNCODE_SESSIONGET = 106; + { OCISessionRelease } + OCI_FNCODE_SESSIONRELEASE = 107; + { OCIStmtPrepare2 } + OCI_FNCODE_STMTPREPARE2 = 108; + { OCIStmtRelease } + OCI_FNCODE_STMTRELEASE = 109; + { OCIAQEnqArray } + OCI_FNCODE_AQENQARRAY = 110; + { OCIAQDeqArray } + OCI_FNCODE_AQDEQARRAY = 111; + { OCILobCopy2 } + OCI_FNCODE_LOBCOPY2 = 112; + { OCILobErase2 } + OCI_FNCODE_LOBERASE2 = 113; + { OCILobGetLength2 } + OCI_FNCODE_LOBLENGTH2 = 114; + { OCILobLoadFromFile2 } + OCI_FNCODE_LOBLOADFROMFILE2 = 115; + { OCILobRead2 } + OCI_FNCODE_LOBREAD2 = 116; + { OCILobTrim2 } + OCI_FNCODE_LOBTRIM2 = 117; + { OCILobWrite2 } + OCI_FNCODE_LOBWRITE2 = 118; + { OCILobGetStorageLimit } + OCI_FNCODE_LOBGETSTORAGELIMIT = 119; + { OCIDBStartup } + OCI_FNCODE_DBSTARTUP = 120; + { OCIDBShutdown } + OCI_FNCODE_DBSHUTDOWN = 121; + { OCILobArrayRead } + OCI_FNCODE_LOBARRAYREAD = 122; + { OCILobArrayWrite } + OCI_FNCODE_LOBARRAYWRITE = 123; + { maximum OCI function code } + OCI_FNCODE_MAXFCN = 123; + {--------------------------------------------------------------------------- } + + type + {-----------------------Handle Definitions---------------------------------- } + POCIEnv = pointer; // OCI environment handle + POCIError = pointer; // OCI error handle + POCISvcCtx = pointer; // OCI service handle + POCIStmt = pointer; // OCI statement handle + POCIBind = pointer; // OCI bind handle + POCIDefine = pointer; // OCI Define handle + POCIDescribe = pointer; // OCI Describe handle + POCIServer = pointer; // OCI Server handle + POCISession = pointer; // OCI Authentication handle + POCIComplexObject = pointer;// OCI COR handle + POCITrans = pointer; // OCI Transaction handle + POCISecurity = pointer; // OCI Security handle + POCISubscription = pointer; // subscription handle + + POCICPool = pointer; // connection pool handle + POCISPool = pointer; // session pool handle + POCIAuthInfo = pointer; // auth handle + POCIAdmin = pointer; // admin handle + POCIEvent = pointer; // HA event handle + + + +{ OCIEnv = record end; // OCI environment handle + OCIError = record end; // OCI error handle + OCISvcCtx = record end; // OCI service handle + OCIStmt = record end; // OCI statement handle + OCIBind = record end; // OCI bind handle + OCIDefine = record end; // OCI Define handle + OCIDescribe = record end; // OCI Describe handle + OCIServer = record end; // OCI Server handle + OCISession = record end; // OCI Authentication handle + OCIComplexObject = record end;// OCI COR handle + OCITrans = record end; // OCI Transaction handle + OCISecurity = record end; // OCI Security handle + OCISubscription = record end; // subscription handle + + OCICPool = record end; // connection pool handle + OCISPool = record end; // session pool handle + OCIAuthInfo = record end; // auth handle + OCIAdmin = record end; // admin handle + OCIEvent = record end; // HA event handle + + POCIEnv = ^OCIEnv; + POCIError = ^OCIError; + POCISvcCtx = ^OCISvcCtx; + POCIStmt = ^OCIStmt; + POCIBind = ^OCIBind; + POCIDefine = ^OCIDefine; + POCIDescribe = ^OCIDescribe; + POCIServer = ^OCIServer; + POCISession = ^OCISession; + POCIComplexObject = ^OCIComplexObject; + POCITrans = ^OCITrans; + POCISecurity = ^OCISecurity; + POCISubscription = ^OCISubscription; + POCICPool = ^OCICPool; + POCISPool = ^OCISPool; + POCIAuthInfo = ^OCIAuthinfo; + POCIAdmin = ^OCIAdmin; + POCIEvent = ^OCIEvent;} + + {-----------------------Descriptor Definitions------------------------------ } + POCISnapshot = pointer; // OCI snapshot descriptor + POCIResult = pointer; // OCI Result Set Descriptor + POCILobLocator = pointer; // OCI Lob Locator descriptor + POCIParam = pointer; // OCI PARameter descriptor + POCIComplexObjectComp = pointer; // OCI COR descriptor + POCIROWID = pointer; // OCI ROWID descriptor +// POCIDateTime = pointer; // OCI DateTime descriptor + POCIInterval = pointer; // OCI Interval descriptor + POCIUcb = pointer; // OCI User Callback descriptor + POCIServerDNs = pointer; // OCI server DN descriptor + {-------------------------- AQ Descriptors --------------------------------- } + POCIAQEnqOptions = pointer; // AQ Enqueue Options hdl + POCIAQDeqOptions = pointer; // AQ Dequeue Options hdl + POCIAQMsgProperties = pointer; // AQ Mesg Properties + POCIAQAgent = pointer; // AQ Agent descriptor + POCIAQNfyDescriptor = pointer; // AQ Nfy descriptor + POCIAQSignature = pointer; // AQ Siganture + POCIAQListenOpts = pointer; // AQ listen options + POCIAQLisMsgProps = pointer; // AQ listen msg props + {--------------------------------------------------------------------------- } + { Lob typedefs for Pro*C } +// Only for OCCI, which isn't supported in Pascal +// OCILobLocator = OCIClobLocator; + { OCI Character LOB Locator } +// Only for OCCI, which isn't supported in Pascal +// OCILobLocator = OCIBlobLocator; + { OCI Binary LOB Locator } +// Only for OCCI, which isn't supported in Pascal +// OCILobLocator = OCIBFileLocator; + { OCI Binary LOB File Locator } + {--------------------------------------------------------------------------- } + { Undefined value for tz in interval types } + + const + OCI_INTHR_UNK = 24; + { These defined adjustment values } + OCI_ADJUST_UNK = 10; + OCI_ORACLE_DATE = 0; + OCI_ANSI_DATE = 1; + {------------------------ Lob-specific Definitions ------------------------- } + { + * ociloff - OCI Lob OFFset + * + * The offset in the lob data. The offset is specified in terms of bytes for + * BLOBs and BFILes. Character offsets are used for CLOBs, NCLOBs. + * The maximum size of internal lob data is 4 gigabytes. FILE LOB + * size is limited by the operating system. + } + + type + + POCILobOffset = ^OCILobOffset; + OCILobOffset = ub4; + { + * ocillen - OCI Lob LENgth (of lob data) + * + * Specifies the length of lob data in bytes for BLOBs and BFILes and in + * characters for CLOBs, NCLOBs. The maximum length of internal lob + * data is 4 gigabytes. The length of FILE LOBs is limited only by the + * operating system. + } + + POCILobLength = ^OCILobLength; + OCILobLength = ub4; + { + * ocilmo - OCI Lob open MOdes + * + * The mode specifies the planned operations that will be performed on the + * FILE lob data. The FILE lob can be opened in read-only mode only. + * + * In the future, we may include read/write, append and truncate modes. Append + * is equivalent to read/write mode except that the FILE is positioned for + * writing to the end. Truncate is equivalent to read/write mode except that + * the FILE LOB data is first truncated to a length of 0 before use. + } + { read-only } + { read_write for internal lobs only } + OCILobMode = (OCI_LOBMODE_READONLY := 1,OCI_LOBMODE_READWRITE := 2 + ); + + + POCILobMode = ^OCILobMode; + + {--------------------------------------------------------------------------- } + {--------------------------- FILE open modes ------------------------------- } + { readonly mode open for FILE types } + + const + OCI_FILE_READONLY = 1; + {--------------------------------------------------------------------------- } + {--------------------------- LOB open modes -------------------------------- } + { readonly mode open for ILOB types } + OCI_LOB_READONLY = 1; + { read write mode open for ILOBs } + OCI_LOB_READWRITE = 2; + {----------------------- LOB Buffering Flush Flags ------------------------- } + OCI_LOB_BUFFER_FREE = 1; + OCI_LOB_BUFFER_NOFREE = 2; + {--------------------------------------------------------------------------- } + {--------------------------- OCI Statement Types --------------------------- } + { select statement } + OCI_STMT_SELECT = 1; + { update statement } + OCI_STMT_UPDATE = 2; + { delete statement } + OCI_STMT_DELETE = 3; + { Insert Statement } + OCI_STMT_INSERT = 4; + { create statement } + OCI_STMT_CREATE = 5; + { drop statement } + OCI_STMT_DROP = 6; + { alter statement } + OCI_STMT_ALTER = 7; + { begin ... (pl/sql statement) } + OCI_STMT_BEGIN = 8; + { declare .. (pl/sql statement ) } + OCI_STMT_DECLARE = 9; + {--------------------------------------------------------------------------- } + {--------------------------- OCI Parameter Types --------------------------- } + { unknown } + OCI_PTYPE_UNK = 0; + { table } + OCI_PTYPE_TABLE = 1; + { view } + OCI_PTYPE_VIEW = 2; + { procedure } + OCI_PTYPE_PROC = 3; + { function } + OCI_PTYPE_FUNC = 4; + { package } + OCI_PTYPE_PKG = 5; + { user-defined type } + OCI_PTYPE_TYPE = 6; + { synonym } + OCI_PTYPE_SYN = 7; + { sequence } + OCI_PTYPE_SEQ = 8; + { column } + OCI_PTYPE_COL = 9; + { argument } + OCI_PTYPE_ARG = 10; + { list } + OCI_PTYPE_LIST = 11; + { user-defined type's attribute } + OCI_PTYPE_TYPE_ATTR = 12; + { collection type's element } + OCI_PTYPE_TYPE_COLL = 13; + { user-defined type's method } + OCI_PTYPE_TYPE_METHOD = 14; + { user-defined type method's arg } + OCI_PTYPE_TYPE_ARG = 15; + { user-defined type method's result } + OCI_PTYPE_TYPE_RESULT = 16; + { schema } + OCI_PTYPE_SCHEMA = 17; + { database } + OCI_PTYPE_DATABASE = 18; + { rule } + OCI_PTYPE_RULE = 19; + { rule set } + OCI_PTYPE_RULE_SET = 20; + { evaluation context } + OCI_PTYPE_EVALUATION_CONTEXT = 21; + { table alias } + OCI_PTYPE_TABLE_ALIAS = 22; + { variable type } + OCI_PTYPE_VARIABLE_TYPE = 23; + { name value pair } + OCI_PTYPE_NAME_VALUE = 24; + {--------------------------------------------------------------------------- } + {----------------------------- OCI List Types ------------------------------ } + { unknown } + OCI_LTYPE_UNK = 0; + { column list } + OCI_LTYPE_COLUMN = 1; + { procedure argument list } + OCI_LTYPE_ARG_PROC = 2; + { function argument list } + OCI_LTYPE_ARG_FUNC = 3; + { subprogram list } + OCI_LTYPE_SUBPRG = 4; + { type attribute } + OCI_LTYPE_TYPE_ATTR = 5; + { type method } + OCI_LTYPE_TYPE_METHOD = 6; + { type method w/o result argument list } + OCI_LTYPE_TYPE_ARG_PROC = 7; + { type method w/result argument list } + OCI_LTYPE_TYPE_ARG_FUNC = 8; + { schema object list } + OCI_LTYPE_SCH_OBJ = 9; + { database schema list } + OCI_LTYPE_DB_SCH = 10; + { subtype list } + OCI_LTYPE_TYPE_SUBTYPE = 11; + { table alias list } + OCI_LTYPE_TABLE_ALIAS = 12; + { variable type list } + OCI_LTYPE_VARIABLE_TYPE = 13; + { name value list } + OCI_LTYPE_NAME_VALUE = 14; + {--------------------------------------------------------------------------- } + {-------------------------- Memory Cartridge Services --------------------- } + OCI_MEMORY_CLEARED = 1; + {-------------------------- Pickler Cartridge Services --------------------- } + + type + POCIPicklerTdsCtx = pointer; + POCIPicklerTds = pointer; + POCIPicklerImage = pointer; + POCIPicklerFdo = pointer; + POCIPicklerTdsElement = ^OCIPicklerTdsElement; + OCIPicklerTdsElement = ub4; + + POCIAnyData = pointer; + + POCIAnyDataSet = pointer; + POCIAnyDataCtx = pointer; + + {--------------------------------------------------------------------------- } + {--------------------------- User Callback Constants ----------------------- } + { entry callback } + + const + OCI_UCBTYPE_ENTRY = 1; + { exit callback } + OCI_UCBTYPE_EXIT = 2; + { replacement callback } + OCI_UCBTYPE_REPLACE = 3; + {--------------------------------------------------------------------------- } + {--------------------- NLS service type and constance ---------------------- } + { Native name for Monday } + OCI_NLS_DAYNAME1 = 1; + { Native name for Tuesday } + OCI_NLS_DAYNAME2 = 2; + { Native name for Wednesday } + OCI_NLS_DAYNAME3 = 3; + { Native name for Thursday } + OCI_NLS_DAYNAME4 = 4; + { Native name for Friday } + OCI_NLS_DAYNAME5 = 5; + { Native name for for Saturday } + OCI_NLS_DAYNAME6 = 6; + { Native name for for Sunday } + OCI_NLS_DAYNAME7 = 7; + { Native abbreviated name for Monday } + OCI_NLS_ABDAYNAME1 = 8; + { Native abbreviated name for Tuesday } + OCI_NLS_ABDAYNAME2 = 9; + { Native abbreviated name for Wednesday } + OCI_NLS_ABDAYNAME3 = 10; + { Native abbreviated name for Thursday } + OCI_NLS_ABDAYNAME4 = 11; + { Native abbreviated name for Friday } + OCI_NLS_ABDAYNAME5 = 12; + { Native abbreviated name for for Saturday } + OCI_NLS_ABDAYNAME6 = 13; + { Native abbreviated name for for Sunday } + OCI_NLS_ABDAYNAME7 = 14; + { Native name for January } + OCI_NLS_MONTHNAME1 = 15; + { Native name for February } + OCI_NLS_MONTHNAME2 = 16; + { Native name for March } + OCI_NLS_MONTHNAME3 = 17; + { Native name for April } + OCI_NLS_MONTHNAME4 = 18; + { Native name for May } + OCI_NLS_MONTHNAME5 = 19; + { Native name for June } + OCI_NLS_MONTHNAME6 = 20; + { Native name for July } + OCI_NLS_MONTHNAME7 = 21; + { Native name for August } + OCI_NLS_MONTHNAME8 = 22; + { Native name for September } + OCI_NLS_MONTHNAME9 = 23; + { Native name for October } + OCI_NLS_MONTHNAME10 = 24; + { Native name for November } + OCI_NLS_MONTHNAME11 = 25; + { Native name for December } + OCI_NLS_MONTHNAME12 = 26; + { Native abbreviated name for January } + OCI_NLS_ABMONTHNAME1 = 27; + { Native abbreviated name for February } + OCI_NLS_ABMONTHNAME2 = 28; + { Native abbreviated name for March } + OCI_NLS_ABMONTHNAME3 = 29; + { Native abbreviated name for April } + OCI_NLS_ABMONTHNAME4 = 30; + { Native abbreviated name for May } + OCI_NLS_ABMONTHNAME5 = 31; + { Native abbreviated name for June } + OCI_NLS_ABMONTHNAME6 = 32; + { Native abbreviated name for July } + OCI_NLS_ABMONTHNAME7 = 33; + { Native abbreviated name for August } + OCI_NLS_ABMONTHNAME8 = 34; + { Native abbreviated name for September } + OCI_NLS_ABMONTHNAME9 = 35; + { Native abbreviated name for October } + OCI_NLS_ABMONTHNAME10 = 36; + { Native abbreviated name for November } + OCI_NLS_ABMONTHNAME11 = 37; + { Native abbreviated name for December } + OCI_NLS_ABMONTHNAME12 = 38; + { Native string for affirmative response } + OCI_NLS_YES = 39; + { Native negative response } + OCI_NLS_NO = 40; + { Native equivalent string of AM } + OCI_NLS_AM = 41; + { Native equivalent string of PM } + OCI_NLS_PM = 42; + { Native equivalent string of AD } + OCI_NLS_AD = 43; + { Native equivalent string of BC } + OCI_NLS_BC = 44; + { decimal character } + OCI_NLS_DECIMAL = 45; + { group separator } + OCI_NLS_GROUP = 46; + { Native symbol of debit } + OCI_NLS_DEBIT = 47; + { Native sumbol of credit } + OCI_NLS_CREDIT = 48; + { Oracle date format } + OCI_NLS_DATEFORMAT = 49; + { International currency symbol } + OCI_NLS_INT_CURRENCY = 50; + { Locale currency symbol } + OCI_NLS_LOC_CURRENCY = 51; + { Language name } + OCI_NLS_LANGUAGE = 52; + { Abbreviation for language name } + OCI_NLS_ABLANGUAGE = 53; + { Territory name } + OCI_NLS_TERRITORY = 54; + { Character set name } + OCI_NLS_CHARACTER_SET = 55; + { Linguistic name } + OCI_NLS_LINGUISTIC_NAME = 56; + { Calendar name } + OCI_NLS_CALENDAR = 57; + { Dual currency symbol } + OCI_NLS_DUAL_CURRENCY = 78; + { Language writing direction } + OCI_NLS_WRITINGDIR = 79; + { Territory Abbreviation } + OCI_NLS_ABTERRITORY = 80; + { Oracle default date format } + OCI_NLS_DDATEFORMAT = 81; + { Oracle default time format } + OCI_NLS_DTIMEFORMAT = 82; + { Local string formatted date format } + OCI_NLS_SFDATEFORMAT = 83; + { Local string formatted time format } + OCI_NLS_SFTIMEFORMAT = 84; + { Number grouping fields } + OCI_NLS_NUMGROUPING = 85; + { List separator } + OCI_NLS_LISTSEP = 86; + { Monetary decimal character } + OCI_NLS_MONDECIMAL = 87; + { Monetary group separator } + OCI_NLS_MONGROUP = 88; + { Monetary grouping fields } + OCI_NLS_MONGROUPING = 89; + { International currency separator } + OCI_NLS_INT_CURRENCYSEP = 90; + { Maximum character byte size } + OCI_NLS_CHARSET_MAXBYTESZ = 91; + { Fixed-width charset byte size } + OCI_NLS_CHARSET_FIXEDWIDTH = 92; + { Character set id } + OCI_NLS_CHARSET_ID = 93; + { NCharacter set id } + OCI_NLS_NCHARSET_ID = 94; + { Max buffer size may need for OCINlsGetInfo } + OCI_NLS_MAXBUFSZ = 100; + { for the binary comparison } + OCI_NLS_BINARY = $1; + { for linguistic comparison } + OCI_NLS_LINGUISTIC = $2; + { for case-insensitive comparison } + OCI_NLS_CASE_INSENSITIVE = $10; + { convert to uppercase } + OCI_NLS_UPPERCASE = $20; + { convert to lowercase } + OCI_NLS_LOWERCASE = $40; + { Map charset name from IANA to Oracle } + OCI_NLS_CS_IANA_TO_ORA = 0; + { Map charset name from Oracle to IANA } + OCI_NLS_CS_ORA_TO_IANA = 1; + { Map language name from ISO to Oracle } + OCI_NLS_LANG_ISO_TO_ORA = 2; + { Map language name from Oracle to ISO } + OCI_NLS_LANG_ORA_TO_ISO = 3; + { Map territory name from ISO to Oracle } + OCI_NLS_TERR_ISO_TO_ORA = 4; + { Map territory name from Oracle to ISO } + OCI_NLS_TERR_ORA_TO_ISO = 5; + { Map territory name from 3-letter ISO } + OCI_NLS_TERR_ISO3_TO_ORA = 6; + { abbreviation to Oracle } + { Map territory name from Oracle to } + OCI_NLS_TERR_ORA_TO_ISO3 = 7; + { 3-letter ISO abbreviation } + + type + POCIMsg = pointer; + + POCIWchar = ^OCIWchar; + OCIWchar = ub4; + + const + OCI_XMLTYPE_CREATE_OCISTRING = 1; + OCI_XMLTYPE_CREATE_CLOB = 2; + OCI_XMLTYPE_CREATE_BLOB = 3; + {------------------------- Kerber Authentication Modes --------------------- } + { Apply Kerberos Creds for Proxy } + OCI_KERBCRED_PROXY = 1; + {Apply Creds for Secure Client ID } + OCI_KERBCRED_CLIENT_IDENTIFIER = 2; + {------------------------- Database Startup Flags -------------------------- } + { Abort running instance, start } + OCI_DBSTARTUPFLAG_FORCE = $00000001; + { Restrict access to DBA } + OCI_DBSTARTUPFLAG_RESTRICT = $00000002; + {------------------------- Database Shutdown Modes ------------------------- } + { Wait for all the transactions } + OCI_DBSHUTDOWN_TRANSACTIONAL = 1; + { Wait for local transactions } + OCI_DBSHUTDOWN_TRANSACTIONAL_LOCAL = 2; + { Terminate and roll back } + OCI_DBSHUTDOWN_IMMEDIATE = 3; + { Terminate and don't roll back } + OCI_DBSHUTDOWN_ABORT = 4; + { Orderly shutdown } + OCI_DBSHUTDOWN_FINAL = 5; + {------------------------- Version information ----------------------------- } + { Major release version } + OCI_MAJOR_VERSION = 10; + { Minor release version } + OCI_MINOR_VERSION = 2; + {--------------------------------------------------------------------------- + PRIVATE TYPES AND CONSTANTS + --------------------------------------------------------------------------- } + { None } + {--------------------------------------------------------------------------- + PUBLIC FUNCTIONS + --------------------------------------------------------------------------- } + { see ociap.h or ocikp.h } + {--------------------------------------------------------------------------- + PRIVATE FUNCTIONS + --------------------------------------------------------------------------- } + { None } + + { more includes } +{$include oci1.inc} +{$include oro_interface.inc} + +{$include orl.inc} + +{$include ort.inc} + +{$include ociap.inc} + +{$IFDEF LinkDynamically} +Procedure InitialiseOCI; +Procedure ReleaseOCI; + +var OCILibraryHandle : TLibHandle; +{$ENDIF} + +implementation + +{$include oro_implementation.inc} + +{$IFDEF LinkDynamically} + +var RefCount : integer; + +Procedure InitialiseOCI; + +begin + inc(RefCount); + if RefCount = 1 then + begin + OCILibraryHandle:=loadlibrary(ocilib); + if (OCILibraryHandle=nilhandle) then + begin + RefCount := 0; + Raise EInOutError.Create('Can not load Oracle client. Is it installed? ('+ocilib+')'); + end; +{ ORL.inc} + pointer(OCINumberInc) := GetProcedureAddress(OCILibraryHandle,'OCINumberInc'); + pointer(OCINumberDec) := GetProcedureAddress(OCILibraryHandle,'OCINumberDec'); + pointer(OCINumberSetZero) := GetProcedureAddress(OCILibraryHandle,'OCINumberSetZero'); + pointer(OCINumberSetPi) := GetProcedureAddress(OCILibraryHandle,'OCINumberSetPi'); + pointer(OCINumberAdd) := GetProcedureAddress(OCILibraryHandle,'OCINumberAdd'); + pointer(OCINumberSub) := GetProcedureAddress(OCILibraryHandle,'OCINumberSub'); + pointer(OCINumberMul) := GetProcedureAddress(OCILibraryHandle,'OCINumberMul'); + pointer(OCINumberDiv) := GetProcedureAddress(OCILibraryHandle,'OCINumberDiv'); + pointer(OCINumberMod) := GetProcedureAddress(OCILibraryHandle,'OCINumberMod'); + pointer(OCINumberIntPower) := GetProcedureAddress(OCILibraryHandle,'OCINumberIntPower'); + pointer(OCINumberShift) := GetProcedureAddress(OCILibraryHandle,'OCINumberShift'); + pointer(OCINumberNeg) := GetProcedureAddress(OCILibraryHandle,'OCINumberNeg'); + pointer(OCINumberToText) := GetProcedureAddress(OCILibraryHandle,'OCINumberToText'); + pointer(OCINumberFromText) := GetProcedureAddress(OCILibraryHandle,'OCINumberFromText'); + pointer(OCINumberToInt) := GetProcedureAddress(OCILibraryHandle,'OCINumberToInt'); + pointer(OCINumberFromInt) := GetProcedureAddress(OCILibraryHandle,'OCINumberFromInt'); + pointer(OCINumberToReal) := GetProcedureAddress(OCILibraryHandle,'OCINumberToReal'); + pointer(OCINumberToRealArray) := GetProcedureAddress(OCILibraryHandle,'OCINumberToRealArray'); + pointer(OCINumberFromReal) := GetProcedureAddress(OCILibraryHandle,'OCINumberFromReal'); + pointer(OCINumberCmp) := GetProcedureAddress(OCILibraryHandle,'OCINumberCmp'); + pointer(OCINumberSign) := GetProcedureAddress(OCILibraryHandle,'OCINumberSign'); + pointer(OCINumberIsZero) := GetProcedureAddress(OCILibraryHandle,'OCINumberIsZero'); + pointer(OCINumberIsInt) := GetProcedureAddress(OCILibraryHandle,'OCINumberIsInt'); + pointer(OCINumberAssign) := GetProcedureAddress(OCILibraryHandle,'OCINumberAssign'); + pointer(OCINumberAbs) := GetProcedureAddress(OCILibraryHandle,'OCINumberAbs'); + pointer(OCINumberCeil) := GetProcedureAddress(OCILibraryHandle,'OCINumberCeil'); + pointer(OCINumberFloor) := GetProcedureAddress(OCILibraryHandle,'OCINumberFloor'); + pointer(OCINumberSqrt) := GetProcedureAddress(OCILibraryHandle,'OCINumberSqrt'); + pointer(OCINumberTrunc) := GetProcedureAddress(OCILibraryHandle,'OCINumberTrunc'); + pointer(OCINumberPower) := GetProcedureAddress(OCILibraryHandle,'OCINumberPower'); + pointer(OCINumberRound) := GetProcedureAddress(OCILibraryHandle,'OCINumberRound'); + pointer(OCINumberPrec) := GetProcedureAddress(OCILibraryHandle,'OCINumberPrec'); + pointer(OCINumberSin) := GetProcedureAddress(OCILibraryHandle,'OCINumberSin'); + pointer(OCINumberArcSin) := GetProcedureAddress(OCILibraryHandle,'OCINumberArcSin'); + pointer(OCINumberHypSin) := GetProcedureAddress(OCILibraryHandle,'OCINumberHypSin'); + pointer(OCINumberCos) := GetProcedureAddress(OCILibraryHandle,'OCINumberCos'); + pointer(OCINumberArcCos) := GetProcedureAddress(OCILibraryHandle,'OCINumberArcCos'); + pointer(OCINumberHypCos) := GetProcedureAddress(OCILibraryHandle,'OCINumberHypCos'); + pointer(OCINumberTan) := GetProcedureAddress(OCILibraryHandle,'OCINumberTan'); + pointer(OCINumberArcTan) := GetProcedureAddress(OCILibraryHandle,'OCINumberArcTan'); + pointer(OCINumberArcTan2) := GetProcedureAddress(OCILibraryHandle,'OCINumberArcTan2'); + pointer(OCINumberHypTan) := GetProcedureAddress(OCILibraryHandle,'OCINumberHypTan'); + pointer(OCINumberExp) := GetProcedureAddress(OCILibraryHandle,'OCINumberExp'); + pointer(OCINumberLn) := GetProcedureAddress(OCILibraryHandle,'OCINumberLn'); + pointer(OCINumberLog) := GetProcedureAddress(OCILibraryHandle,'OCINumberLog'); + pointer(OCIDateToText) := GetProcedureAddress(OCILibraryHandle,'var OCIDateToText'); + pointer(OCIDateFromText) := GetProcedureAddress(OCILibraryHandle,'OCIDateFromText'); + pointer(OCIDateCompare) := GetProcedureAddress(OCILibraryHandle,'OCIDateCompare'); + pointer(OCIDateAddMonths) := GetProcedureAddress(OCILibraryHandle,'OCIDateAddMonths'); + pointer(OCIDateAddDays) := GetProcedureAddress(OCILibraryHandle,'OCIDateAddDays'); + pointer(OCIDateLastDay) := GetProcedureAddress(OCILibraryHandle,'OCIDateLastDay'); + pointer(OCIDateDaysBetween) := GetProcedureAddress(OCILibraryHandle,'OCIDateDaysBetween'); + pointer(OCIDateZoneToZone) := GetProcedureAddress(OCILibraryHandle,'OCIDateZoneToZone'); + pointer(OCIDateNextDay) := GetProcedureAddress(OCILibraryHandle,'OCIDateNextDay'); + pointer(OCIDateCheck) := GetProcedureAddress(OCILibraryHandle,'OCIDateCheck'); + pointer(OCIDateSysDate) := GetProcedureAddress(OCILibraryHandle,'OCIDateSysDate'); + pointer(OCIStringAssign) := GetProcedureAddress(OCILibraryHandle,'OCIStringAssign'); + pointer(OCIStringAssignText) := GetProcedureAddress(OCILibraryHandle,'OCIStringAssignText'); + pointer(OCIStringResize) := GetProcedureAddress(OCILibraryHandle,'OCIStringResize'); + pointer(OCIStringSize) := GetProcedureAddress(OCILibraryHandle,'OCIStringSize'); + pointer(OCIStringPtr) := GetProcedureAddress(OCILibraryHandle,'OCIStringPtr'); + pointer(OCIStringAllocSize) := GetProcedureAddress(OCILibraryHandle,'OCIStringAllocSize'); + pointer(OCIRawAssignRaw) := GetProcedureAddress(OCILibraryHandle,'OCIRawAssignRaw'); + pointer(OCIRawAssignBytes) := GetProcedureAddress(OCILibraryHandle,'OCIRawAssignBytes'); + pointer(OCIRawResize) := GetProcedureAddress(OCILibraryHandle,'OCIRawResize'); + pointer(OCIRawSize) := GetProcedureAddress(OCILibraryHandle,'OCIRawSize'); + pointer(OCIRawPtr) := GetProcedureAddress(OCILibraryHandle,'OCIRawPtr'); + pointer(OCIRawAllocSize) := GetProcedureAddress(OCILibraryHandle,'OCIRawAllocSize'); + pointer(OCIRefClear) := GetProcedureAddress(OCILibraryHandle,'OCIRefClear'); + pointer(OCIRefToHex) := GetProcedureAddress(OCILibraryHandle,'OCIRefToHex'); + pointer(OCICollSize) := GetProcedureAddress(OCILibraryHandle,'OCICollSize'); + pointer(OCICollMax) := GetProcedureAddress(OCILibraryHandle,'OCICollMax'); + pointer(OCICollGetElem) := GetProcedureAddress(OCILibraryHandle,'OCICollGetElem'); + pointer(OCICollAssignElem) := GetProcedureAddress(OCILibraryHandle,'OCICollAssignElem'); + pointer(OCICollTrim) := GetProcedureAddress(OCILibraryHandle,'OCICollTrim'); + pointer(OCICollIsLocator) := GetProcedureAddress(OCILibraryHandle,'OCICollIsLocator'); + pointer(OCIIterCreate) := GetProcedureAddress(OCILibraryHandle,'OCIIterCreate'); + pointer(OCIIterDelete) := GetProcedureAddress(OCILibraryHandle,'OCIIterDelete'); + pointer(OCIIterInit) := GetProcedureAddress(OCILibraryHandle,'OCIIterInit'); + pointer(OCIIterGetCurrent) := GetProcedureAddress(OCILibraryHandle,'OCIIterGetCurrent'); + pointer(OCIIterPrev) := GetProcedureAddress(OCILibraryHandle,'OCIIterPrev'); + +{ ORT.inc} + + pointer(OCITypeIterNew) := GetProcedureAddress(OCILibraryHandle,'OCITypeIterNew'); + pointer(OCITypeArrayByName) := GetProcedureAddress(OCILibraryHandle,'OCITypeArrayByName'); + pointer(OCITypeArrayByRef) := GetProcedureAddress(OCILibraryHandle,'OCITypeArrayByRef'); + pointer(OCITypeSchema) := GetProcedureAddress(OCILibraryHandle,'OCITypeSchema'); + pointer(OCITypeCollTypeCode) := GetProcedureAddress(OCILibraryHandle,'OCITypeCollTypeCode'); + pointer(OCITypeAttrs) := GetProcedureAddress(OCILibraryHandle,'OCITypeAttrs'); + pointer(OCITypeElemName) := GetProcedureAddress(OCILibraryHandle,'OCITypeElemName'); + pointer(OCITypeElemType) := GetProcedureAddress(OCILibraryHandle,'OCITypeElemType'); + pointer(OCITypeElemFlags) := GetProcedureAddress(OCILibraryHandle,'OCITypeElemFlags'); + pointer(OCITypeElemNumScale) := GetProcedureAddress(OCILibraryHandle,'OCITypeElemNumScale'); + pointer(OCITypeElemCharSetID) := GetProcedureAddress(OCILibraryHandle,'OCITypeElemCharSetID'); + pointer(OCITypeElemParameterizedType) := GetProcedureAddress(OCILibraryHandle,'OCITypeElemParameterizedType'); + pointer(OCITypeAttrByName) := GetProcedureAddress(OCILibraryHandle,'OCITypeAttrByName'); + pointer(OCITypeMethodNext) := GetProcedureAddress(OCILibraryHandle,'OCITypeMethodNext'); + pointer(OCITypeMethodName) := GetProcedureAddress(OCILibraryHandle,'OCITypeMethodName'); + pointer(OCITypeMethodFlags) := GetProcedureAddress(OCILibraryHandle,'OCITypeMethodFlags'); + pointer(OCITypeMethodOrder) := GetProcedureAddress(OCILibraryHandle,'OCITypeMethodOrder'); + pointer(OCITypeResult) := GetProcedureAddress(OCILibraryHandle,'OCITypeResult'); + pointer(OCITypeParamByName) := GetProcedureAddress(OCILibraryHandle,'OCITypeParamByName'); + pointer(OCITypeElemDefaultValue) := GetProcedureAddress(OCILibraryHandle,'OCITypeElemDefaultValue'); + pointer(OCITypeVTInsert) := GetProcedureAddress(OCILibraryHandle,'OCITypeVTInsert'); + pointer(ortgcty) := GetProcedureAddress(OCILibraryHandle,'ortgcty'); + pointer(OCITypeBeginCreate) := GetProcedureAddress(OCILibraryHandle,'OCITypeBeginCreate'); + pointer(OCITypeSetCollection) := GetProcedureAddress(OCILibraryHandle,'OCITypeSetCollection'); + pointer(OCITypeSetBuiltin) := GetProcedureAddress(OCILibraryHandle,'OCITypeSetBuiltin'); + pointer(OCITypeAddAttr) := GetProcedureAddress(OCILibraryHandle,'OCITypeAddAttr'); + pointer(OCITypeEndCreate) := GetProcedureAddress(OCILibraryHandle,'OCITypeEndCreate'); + +{ nzt.inc} + + pointer(nzteStorePersona) := GetProcedureAddress(OCILibraryHandle,'nzteStorePersona'); + pointer(nzteRemovePersona) := GetProcedureAddress(OCILibraryHandle,'nzteRemovePersona'); + pointer(nzteCreatePersona) := GetProcedureAddress(OCILibraryHandle,'nzteCreatePersona'); + pointer(nztiStoreTrustedIdentity) := GetProcedureAddress(OCILibraryHandle,'nztiStoreTrustedIdentity'); + pointer(nzteSetProtection) := GetProcedureAddress(OCILibraryHandle,'nzteSetProtection'); + pointer(nzteGetProtection) := GetProcedureAddress(OCILibraryHandle,'nzteGetProtection'); + pointer(nztiRemoveIdentity) := GetProcedureAddress(OCILibraryHandle,'nztiRemoveIdentity'); + pointer(nztifdn) := GetProcedureAddress(OCILibraryHandle,'nztifdn'); + pointer(nztxSignExpansion) := GetProcedureAddress(OCILibraryHandle,'nztxSignExpansion'); + pointer(nztxsd_SignDetachedExpansion) := GetProcedureAddress(OCILibraryHandle,'nztxsd_SignDetachedExpansion'); + pointer(nztEncrypt) := GetProcedureAddress(OCILibraryHandle,'nztEncrypt'); + pointer(nztxEncryptExpansion) := GetProcedureAddress(OCILibraryHandle,'nztxEncryptExpansion'); + pointer(nztDecrypt) := GetProcedureAddress(OCILibraryHandle,'nztDecrypt'); + pointer(nztEnvelope) := GetProcedureAddress(OCILibraryHandle,'nztEnvelope'); + pointer(nztDeEnvelope) := GetProcedureAddress(OCILibraryHandle,'nztDeEnvelope'); + pointer(nztKeyedHash) := GetProcedureAddress(OCILibraryHandle,'nztKeyedHash'); + pointer(nztxKeyedHashExpansion) := GetProcedureAddress(OCILibraryHandle,'nztxKeyedHashExpansion'); + pointer(nztxHashExpansion) := GetProcedureAddress(OCILibraryHandle,'nztxHashExpansion'); + pointer(nztiae_IsAuthEnabled) := GetProcedureAddress(OCILibraryHandle,'nztiae_IsAuthEnabled'); + pointer(nztiee_IsEncrEnabled) := GetProcedureAddress(OCILibraryHandle,'nztiee_IsEncrEnabled'); + pointer(nztihe_IsHashEnabled) := GetProcedureAddress(OCILibraryHandle,'nztihe_IsHashEnabled'); + pointer(nztGetIssuerName) := GetProcedureAddress(OCILibraryHandle,'nztGetIssuerName'); + pointer(nztGetSubjectName) := GetProcedureAddress(OCILibraryHandle,'nztGetSubjectName'); + pointer(nztGetBase64Cert) := GetProcedureAddress(OCILibraryHandle,'nztGetBase64Cert'); + pointer(nztGetSerialNumber) := GetProcedureAddress(OCILibraryHandle,'nztGetSerialNumber'); + pointer(nztGetValidDate) := GetProcedureAddress(OCILibraryHandle,'nztGetValidDate'); + pointer(nztGetVersion) := GetProcedureAddress(OCILibraryHandle,'nztGetVersion'); + pointer(nztGetPublicKey) := GetProcedureAddress(OCILibraryHandle,'nztGetPublicKey'); + pointer(nztGenericDestroy) := GetProcedureAddress(OCILibraryHandle,'nztGenericDestroy'); + pointer(nztSetAppDefaultLocation) := GetProcedureAddress(OCILibraryHandle,'nztSetAppDefaultLocation'); + pointer(nztSearchNZDefault) := GetProcedureAddress(OCILibraryHandle,'nztSearchNZDefault'); + +{ ociap.inc} + + pointer(OCIInitialize) := GetProcedureAddress(OCILibraryHandle,'OCIInitialize'); + pointer(OCITerminate) := GetProcedureAddress(OCILibraryHandle,'OCITerminate'); + pointer(OCIEnvCreate) := GetProcedureAddress(OCILibraryHandle,'OCIEnvCreate'); + pointer(OCIEnvNlsCreate) := GetProcedureAddress(OCILibraryHandle,'OCIEnvNlsCreate'); + pointer(OCIFEnvCreate) := GetProcedureAddress(OCILibraryHandle,'OCIFEnvCreate'); + pointer(OCIHandleAlloc) := GetProcedureAddress(OCILibraryHandle,'OCIHandleAlloc'); + pointer(OCIHandleFree) := GetProcedureAddress(OCILibraryHandle,'OCIHandleFree'); + pointer(OCIDescriptorAlloc) := GetProcedureAddress(OCILibraryHandle,'OCIDescriptorAlloc'); + pointer(OCIDescriptorFree) := GetProcedureAddress(OCILibraryHandle,'OCIDescriptorFree'); + pointer(OCIEnvInit) := GetProcedureAddress(OCILibraryHandle,'OCIEnvInit'); + pointer(OCIServerAttach) := GetProcedureAddress(OCILibraryHandle,'OCIServerAttach'); + pointer(OCIServerDetach) := GetProcedureAddress(OCILibraryHandle,'OCIServerDetach'); + pointer(OCISessionBegin) := GetProcedureAddress(OCILibraryHandle,'OCISessionBegin'); + pointer(OCISessionEnd) := GetProcedureAddress(OCILibraryHandle,'OCISessionEnd'); + pointer(OCILogon) := GetProcedureAddress(OCILibraryHandle,'OCILogon'); + pointer(OCILogon2) := GetProcedureAddress(OCILibraryHandle,'OCILogon2'); + pointer(OCILogoff) := GetProcedureAddress(OCILibraryHandle,'OCILogoff'); + pointer(OCIPasswordChange) := GetProcedureAddress(OCILibraryHandle,'OCIPasswordChange'); + pointer(OCIStmtPrepare) := GetProcedureAddress(OCILibraryHandle,'OCIStmtPrepare'); + pointer(OCIStmtPrepare2) := GetProcedureAddress(OCILibraryHandle,'OCIStmtPrepare2'); + pointer(OCIStmtRelease) := GetProcedureAddress(OCILibraryHandle,'OCIStmtRelease'); + pointer(OCIBindByPos) := GetProcedureAddress(OCILibraryHandle,'OCIBindByPos'); + pointer(OCIBindByName) := GetProcedureAddress(OCILibraryHandle,'OCIBindByName'); + pointer(OCIBindObject) := GetProcedureAddress(OCILibraryHandle,'OCIBindObject'); + pointer(OCIBindDynamic) := GetProcedureAddress(OCILibraryHandle,'OCIBindDynamic'); + pointer(OCIBindArrayOfStruct) := GetProcedureAddress(OCILibraryHandle,'OCIBindArrayOfStruct'); + pointer(OCIStmtGetPieceInfo) := GetProcedureAddress(OCILibraryHandle,'OCIStmtGetPieceInfo'); + pointer(OCIStmtSetPieceInfo) := GetProcedureAddress(OCILibraryHandle,'OCIStmtSetPieceInfo'); + pointer(OCIStmtExecute) := GetProcedureAddress(OCILibraryHandle,'OCIStmtExecute'); + pointer(OCIDefineByPos) := GetProcedureAddress(OCILibraryHandle,'OCIDefineByPos'); + pointer(OCIDefineObject) := GetProcedureAddress(OCILibraryHandle,'OCIDefineObject'); + pointer(OCIDefineDynamic) := GetProcedureAddress(OCILibraryHandle,'OCIDefineDynamic'); + pointer(OCIRowidToChar) := GetProcedureAddress(OCILibraryHandle,'OCIRowidToChar'); + pointer(OCIDefineArrayOfStruct) := GetProcedureAddress(OCILibraryHandle,'OCIDefineArrayOfStruct'); + pointer(OCIStmtFetch) := GetProcedureAddress(OCILibraryHandle,'OCIStmtFetch'); + pointer(OCIStmtFetch2) := GetProcedureAddress(OCILibraryHandle,'OCIStmtFetch2'); + pointer(OCIStmtGetBindInfo) := GetProcedureAddress(OCILibraryHandle,'OCIStmtGetBindInfo'); + pointer(OCIDescribeAny) := GetProcedureAddress(OCILibraryHandle,'OCIDescribeAny'); + pointer(OCIParamGet) := GetProcedureAddress(OCILibraryHandle,'OCIParamGet'); + pointer(OCIParamSet) := GetProcedureAddress(OCILibraryHandle,'OCIParamSet'); + pointer(OCITransStart) := GetProcedureAddress(OCILibraryHandle,'OCITransStart'); + pointer(OCITransDetach) := GetProcedureAddress(OCILibraryHandle,'OCITransDetach'); + pointer(OCITransCommit) := GetProcedureAddress(OCILibraryHandle,'OCITransCommit'); + pointer(OCITransRollback) := GetProcedureAddress(OCILibraryHandle,'OCITransRollback'); + pointer(OCITransPrepare) := GetProcedureAddress(OCILibraryHandle,'OCITransPrepare'); + pointer(OCITransMultiPrepare) := GetProcedureAddress(OCILibraryHandle,'OCITransMultiPrepare'); + pointer(OCITransForget) := GetProcedureAddress(OCILibraryHandle,'OCITransForget'); + pointer(OCIErrorGet) := GetProcedureAddress(OCILibraryHandle,'OCIErrorGet'); + pointer(OCILobAppend) := GetProcedureAddress(OCILibraryHandle,'OCILobAppend'); + pointer(OCILobAssign) := GetProcedureAddress(OCILibraryHandle,'OCILobAssign'); + pointer(OCILobCharSetForm) := GetProcedureAddress(OCILibraryHandle,'OCILobCharSetForm'); + pointer(OCILobCharSetId) := GetProcedureAddress(OCILibraryHandle,'OCILobCharSetId'); + pointer(OCILobCopy) := GetProcedureAddress(OCILibraryHandle,'OCILobCopy'); + pointer(OCILobCreateTemporary) := GetProcedureAddress(OCILibraryHandle,'OCILobCreateTemporary'); + pointer(OCILobClose) := GetProcedureAddress(OCILibraryHandle,'OCILobClose'); + pointer(OCILobDisableBuffering) := GetProcedureAddress(OCILibraryHandle,'OCILobDisableBuffering'); + pointer(OCILobEnableBuffering) := GetProcedureAddress(OCILibraryHandle,'OCILobEnableBuffering'); + pointer(OCILobErase) := GetProcedureAddress(OCILibraryHandle,'OCILobErase'); + pointer(OCILobFileClose) := GetProcedureAddress(OCILibraryHandle,'OCILobFileClose'); + pointer(OCILobFileCloseAll) := GetProcedureAddress(OCILibraryHandle,'OCILobFileCloseAll'); + pointer(OCILobFileExists) := GetProcedureAddress(OCILibraryHandle,'OCILobFileExists'); + pointer(OCILobFileGetName) := GetProcedureAddress(OCILibraryHandle,'OCILobFileGetName'); + pointer(OCILobFileIsOpen) := GetProcedureAddress(OCILibraryHandle,'OCILobFileIsOpen'); + pointer(OCILobFileOpen) := GetProcedureAddress(OCILibraryHandle,'OCILobFileOpen'); + pointer(OCILobFileSetName) := GetProcedureAddress(OCILibraryHandle,'OCILobFileSetName'); + pointer(OCILobFlushBuffer) := GetProcedureAddress(OCILibraryHandle,'OCILobFlushBuffer'); + pointer(OCILobFreeTemporary) := GetProcedureAddress(OCILibraryHandle,'OCILobFreeTemporary'); + pointer(OCILobGetChunkSize) := GetProcedureAddress(OCILibraryHandle,'OCILobGetChunkSize'); + pointer(OCILobGetLength) := GetProcedureAddress(OCILibraryHandle,'OCILobGetLength'); + pointer(OCILobIsEqual) := GetProcedureAddress(OCILibraryHandle,'OCILobIsEqual'); + pointer(OCILobIsOpen) := GetProcedureAddress(OCILibraryHandle,'OCILobIsOpen'); + pointer(OCILobIsTemporary) := GetProcedureAddress(OCILibraryHandle,'OCILobIsTemporary'); + pointer(OCILobLoadFromFile) := GetProcedureAddress(OCILibraryHandle,'OCILobLoadFromFile'); + pointer(OCILobLocatorAssign) := GetProcedureAddress(OCILibraryHandle,'OCILobLocatorAssign'); + pointer(OCILobLocatorIsInit) := GetProcedureAddress(OCILibraryHandle,'OCILobLocatorIsInit'); + pointer(OCILobOpen) := GetProcedureAddress(OCILibraryHandle,'OCILobOpen'); + pointer(OCILobRead) := GetProcedureAddress(OCILibraryHandle,'OCILobRead'); + pointer(OCILobTrim) := GetProcedureAddress(OCILibraryHandle,'OCILobTrim'); + pointer(OCILobWrite) := GetProcedureAddress(OCILibraryHandle,'OCILobWrite'); + pointer(OCILobWriteAppend) := GetProcedureAddress(OCILibraryHandle,'OCILobWriteAppend'); + pointer(OCIBreak) := GetProcedureAddress(OCILibraryHandle,'OCIBreak'); + pointer(OCIReset) := GetProcedureAddress(OCILibraryHandle,'OCIReset'); + pointer(OCIServerVersion) := GetProcedureAddress(OCILibraryHandle,'OCIServerVersion'); + pointer(OCIServerRelease) := GetProcedureAddress(OCILibraryHandle,'OCIServerRelease'); + pointer(OCIAttrGet) := GetProcedureAddress(OCILibraryHandle,'OCIAttrGet'); + pointer(OCIAttrSet) := GetProcedureAddress(OCILibraryHandle,'OCIAttrSet'); + pointer(OCISvcCtxToLda) := GetProcedureAddress(OCILibraryHandle,'OCISvcCtxToLda'); + pointer(OCILdaToSvcCtx) := GetProcedureAddress(OCILibraryHandle,'OCILdaToSvcCtx'); + pointer(OCIResultSetToStmt) := GetProcedureAddress(OCILibraryHandle,'OCIResultSetToStmt'); + pointer(OCIFileClose) := GetProcedureAddress(OCILibraryHandle,'OCIFileClose'); + pointer(OCISharedLibInit) := GetProcedureAddress(OCILibraryHandle,'OCISharedLibInit'); + pointer(OCIFileExists) := GetProcedureAddress(OCILibraryHandle,'OCIFileExists'); + pointer(OCIFileFlush) := GetProcedureAddress(OCILibraryHandle,'OCIFileFlush'); + pointer(OCIFileGetLength) := GetProcedureAddress(OCILibraryHandle,'OCIFileGetLength'); + pointer(OCIFileInit) := GetProcedureAddress(OCILibraryHandle,'OCIFileInit'); + pointer(OCIFileOpen) := GetProcedureAddress(OCILibraryHandle,'OCIFileOpen'); + pointer(OCIFileRead) := GetProcedureAddress(OCILibraryHandle,'OCIFileRead'); + pointer(OCIFileSeek) := GetProcedureAddress(OCILibraryHandle,'OCIFileSeek'); + pointer(OCIFileTerm) := GetProcedureAddress(OCILibraryHandle,'OCIFileTerm'); + pointer(OCIFileWrite) := GetProcedureAddress(OCILibraryHandle,'OCIFileWrite'); +{$ifdef ORAXB8_DEFINED} + pointer(OCILobCopy2) := GetProcedureAddress(OCILibraryHandle,'OCILobCopy2'); + pointer(OCILobErase2) := GetProcedureAddress(OCILibraryHandle,'OCILobErase2'); + pointer(OCILobGetLength2) := GetProcedureAddress(OCILibraryHandle,'OCILobGetLength2'); + pointer(OCILobLoadFromFile2) := GetProcedureAddress(OCILibraryHandle,'OCILobLoadFromFile2'); + pointer(OCILobRead2) := GetProcedureAddress(OCILibraryHandle,'OCILobRead2'); + pointer(OCILobArrayRead) := GetProcedureAddress(OCILibraryHandle,'OCILobArrayRead'); + pointer(OCILobTrim2) := GetProcedureAddress(OCILibraryHandle,'OCILobTrim2'); + pointer(OCILobWrite2) := GetProcedureAddress(OCILibraryHandle,'OCILobWrite2'); + pointer(OCILobArrayWrite) := GetProcedureAddress(OCILibraryHandle,'OCILobArrayWrite'); + pointer(OCILobWriteAppend2) := GetProcedureAddress(OCILibraryHandle,'OCILobWriteAppend2'); + pointer(OCILobGetStorageLimit) := GetProcedureAddress(OCILibraryHandle,'OCILobGetStorageLimit'); +{$endif} + pointer(OCISecurityInitialize) := GetProcedureAddress(OCILibraryHandle,'OCISecurityInitialize'); + pointer(OCISecurityTerminate) := GetProcedureAddress(OCILibraryHandle,'OCISecurityTerminate'); + pointer(OCISecurityOpenWallet) := GetProcedureAddress(OCILibraryHandle,'OCISecurityOpenWallet'); + pointer(OCISecurityCloseWallet) := GetProcedureAddress(OCILibraryHandle,'OCISecurityCloseWallet'); + pointer(OCISecurityCreateWallet) := GetProcedureAddress(OCILibraryHandle,'OCISecurityCreateWallet'); + pointer(OCISecurityDestroyWallet) := GetProcedureAddress(OCILibraryHandle,'OCISecurityDestroyWallet'); + pointer(OCISecurityStorePersona) := GetProcedureAddress(OCILibraryHandle,'OCISecurityStorePersona'); + pointer(OCISecurityOpenPersona) := GetProcedureAddress(OCILibraryHandle,'OCISecurityOpenPersona'); + pointer(OCISecurityClosePersona) := GetProcedureAddress(OCILibraryHandle,'OCISecurityClosePersona'); + pointer(OCISecurityRemovePersona) := GetProcedureAddress(OCILibraryHandle,'OCISecurityRemovePersona'); + pointer(OCISecurityCreatePersona) := GetProcedureAddress(OCILibraryHandle,'OCISecurityCreatePersona'); + pointer(OCISecuritySetProtection) := GetProcedureAddress(OCILibraryHandle,'OCISecuritySetProtection'); + pointer(OCISecurityGetProtection) := GetProcedureAddress(OCILibraryHandle,'OCISecurityGetProtection'); + pointer(OCISecurityRemoveIdentity) := GetProcedureAddress(OCILibraryHandle,'OCISecurityRemoveIdentity'); + pointer(OCISecurityCreateIdentity) := GetProcedureAddress(OCILibraryHandle,'OCISecurityCreateIdentity'); + pointer(OCISecurityAbortIdentity) := GetProcedureAddress(OCILibraryHandle,'OCISecurityAbortIdentity'); + pointer(OCISecurityFreeIdentity) := GetProcedureAddress(OCILibraryHandle,'OCISecurityFreeIdentity'); + pointer(OCISecurityStoreTrustedIdentity) := GetProcedureAddress(OCILibraryHandle,'OCISecurityStoreTrustedIdentity'); + pointer(OCISecuritySign) := GetProcedureAddress(OCILibraryHandle,'OCISecuritySign'); + pointer(OCISecuritySignExpansion) := GetProcedureAddress(OCILibraryHandle,'OCISecuritySignExpansion'); + pointer(OCISecurityVerify) := GetProcedureAddress(OCILibraryHandle,'OCISecurityVerify'); + pointer(OCISecurityValidate) := GetProcedureAddress(OCILibraryHandle,'OCISecurityValidate'); + pointer(OCISecuritySignDetached) := GetProcedureAddress(OCILibraryHandle,'OCISecuritySignDetached'); + pointer(OCISecuritySignDetExpansion) := GetProcedureAddress(OCILibraryHandle,'OCISecuritySignDetExpansion'); + pointer(OCISecurityVerifyDetached) := GetProcedureAddress(OCILibraryHandle,'OCISecurityVerifyDetached'); + pointer(OCISecurity_PKEncrypt) := GetProcedureAddress(OCILibraryHandle,'OCISecurity_PKEncrypt'); + pointer(OCISecurityPKEncryptExpansion) := GetProcedureAddress(OCILibraryHandle,'OCISecurityPKEncryptExpansion'); + pointer(OCISecurityPKDecrypt) := GetProcedureAddress(OCILibraryHandle,'OCISecurityPKDecrypt'); + pointer(OCISecurityEncrypt) := GetProcedureAddress(OCILibraryHandle,'OCISecurityEncrypt'); + pointer(OCISecurityEncryptExpansion) := GetProcedureAddress(OCILibraryHandle,'OCISecurityEncryptExpansion'); + pointer(OCISecurityDecrypt) := GetProcedureAddress(OCILibraryHandle,'OCISecurityDecrypt'); + pointer(OCISecurityEnvelope) := GetProcedureAddress(OCILibraryHandle,'OCISecurityEnvelope'); + pointer(OCISecurityDeEnvelope) := GetProcedureAddress(OCILibraryHandle,'OCISecurityDeEnvelope'); + pointer(OCISecurityKeyedHash) := GetProcedureAddress(OCILibraryHandle,'OCISecurityKeyedHash'); + pointer(OCISecurityKeyedHashExpansion) := GetProcedureAddress(OCILibraryHandle,'OCISecurityKeyedHashExpansion'); + pointer(OCISecurityHash) := GetProcedureAddress(OCILibraryHandle,'OCISecurityHash'); + pointer(OCISecurityHashExpansion) := GetProcedureAddress(OCILibraryHandle,'OCISecurityHashExpansion'); + pointer(OCISecuritySeedRandom) := GetProcedureAddress(OCILibraryHandle,'OCISecuritySeedRandom'); + pointer(OCISecurityRandomBytes) := GetProcedureAddress(OCILibraryHandle,'OCISecurityRandomBytes'); + pointer(OCISecurityRandomNumber) := GetProcedureAddress(OCILibraryHandle,'OCISecurityRandomNumber'); + pointer(OCISecurityInitBlock) := GetProcedureAddress(OCILibraryHandle,'OCISecurityInitBlock'); + pointer(OCISecurityReuseBlock) := GetProcedureAddress(OCILibraryHandle,'OCISecurityReuseBlock'); + pointer(OCISecurityPurgeBlock) := GetProcedureAddress(OCILibraryHandle,'OCISecurityPurgeBlock'); + pointer(OCISecuritySetBlock) := GetProcedureAddress(OCILibraryHandle,'OCISecuritySetBlock'); + pointer(OCISecurityGetIdentity) := GetProcedureAddress(OCILibraryHandle,'OCISecurityGetIdentity'); + pointer(OCIAQEnq) := GetProcedureAddress(OCILibraryHandle,'OCIAQEnq'); + pointer(OCIAQDeq) := GetProcedureAddress(OCILibraryHandle,'OCIAQDeq'); + pointer(OCIAQEnqArray) := GetProcedureAddress(OCILibraryHandle,'OCIAQEnqArray'); + pointer(OCIAQDeqArray) := GetProcedureAddress(OCILibraryHandle,'OCIAQDeqArray'); + pointer(OCIAQListen) := GetProcedureAddress(OCILibraryHandle,'OCIAQListen'); + pointer(OCIAQListen2) := GetProcedureAddress(OCILibraryHandle,'OCIAQListen2'); + pointer(OCIExtractInit) := GetProcedureAddress(OCILibraryHandle,'OCIExtractInit'); + pointer(OCIExtractTerm) := GetProcedureAddress(OCILibraryHandle,'OCIExtractTerm'); + pointer(OCIExtractReset) := GetProcedureAddress(OCILibraryHandle,'OCIExtractReset'); + pointer(OCIExtractSetNumKeys) := GetProcedureAddress(OCILibraryHandle,'OCIExtractSetNumKeys'); + pointer(OCIExtractSetKey) := GetProcedureAddress(OCILibraryHandle,'OCIExtractSetKey'); + pointer(OCIExtractFromFile) := GetProcedureAddress(OCILibraryHandle,'OCIExtractFromFile'); + pointer(OCIExtractFromStr) := GetProcedureAddress(OCILibraryHandle,'OCIExtractFromStr'); + pointer(OCIExtractToInt) := GetProcedureAddress(OCILibraryHandle,'OCIExtractToInt'); + pointer(OCIExtractToBool) := GetProcedureAddress(OCILibraryHandle,'OCIExtractToBool'); + pointer(OCIExtractToStr) := GetProcedureAddress(OCILibraryHandle,'OCIExtractToStr'); + pointer(OCIExtractToOCINum) := GetProcedureAddress(OCILibraryHandle,'OCIExtractToOCINum'); + pointer(OCIExtractToList) := GetProcedureAddress(OCILibraryHandle,'OCIExtractToList'); + pointer(OCIExtractFromList) := GetProcedureAddress(OCILibraryHandle,'OCIExtractFromList'); + pointer(OCIMemoryAlloc) := GetProcedureAddress(OCILibraryHandle,'OCIMemoryAlloc'); + pointer(OCIMemoryResize) := GetProcedureAddress(OCILibraryHandle,'OCIMemoryResize'); + pointer(OCIMemoryFree) := GetProcedureAddress(OCILibraryHandle,'OCIMemoryFree'); + pointer(OCIContextSetValue) := GetProcedureAddress(OCILibraryHandle,'OCIContextSetValue'); + pointer(OCIContextGetValue) := GetProcedureAddress(OCILibraryHandle,'OCIContextGetValue'); + pointer(OCIContextClearValue) := GetProcedureAddress(OCILibraryHandle,'OCIContextClearValue'); + pointer(OCIContextGenerateKey) := GetProcedureAddress(OCILibraryHandle,'OCIContextGenerateKey'); + pointer(OCIMemorySetCurrentIDs) := GetProcedureAddress(OCILibraryHandle,'OCIMemorySetCurrentIDs'); + pointer(OCIPicklerTdsCtxInit) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerTdsCtxInit'); + pointer(OCIPicklerTdsCtxFree) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerTdsCtxFree'); + pointer(OCIPicklerTdsInit) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerTdsInit'); + pointer(OCIPicklerTdsFree) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerTdsFree'); + pointer(OCIPicklerTdsCreateElementNumber) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerTdsCreateElementNumber'); + pointer(OCIPicklerTdsCreateElementChar) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerTdsCreateElementChar'); + pointer(OCIPicklerTdsCreateElementVarchar) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerTdsCreateElementVarchar'); + pointer(OCIPicklerTdsCreateElementRaw) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerTdsCreateElementRaw'); + pointer(OCIPicklerTdsCreateElement) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerTdsCreateElement'); + pointer(OCIPicklerTdsAddAttr) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerTdsAddAttr'); + pointer(OCIPicklerTdsGenerate) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerTdsGenerate'); + pointer(OCIPicklerTdsGetAttr) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerTdsGetAttr'); + pointer(OCIPicklerFdoInit) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerFdoInit'); + pointer(OCIPicklerFdoFree) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerFdoFree'); + pointer(OCIPicklerImageInit) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerImageInit'); + pointer(OCIPicklerImageFree) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerImageFree'); + pointer(OCIPicklerImageAddScalar) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerImageAddScalar'); + pointer(OCIPicklerImageAddNullScalar) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerImageAddNullScalar'); + pointer(OCIPicklerImageGenerate) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerImageGenerate'); + pointer(OCIPicklerImageGetScalarSize) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerImageGetScalarSize'); + pointer(OCIPicklerImageGetScalar) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerImageGetScalar'); + pointer(OCIPicklerImageCollBegin) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerImageCollBegin'); + pointer(OCIPicklerImageCollAddScalar) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerImageCollAddScalar'); + pointer(OCIPicklerImageCollEnd) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerImageCollEnd'); + pointer(OCIPicklerImageCollBeginScan) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerImageCollBeginScan'); + pointer(OCIPicklerImageCollGetScalarSize) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerImageCollGetScalarSize'); + pointer(OCIPicklerImageCollGetScalar) := GetProcedureAddress(OCILibraryHandle,'OCIPicklerImageCollGetScalar'); + pointer(OCIAnyDataGetType) := GetProcedureAddress(OCILibraryHandle,'OCIAnyDataGetType'); + pointer(OCIAnyDataIsNull) := GetProcedureAddress(OCILibraryHandle,'OCIAnyDataIsNull'); + pointer(OCIAnyDataConvert) := GetProcedureAddress(OCILibraryHandle,'OCIAnyDataConvert'); + pointer(OCIAnyDataBeginCreate) := GetProcedureAddress(OCILibraryHandle,'OCIAnyDataBeginCreate'); + pointer(OCIAnyDataDestroy) := GetProcedureAddress(OCILibraryHandle,'OCIAnyDataDestroy'); + pointer(OCIAnyDataAttrSet) := GetProcedureAddress(OCILibraryHandle,'OCIAnyDataAttrSet'); + pointer(OCIAnyDataCollAddElem) := GetProcedureAddress(OCILibraryHandle,'OCIAnyDataCollAddElem'); + pointer(OCIAnyDataEndCreate) := GetProcedureAddress(OCILibraryHandle,'OCIAnyDataEndCreate'); + pointer(OCIAnyDataAccess) := GetProcedureAddress(OCILibraryHandle,'OCIAnyDataAccess'); + pointer(OCIAnyDataGetCurrAttrNum) := GetProcedureAddress(OCILibraryHandle,'OCIAnyDataGetCurrAttrNum'); + pointer(OCIAnyDataAttrGet) := GetProcedureAddress(OCILibraryHandle,'OCIAnyDataAttrGet'); + pointer(OCIAnyDataCollGetElem) := GetProcedureAddress(OCILibraryHandle,'OCIAnyDataCollGetElem'); + pointer(OCIAnyDataSetBeginCreate) := GetProcedureAddress(OCILibraryHandle,'OCIAnyDataSetBeginCreate'); + pointer(OCIAnyDataSetDestroy) := GetProcedureAddress(OCILibraryHandle,'OCIAnyDataSetDestroy'); + pointer(OCIAnyDataSetAddInstance) := GetProcedureAddress(OCILibraryHandle,'OCIAnyDataSetAddInstance'); + pointer(OCIAnyDataSetEndCreate) := GetProcedureAddress(OCILibraryHandle,'OCIAnyDataSetEndCreate'); + pointer(OCIAnyDataSetGetType) := GetProcedureAddress(OCILibraryHandle,'OCIAnyDataSetGetType'); + pointer(OCIAnyDataSetGetCount) := GetProcedureAddress(OCILibraryHandle,'OCIAnyDataSetGetCount'); + pointer(OCIAnyDataSetGetInstance) := GetProcedureAddress(OCILibraryHandle,'OCIAnyDataSetGetInstance'); + pointer(OCIFormatInit) := GetProcedureAddress(OCILibraryHandle,'OCIFormatInit'); + pointer(OCIFormatString) := GetProcedureAddress(OCILibraryHandle,'OCIFormatString'); + pointer(OCIFormatTerm) := GetProcedureAddress(OCILibraryHandle,'OCIFormatTerm'); + pointer(OCIFormatTUb1) := GetProcedureAddress(OCILibraryHandle,'OCIFormatTUb1'); + pointer(OCIFormatTUb2) := GetProcedureAddress(OCILibraryHandle,'OCIFormatTUb2'); + pointer(OCIFormatTUb4) := GetProcedureAddress(OCILibraryHandle,'OCIFormatTUb4'); + pointer(OCIFormatTUword) := GetProcedureAddress(OCILibraryHandle,'OCIFormatTUword'); + pointer(OCIFormatTUbig_ora) := GetProcedureAddress(OCILibraryHandle,'OCIFormatTUbig_ora'); + pointer(OCIFormatTSb1) := GetProcedureAddress(OCILibraryHandle,'OCIFormatTSb1'); + pointer(OCIFormatTSb2) := GetProcedureAddress(OCILibraryHandle,'OCIFormatTSb2'); + pointer(OCIFormatTSb4) := GetProcedureAddress(OCILibraryHandle,'OCIFormatTSb4'); + pointer(OCIFormatTSword) := GetProcedureAddress(OCILibraryHandle,'OCIFormatTSword'); + pointer(OCIFormatTSbig_ora) := GetProcedureAddress(OCILibraryHandle,'OCIFormatTSbig_ora'); + pointer(OCIFormatTEb1) := GetProcedureAddress(OCILibraryHandle,'OCIFormatTEb1'); + pointer(OCIFormatTEb2) := GetProcedureAddress(OCILibraryHandle,'OCIFormatTEb2'); + pointer(OCIFormatTEb4) := GetProcedureAddress(OCILibraryHandle,'OCIFormatTEb4'); + pointer(OCIFormatTEword) := GetProcedureAddress(OCILibraryHandle,'OCIFormatTEword'); + pointer(OCIFormatTChar) := GetProcedureAddress(OCILibraryHandle,'OCIFormatTChar'); + pointer(OCIFormatTText) := GetProcedureAddress(OCILibraryHandle,'OCIFormatTText'); + pointer(OCIFormatTDouble) := GetProcedureAddress(OCILibraryHandle,'OCIFormatTDouble'); + pointer(OCIFormatTDvoid) := GetProcedureAddress(OCILibraryHandle,'OCIFormatTDvoid'); + pointer(OCIFormatTEnd) := GetProcedureAddress(OCILibraryHandle,'OCIFormatTEnd'); + pointer(xaosvch) := GetProcedureAddress(OCILibraryHandle,'xaosvch'); + pointer(xaoSvcCtx) := GetProcedureAddress(OCILibraryHandle,'xaoSvcCtx'); + pointer(xaoEnv) := GetProcedureAddress(OCILibraryHandle,'xaoEnv'); + pointer(xaosterr) := GetProcedureAddress(OCILibraryHandle,'xaosterr'); + pointer(OCINlsGetInfo) := GetProcedureAddress(OCILibraryHandle,'OCINlsGetInfo'); + pointer(OCINlsNumericInfoGet) := GetProcedureAddress(OCILibraryHandle,'OCINlsNumericInfoGet'); + pointer(OCINlsCharSetNameToId) := GetProcedureAddress(OCILibraryHandle,'OCINlsCharSetNameToId'); + pointer(OCIThreadProcessInit) := GetProcedureAddress(OCILibraryHandle,'OCIThreadProcessInit'); + pointer(OCIThreadInit) := GetProcedureAddress(OCILibraryHandle,'OCIThreadInit'); + pointer(OCIThreadTerm) := GetProcedureAddress(OCILibraryHandle,'OCIThreadTerm'); + pointer(OCIThreadIsMulti) := GetProcedureAddress(OCILibraryHandle,'OCIThreadIsMulti'); + pointer(OCIThreadMutexInit) := GetProcedureAddress(OCILibraryHandle,'OCIThreadMutexInit'); + pointer(OCIThreadMutexDestroy) := GetProcedureAddress(OCILibraryHandle,'OCIThreadMutexDestroy'); + pointer(OCIThreadMutexAcquire) := GetProcedureAddress(OCILibraryHandle,'OCIThreadMutexAcquire'); + pointer(OCIThreadMutexRelease) := GetProcedureAddress(OCILibraryHandle,'OCIThreadMutexRelease'); + pointer(OCIThreadKeyInit) := GetProcedureAddress(OCILibraryHandle,'OCIThreadKeyInit'); + pointer(OCIThreadKeyDestroy) := GetProcedureAddress(OCILibraryHandle,'OCIThreadKeyDestroy'); + pointer(OCIThreadKeyGet) := GetProcedureAddress(OCILibraryHandle,'OCIThreadKeyGet'); + pointer(OCIThreadKeySet) := GetProcedureAddress(OCILibraryHandle,'OCIThreadKeySet'); + pointer(OCIThreadIdInit) := GetProcedureAddress(OCILibraryHandle,'OCIThreadIdInit'); + pointer(OCIThreadIdDestroy) := GetProcedureAddress(OCILibraryHandle,'OCIThreadIdDestroy'); + pointer(OCIThreadIdSet) := GetProcedureAddress(OCILibraryHandle,'OCIThreadIdSet'); + pointer(OCIThreadIdSetNull) := GetProcedureAddress(OCILibraryHandle,'OCIThreadIdSetNull'); + pointer(OCIThreadIdGet) := GetProcedureAddress(OCILibraryHandle,'OCIThreadIdGet'); + pointer(OCIThreadIdSame) := GetProcedureAddress(OCILibraryHandle,'OCIThreadIdSame'); + pointer(OCIThreadIdNull) := GetProcedureAddress(OCILibraryHandle,'OCIThreadIdNull'); + pointer(OCIThreadHndInit) := GetProcedureAddress(OCILibraryHandle,'OCIThreadHndInit'); + pointer(OCIThreadHndDestroy) := GetProcedureAddress(OCILibraryHandle,'OCIThreadHndDestroy'); + pointer(OCIThreadCreate) := GetProcedureAddress(OCILibraryHandle,'OCIThreadCreate'); + pointer(OCIThreadJoin) := GetProcedureAddress(OCILibraryHandle,'OCIThreadJoin'); + pointer(OCIThreadClose) := GetProcedureAddress(OCILibraryHandle,'OCIThreadClose'); + pointer(OCIThreadHandleGet) := GetProcedureAddress(OCILibraryHandle,'OCIThreadHandleGet'); + pointer(OCISubscriptionRegister) := GetProcedureAddress(OCILibraryHandle,'OCISubscriptionRegister'); + pointer(OCISubscriptionPost) := GetProcedureAddress(OCILibraryHandle,'OCISubscriptionPost'); + pointer(OCISubscriptionUnRegister) := GetProcedureAddress(OCILibraryHandle,'OCISubscriptionUnRegister'); + pointer(OCISubscriptionDisable) := GetProcedureAddress(OCILibraryHandle,'OCISubscriptionDisable'); + pointer(OCISubscriptionEnable) := GetProcedureAddress(OCILibraryHandle,'OCISubscriptionEnable'); + pointer(OCIDateTimeGetTime) := GetProcedureAddress(OCILibraryHandle,'OCIDateTimeGetTime'); + pointer(OCIDateTimeGetDate) := GetProcedureAddress(OCILibraryHandle,'OCIDateTimeGetDate'); + pointer(OCIDateTimeGetTimeZoneOffset) := GetProcedureAddress(OCILibraryHandle,'OCIDateTimeGetTimeZoneOffset'); + pointer(OCIDateTimeConstruct) := GetProcedureAddress(OCILibraryHandle,'OCIDateTimeConstruct'); + pointer(OCIDateTimeSysTimeStamp) := GetProcedureAddress(OCILibraryHandle,'OCIDateTimeSysTimeStamp'); + pointer(OCIDateTimeAssign) := GetProcedureAddress(OCILibraryHandle,'OCIDateTimeAssign'); + pointer(OCIDateTimeToText) := GetProcedureAddress(OCILibraryHandle,'OCIDateTimeToText'); + pointer(OCIDateTimeFromText) := GetProcedureAddress(OCILibraryHandle,'OCIDateTimeFromText'); + pointer(OCIDateTimeCompare) := GetProcedureAddress(OCILibraryHandle,'OCIDateTimeCompare'); + pointer(OCIDateTimeCheck) := GetProcedureAddress(OCILibraryHandle,'OCIDateTimeCheck'); + pointer(OCIDateTimeConvert) := GetProcedureAddress(OCILibraryHandle,'OCIDateTimeConvert'); + pointer(OCIDateTimeSubtract) := GetProcedureAddress(OCILibraryHandle,'OCIDateTimeSubtract'); + pointer(OCIDateTimeIntervalAdd) := GetProcedureAddress(OCILibraryHandle,'OCIDateTimeIntervalAdd'); + pointer(OCIDateTimeIntervalSub) := GetProcedureAddress(OCILibraryHandle,'OCIDateTimeIntervalSub'); + pointer(OCIIntervalSubtract) := GetProcedureAddress(OCILibraryHandle,'OCIIntervalSubtract'); + pointer(OCIIntervalAdd) := GetProcedureAddress(OCILibraryHandle,'OCIIntervalAdd'); + pointer(OCIIntervalMultiply) := GetProcedureAddress(OCILibraryHandle,'OCIIntervalMultiply'); + pointer(OCIIntervalDivide) := GetProcedureAddress(OCILibraryHandle,'OCIIntervalDivide'); + pointer(OCIIntervalCompare) := GetProcedureAddress(OCILibraryHandle,'OCIIntervalCompare'); + pointer(OCIIntervalFromNumber) := GetProcedureAddress(OCILibraryHandle,'OCIIntervalFromNumber'); + pointer(OCIIntervalFromText) := GetProcedureAddress(OCILibraryHandle,'OCIIntervalFromText'); + pointer(OCIIntervalToText) := GetProcedureAddress(OCILibraryHandle,'OCIIntervalToText'); + pointer(OCIIntervalToNumber) := GetProcedureAddress(OCILibraryHandle,'OCIIntervalToNumber'); + pointer(OCIIntervalCheck) := GetProcedureAddress(OCILibraryHandle,'OCIIntervalCheck'); + pointer(OCIIntervalAssign) := GetProcedureAddress(OCILibraryHandle,'OCIIntervalAssign'); + pointer(OCIIntervalSetYearMonth) := GetProcedureAddress(OCILibraryHandle,'OCIIntervalSetYearMonth'); + pointer(OCIIntervalGetYearMonth) := GetProcedureAddress(OCILibraryHandle,'OCIIntervalGetYearMonth'); + pointer(OCIIntervalSetDaySecond) := GetProcedureAddress(OCILibraryHandle,'OCIIntervalSetDaySecond'); + pointer(OCIIntervalGetDaySecond) := GetProcedureAddress(OCILibraryHandle,'OCIIntervalGetDaySecond'); + pointer(OCIDateTimeToArray) := GetProcedureAddress(OCILibraryHandle,'OCIDateTimeToArray'); + pointer(OCIDateTimeFromArray) := GetProcedureAddress(OCILibraryHandle,'OCIDateTimeFromArray'); + pointer(OCIDateTimeGetTimeZoneName) := GetProcedureAddress(OCILibraryHandle,'OCIDateTimeGetTimeZoneName'); + pointer(OCIIntervalFromTZ) := GetProcedureAddress(OCILibraryHandle,'OCIIntervalFromTZ'); + pointer(OCIConnectionPoolCreate) := GetProcedureAddress(OCILibraryHandle,'OCIConnectionPoolCreate'); + pointer(OCIConnectionPoolDestroy) := GetProcedureAddress(OCILibraryHandle,'OCIConnectionPoolDestroy'); + pointer(OCISessionPoolCreate) := GetProcedureAddress(OCILibraryHandle,'OCISessionPoolCreate'); + pointer(OCISessionPoolDestroy) := GetProcedureAddress(OCILibraryHandle,'OCISessionPoolDestroy'); + pointer(OCISessionGet) := GetProcedureAddress(OCILibraryHandle,'OCISessionGet'); + pointer(OCISessionRelease) := GetProcedureAddress(OCILibraryHandle,'OCISessionRelease'); + pointer(OCIAppCtxSet) := GetProcedureAddress(OCILibraryHandle,'OCIAppCtxSet'); + pointer(OCIAppCtxClearAll) := GetProcedureAddress(OCILibraryHandle,'OCIAppCtxClearAll'); + pointer(OCIPing) := GetProcedureAddress(OCILibraryHandle,'OCIPing'); + pointer(OCIKerbAttrSet) := GetProcedureAddress(OCILibraryHandle,'OCIKerbAttrSet'); + pointer(OCIDBStartup) := GetProcedureAddress(OCILibraryHandle,'OCIDBStartup'); + pointer(OCIDBShutdown) := GetProcedureAddress(OCILibraryHandle,'OCIDBShutdown'); + pointer(OCIClientVersion) := GetProcedureAddress(OCILibraryHandle,'OCIClientVersion'); + pointer(OCIInitEventHandle) := GetProcedureAddress(OCILibraryHandle,'OCIInitEventHandle'); + + end; +end; + +Procedure ReleaseOCI; + +begin + if RefCount > 0 then dec(RefCount); + if RefCount = 0 then + begin + if not UnloadLibrary(OCILibraryHandle) then inc(RefCount); + end; +end; + +{$ENDIF} + + +end. diff --git a/packages/oracle/src/oci.pp b/packages/oracle/src/oci.pp new file mode 100644 index 0000000000..fa2c17089f --- /dev/null +++ b/packages/oracle/src/oci.pp @@ -0,0 +1,8 @@ +unit oci; + +{$UNDEF LinkDynamically} + +{$i oci.inc} + +end. + diff --git a/packages/oracle/src/oci1.inc b/packages/oracle/src/oci1.inc new file mode 100644 index 0000000000..3930c61a0c --- /dev/null +++ b/packages/oracle/src/oci1.inc @@ -0,0 +1,183 @@ + +{ + Automatically converted by H2Pas 1.0.0 from oci1.h + The following command line parameters were used: + -p + -D + -l + jojo.so + oci1.h +} + +{$PACKRECORDS C} + + { + * $Header: oci1.h 02-dec-97.19:29:14 skabraha Exp $ + } + { Copyright (c) Oracle Corporation 1997, 1998. All Rights Reserved. } { NOTE: See 'header_template.doc' in the 'doc' dve under the 'forms' + directory for the header file template that includes instructions. + } + { + NAME + oci1.h - Cartridge Service definitions + + DESCRIPTION + <short description of component this file declares/defines> + + RELATED DOCUMENTS + + INSPECTION STATUS + Inspection date: + Inspection status: + Estimated increasing cost defects per page: + Rule sets: + + ACCEPTANCE REVIEW STATUS + Review date: + Review status: + Reviewers: + + PUBLIC FUNCTION(S) + <list of external functions declared/defined - with one-line descriptions> + + PRIVATE FUNCTION(S) + <list of static functions defined in .c file - with one-line descriptions> + + EXAMPLES + + NOTES + <other useful comments, qualifications, etc.> + + MODIFIED (MM/DD/YY) + nramakri 01/16/98 - remove #ifdef NEVER clause + ewaugh 12/18/97 - Turn type wrappers into functions. + skabraha 12/02/97 - Adding data structures & constants for OCIFile + rhwu 12/02/97 - OCI Thread + nramakri 12/15/97 - move to core4 + ewaugh 12/11/97 - add OCIFormat package constants + ssamu 12/10/97 - do not include s.h + nramakri 11/19/97 - add OCIExtract definitions + ssamu 11/14/97 - creation + + } + {--------------------------------------------------------------------------- + PUBLIC TYPES AND CONSTANTS + --------------------------------------------------------------------------- } + { Constants required by the OCIFormat package. } + { + #define OCIFormatUb1(variable) OCIFormatTUb1(), &(variable) + #define OCIFormatUb2(variable) OCIFormatTUb2(), &(variable) + #define OCIFormatUb4(variable) OCIFormatTUb4(), &(variable) + #define OCIFormatUword(variable) OCIFormatTUword(), &(variable) + #define OCIFormatUbig_ora(variable) OCIFormatTUbig_ora(), &(variable) + #define OCIFormatSb1(variable) OCIFormatTSb1(), &(variable) + #define OCIFormatSb2(variable) OCIFormatTSb2(), &(variable) + #define OCIFormatSb4(variable) OCIFormatTSb4(), &(variable) + #define OCIFormatSword(variable) OCIFormatTSword(), &(variable) + #define OCIFormatSbig_ora(variable) OCIFormatTSbig_ora(), &(variable) + #define OCIFormatEb1(variable) OCIFormatTEb1(), &(variable) + #define OCIFormatEb2(variable) OCIFormatTEb2(), &(variable) + #define OCIFormatEb4(variable) OCIFormatTEb4(), &(variable) + #define OCIFormatEword(variable) OCIFormatTEword(), &(variable) + #define OCIFormatChar(variable) OCIFormatTChar(), &(variable) + #define OCIFormatText(variable) OCIFormatTText(), (variable) + #define OCIFormatDouble(variable) OCIFormatTDouble(), &(variable) + #define OCIFormatDvoid(variable) OCIFormatTDvoid(), (variable) + #define OCIFormatEnd OCIFormatTEnd() + } + + const + OCIFormatDP = 6; + {----------------- Public Constants for OCIFile ------------------------- } + { flags for open. } + { flags for mode } + { open for read only } + OCI_FILE_READ_ONLY = 1; + { open for write only } + OCI_FILE_WRITE_ONLY = 2; + { open for read & write } + OCI_FILE_READ_WRITE = 3; + { flags for create } + { the file should exist } + OCI_FILE_EXIST = 0; + { create if the file doesn't exist } + OCI_FILE_CREATE = 1; + { the file should not exist } + OCI_FILE_EXCL = 2; + { create if the file doesn't exist, + else truncate file the file to 0 } + OCI_FILE_TRUNCATE = 4; + { open the file in append mode } + OCI_FILE_APPEND = 8; + { flags for seek } + { seek from the beginning of the file } + OCI_FILE_SEEK_BEGINNING = 1; + { seek from the current position } + OCI_FILE_SEEK_CURRENT = 2; + { seek from the end of the file } + OCI_FILE_SEEK_END = 3; + { seek forward } + OCI_FILE_FORWARD = 1; + { seek backward } + OCI_FILE_BACKWARD = 2; + { file type } + { binary file } + OCI_FILE_BIN = 0; + { text file } + OCI_FILE_TEXT = 1; + { standard i/p } + OCI_FILE_STDIN = 2; + { standard o/p } + OCI_FILE_STDOUT = 3; + { standard error } + OCI_FILE_STDERR = 4; + { Represents an open file } + type + POCIFileObject = pointer; + + {--------------------- OCI Thread Object Definitions------------------------ } + POCIThreadContext = pointer; // OCIThread Context + POCIThreadMutex = pointer; // OCIThread Mutual Exclusion Lock + POCIThreadKey = pointer; // OCIThread Key for Thread-Specific Data + POCIThreadID = pointer; // OCIThread Thread ID + POCIThreadHandle = pointer; // OCIThread Thread Handle + {-------------------- OCI Thread Callback Function Pointers ---------------- } + { OCIThread Key Destructor Function Type } + + OCIThreadKeyDestFunc = procedure ;cdecl; + { Flags passed into OCIExtractFromXXX routines to direct processing } + { matching is case sensitive } + + const + OCI_EXTRACT_CASE_SENSITIVE = $1; + { unique abbreviations for keys + are allowed } + OCI_EXTRACT_UNIQUE_ABBREVS = $2; + { if multiple values for a key + exist, this determines if the + new value should be appended + to (or replace) the current + list of values } + OCI_EXTRACT_APPEND_VALUES = $4; + { Constants passed into OCIExtractSetKey routine } + { key can accept multiple values } + OCI_EXTRACT_MULTIPLE = $8; + { key type is boolean } + OCI_EXTRACT_TYPE_BOOLEAN = 1; + { key type is string } + OCI_EXTRACT_TYPE_STRING = 2; + { key type is integer } + OCI_EXTRACT_TYPE_INTEGER = 3; + { key type is ocinum } + OCI_EXTRACT_TYPE_OCINUM = 4; + {--------------------------------------------------------------------------- + PRIVATE TYPES AND CONSTANTS + --------------------------------------------------------------------------- } + {--------------------------------------------------------------------------- + PUBLIC FUNCTIONS + --------------------------------------------------------------------------- } + {--------------------------------------------------------------------------- + PRIVATE FUNCTIONS + --------------------------------------------------------------------------- } + + diff --git a/packages/oracle/src/ociap.inc b/packages/oracle/src/ociap.inc new file mode 100644 index 0000000000..df68a6d13b --- /dev/null +++ b/packages/oracle/src/ociap.inc @@ -0,0 +1,10997 @@ + +{ + Automatically converted by H2Pas 1.0.0 from ociap.h + The following command line parameters were used: + -p + -D + -l + jojo.so + ociap.h +} + + Type +// Pboolean = ^boolean; +// Ppdvoid = ^Pdvoid; + + PPub4 = ^Pub4; + PPub2 = ^Pub2; + + size_t = ptrint; + psize_t = ^ptrint; +{ PLda_Def = ^Lda_Def; + PnzttBufferBlock = ^nzttBufferBlock; + PnzttIdentity = ^nzttIdentity; + PnzttIdentityDesc = ^nzttIdentityDesc; + PnzttPersona = ^nzttPersona; + PnzttPersonaDesc = ^nzttPersonaDesc; + PnzttProtInfo = ^nzttProtInfo; + Pnztttdufmt = ^nztttdufmt; + PnzttWallet = ^nzttWallet; + POCIAdmin = ^OCIAdmin; + POCIAnyData = ^OCIAnyData; + POCIAnyDataSet = ^OCIAnyDataSet; + POCIAQAgent = ^OCIAQAgent; + POCIAQDeqOptions = ^OCIAQDeqOptions; + POCIAQEnqOptions = ^OCIAQEnqOptions; + POCIAQLisMsgProps = ^OCIAQLisMsgProps; + POCIAQListenOpts = ^OCIAQListenOpts; + POCIAQMsgProperties = ^OCIAQMsgProperties; + POCIAuthInfo = ^OCIAuthInfo; + POCIBind = ^OCIBind; + POCICPool = ^OCICPool; + POCIDateTime = ^OCIDateTime; + POCIDefine = ^OCIDefine; + POCIDescribe = ^OCIDescribe; + POCIEnv = ^OCIEnv; + POCIError = ^OCIError; + POCIEvent = ^OCIEvent; + POCIFileObject = ^OCIFileObject; + POCIFocbkStruct = ^OCIFocbkStruct; + POCIInd = ^OCIInd; + POCIInterval = ^OCIInterval; + POCILobLocator = ^OCILobLocator; + POCIMsg = ^OCIMsg; + POCINumber = ^OCINumber; + POCIPicklerFdo = ^OCIPicklerFdo; + POCIPicklerImage = ^OCIPicklerImage; + POCIPicklerTds = ^OCIPicklerTds; + POCIPicklerTdsCtx = ^OCIPicklerTdsCtx; +// POCIPicklerTdsElement = ^OCIPicklerTdsElement; + POCIRaw = ^OCIRaw; + POCIResult = ^OCIResult; + POCIRowid = ^OCIRowid; + POCISecurity = ^OCISecurity; + POCIServer = ^OCIServer; + POCISession = ^OCISession; + POCISnapshot = ^OCISnapshot; + POCISPool = ^OCISPool; + POCIStmt = ^OCIStmt; + POCISubscription = ^OCISubscription; + POCISvcCtx = ^OCISvcCtx; + POCIThreadHandle = ^OCIThreadHandle; + POCIThreadId = ^OCIThreadId; + POCIThreadKey = ^OCIThreadKey; + POCIThreadMutex = ^OCIThreadMutex; + POCITrans = ^OCITrans; + POCIType = ^OCIType; + POCITypeCode = ^OCITypeCode; + POCIUcb = ^OCIUcb; + POCIUserCallback = ^OCIUserCallback; +// POCIWchar = ^OCIWchar; + POraText = ^OraText; + Poraub8 = ^oraub8; + Psb1 = ^sb1; + Psb2 = ^sb2; + Psb4 = ^sb4; + Psbig_ora = ^sbig_ora; + Psize_t = ^size_t; + Psword = ^sword; + Ptext = ^text; + Pub1 = ^ub1; + Pub2 = ^ub2; + Pub4 = ^ub4; + Pubig_ora = ^ubig_ora; + Puword = ^uword; +} + +{$PACKRECORDS C} + + { + * $Header: ociap.h 11-aug-2004.18:52:42 rvissapr Exp $ + } + { Copyright (c) 1996, 2004, Oracle. All rights reserved. } + { NOTE: See 'header_template.doc' in the 'doc' dve under the 'forms' + directory for the header file template that includes instructions. + } + { + NAME + ociap.h - Oracle Call Interface - Ansi Prototypes + + DESCRIPTION + <short description of component this file declares/defines> + + RELATED DOCUMENTS + + INSPECTION STATUS + Inspection date: + Inspection status: + Estimated increasing cost defects per page: + Rule sets: + + ACCEPTANCE REVIEW STATUS + Review date: + Review status: + Reviewers: + + PUBLIC FUNCTION(S) + <list of external functions declared/defined - with one-line descriptions> + + PRIVATE FUNCTION(S) + <list of static functions defined in .c file - with one-line descriptions> + + EXAMPLES + + NOTES + <other useful comments, qualifications, etc.> + + MODIFIED (MM/DD/YY) + + nbhatt 06/17/04 - merge conflicts + nbhatt 05/24/04 - merge conflicts + weiwang 05/06/04 - add OCIAQListen2 + rvissapr 06/21/04 - add OCIAppCtx API + debanerj 05/17/04 - 13064: LOB array Read and Write + aahluwal 06/02/04 - [OCI Events]: add OCIInitEventHandle + nikeda 05/28/04 - grabtrans 'nikeda_oci_events_copy' + nikeda 05/13/04 - [OCI Events] Rename HACBK->EVTCBK, HACTX->EVTCTX + nikeda 05/10/04 - [OCI Events] code review changes + aahluwal 04/09/04 - [OCI Events]: add OCIHAServerHandleGet + nikeda 03/18/04 - [OCI Events] New Server Handle Callback + dfrumkin 12/04/03 - Add OCIDBStartup, OCIDBShutdown + jciminsk 12/12/03 - merge from RDBMS_MAIN_SOLARIS_031209 + sgollapu 06/26/03 - Change OCIPing prototype + sgollapu 05/05/03 - Add OCIPing + debanerj 01/16/03 - Bug 2753018: Lob Locator parameter for + OCILobGetStorageLimit + rpingte 05/06/04 - add OCIClientVersion + debanerj 08/26/03 - 6003: Lob interface changes + sgollapu 06/23/03 - Add OCIPing + debanerj 01/16/03 - Bug 2753018: Lob Locator parameter for + OCILobGetStorageLimit + tkeefe 02/17/03 - bug-2773794: Add new interface for setting Kerb attrs + ataracha 01/03/03 - Move OCIXMLType functions to ocixml.h + akatti 11/28/02 - [2521361]:add OCIRowidToChar prototype + chliang 10/23/02 - add OCIFetchRowCallback + cparampa 10/13/02 - Fix the prototype of OCIAQListen(ansi prototype) + chliang 10/12/02 - add OCIBindRowCallback + debanerj 09/30/02 - Unlimited size LOB 6003 + thoang 09/25/02 - Add csid to XMLType create functions + thoang 04/19/02 - Add OCIXMLTypeGetNS + aahluwal 08/09/02 - adding OCIAQDeqArray + aahluwal 06/03/02 - bug 2360115 + skabraha 04/16/02 - fix compiler warnings + sichandr 02/12/02 - fix OCIXMLTypeExists + gayyappa 02/01/02 - fix 2210776 : change Dom to DOM + sichandr 10/24/01 - OCISvcCtx for XMLType create routines + schandir 09/14/01 - Add prototypes for Stmt Caching + abande 09/04/01 - Add Prototypes for Session Pooling Methods + stakeda 09/12/01 - add OCINlsCharSetConvert + whe 08/28/01 - add OCIEnvNlsCreate + wzhang 08/22/01 - Add OCINlsCharSetNameToId. + whe 10/05/01 - add prototype for OCIXMLType functions + mdmehta 04/06/01 - Bug 1683763, OCIDateTimeToText: buf_size to ub4* + schandir 12/12/00 - modify the ociconnectionpoolcreate() interface. + porangas 12/04/00 - Forward merge bug#974710 to 9i + rpingte 11/29/00 - Fix bug# 1485795. + gtarora 11/30/00 - fix comment for OCILobIsTemporary + akatti 11/07/00 - [1198379]:add OCIRowidToChar + bpalaval 10/15/00 - Forward merge 892654. + kmohan 09/18/00 - add OCILogon2 + etucker 07/28/00 - add OCIIntervalFromTZ + vjayaram 07/18/00 - add connection pooling changes + etucker 07/13/00 - add dls apis for oci + hmasaki 07/05/00 - fix 1230846: forward merge into 8.2 + mbastawa 06/05/00 - add OCIStmtFetch2 + rxgovind 06/07/00 - update OCIAnyData interfaces + rxgovind 05/04/00 - add OCIAnyDataSet interfaces + rkasamse 05/01/00 - remove attrno from OCIAnyDataAttrGet + rkasamse 03/13/00 - add prototype s for OCCIAnyData + slari 09/01/99 - remove OCIEnvCallback + slari 08/23/99 - add OCIUcb in user callback functions + dsaha 07/07/99 - Add OCIFEnvCreate for forms + vyanaman 06/21/99 - Change OCI DateTime/Interval APIs. + esoyleme 07/01/99 - expose MTS performance enhancements + whe 06/14/99 - bug727872:add CONST to match definitions + kkarun 02/23/99 - Fix OCIDateTime APIs + jiyang 12/07/98 - Add comments for OCI_NLS_DUAL_CURRENCY + aroy 12/01/98 - add OCIEnvCreate + slari 11/23/98 - use ORASTDARG + slari 11/21/98 - replace ellipsis by arglist in OCIUserCallback + thchang 10/20/98 - correct comment on OCILobCreateTemporary + slari 09/08/98 - allow envh to receive error info also in CallbackReg/ + kkarun 09/02/98 - Change const to CONST + aroy 08/04/98 - add OCITerminate calls + nramakri 06/25/98 - remove CONST from some OCIPickler APIs + jiyang 06/22/98 - Fix a lint error + nmallava 06/08/98 - ociistemporary -> envhp + jhasenbe 05/27/98 - Remove definitions for U-Calls (Unicode) + nmallava 05/18/98 - add comments + sgollapu 05/19/98 - Change text to OraText + aroy 04/20/98 - merge forward 8.0.5 -> 8.1.3 + nbhatt 05/14/98 - aq listen call + lchidamb 03/02/98 - Client Notification prototypes + vyanaman 04/19/98 - System Timestamp + kkarun 04/17/98 - Add more Interval functions + vyanaman 04/17/98 - Fix min (proc error) + vyanaman 04/16/98 - Add get/set TZ + kkarun 04/13/98 - Add Datetime prototypes + rkasamse 04/13/98 - change OCIEnv* to dvoid* for context/memory cart serv + rkasamse 04/15/98 - chage pickler cart interface + slari 03/20/98 - change proto of OCIUserCallback + slari 02/17/98 - add OCIUserCallback + jiyang 04/02/98 - Accept both env and user handles for NLS + rkasamse 03/20/98 - remove prototypes for OCIMemoryDuration* functions. + tsaulys 03/20/98 - use environment or session handle + nmallava 04/09/98 - OCILobLocatorAssign + nmallava 04/07/98 - lobgetchunksize and writeappend apis + jhasenbe 04/06/98 - Add new interfaces for Unicode support + nmallava 03/17/98 - add interfaces + nmallava 03/16/98 - add open/close apis + nmallava 03/10/98 - add temporary lobs apis + sgollapu 07/10/97 - Add OCIReset + sgollapu 02/09/98 - OCI non-blocking + nramakri 01/16/98 - remove #ifdef NEVER clause for OCIExtract + rmurthy 01/08/98 - OCIContextGenerateKey: change ub1 to ub4 + ewaugh 12/18/97 - Turn type wrappers into functions. + skabraha 12/02/97 - adding OCIFile functions + rhwu 12/02/97 - add OCI Thread + nramakri 12/15/97 - move to core4 + nramakri 12/11/97 - modify OCIExtract prototype + ewaugh 12/10/97 - add OCIFormat prototypes + nmallava 12/17/97 - Add ilob open and close apis + rkasamse 12/03/97 - Change some of the function names for pickler cartrid + nramakri 11/12/97 - add OCIExtract prototypes + rkasamse 11/21/97 - add prototypes for memory cartridge services and cont + rkasamse 11/03/97 - Add pickler cartridge interfaces. + jiyang 11/11/97 - Add NLS service for cartridge + tanguyen 08/19/97 - + cxcheng 07/30/97 - replace OCISvcCtx with OCISvcCtx + schandra 06/25/97 - AQ OCI interface + bnainani 07/21/97 - add prototypes for Oracle XA extensions + esoyleme 05/13/97 - move failover callback prototype + skmishra 05/06/97 - stdc compiler fixes + skmishra 04/24/97 - C++ Compatibility changes + skotsovo 04/21/97 - make lob parameter names consistent + rwhitman 04/16/97 - Fix LOB prototypes - Olint OCI 8.0.3 + ramkrish 04/15/97 - Add free flag to OCILobFlushBuffer + dchatter 04/10/97 - add nzt.h inclusion + cxcheng 04/09/97 - change objnamp from CONST text* to dvoid* + cxcheng 04/08/97 - fix prototype of OCIDescribeAny() + skotsovo 03/31/97 - remove OCILobLocatorSize + skotsovo 03/27/97 - add OCILobLoadFromFile + bcchang 02/18/97 - Fix syntax error + dchatter 01/13/97 - fix comments on LOB calls + aroy 01/10/97 - remove ocilobfilecreate delete + sgollapu 12/27/96 - Correct OCILogon prototype + dchatter 01/04/97 - comments to describe the functions + sgollapu 11/25/96 - Change OCILobFileIsExistent + schandra 11/18/96 - Remove xa.h include + sgollapu 11/09/96 - Change prototype of OCIDescribeAny + dchatter 10/31/96 - delete CONST from lob write cb fn + dchatter 10/30/96 - more changes + dchatter 10/26/96 - lob/file long name corrections + slari 10/16/96 - delete unused calls + rwessman 10/29/96 - Fixed OCISecurityGetIdentity prototype + bcchang 10/25/96 - Fix syntax error + sgollapu 10/22/96 - Add OCILogon and OCILogoff + rwessman 10/16/96 - Added cryptographic and digital signature functions + sgollapu 10/10/96 - Add ocibdp and ocibdn + rxgovind 10/07/96 - add oci file calls + skotsovo 10/01/96 - move orl lob fnts to oci + skotsovo 09/20/96 - in OCILobGetLength(), remove the 'isnull' parameter. + aroy 08/29/96 - change prototype for Nchar Lob support + dchatter 08/21/96 - OCIResultSetToStmt prototype change + sthakur 08/14/96 - add OCIParamSet + schandra 07/26/96 - TX OCI return values - sb4->sword + aroy 07/17/96 - terminology change: OCILobLocator => OCILobLocator + dchatter 07/01/96 - create ANSI prototypes + dchatter 07/01/96 - Creation + + } +{$ifndef OCIAP_ORACLE} +{$define OCIAP_ORACLE} +{$ifndef ORASTDARG} +{ $include <stdarg.h>} +{$define ORASTDARG} +{$endif} +{$ifndef OCIDFN} +{ $include <ocidfn.h>} +{$endif} +{$include nzt.inc} + { NZT_ORACLE } +{$ifndef ORT_ORACLE} +{ $include <ort.h>} +{$endif} + {--------------------------------------------------------------------------- + PUBLIC TYPES AND CONSTANTS + --------------------------------------------------------------------------- } + {--------------------------------------------------------------------------- + PRIVATE TYPES AND CONSTANTS + --------------------------------------------------------------------------- } + {--------------------------------------------------------------------------- + PUBLIC FUNCTIONS + --------------------------------------------------------------------------- } + {**************************************************************************** + DESCRIPTION + ****************************************************************************** + Note: the descriptions of the functions are alphabetically arranged. Please + maintain the arrangement when adding a new function description. The actual + prototypes are below this comment section and donot follow any alphabetical + ordering. + + + --------------------------------OCIAttrGet------------------------------------ + + OCIAttrGet() + Name + OCI Attribute Get + Purpose + This call is used to get a particular attribute of a handle. + Syntax + sword OCIAttrGet ( CONST dvoid *trgthndlp, + ub4 trghndltyp, + dvoid *attributep, + ub4 *sizep, + ub4 attrtype, + OCIError *errhp ); + Comments + This call is used to get a particular attribute of a handle. + See Appendix B, "Handle Attributes", for a list of handle types and their + readable attributes. + Parameters + trgthndlp (IN) - is the pointer to a handle type. + trghndltyp (IN) - is the handle type. + attributep (OUT) - is a pointer to the storage for an attribute value. The + attribute value is filled in. + sizep (OUT) - is the size of the attribute value. + This can be passed in as NULL for most parameters as the size is well known. + For text* parameters, a pointer to a ub4 must be passed in to get the length + of the string. + attrtype (IN) - is the type of attribute. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + Related Functions + OCIAttrSet() + + --------------------------------OCIAttrSet------------------------------------ + + + OCIAttrSet() + Name + OCI Attribute Set + Purpose + This call is used to set a particular attribute of a handle or a descriptor. + Syntax + sword OCIAttrSet ( dvoid *trgthndlp, + ub4 trghndltyp, + dvoid *attributep, + ub4 size, + ub4 attrtype, + OCIError *errhp ); + Comments + This call is used to set a particular attribute of a handle or a descriptor. + See Appendix B for a list of handle types and their writeable attributes. + Parameters + trghndlp (IN/OUT) - the pointer to a handle type whose attribute gets + modified. + trghndltyp (IN/OUT) - is the handle type. + attributep (IN) - a pointer to an attribute value. + The attribute value is copied into the target handle. If the attribute value + is a pointer, then only the pointer is copied, not the contents of the pointer. + size (IN) - is the size of an attribute value. This can be passed in as 0 for + most attributes as the size is already known by the OCI library. For text* + attributes, a ub4 must be passed in set to the length of the string. + attrtype (IN) - the type of attribute being set. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + Related Functions + OCIAttrGet() + + + + --------------------------------OCIBindArrayOfStruct-------------------------- + + + + OCIBindArrayOfStruct() + Name + OCI Bind for Array of Structures + Purpose + This call sets up the skip parameters for a static array bind. + Syntax + sword OCIBindArrayOfStruct ( OCIBind *bindp, + OCIError *errhp, + ub4 pvskip, + ub4 indskip, + ub4 alskip, + ub4 rcskip ); + Comments + This call sets up the skip parameters necessary for a static array bind. + This call follows a call to OCIBindByName() or OCIBindByPos(). The bind + handle returned by that initial bind call is used as a parameter for the + OCIBindArrayOfStruct() call. + For information about skip parameters, see the section "Arrays of Structures" + on page 4-16. + Parameters + bindp (IN) - the handle to a bind structure. + errhp (IN) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + pvskip (IN) - skip parameter for the next data value. + indskip (IN) - skip parameter for the next indicator value or structure. + alskip (IN) - skip parameter for the next actual length value. + rcskip (IN) - skip parameter for the next column-level return code value. + Related Functions + OCIAttrGet() + + + --------------------------------OCIBindByName--------------------------------- + + OCIBindByName() + Name + OCI Bind by Name + Purpose + Creates an association between a program variable and a placeholder in a SQL + statement or PL/SQL block. + Syntax + sword OCIBindByName ( + OCIStmt *stmtp, + OCIBind **bindp, + OCIError *errhp, + CONST OraText *placeholder, + sb4 placeh_len, + dvoid *valuep, + sb4 value_sz, + ub2 dty, + dvoid *indp, + ub2 *alenp, + ub2 *rcodep, + ub4 maxarr_len, + ub4 *curelep, + ub4 mode ); + Description + This call is used to perform a basic bind operation. The bind creates an + association between the address of a program variable and a placeholder in a + SQL statement or PL/SQL block. The bind call also specifies the type of data + which is being bound, and may also indicate the method by which data will be + provided at runtime. + This function also implicitly allocates the bind handle indicated by the bindp + parameter. + Data in an OCI application can be bound to placeholders statically or + dynamically. Binding is static when all the IN bind data and the OUT bind + buffers are well-defined just before the execute. Binding is dynamic when the + IN bind data and the OUT bind buffers are provided by the application on + demand at execute time to the client library. Dynamic binding is indicated by + setting the mode parameter of this call to OCI_DATA_AT_EXEC. + Related Functions: For more information about dynamic binding, see + the section "Runtime Data Allocation and Piecewise Operations" on + page 5-16. + Both OCIBindByName() and OCIBindByPos() take as a parameter a bind handle, + which is implicitly allocated by the bind call A separate bind handle is + allocated for each placeholder the application is binding. + Additional bind calls may be required to specify particular attributes + necessary when binding certain data types or handling input data in certain + ways: + If arrays of structures are being utilized, OCIBindArrayOfStruct() must + be called to set up the necessary skip parameters. + If data is being provided dynamically at runtime, and the application + will be using user-defined callback functions, OCIBindDynamic() must + be called to register the callbacks. + If a named data type is being bound, OCIBindObject() must be called to + specify additional necessary information. + Parameters + stmth (IN/OUT) - the statement handle to the SQL or PL/SQL statement + being processed. + bindp (IN/OUT) - a pointer to a pointer to a bind handle which is implicitly + allocated by this call. The bind handle maintains all the bind information + for this particular input value. The handle is feed implicitly when the + statement handle is deallocated. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + placeholder (IN) - the placeholder attributes are specified by name if + ocibindn() is being called. + placeh_len (IN) - the length of the placeholder name specified in placeholder. + valuep (IN/OUT) - a pointer to a data value or an array of data values of the + type specified in the dty parameter. An array of data values can be specified + for mapping into a PL/SQL table or for providing data for SQL multiple-row + operations. When an array of bind values is provided, this is called an array + bind in OCI terms. Additional attributes of the array bind (not bind to a + column of ARRAY type) are set up in OCIBindArrayOfStruct() call. + For a REF, named data type bind, the valuep parameter is used only for IN + bind data. The pointers to OUT buffers are set in the pgvpp parameter + initialized by OCIBindObject(). For named data type and REF binds, the bind + values are unpickled into the Object Cache. The OCI object navigational calls + can then be used to navigate the objects and the refs in the Object Cache. + If the OCI_DATA_AT_EXEC mode is specified in the mode parameter, valuep + is ignored for all data types. OCIBindArrayOfStruct() cannot be used and + OCIBindDynamic() must be invoked to provide callback functions if desired. + value_sz (IN) - the size of a data value. In the case of an array bind, this is + the maximum size of any element possible with the actual sizes being specified + in the alenp parameter. + If the OCI_DATA_AT_EXEC mode is specified, valuesz defines the maximum + size of the data that can be ever provided at runtime for data types other than + named data types or REFs. + dty (IN) - the data type of the value(s) being bound. Named data types + (SQLT_NTY) and REFs (SQLT_REF) are valid only if the application has been + initialized in object mode. For named data types, or REFs, additional calls + must be made with the bind handle to set up the datatype-specific attributes. + indp (IN/OUT) - pointer to an indicator variable or array. For scalar data + types, this is a pointer to sb2 or an array of sb2s. For named data types, + this pointer is ignored and the actual pointer to the indicator structure or + an array of indicator structures is initialized by OCIBindObject(). + Ignored for dynamic binds. + See the section "Indicator Variables" on page 2-43 for more information about + indicator variables. + alenp (IN/OUT) - pointer to array of actual lengths of array elements. Each + element in alenp is the length of the data in the corresponding element in the + bind value array before and after the execute. This parameter is ignored for + dynamic binds. + rcodep (OUT) - pointer to array of column level return codes. This parameter + is ignored for dynamic binds. + maxarr_len (IN) - the maximum possible number of elements of type dty in a + PL/SQL binds. This parameter is not required for non-PL/SQL binds. If + maxarr_len is non-zero, then either OCIBindDynamic() or + OCIBindArrayOfStruct() can be invoked to set up additional bind attributes. + curelep(IN/OUT) - a pointer to the actual number of elements. This parameter + is only required for PL/SQL binds. + mode (IN) - the valid modes for this parameter are: + OCI_DEFAULT. This is default mode. + OCI_DATA_AT_EXEC. When this mode is selected, the value_sz + parameter defines the maximum size of the data that can be ever + provided at runtime. The application must be ready to provide the OCI + library runtime IN data buffers at any time and any number of times. + Runtime data is provided in one of the two ways: + callbacks using a user-defined function which must be registered + with a subsequent call to OCIBindDynamic(). + a polling mechanism using calls supplied by the OCI. This mode + is assumed if no callbacks are defined. + For more information about using the OCI_DATA_AT_EXEC mode, see + the section "Runtime Data Allocation and Piecewise Operations" on + page 5-16. + When the allocated buffers are not required any more, they should be + freed by the client. + Related Functions + OCIBindDynamic(), OCIBindObject(), OCIBindArrayOfStruct(), OCIAttrGet() + + + + -------------------------------OCIBindByPos----------------------------------- + + + OCIBindByPos() + Name + OCI Bind by Position + Purpose + Creates an association between a program variable and a placeholder in a SQL + statement or PL/SQL block. + Syntax + sword OCIBindByPos ( + OCIStmt *stmtp, + OCIBind **bindp, + OCIError *errhp, + ub4 position, + dvoid *valuep, + sb4 value_sz, + ub2 dty, + dvoid *indp, + ub2 *alenp, + ub2 *rcodep, + ub4 maxarr_len, + ub4 *curelep, + ub4 mode); + + Description + This call is used to perform a basic bind operation. The bind creates an + association between the address of a program variable and a placeholder in a + SQL statement or PL/SQL block. The bind call also specifies the type of data + which is being bound, and may also indicate the method by which data will be + provided at runtime. + This function also implicitly allocates the bind handle indicated by the bindp + parameter. + Data in an OCI application can be bound to placeholders statically or + dynamically. Binding is static when all the IN bind data and the OUT bind + buffers are well-defined just before the execute. Binding is dynamic when the + IN bind data and the OUT bind buffers are provided by the application on + demand at execute time to the client library. Dynamic binding is indicated by + setting the mode parameter of this call to OCI_DATA_AT_EXEC. + Related Functions: For more information about dynamic binding, see + the section "Runtime Data Allocation and Piecewise Operations" on + page 5-16 + Both OCIBindByName() and OCIBindByPos() take as a parameter a bind handle, + which is implicitly allocated by the bind call A separate bind handle is + allocated for each placeholder the application is binding. + Additional bind calls may be required to specify particular attributes + necessary when binding certain data types or handling input data in certain + ways: + If arrays of structures are being utilized, OCIBindArrayOfStruct() must + be called to set up the necessary skip parameters. + If data is being provided dynamically at runtime, and the application + will be using user-defined callback functions, OCIBindDynamic() must + be called to register the callbacks. + If a named data type is being bound, OCIBindObject() must be called to + specify additional necessary information. + Parameters + stmth (IN/OUT) - the statement handle to the SQL or PL/SQL statement + being processed. + bindp (IN/OUT) - a pointer to a pointer to a bind handle which is implicitly + allocated by this call. The bind handle maintains all the bind information + for this particular input value. The handle is feed implicitly when the + statement handle is deallocated. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + position (IN) - the placeholder attributes are specified by position if + ocibindp() is being called. + valuep (IN/OUT) - a pointer to a data value or an array of data values of the + type specified in the dty parameter. An array of data values can be specified + for mapping into a PL/SQL table or for providing data for SQL multiple-row + operations. When an array of bind values is provided, this is called an array + bind in OCI terms. Additional attributes of the array bind (not bind to a + column of ARRAY type) are set up in OCIBindArrayOfStruct() call. + For a REF, named data type bind, the valuep parameter is used only for IN + bind data. The pointers to OUT buffers are set in the pgvpp parameter + initialized by OCIBindObject(). For named data type and REF binds, the bind + values are unpickled into the Object Cache. The OCI object navigational calls + can then be used to navigate the objects and the refs in the Object Cache. + If the OCI_DATA_AT_EXEC mode is specified in the mode parameter, valuep + is ignored for all data types. OCIBindArrayOfStruct() cannot be used and + OCIBindDynamic() must be invoked to provide callback functions if desired. + value_sz (IN) - the size of a data value. In the case of an array bind, this is + the maximum size of any element possible with the actual sizes being specified + in the alenp parameter. + If the OCI_DATA_AT_EXEC mode is specified, valuesz defines the maximum + size of the data that can be ever provided at runtime for data types other than + named data types or REFs. + dty (IN) - the data type of the value(s) being bound. Named data types + (SQLT_NTY) and REFs (SQLT_REF) are valid only if the application has been + initialized in object mode. For named data types, or REFs, additional calls + must be made with the bind handle to set up the datatype-specific attributes. + indp (IN/OUT) - pointer to an indicator variable or array. For scalar data + types, this is a pointer to sb2 or an array of sb2s. For named data types, + this pointer is ignored and the actual pointer to the indicator structure or + an array of indicator structures is initialized by OCIBindObject(). Ignored + for dynamic binds. + See the section "Indicator Variables" on page 2-43 for more information about + indicator variables. + alenp (IN/OUT) - pointer to array of actual lengths of array elements. Each + element in alenp is the length of the data in the corresponding element in the + bind value array before and after the execute. This parameter is ignored for + dynamic binds. + rcodep (OUT) - pointer to array of column level return codes. This parameter + is ignored for dynamic binds. + maxarr_len (IN) - the maximum possible number of elements of type dty in a + PL/SQL binds. This parameter is not required for non-PL/SQL binds. If + maxarr_len is non-zero, then either OCIBindDynamic() or + OCIBindArrayOfStruct() can be invoked to set up additional bind attributes. + curelep(IN/OUT) - a pointer to the actual number of elements. This parameter + is only required for PL/SQL binds. + mode (IN) - the valid modes for this parameter are: + OCI_DEFAULT. This is default mode. + OCI_DATA_AT_EXEC. When this mode is selected, the value_sz + parameter defines the maximum size of the data that can be ever + provided at runtime. The application must be ready to provide the OCI + library runtime IN data buffers at any time and any number of times. + Runtime data is provided in one of the two ways: + callbacks using a user-defined function which must be registered + with a subsequent call to OCIBindDynamic() . + a polling mechanism using calls supplied by the OCI. This mode + is assumed if no callbacks are defined. + For more information about using the OCI_DATA_AT_EXEC mode, see + the section "Runtime Data Allocation and Piecewise Operations" on + page 5-16. + When the allocated buffers are not required any more, they should be + freed by the client. + Related Functions + OCIBindDynamic(), OCIBindObject(), OCIBindArrayOfStruct(), OCIAttrGet() + + + + -------------------------------OCIBindDynamic--------------------------------- + + OCIBindDynamic() + Name + OCI Bind Dynamic Attributes + Purpose + This call is used to register user callbacks for dynamic data allocation. + Syntax + sword OCIBindDynamic( OCIBind *bindp, + OCIError *errhp, + dvoid *ictxp, + OCICallbackInBind (icbfp)( + dvoid *ictxp, + OCIBind *bindp, + ub4 iter, + ub4 index, + dvoid **bufpp, + ub4 *alenp, + ub1 *piecep, + dvoid **indp ), + dvoid *octxp, + OCICallbackOutBind (ocbfp)( + dvoid *octxp, + OCIBind *bindp, + ub4 iter, + ub4 index, + dvoid **bufp, + ub4 **alenpp, + ub1 *piecep, + dvoid **indpp, + ub2 **rcodepp) ); + Comments + This call is used to register user-defined callback functions for providing + data for an UPDATE or INSERT if OCI_DATA_AT_EXEC mode was specified in a + previous call to OCIBindByName() or OCIBindByPos(). + The callback function pointers must return OCI_CONTINUE if it the call is + successful. Any return code other than OCI_CONTINUE signals that the client + wishes to abort processing immediately. + For more information about the OCI_DATA_AT_EXEC mode, see the section + "Runtime Data Allocation and Piecewise Operations" on page 5-16. + Parameters + bindp (IN/OUT) - a bind handle returned by a call to OCIBindByName() or + OCIBindByPos(). + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + ictxp (IN) - the context pointer required by the call back function icbfp. + icbfp (IN) - the callback function which returns a pointer to the IN bind + value or piece at run time. The callback takes in the following parameters. + ictxp (IN/OUT) - the context pointer for this callback function. + bindp (IN) - the bind handle passed in to uniquely identify this bind + variable. + iter (IN) - 1-based execute iteration value. + index (IN) - index of the current array, for an array bind. 1 based not + greater than curele parameter of the bind call. + index (IN) - index of the current array, for an array bind. This parameter + is 1-based, and may not be greater than curele parameter of the bind call. + bufpp (OUT) - the pointer to the buffer. + piecep (OUT) - which piece of the bind value. This can be one of the + following values - OCI_ONE_PIECE, OCI_FIRST_PIECE, + OCI_NEXT_PIECE and OCI_LAST_PIECE. + indp (OUT) - contains the indicator value. This is apointer to either an + sb2 value or a pointer to an indicator structure for binding named data + types. + indszp (OUT) - contains the indicator value size. A pointer containing + the size of either an sb2 or an indicator structure pointer. + octxp (IN) - the context pointer required by the callback function ocbfp. + ocbfp (IN) - the callback function which returns a pointer to the OUT bind + value or piece at run time. The callback takes in the following parameters. + octxp (IN/OUT) - the context pointer for this call back function. + bindp (IN) - the bind handle passed in to uniquely identify this bind + variable. + iter (IN) - 1-based execute iteration value. + index (IN) - index of the current array, for an array bind. This parameter + is 1-based, and must not be greater than curele parameter of the bind call. + bufpp (OUT) - a pointer to a buffer to write the bind value/piece. + buflp (OUT) - returns the buffer size. + alenpp (OUT) - a pointer to a storage for OCI to fill in the size of the bind + value/piece after it has been read. + piecep (IN/OUT) - which piece of the bind value. It will be set by the + library to be one of the following values - OCI_ONE_PIECE or + OCI_NEXT_PIECE. The callback function can leave it unchanged or set + it to OCI_FIRST_PIECE or OCI_LAST_PIECE. By default - + OCI_ONE_PIECE. + indpp (OUT) - returns a pointer to contain the indicator value which + either an sb2 value or a pointer to an indicator structure for named data + types. + indszpp (OUT) - returns a pointer to return the size of the indicator + value which is either size of an sb2 or size of an indicator structure. + rcodepp (OUT) - returns a pointer to contains the return code. + Related Functions + OCIAttrGet() + + + ---------------------------------OCIBindObject-------------------------------- + + + OCIBindObject() + Name + OCI Bind Object + Purpose + This function sets up additional attributes which are required for a named + data type (object) bind. + Syntax + sword OCIBindObject ( OCIBind *bindp, + OCIError *errhp, + CONST OCIType *type, + dvoid **pgvpp, + ub4 *pvszsp, + dvoid **indpp, + ub4 *indszp, ); + Comments + This function sets up additional attributes which binding a named data type + or a REF. An error will be returned if this function is called when the OCI + environment has been initialized in non-object mode. + This call takes as a paramter a type descriptor object (TDO) of datatype + OCIType for the named data type being defined. The TDO can be retrieved + with a call to OCITypeByName(). + If the OCI_DATA_AT_EXEC mode was specified in ocibindn() or ocibindp(), the + pointers to the IN buffers are obtained either using the callback icbfp + registered in the OCIBindDynamic() call or by the OCIStmtSetPieceInfo() call. + The buffers are dynamically allocated for the OUT data and the pointers to + these buffers are returned either by calling ocbfp() registered by the + OCIBindDynamic() or by setting the pointer to the buffer in the buffer passed + in by OCIStmtSetPieceInfo() called when OCIStmtExecute() returned + OCI_NEED_DATA. The memory of these client library- allocated buffers must be + freed when not in use anymore by using the OCIObjectFreee() call. + Parameters + bindp ( IN/OUT) - the bind handle returned by the call to OCIBindByName() + or OCIBindByPos(). + errhp ( IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + type ( IN) - points to the TDO which describes the type of the program + variable being bound. Retrieved by calling OCITypeByName(). + pgvpp ( IN/OUT) - points to a pointer to the program variable buffer. For an + array, pgvpp points to an array of pointers. When the bind variable is also an + OUT variable, the OUT Named Data Type value or REF is allocated + (unpickled) in the Object Cache, and a pointer to the value or REF is returned, + At the end of execute, when all OUT values have been received, pgvpp points + to an array of pointer(s) to these newly allocated named data types in the + object cache. + pgvpp is ignored if the OCI_DATA_AT_EXEC mode is set. Then the Named + Data Type buffers are requested at runtime. For static array binds, skip + factors may be specified using the OCIBindArrayOfStruct() call. The skip + factors are used to compute the address of the next pointer to the value, the + indicator structure and their sizes. + pvszsp ( IN/OUT) - points to the size of the program variable. The size of the + named data type is not required on input. For an array, pvszsp is an array of + ub4s. On return, for OUT bind variables, this points to size(s) of the Named + Data Types and REFs received. pvszsp is ignored if the OCI_DATA_AT_EXEC + mode is set. Then the size of the buffer is taken at runtime. + indpp ( IN/OUT) - points to a pointer to the program variable buffer + containing the parallel indicator structure. For an array, points to an array + of pointers. When the bind variable is also an OUT bind variable, memory is + allocated in the object cache, to store the unpickled OUT indicator values. At + the end of the execute when all OUT values have been received, indpp points + to the pointer(s) to these newly allocated indicator structure(s). + indpp is ignored if the OCI_DATA_AT_EXEC mode is set. Then the indicator + is requested at runtime. + indszp ( IN/OUT) - points to the size of the IN indicator structure program + variable. For an array, it is an array of sb2s. On return for OUT bind + variables, this points to size(s) of the received OUT indicator structures. + indszp is ignored if the OCI_DATA_AT_EXEC mode is set. Then the indicator + size is requested at runtime. + Related Functions + OCIAttrGet() + + + + ----------------------------------OCIBreak------------------------------------ + + + OCIBreak() + Name + OCI Break + Purpose + This call performs an immediate (asynchronous) abort of any currently + executing OCI function that is associated with a server . + Syntax + sword OCIBreak ( dvoid *hndlp, + OCIError *errhp); + Comments + This call performs an immediate (asynchronous) abort of any currently + executing OCI function that is associated with a server. It is normally used + to stop a long-running OCI call being processed on the server. + This call can take either the service context handle or the server context + handle as a parameter to identify the function to be aborted. + Parameters + hndlp (IN) - the service context handle or the server context handle. + errhp (IN) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + Related Functions + + -----------------------------OCIConnectionPoolCreate -------------------------- + Name: + OCIConnectionPoolCreate + + Purpose: + Creates the connections in the pool + + Syntax: + OCIConnectionPoolCreate (OCIEnv *envhp, OCIError *errhp, OCICPool *poolhp, + OraText **poolName, sb4 *poolNameLen, + CONST Oratext *dblink, sb4 dblinkLen, + ub4 connMin, ub4 connMax, ub4 connIncr, + CONST OraText *poolUsername, sb4 poolUserLen, + CONST OraText *poolPassword, sb4 poolPassLen, + ub4 mode) + Comments: + This call is used to create a connection pool. conn_min connections + to the database are started on calling OCIConnectionPoolCreate. + + Parameters: + envhp (IN/OUT) - A pointer to the environment where the Conencton Pool + is to be created + errhp (IN/OUT) - An error handle which can be passed to OCIErrorGet(). + poolhp (IN/OUT) - An uninitialiazed pool handle. + poolName (OUT) - The connection pool name. + poolNameLen (OUT) - The length of the connection pool name + dblink (IN/OUT) - Specifies the database(server) to connect. This will also + be used as the default pool name. + dblinkLen (IN) - The length of the string pointed to by dblink. + connMin (IN) - Specifies the minimum number of connections in the + Connection Pool at any instant. + connMin number of connections are started when + OCIConnectionPoolCreate() is called. + connMax (IN) - Specifies the maximum number of connections that can be + opened to the database. Once this value is reached, no + more connections are opened. + connIncr (IN) - Allows application to set the next increment for + connections to be opened to the database if the current + number of connections are less than conn_max. + poolUsername (IN/OUT) - Connection pooling requires an implicit proxy + session and this attribute provides a username + for that session. + poolUserLen (IN) - This represents the length of pool_username. + poolPassword (IN/OUT) - The password for the parameter pool_username passed + above. + poolPassLen (IN) - This represents the length of pool_password. + + mode (IN) - The modes supported are OCI_DEFAULT and + OCI_CPOOL_REINITIALIZE + + Related Functions + OCIConnectionPoolDestroy() + + --------------------------------------------------------------------------- + + ----------------------------OCIConnectionPoolDestroy------------------------- + Name: + OCIConnectionPoolDestroy + + Purpose: + Terminates the connections in the pool + + Syntax: + OCIConnectionPoolDestroy (OCICPool *poolhp, OCIError *errhp, ub4 mode) + + Comments: + On calling OCIConnectionPoolDestroy, all the open connections in the pool + are closed and the pool is destroyed. + + Parameters: + poolhp (IN/OUT) - An initialiazed pool handle. + errhp (IN/OUT) - An error handle which can be passed to OCIErrorGet(). + mode (IN) - Currently, OCIConnectionPoolDestroy() will support only + the OCI_DEFAULT mode. + + Related Functions: + OCIConnectionPoolCreate() + + ----------------------------------------------------------------------------- + ----------------------------OCISessionPoolCreate----------------------------- + Name: + OCISessionPoolCreate + + Purpose: + Creates the sessions in the session pool. + + Syntax: + sword OCISessionPoolCreate (OCIEnv *envhp, OCIError *errhp, OCISpool *spoolhp, + OraText **poolName, ub4 *poolNameLen, + CONST OraText *connStr, ub4 connStrLen, + ub4 sessMin, ub4 sessMax, ub4 sessIncr, + OraText *userid, ub4 useridLen, + OraText *password, ub4 passwordLen, + ub4 mode) + + Comments: + When OCISessionPoolCreate is called, a session pool is initialized for + the associated environment and the database specified by the + connStr parameter. This pool is named uniquely and the name + is returned to the user in the poolname parameter. + + Parameters: + envhp (IN/OUT) - A pointer to the environment handle in which the session + pool needs to be created. + errhp (IN/OUT) - An error handle which can be passed to OCIErrorGet(). + spoolhp (IN/OUT) - A pointer to the session pool handle that is created. + poolName (OUT) - Session pool name returned to the user. + poolNameLen (OUT) - Length of the PoolName + connStr (IN) - The TNS alias of the database to connect to. + connStrLen (IN) - Length of the connStr. + sessMin (IN) - Specifies the minimum number of sessions in the Session Pool. + These are the number of sessions opened in the beginning, if + in Homogeneous mode. Else, the parameter is ignored. + sessMax (IN) - Specifies the maximum number of sessions in the Session Pool. + Once this value is reached, no more sessions are opened, + unless the OCI_ATTR_SPOOL_FORCEGET is set. + userid (IN) - Specifies the userid with which to start up the sessions. + useridLen (IN) - Length of userid. + password (IN) - Specifies the password for the corresponding userid. + passwordLen (IN) - Specifies the length of the password + mode(IN) - May be OCI_DEFAULT, OCI_SPC_SPOOL_REINITIALIZE, or + OCI_SPC_SPOOL_HOMOGENEOUS. + + Returns: + SUCCESS - If pool could be allocated and created successfully. + ERROR - If above conditions could not be met. + + Related Functions: + OCISessionPoolDestroy() + ----------------------------------------------------------------------------- + -----------------------------OCISessionPoolDestroy--------------------------- + Name: + OCISessionPoolDestroy + + Purpose: + Terminates all the sessions in the session pool. + + Syntax: + sword OCISessionPoolDestroy (OCISPool *spoolhp, OCIError *errhp, ub4 mode) + + Comments: + spoolhp (IN/OUT) - The pool handle of the session pool to be destroyed. + errhp (IN/OUT) - An error handle which can be passed to OCIErrorGet(). + mode (IN) - Currently only OCI_DEFAULT mode is supported. + + Returns: + SUCCESS - All the sessions could be closed. + ERROR - If the above condition is not met. + + Related Functions: + OCISessionPoolCreate() + ----------------------------------------------------------------------------- + -------------------------------OCISessionGet--------------------------------- + Name: + OCISessionGet + + Purpose: + Get a session. This could be from a session pool, connection pool or + a new standalone session. + + Syntax: + sword OCISessionGet(OCIenv *envhp, OCIError *errhp, OCISvcCtx **svchp, + OCIAuthInfo *authhp, + OraText *poolName, ub4 poolName_len, + CONST OraText *tagInfo, ub4 tagInfo_len, + OraText **retTagInfo, ub4 *retTagInfo_len, + boolean *found, + ub4 mode) + + Comments: + envhp (IN/OUT) - OCI environment handle. + errhp (IN/OUT) - OCI error handle to be passed to OCIErrorGet(). + svchp (IN/OUT) - Address of an OCI service context pointer. This will be + filled with a server and session handle, attached to the + pool. + authhp (IN/OUT) - OCI Authentication Information handle. + poolName (IN) - This indicates the session/connection pool to get the + session/connection from in the OCI_SPOOL/OCI_CPOOL mode. + In the OCI_DEFAULT mode it refers to the connect string. + poolName_len (IN) - length of poolName. + tagInfo (IN) - indicates the tag of the session that the user wants. If the + user wants a default session, he must specify a NULL here. + Only used for Session Pooling. + tagInfo_len (IN) - the length of tagInfo. + retTagInfo (OUT) - This indicates the type of session that is returned to + the user. Only used for Session Pooling. + retTagInfo_len (OUT) - the length of retTagInfo. + found (OUT) - set to true if the user gets a session he had requested, else + set to false. Only used for Session Pooling. + mode (IN) - The supported modes are OCI_DEFAULT, OCI_CRED_PROXY and + OCI_GET_SPOOL_MATCHANY, OCI_SPOOL and OCI_CPOOL. OCI_SPOOL and + OCI_CPOOL are mutually exclusive. + + Returns: + SUCCESS - if a session was successfully returned into svchp. + SUCCESS_WITH_INFO - if a session was successfully returned into svchp and the + total number of sessions > maxsessions. Only valid for + Session Pooling. + ERROR - If a session could not be retrieved. + + Related Functions: + OCISessionRelease() + ----------------------------------------------------------------------------- + ---------------------------OCISessionRelease--------------------------------- + Name: + OCISessionRelease + + Purpose: + Release the session. + + Syntax: + sword OCISessionRelease ( OCISvcCtx *svchp, OCIError *errhp, + OraText *tag, ub4 tag_len, + ub4 mode); + + Comments: + svchp (IN/OUT) - The service context associated with the session/connection. + errhp (IN/OUT) - OCI error handle to be passed to OCIErrorGet(). + tag (IN) - Only used for Session Pooling. + This parameter will be ignored unless mode OCI_RLS_SPOOL_RETAG is + specified. In this case, the session is labelled with this tag and + returned to the pool. If this is NULL, then the session is untagged. + tag_len (IN) - Length of the tag. This is ignored unless mode + OCI_RLS_SPOOL_RETAG is set. + mode (IN) - The supported modes are OCI_DEFAULT, OCI_RLS_SPOOL_DROPSESS, + OCI_RLS_SPOOL_RETAG. The last 2 are only valid for Session Pooling. + When OCI_RLS_SPOOL_DROPSESS is specified, the session + will be removed from the session pool. If OCI_RLS_SPOOL_RETAG + is set, the tag on the session will be altered. If this mode is + not set, the tag and tag_len parameters will be ignored. + + Returns: + ERROR - If the session could not be released successfully. + SUCCESS - In all other cases. + + Related Functions: + OCISessionGet(). + ----------------------------------------------------------------------------- + ------------------------------OCIDateTimeAssign -------------------------- + sword OCIDateTimeAssign(dvoid *hndl, OCIError *err, CONST OCIDateTime *from, + OCIDateTime *to); + NAME: OCIDateTimeAssign - OCIDateTime Assignment + PARAMETERS: + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + from (IN) - datetime to be assigned + to (OUT) - lhs of assignment + DESCRIPTION: + Performs date assignment. The type of the output will be same as that + of input + + ------------------------------OCIDateTimeCheck---------------------------- + sword OCIDateTimeCheck(dvoid *hndl, OCIError *err, CONST OCIDateTime *date, + ub4 *valid ); + NAME: OCIDateTimeCheck - OCIDateTime CHecK if the given date is valid + PARAMETERS: + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + date (IN) - date to be checked + valid (OUT) - returns zero for a valid date, otherwise + the ORed combination of all error bits specified below: + Macro name Bit number Error + ---------- ---------- ----- + OCI_DATE_INVALID_DAY 0x1 Bad day + OCI_DATE_DAY_BELOW_VALID 0x2 Bad DAy Low/high bit (1=low) + OCI_DATE_INVALID_MONTH 0x4 Bad MOnth + OCI_DATE_MONTH_BELOW_VALID 0x8 Bad MOnth Low/high bit (1=low) + OCI_DATE_INVALID_YEAR 0x10 Bad YeaR + OCI_DATE_YEAR_BELOW_VALID 0x20 Bad YeaR Low/high bit (1=low) + OCI_DATE_INVALID_HOUR 0x40 Bad HouR + OCI_DATE_HOUR_BELOW_VALID 0x80 Bad HouR Low/high bit (1=low) + OCI_DATE_INVALID_MINUTE 0x100 Bad MiNute + OCI_DATE_MINUTE_BELOW_VALID 0x200 Bad MiNute Low/high bit (1=low) + OCI_DATE_INVALID_SECOND 0x400 Bad SeCond + OCI_DATE_SECOND_BELOW_VALID 0x800 bad second Low/high bit (1=low) + OCI_DATE_DAY_MISSING_FROM_1582 0x1000 Day is one of those "missing" + from 1582 + OCI_DATE_YEAR_ZERO 0x2000 Year may not equal zero + OCI_DATE_INVALID_TIMEZONE 0x4000 Bad Timezone + OCI_DATE_INVALID_FORMAT 0x8000 Bad date format input + + So, for example, if the date passed in was 2/0/1990 25:61:10 in + (month/day/year hours:minutes:seconds format), the error returned + would be OCI_DATE_INVALID_DAY | OCI_DATE_DAY_BELOW_VALID | + OCI_DATE_INVALID_HOUR | OCI_DATE_INVALID_MINUTE + + DESCRIPTION: + Check if the given date is valid. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + 'date' and 'valid' pointers are NULL pointers + + ------------------------------- OCIDateTimeCompare---------------------------- + sword OCIDateTimeCompare(dvoid *hndl, OCIError *err, CONST OCIDateTime *date1, + CONST OCIDateTime *date2, sword *result ); + NAME: OCIDateTimeCompare - OCIDateTime CoMPare dates + PARAMETERS: + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + date1, date2 (IN) - dates to be compared + result (OUT) - comparison result, 0 if equal, -1 if date1 < date2, + 1 if date1 > date2 + DESCRIPTION: + The function OCIDateCompare compares two dates. It returns -1 if + date1 is smaller than date2, 0 if they are equal, and 1 if date1 is + greater than date2. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + invalid date + input dates are not mutually comparable + + ------------------------------OCIDateTimeConvert---------------------- + sword OCIDateTimeConvert(dvoid *hndl, OCIError *err, OCIDateTime *indate, + OCIDateTime *outdate); + NAME: OCIDateTimeConvert - Conversion between different DATETIME types + PARAMETERS: + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + indate (IN) - pointer to input date + outdate (OUT) - pointer to output datetime + DESCRIPTION: Converts one datetime type to another. The result type is + the type of the 'outdate' descriptor. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + conversion not possible. + + ---------------------------- OCIDateTimeFromText----------------------- + sword OCIDateTimeFromText(dvoid *hndl, OCIError *err, CONST OraText *date_str, + size_t d_str_length, CONST OraText *fmt, ub1 fmt_length, + CONST OraText *lang_name, size_t lang_length, OCIDateTime *date ); + NAME: OCIDateTimeFromText - OCIDateTime convert String FROM Date + PARAMETERS: + hndl (IN) - Session/Env handle. If Session Handle is passed, the + conversion takes place in session NLS_LANGUAGE and + session NLS_CALENDAR, otherwise the default is used. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + date_str (IN) - input string to be converted to Oracle date + d_str_length (IN) - size of the input string, if the length is -1 + then 'date_str' is treated as a null terminated string + fmt (IN) - conversion format; if 'fmt' is a null pointer, then + the string is expected to be in the default format for + the datetime type. + fmt_length (IN) - length of the 'fmt' parameter + lang_name (IN) - language in which the names and abbreviations of + days and months are specified, if null i.e. (OraText *)0, + the default language of session is used, + lang_length (IN) - length of the 'lang_name' parameter + date (OUT) - given string converted to date + DESCRIPTION: + Converts the given string to Oracle datetime type set in the + OCIDateTime descriptor according to the specified format. Refer to + "TO_DATE" conversion function described in "Oracle SQL Language + Reference Manual" for a description of format. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + invalid format + unknown language + invalid input string + + --------------------------- OCIDateTimeGetDate------------------------- + sword OCIDateTimeGetDate(dvoid *hndl, OCIError *err, CONST OCIDateTime *date, + sb2 *year, ub1 *month, ub1 *day ); + NAME: OCIDateTimeGetDate - OCIDateTime Get Date (year, month, day) + portion of DATETIME. + PARAMETERS: + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + datetime (IN) - Pointer to OCIDateTime + year (OUT) - year value + month (OUT) - month value + day (OUT) - day value + + --------------------------- OCIDateTimeGetTime ------------------------ + sword OCIDateTimeGetTime(dvoid *hndl, OCIError *err, OCIDateTime *datetime, + ub1 *hour, ub1 *minute, ub1 *sec, ub4 *fsec); + NAME: OCIDateTimeGetTime - OCIDateTime Get Time (hour, min, second, + fractional second) of DATETIME. + PARAMETERS: + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + datetime (IN) - Pointer to OCIDateTime + hour (OUT) - hour value + minute (OUT) - minute value + sec (OUT) - second value + fsec (OUT) - Fractional Second value + + --------------------------- OCIDateTimeGetTimeZoneOffset ---------------------- + sword OCIDateTimeGetTimeZoneOffset(dvoid *hndl,OCIError *err,CONST + OCIDateTime *datetime,sb1 *hour,sb1 *minute); + + NAME: OCIDateTimeGetTimeZoneOffset - OCIDateTime Get TimeZone (hour, minute) + portion of DATETIME. + PARAMETERS: + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + datetime (IN) - Pointer to OCIDateTime + hour (OUT) - TimeZone Hour value + minute (OUT) - TimeZone Minute value + + --------------------------- OCIDateTimeSysTimeStamp--------------------- + sword OCIDateTimeSysTimeStamp(dvoid *hndl, OCIError *err, + OCIDateTime *sys_date ); + + NAME: OCIDateTimeSysTimeStamp - Returns system date/time as a TimeStamp with + timezone + PARAMETERS: + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + sys_date (OUT) - Pointer to output timestamp + + DESCRIPTION: + Gets the system current date and time as a timestamp with timezone + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + + + ------------------------------OCIDateTimeIntervalAdd---------------------- + sword OCIDateTimeIntervalAdd(dvoid *hndl, OCIError *err, OCIDateTime *datetime, + OCIInterval *inter, OCIDateTime *outdatetime); + NAME: OCIDateTimeIntervalAdd - Adds an interval to datetime + PARAMETERS: + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + datetime (IN) - pointer to input datetime + inter (IN) - pointer to interval + outdatetime (IN) - pointer to output datetime. The output datetime + will be of same type as input datetime + DESCRIPTION: + Adds an interval to a datetime to produce a resulting datetime + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if: + resulting date is before Jan 1, -4713 + resulting date is after Dec 31, 9999 + + ------------------------------OCIDateTimeIntervalSub---------------------- + sword OCIDateTimeIntervalSub(dvoid *hndl, OCIError *err, OCIDateTime *datetime, + OCIInterval *inter, OCIDateTime *outdatetime); + NAME: OCIDateTimeIntervalSub - Subtracts an interval from a datetime + PARAMETERS: + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + datetime (IN) - pointer to input datetime + inter (IN) - pointer to interval + outdatetime (IN) - pointer to output datetime. The output datetime + will be of same type as input datetime + DESCRIPTION: + Subtracts an interval from a datetime and stores the result in a + datetime + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if: + resulting date is before Jan 1, -4713 + resulting date is after Dec 31, 9999 + + --------------------------- OCIDateTimeConstruct------------------------- + sword OCIDateTimeConstruct(dvoid *hndl,OCIError *err,OCIDateTime *datetime, + sb2 year,ub1 month,ub1 day,ub1 hour,ub1 min,ub1 sec,ub4 fsec, + OraText *timezone,size_t timezone_length); + + NAME: OCIDateTimeConstruct - Construct an OCIDateTime. Only the relevant + fields for the OCIDateTime descriptor types are used. + PARAMETERS: + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + datetime (IN) - Pointer to OCIDateTime + year (IN) - year value + month (IN) - month value + day (IN) - day value + hour (IN) - hour value + min (IN) - minute value + sec (IN) - second value + fsec (IN) - Fractional Second value + timezone (IN) - Timezone string + timezone_length(IN) - Length of timezone string + + DESCRIPTION: + Constructs a DateTime descriptor. The type of the datetime is the + type of the OCIDateTime descriptor. Only the relevant fields based + on the type are used. For Types with timezone, the date and time + fields are assumed to be in the local time of the specified timezone. + If timezone is not specified, then session default timezone is + assumed. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_ERROR if datetime is not valid. + + ------------------------------OCIDateTimeSubtract----------------------- + sword OCIDateTimeSubtract(dvoid *hndl, OCIError *err, OCIDateTime *indate1, + OCIDateTime *indate2, OCIInterval *inter); + NAME: OCIDateTimeSubtract - subtracts two datetimes to return an interval + PARAMETERS: + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + indate1(IN) - pointer to subtrahend + indate2(IN) - pointer to minuend + inter (OUT) - pointer to output interval + DESCRIPTION: + Takes two datetimes as input and stores their difference in an + interval. The type of the interval is the type of the 'inter' + descriptor. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + datetimes are not comparable. + + --------------------------- OCIDateTimeToText-------------------------- + sword OCIDateTimeToText(dvoid *hndl, OCIError *err, CONST OCIDateTime *date, + CONST OraText *fmt, ub1 fmt_length, ub1 fsprec, + CONST OraText *lang_name, size_t lang_length, + ub4 *buf_size, OraText *buf ); + NAME: OCIDateTimeToText - OCIDateTime convert date TO String + PARAMETERS: + hndl (IN) - Session/Env handle. If Session Handle is passed, the + conversion takes place in session NLS_LANGUAGE and + session NLS_CALENDAR, otherwise the default is used. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + date (IN) - Oracle datetime to be converted + fmt (IN) - conversion format, if null string pointer (OraText*)0, then + the date is converted to a character string in the + default format for that type. + fmt_length (IN) - length of the 'fmt' parameter + fsprec (IN) - specifies the fractional second precision in which the + fractional seconds is returned. + lang_name (IN) - specifies the language in which the names and + abbreviations of months and days are returned; + default language of session is used if 'lang_name' + is null i.e. (OraText *)0 + lang_length (IN) - length of the 'nls_params' parameter + buf_size (IN/OUT) - size of the buffer; size of the resulting string + is returned via this parameter + buf (OUT) - buffer into which the converted string is placed + DESCRIPTION: + Converts the given date to a string according to the specified format. + Refer to "TO_DATE" conversion function described in + "Oracle SQL Language Reference Manual" for a description of format + and NLS arguments. The converted null-terminated date string is + stored in the buffer 'buf'. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + buffer too small + invalid format + unknown language + overflow error + + ----------------------------OCIDateTimeGetTimeZoneName------------------------ + sword OCIDateTimeGetTimeZoneName(dvoid *hndl, + OCIError *err, + CONST OCIDateTime *datetime, + ub1 *buf, + ub4 *buflen); + NAME OCIDateTimeGetTimeZoneName - OCI DateTime Get the Time Zone Name + PARAMETERS: + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + datetime (IN) - Pointer to an OCIDateTime. + buf (OUT) - User allocated storage for name string. + buflen (IN/OUT) - length of buf on input, length of name on out + DESCRIPTION: + Returns either the timezone region name or the absolute hour and minute + offset. If the DateTime was created with a region id then the region + name will be returned in the buf. If the region id is zero, then the + hour and minute offset is returned as "[-]HH:MM". + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + buffer too small + error retrieving timezone data + invalid region + invalid LdiDateTime type + + ---------------------------------OCIDateTimeToArray---------------------------- + sword OCIDateTimeToArray(dvoid *hndl, + OCIError *err, + CONST OCIDateTime *datetime, + CONST OCIInterval *reftz, + ub1 *outarray, + ub4 *len + ub1 *fsprec); + NAME OCIDateTimeToArray - OCI DateTime convert To Array format + PARAMETERS: + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + datetime (IN) - Pointer to OCIDateTime to be converted. + outarray (OUT) - Result array storage + len (OUT) - pointer to length of outarray. + fsprec (IN) - Number of fractional seconds digits. + DESCRIPTION: + Returns an array representing the input DateTime descriptor. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + buffer too small + error retrieving timezone data + invalid region + invalid LdiDateTime type + + --------------------------------OCIDateTimeFromArray--------------------------- + sword OCIDateTimeFromArray(dvoid *hndl, + OCIError *err, + ub1 *inarray, + ub4 len + ub1 type + OCIDateTime *datetime, + OCIInterval *reftz, + ub1 fsprec); + NAME OCIDateTimeFromArray - OCI DateTime convert From Array format + PARAMETERS: + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + inarray (IN) - Pointer to input array representtion of DateTime + len (IN) - len of inarray. + type (IN) - One of SQLT_DATE, SQLT_TIME, SQLT_TIME_TZ, SQLT_TIMESTAMP, + SQLT_TIMESTAMP_TZ, or SQLT_TIMESTAMP_LTZ. + datetime (OUT) - Pointer to the result OCIDateTime. + reftz (IN) - timezone interval used with SQLT_TIMESTAMP_LTZ. + fsprec (IN) - fractionl seconds digits of precision (0-9). + DESCRIPTION: + Returns a pointer to an OCIDateTime of type type converted from + the inarray. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + buffer too small + error retrieving timezone data + invalid region + invalid LdiDateTime type + + ----------------------------------OCIRowidToChar----------------------------- + Name + OCIRowidToChar + + Purpose + Converts physical/logical (universal) ROWID to chracter extended (Base 64) + representation into user provided buffer outbfp of length outbflp. After + execution outbflp contains amount of bytes converted.In case of truncation + error, outbflp contains required size to make this conversion successful + and returns ORA-1405. + + Syntax + sword OCIRowidToChar( OCIRowid *rowidDesc, + OraText *outbfp, + ub2 *outbflp, + OCIError *errhp) + + Comments + After this conversion, ROWID in character format can be bound using + OCIBindByPos or OCIBindByName call and used to query a row at a + desired ROWID. + + Parameters + rowidDesc (IN) - rowid DESCriptor which is allocated from OCIDescritorAlloc + and populated by a prior SQL statement execution + outbfp (OUT) - pointer to the buffer where converted rowid in character + representation is stored after successful execution. + outbflp (IN/OUT) - pointer to output buffer length variable. + Before execution (IN mode) *outbflp contains the size of + outbfp, after execution (OUT mode) *outbflp contains amount + of bytes converted. In an event of truncation during + conversion *outbflp contains the required length to make + conversion successful. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + + ------------------------------OCIDefineArrayOfStruct-------------------------- + + + OCIDefineArrayOfStruct() + Name + OCI Define for Array of Structures + Purpose + This call specifies additional attributes necessary for a static array define. + Syntax + sword OCIDefineArrayOfStruct ( OCIDefine *defnp, + OCIError *errhp, + ub4 pvskip, + ub4 indskip, + ub4 rlskip, + ub4 rcskip ); + Comments + This call specifies additional attributes necessary for an array define, + used in an array of structures (multi-row, multi-column) fetch. + For more information about skip parameters, see the section "Skip Parameters" + on page 4-17. + Parameters + defnp (IN) - the handle to the define structure which was returned by a call + to OCIDefineByPos(). + errhp (IN) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + pvskip (IN) - skip parameter for the next data value. + indskip (IN) - skip parameter for the next indicator location. + rlskip (IN) - skip parameter for the next return length value. + rcskip (IN) - skip parameter for the next return code. + Related Functions + OCIAttrGet() + + + + + + OCIDefineByPos() + Name + OCI Define By Position + Purpose + Associates an item in a select-list with the type and output data buffer. + Syntax + sb4 OCIDefineByPos ( + OCIStmt *stmtp, + OCIDefine **defnp, + OCIError *errhp, + ub4 position, + dvoid *valuep, + sb4 value_sz, + ub2 dty, + dvoid *indp, + ub2 *rlenp, + ub2 *rcodep, + ub4 mode ); + Comments + This call defines an output buffer which will receive data retreived from + Oracle. The define is a local step which is necessary when a SELECT statement + returns data to your OCI application. + This call also implicitly allocates the define handle for the select-list item. + Defining attributes of a column for a fetch is done in one or more calls. The + first call is to OCIDefineByPos(), which defines the minimal attributes + required to specify the fetch. + This call takes as a parameter a define handle, which must have been + previously allocated with a call to OCIHandleAlloc(). + Following the call to OCIDefineByPos() additional define calls may be + necessary for certain data types or fetch modes: + A call to OCIDefineArrayOfStruct() is necessary to set up skip parameters + for an array fetch of multiple columns. + A call to OCIDefineObject() is necessary to set up the appropriate + attributes of a named data type fetch. In this case the data buffer pointer + in ocidefn() is ignored. + Both OCIDefineArrayOfStruct() and OCIDefineObject() must be called + after ocidefn() in order to fetch multiple rows with a column of named + data types. + For a LOB define, the buffer pointer must be a lob locator of type + OCILobLocator , allocated by the OCIDescAlloc() call. LOB locators, and not + LOB values, are always returned for a LOB column. LOB values can then be + fetched using OCI LOB calls on the fetched locator. + For NCHAR (fixed and varying length), the buffer pointer must point to an + array of bytes sufficient for holding the required NCHAR characters. + Nested table columns are defined and fetched like any other named data type. + If the mode parameter is this call is set to OCI_DYNAMIC_FETCH, the client + application can fetch data dynamically at runtime. + Runtime data can be provided in one of two ways: + callbacks using a user-defined function which must be registered with a + subsequent call to OCIDefineDynamic(). When the client library needs a + buffer to return the fetched data, the callback will be invoked and the + runtime buffers provided will return a piece or the whole data. + a polling mechanism using calls supplied by the OCI. This mode is + assumed if no callbacks are defined. In this case, the fetch call returns the + OCI_NEED_DATA error code, and a piecewise polling method is used + to provide the data. + Related Functions: For more information about using the + OCI_DYNAMIC_FETCH mode, see the section "Runtime Data + Allocation and Piecewise Operations" on page 5-16 of Volume 1.. + For more information about the define step, see the section "Defining" + on page 2-30. + Parameters + stmtp (IN) - a handle to the requested SQL query operation. + defnp (IN/OUT) - a pointer to a pointer to a define handle which is implicitly + allocated by this call. This handle is used to store the define information + for this column. + errhp (IN) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + position (IN) - the position of this value in the select list. Positions are + 1-based and are numbered from left to right. For example, in the SELECT + statement + SELECT empno, ssn, mgrno FROM employees; + empno is at position 1, ssn is at position 2, and mgrno is at position 3. + valuep (IN/OUT) - a pointer to a buffer or an array of buffers of the type + specified in the dty parameter. A number of buffers can be specified when + results for more than one row are desired in a single fetch call. + value_sz (IN) - the size of each valuep buffer in bytes. If the data is stored + internally in VARCHAR2 format, the number of characters desired, if different + from the buffer size in bytes, may be additionally specified by the using + OCIAttrSet(). + In an NLS conversion environment, a truncation error will be generated if the + number of bytes specified is insufficient to handle the number of characters + desired. + dty (IN) - the data type. Named data type (SQLT_NTY) and REF (SQLT_REF) + are valid only if the environment has been intialized with in object mode. + indp - pointer to an indicator variable or array. For scalar data types, + pointer to sb2 or an array of sb2s. Ignored for named data types. For named + data types, a pointer to a named data type indicator structure or an array of + named data type indicator structures is associated by a subsequent + OCIDefineObject() call. + See the section "Indicator Variables" on page 2-43 for more information about + indicator variables. + rlenp (IN/OUT) - pointer to array of length of data fetched. Each element in + rlenp is the length of the data in the corresponding element in the row after + the fetch. + rcodep (OUT) - pointer to array of column-level return codes + mode (IN) - the valid modes are: + OCI_DEFAULT. This is the default mode. + OCI_DYNAMIC_FETCH. For applications requiring dynamically + allocated data at the time of fetch, this mode must be used. The user may + additionally call OCIDefineDynamic() to set up a callback function that + will be invoked to receive the dynamically allocated buffers and to set + up the memory allocate/free callbacks and the context for the callbacks. + valuep and value_sz are ignored in this mode. + Related Functions + OCIDefineArrayOfStruct(), OCIDefineDynamic(), OCIDefineObject() + + + + + OCIDefineDynamic() + Name + OCI Define Dynamic Fetch Attributes + Purpose + This call is used to set the additional attributes required if the + OCI_DYNAMIC_FETCH mode was selected in OCIDefineByPos(). + Syntax + sword OCIDefineDynamic( OCIDefine *defnp, + OCIError *errhp, + dvoid *octxp, + OCICallbackDefine (ocbfp)( + dvoid *octxp, + OCIDefine *defnp, + ub4 iter, + dvoid **bufpp, + ub4 **alenpp, + ub1 *piecep, + dvoid **indpp, + ub2 **rcodep) ); + Comments + This call is used to set the additional attributes required if the + OCI_DYNAMIC_FETCH mode has been selected in a call to + OCIDefineByPos(). + When the OCI_DYNAMIC_FETCH mode is selected, buffers will be + dynamically allocated for REF, and named data type, values to receive the + data. The pointers to these buffers will be returned. + If OCI_DYNAMIC_FETCH mode was selected, and the call to + OCIDefineDynamic() is skipped, then the application can fetch data piecewise + using OCI calls. + For more information about OCI_DYNAMIC_FETCH mode, see the section + "Runtime Data Allocation and Piecewise Operations" on page 5-16. + Parameters + defnp (IN/OUT) - the handle to a define structure returned by a call to + OCIDefineByPos(). + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + octxp (IN) - points to a context for the callback function. + ocbfp (IN) - points to a callback function. This is invoked at runtime to get + a pointer to the buffer into which the fetched data or a piece of it will be + retreived. The callback also specifies the indicator, the return code and the + lengths of the data piece and indicator. The callback has the following + parameters: + octxp (IN) - a context pointer passed as an argument to all the callback + functions. + defnp (IN) - the define handle. + iter (IN) - which row of this current fetch. + bufpp (OUT) - returns a pointer to a buffer to store the column value, ie. + *bufp points to some appropriate storage for the column value. + alenpp (OUT) - returns a pointer to the length of the buffer. *alenpp + contains the size of the buffer after return from callback. Gets set to + actual data size after fetch. + piecep (IN/OUT) - returns a piece value, as follows: + The IN value can be OCI_ONE_PIECE, OCI_FIRST_PIECE or + OCI_NEXT_PIECE. + The OUT value can be OCI_ONE_PIECE if the IN value was + OCI_ONE_PIECE. + The OUT value can be OCI_ONE_PIECE or OCI_FIRST_PIECE if + the IN value was OCI_FIRST_PIECE. + The OUT value can only be OCI_NEXT_PIECE or + OCI_LAST_PIECE if the IN value was OCI_NEXT_PIECE. + indpp (IN) - indicator variable pointer + rcodep (IN) - return code variable pointer + Related Functions + OCIAttrGet() + OCIDefineObject() + + + + + OCIDefineObject() + Name + OCI Define Named Data Type attributes + Purpose + Sets up additional attributes necessary for a Named Data Type define. + Syntax + sword OCIDefineObject ( OCIDefine *defnp, + OCIError *errhp, + CONST OCIType *type, + dvoid **pgvpp, + ub4 *pvszsp, + dvoid **indpp, + ub4 *indszp ); + Comments + This call sets up additional attributes necessary for a Named Data Type define. + An error will be returned if this function is called when the OCI environment + has been initialized in non-Object mode. + This call takes as a paramter a type descriptor object (TDO) of datatype + OCIType for the named data type being defined. The TDO can be retrieved + with a call to OCITypeByName(). + See the description of OCIInitialize() on page 13 - 43 for more information + about initializing the OCI process environment. + Parameters + defnp (IN/OUT) - a define handle previously allocated in a call to + OCIDefineByPos(). + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + type (IN, optional) - points to the Type Descriptor Object (TDO) which + describes the type of the program variable. Only used for program variables + of type SQLT_NTY. This parameter is optional, and may be passed as NULL + if it is not being used. + pgvpp (IN/OUT) - points to a pointer to a program variable buffer. For an + array, pgvpp points to an array of pointers. Memory for the fetched named data + type instance(s) is dynamically allocated in the object cache. At the end of + the fetch when all the values have been received, pgvpp points to the + pointer(s) to these newly allocated named data type instance(s). The + application must call OCIObjectMarkDel() to deallocate the named data type + instance(s) when they are no longer needed. + pvszsp (IN/OUT) - points to the size of the program variable. For an array, it + is an array of ub4s. On return points to the size(s) of unpickled fetched + values. + indpp (IN/OUT) - points to a pointer to the program variable buffer + containing the parallel indicator structure. For an array, points to an array + of pointers. Memory is allocated to store the indicator structures in the + object cache. At the end of the fetch when all values have been received, + indpp points to the pointer(s) to these newly allocated indicator structure(s). + indszp (IN/OUT) - points to the size(s) of the indicator structure program + variable. For an array, it is an array of ub4s. On return points to the size(s) + of the unpickled fetched indicator values. + Related Functions + OCIAttrGet() + + + + OCIDescAlloc() + Name + OCI Get DESCriptor or lob locator + Purpose + Allocates storage to hold certain data types. The descriptors can be used as + bind or define variables. + Syntax + sword OCIDescAlloc ( CONST dvoid *parenth, + dvoid **descpp, + ub4 type, + size_t xtramem_sz, + dvoid **usrmempp); + Comments + Returns a pointer to an allocated and initialized structure, corresponding to + the type specified in type. A non-NULL descriptor or LOB locator is returned + on success. No diagnostics are available on error. + This call returns OCI_SUCCESS if successful, or OCI_INVALID_HANDLE if + an out-of-memory error occurs. + Parameters + parenth (IN) - an environment handle. + descpp (OUT) - returns a descriptor or LOB locator of desired type. + type (IN) - specifies the type of descriptor or LOB locator to be allocated. + The specific types are: + OCI_DTYPE_SNAP - specifies generation of snapshot descriptor of C + type - OCISnapshot + OCI_DTYPE_LOB - specifies generation of a LOB data type locator of C + type - OCILobLocator + OCI_DTYPE_RSET - specifies generation of a descriptor of C type + OCIResult that references a result set (a number of rows as a result of a + query). This descriptor is bound to a bind variable of data type + SQLT_RSET (result set). The descriptor has to be converted into a + statement handle using a function - OCIResultSetToStmt() - which can + then be passed to OCIDefineByPos() and OCIStmtFetch() to retrieve the + rows of the result set. + OCI_DTYPE_ROWID - specifies generation of a ROWID descriptor of C + type OCIRowid. + OCI_DTYPE_COMPLEXOBJECTCOMP - specifies generation of a + complex object retrieval descriptor of C type + OCIComplexObjectComp. + xtramemsz (IN) - specifies an amount of user memory to be allocated for use + by the application. + usrmempp (OUT) - returns a pointer to the user memory of size xtramemsz + allocated by the call for the user. + Related Functions + OCIDescFree() + + + + + OCIDescFree() + Name + OCI Free DESCriptor + Purpose + Deallocates a previously allocated descriptor. + Syntax + sword OCIDescFree ( dvoid *descp, + ub4 type); + Comments + This call frees up storage associated with the descriptor, corresponding to the + type specified in type. Returns OCI_SUCCESS or OCI_INVALID_HANDLE. + All descriptors must be explicitly deallocated. OCI will not deallocate a + descriptor if the environment handle is deallocated. + Parameters + descp (IN) - an allocated descriptor. + type (IN) - specifies the type of storage to be freed. The specific types are: + OCI_DTYPE_SNAP - snapshot descriptor + OCI_DTYPE_LOB - a LOB data type descriptor + OCI_DTYPE_RSET - a descriptor that references a result set (a number + of rows as a result of a query). + OCI_DTYPE_ROWID - a ROWID descriptor + OCI_DTYPE_COMPLEXOBJECTCOMP - a complex object retrieval + descriptor + Related Functions + OCIDescAlloc() + + + + OCIDescribeAny() + Name + OCI DeSCribe Any + Purpose + Describes existing schema objects. + Syntax + sword OCIDescribeAny ( OCISvcCtx *svchp, + OCIError *errhp, + dvoid *objptr, + ub4 objnm_len, + ub1 objptr_typ, + ub1 info_level, + ub1 objtype, + OCIDesc *dschp ); + Comments + This is a generic describe call that describes existing schema objects: tables, + views, synonyms, procedures, functions, packages, sequences, and types. As a + result of this call, the describe handle is populated with the object-specific + attributes which can be obtained through an OCIAttrGet() call. + An OCIParamGet() on the describe handle returns a parameter descriptor for a + specified position. Parameter positions begin with 1. Calling OCIAttrGet() on + the parameter descriptor returns the specific attributes of a stored procedure + or function parameter or a table column descriptor as the case may be. + These subsequent calls do not need an extra round trip to the server because + the entire schema object description cached on the client side by + OCIDescribeAny(). Calling OCIAttrGet() on the describe handle can also return + the total number of positions. + See the section "Describing" on page 2-33 for more information about describe + operations. + Parameters + TO BE UPDATED + svchp (IN/OUT) - a service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + objptr (IN) - the name of the object (a null-terminated string) to be + described. Only procedure or function names are valid when connected to an + Oracle7 Server. + objptr_len (IN) - the length of the string. Must be non-zero. + objptr_typ (IN) - Must be OCI_OTYPE_NAME, OCI_OTYPE_REF, or OCI_OTYPE_PTR. + info_level (IN) - reserved for future extensions. Pass OCI_DEFAULT. + objtype (IN/OUT) - object type. + dschp (IN/OUT) - a describe handle that is populated with describe + information about the object after the call. + Related Functions + OCIAttrGet() + + + + OCIEnvCreate() + Name + OCI ENVironment CREATE + Purpose + This function creates and initializes an environment for the rest of + the OCI functions to work under. This call is a replacement for both + the OCIInitialize and OCIEnvInit calls. + Syntax + sword OCIEnvCreate ( OCIEnv **envhpp, + ub4 mode, + CONST dvoid *ctxp, + CONST dvoid *(*malocfp) + (dvoid *ctxp, + size_t size), + CONST dvoid *(*ralocfp) + (dvoid *ctxp, + dvoid *memptr, + size_t newsize), + CONST void (*mfreefp) + ( dvoid *ctxp, + dvoid *memptr)) + size_t xtramemsz, + dvoid **usrmempp ); + + Comments + This call creates an environment for all the OCI calls using the modes + specified by the user. This call can be used instead of the two calls + OCIInitialize and OCIEnvInit. This function returns an environment handle + which is then used by the remaining OCI functions. There can be multiple + environments in OCI each with its own environment modes. This function + also performs any process level initialization if required by any mode. + For example if the user wants to initialize an environment as OCI_THREADED, + then all libraries that are used by OCI are also initialized in the + threaded mode. + + This call should be invoked before anny other OCI call and should be used + instead of the OCIInitialize and OCIEnvInit calls. This is the recommended + call, although OCIInitialize and OCIEnvInit calls will still be supported + for backward compatibility. + + envpp (OUT) - a pointer to a handle to the environment. + mode (IN) - specifies initialization of the mode. The valid modes are: + OCI_DEFAULT - default mode. + OCI_THREADED - threaded environment. In this mode, internal data + structures are protected from concurrent accesses by multiple threads. + OCI_OBJECT - will use navigational object interface. + ctxp (IN) - user defined context for the memory call back routines. + malocfp (IN) - user-defined memory allocation function. If mode is + OCI_THREADED, this memory allocation routine must be thread safe. + ctxp - context pointer for the user-defined memory allocation function. + size - size of memory to be allocated by the user-defined memory + allocation function + ralocfp (IN) - user-defined memory re-allocation function. If mode is + OCI_THREADED, this memory allocation routine must be thread safe. + ctxp - context pointer for the user-defined memory reallocation + function. + memp - pointer to memory block + newsize - new size of memory to be allocated + mfreefp (IN) - user-defined memory free function. If mode is + OCI_THREADED, this memory free routine must be thread safe. + ctxp - context pointer for the user-defined memory free function. + memptr - pointer to memory to be freed + xtramemsz (IN) - specifies the amount of user memory to be allocated. + usrmempp (OUT) - returns a pointer to the user memory of size xtramemsz + allocated by the call for the user. + + Example + + Related Functions + OCIInitialize, OCIEnvInit + + OCIEnvNlsCreate() + Name + OCI ENVironment CREATE with NLS info + Purpose + This function does almost everything OCIEnvCreate does, plus enabling setting + of charset and ncharset programmatically, except OCI_UTF16 mode. + Syntax + sword OCIEnvNlsCreate(OCIEnv **envhpp, + ub4 mode, + dvoid *ctxp, + dvoid *(*malocfp) + (dvoid *ctxp, + size_t size), + dvoid *(*ralocfp) + (dvoid *ctxp, + dvoid *memptr, + size_t newsize), + void (*mfreefp) + (dvoid *ctxp, + dvoid *memptr), + size_t xtramemsz, + dvoid **usrmempp, + ub2 charset, + ub2 ncharset) + Comments + The charset and ncharset must be both zero or non-zero. + The parameters have the same meaning as the ones in OCIEnvCreate(). + When charset or ncharset is non-zero, the corresponding character set will + be used to replace the ones specified in NLS_LANG or NLS_NCHAR. Moreover, + OCI_UTF16ID is allowed to be set as charset and ncharset. + On the other hand, OCI_UTF16 mode is deprecated with this function. + Applications can achieve the same effects by setting + both charset and ncharset as OCI_UTF16ID. + + + OCIEnvInit() + Name + OCI INITialize environment + Purpose + This call initializes the OCI environment handle. + Syntax + sword OCIEnvInit ( OCIEnv **envp, + ub4 mode, + size_t xtramemsz, + dvoid **usrmempp ); + Comments + Initializes the OCI environment handle. No changes are done on an initialized + handle. If OCI_ERROR or OCI_SUCCESS_WITH_INFO is returned, the + environment handle can be used to obtain ORACLE specific errors and + diagnostics. + This call is processed locally, without a server round-trip. + Parameters + envpp (OUT) - a pointer to a handle to the environment. + mode (IN) - specifies initialization of an environment mode. The only valid + mode is OCI_DEFAULT for default mode + xtramemsz (IN) - specifies the amount of user memory to be allocated. + usrmempp (OUT) - returns a pointer to the user memory of size xtramemsz + allocated by the call for the user. + Example + See the description of OCISessionBegin() on page 13-84 for an example showing + the use of OCIEnvInit(). + Related Functions + + + + + OCIErrorGet() + Name + OCI Get Diagnostic Record + Purpose + Returns an error message in the buffer provided and an ORACLE error. + Syntax + sword OCIErrorGet ( dvoid *hndlp, + ub4 recordno, + OraText *sqlstate, + ub4 *errcodep, + OraText *bufp, + ub4 bufsiz, + ub4 type ); + Comments + Returns an error message in the buffer provided and an ORACLE error. + Currently does not support SQL state. This call can be called a multiple + number of times if there are more than one diagnostic record for an error. + The error handle is originally allocated with a call to OCIHandleAlloc(). + Parameters + hndlp (IN) - the error handle, in most cases, or the environment handle (for + errors on OCIEnvInit(), OCIHandleAlloc()). + recordno (IN) - indicates the status record from which the application seeks + info. Starts from 1. + sqlstate (OUT) - Not supported in Version 8.0. + errcodep (OUT) - an ORACLE Error is returned. + bufp (OUT) - the error message text is returned. + bufsiz (IN) - the size of the buffer provide to get the error message. + type (IN) - the type of the handle. + Related Functions + OCIHandleAlloc() + + OCIExtractInit + Name + OCI Extract Initialize + Purpose + This function initializes the parameter manager. + Syntax + sword OCIExtractInit(dvoid *hndl, OCIError *err); + Comments + It must be called before calling any other parameter manager routine. The NLS + information is stored inside the parameter manager context and used in + subsequent calls to OCIExtract routines. + Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR + Parameters + hndl (IN/OUT) - The OCI environment or session handle. + err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in + err and this function returns OCI_ERROR. Diagnostic information + can be obtained by calling OCIErrorGet(). + Related Functions + OCIExtractTerm() + + OCIExtractTerm + Name + OCI Extract Terminate + Purpose + This function releases all dynamically allocated storage and may perform + other internal bookkeeping functions. + Syntax + sword OCIExtractTerm(dvoid *hndl, OCIError *err); + Comments + It must be called when the parameter manager is no longer being used. + Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR + Parameters + hndl (IN/OUT) - The OCI environment or session handle. + err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in + err and this function returns OCI_ERROR. Diagnostic information + can be obtained by calling OCIErrorGet(). + Related Functions + OCIExtractInit() + + OCIExtractReset + Name + OCI Extract Reset + Purpose + The memory currently used for parameter storage, key definition storage, and + parameter value lists is freed and the structure is reinitialized. + Syntax + sword OCIExtractReset(dvoid *hndl, OCIError *err); + Comments + Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR + Parameters + hndl (IN/OUT) - The OCI environment or session handle. + err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in + err and this function returns OCI_ERROR. Diagnostic information + can be obtained by calling OCIErrorGet(). + Related Functions + + OCIExtractSetNumKeys + Name + OCI Extract Set Number of Keys + Purpose + Informs the parameter manager of the number of keys that will be registered. + Syntax + sword OCIExtractSetNumKeys(dvoid *hndl, OCIError *err, uword numkeys); + Comments + This routine must be called prior to the first call of OCIExtractSetKey(). + Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR + Parameters + hndl (IN/OUT) - The OCI environment or session handle. + err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in + err and this function returns OCI_ERROR. Diagnostic information + can be obtained by calling OCIErrorGet(). + numkeys (IN) - The number of keys that will be registered with + OCIExtractSetKey(). + Related Functions + OCIExtractSetKey() + + OCIExtractSetKey + Name + OCI Extract Set Key definition + Purpose + Registers information about a key with the parameter manager. + Syntax + sword OCIExtractSetKey(dvoid *hndl, OCIError *err, CONST OraText *name, + ub1 type, ub4 flag, CONST dvoid *defval, + CONST sb4 *intrange, CONST OraText *CONST *strlist); + Comments + This routine must be called after calling OCIExtractSetKey() and before + calling OCIExtractFromFile() or OCIExtractFromStr(). + Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR + Parameters + hndl (IN/OUT) - The OCI environment or session handle. + err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in + err and this function returns OCI_ERROR. Diagnostic information + can be obtained by calling OCIErrorGet(). + name (IN) - The name of the key. + type (IN) - The type of the key (OCI_EXTRACT_TYPE_INTEGER, + OCI_EXTRACT_TYPE_OCINUM, OCI_EXTRACT_TYPE_STRING, or + OCI_EXTRACT_TYPE_BOOLEAN). + flag (IN) - Set to OCI_EXTRACT_MULTIPLE if the key can take multiple values + or 0 otherwise. + defval (IN) - Set to the default value for the key. May be NULL if there is + no default. A string default must be a (text*) type, an + integer default must be an (sb4*) type, and a boolean default + must be a (ub1*) type. + intrange (IN) - Starting and ending values for the allowable range of integer + values. May be NULL if the key is not an integer type or if + all integer values are acceptable. + strlist (IN) - List of all acceptable text strings for the key. May be NULL + if the key is not a string type or if all text values are + acceptable. + Related Functions + OCIExtractSetNumKeys() + + OCIExtractFromFile + Name + OCI Extract parameters From File + Purpose + The keys and their values in the given file are processed. + Syntax + sword OCIExtractFromFile(dvoid *hndl, OCIError *err, ub4 flag, + OraText *filename); + Comments + Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR + Parameters + hndl (IN/OUT) - The OCI environment or session handle. + err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in + err and this function returns OCI_ERROR. Diagnostic information + can be obtained by calling OCIErrorGet(). + flag (IN) - Zero or has one or more of the following bits set: + OCI_EXTRACT_CASE_SENSITIVE, OCI_EXTRACT_UNIQUE_ABBREVS, or + OCI_EXTRACT_APPEND_VALUES. + filename (IN) - Null-terminated filename string. + Related Functions + + OCIExtractFromStr + Name + OCI Extract parameters From String + Purpose + The keys and their values in the given string are processed. + Syntax + sword OCIExtractFromStr(dvoid *hndl, OCIError *err, ub4 flag, OraText *input); + Comments + Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR + Parameters + hndl (IN/OUT) - The OCI environment or session handle. + err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in + err and this function returns OCI_ERROR. Diagnostic information + can be obtained by calling OCIErrorGet(). + flag (IN) - Zero or has one or more of the following bits set: + OCI_EXTRACT_CASE_SENSITIVE, OCI_EXTRACT_UNIQUE_ABBREVS, or + OCI_EXTRACT_APPEND_VALUES. + input (IN) - Null-terminated input string. + Related Functions + + OCIExtractToInt + Name + OCI Extract To Integer + Purpose + Gets the integer value for the specified key. + Syntax + sword OCIExtractToInt(dvoid *hndl, OCIError *err, OraText *keyname, + uword valno, sb4 *retval); + Comments + The valno'th value (starting with 0) is returned. + Returns OCI_SUCCESS, OCI_INVALID_HANDLE, OCI_NO_DATA, or OCI_ERROR. + OCI_NO_DATA means that there is no valno'th value for this key. + Parameters + hndl (IN) - The OCI environment or session handle. + err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in + err and this function returns OCI_ERROR. Diagnostic information + can be obtained by calling OCIErrorGet(). + keyname (IN) - Key name. + valno (IN) - Which value to get for this key. + retval (OUT) - The actual integer value. + Related Functions + + OCIExtractToBool + Name + OCI Extract To Boolean + Purpose + Gets the boolean value for the specified key. + Syntax + sword OCIExtractToBool(dvoid *hndl, OCIError *err, OraText *keyname, + uword valno, ub1 *retval); + Comments + The valno'th value (starting with 0) is returned. + Returns OCI_SUCCESS, OCI_INVALID_HANDLE, OCI_NO_DATA, or OCI_ERROR. + OCI_NO_DATA means that there is no valno'th value for this key. + Parameters + hndl (IN) - The OCI environment or session handle. + err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in + err and this function returns OCI_ERROR. Diagnostic information + can be obtained by calling OCIErrorGet(). + keyname (IN) - Key name. + valno (IN) - Which value to get for this key. + retval (OUT) - The actual boolean value. + Related Functions + + OCIExtractToStr + Name + OCI Extract To String + Purpose + Gets the string value for the specified key. + Syntax + sword OCIExtractToStr(dvoid *hndl, OCIError *err, OraText *keyname, + uword valno, OraText *retval, uword buflen); + Comments + The valno'th value (starting with 0) is returned. + Returns OCI_SUCCESS, OCI_INVALID_HANDLE, OCI_NO_DATA, or OCI_ERROR. + OCI_NO_DATA means that there is no valno'th value for this key. + Parameters + hndl (IN) - The OCI environment or session handle. + err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in + err and this function returns OCI_ERROR. Diagnostic information + can be obtained by calling OCIErrorGet(). + keyname (IN) - Key name. + valno (IN) - Which value to get for this key. + retval (OUT) - The actual null-terminated string value. + buflen (IN) - The length of the buffer for retval. + Related Functions + + Note: The following OCIExtract functions are unavailable in this release + + OCIExtractToOCINum + Name + OCI Extract To OCI Number + Purpose + Gets the OCINumber value for the specified key. + Syntax + sword OCIExtractToOCINum(dvoid *hndl, OCIError *err, OraText *keyname, + uword valno, OCINumber *retval); + Comments + The valno'th value (starting with 0) is returned. + Returns OCI_SUCCESS, OCI_INVALID_HANDLE, OCI_NO_DATA, or OCI_ERROR. + OCI_NO_DATA means that there is no valno'th value for this key. + Parameters + hndl (IN) - The OCI environment or session handle. + err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in + err and this function returns OCI_ERROR. Diagnostic information + can be obtained by calling OCIErrorGet(). + keyname (IN) - Key name. + valno (IN) - Which value to get for this key. + retval (OUT) - The actual OCINumber value. + Related Functions + + OCIExtractToList + Name + OCI Extract To parameter List + Purpose + Generates a list of parameters from the parameter structures that are stored + in memory. + Syntax + sword OCIExtractToList(dvoid *hndl, OCIError *err, uword *numkeys); + Comments + Must be called before OCIExtractValues() is called. + Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR + Parameters + hndl (IN) - The OCI environment or session handle. + err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in + err and this function returns OCI_ERROR. Diagnostic information + can be obtained by calling OCIErrorGet(). + numkeys (OUT) - Number of distinct keys stored in memory. + Related Functions + OCIExtractFromList() + + OCIExtractFromList + Name + OCI Extract From parameter List + Purpose + Generates a list of values for the a parameter in the parameter list. + Syntax + sword OCIExtractFromList(dvoid *hndl, OCIError *err, uword index, + OraText *name, ub1 *type, uword *numvals, + dvoid ***values); + Comments + Parameters are specified by an index. OCIExtractToList() must be called prior + to calling this routine to generate the parameter list from the parameter + structures that are stored in memory. + Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR + Parameters + hndl (IN) - The OCI environment or session handle. + err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in + err and this function returns OCI_ERROR. Diagnostic information + can be obtained by calling OCIErrorGet(). + name (OUT) - Name of the key for the current parameter. + type (OUT) - Type of the current parameter (OCI_EXTRACT_TYPE_STRING, + OCI_EXTRACT_TYPE_INTEGER, OCI_EXTRACT_TYPE_OCINUM, or + OCI_EXTRACT_TYPE_BOOLEAN) + numvals (OUT) - Number of values for this parameter. + values (OUT) - The values for this parameter. + Related Functions + OCIExtractToList() + + + ************************ OCIFileClose() *********************************** + + Name + OCIFileClose - Oracle Call Interface FILE i/o CLOSE + + Purpose + Close a previously opened file. + + Syntax + sword OCIFileClose ( dvoid *hndl, + OCIError *err, + OCIFileObject *filep ) + + Comments + This function will close a previously opened file. If the function succeeds + then OCI_SUCCESS will be returned, else OCI_ERROR. + + Parameters + hndl (IN) - the OCI environment or session handle. + err (OUT) - the OCI error handle + filep (IN) - the OCIFile file object + + Related Functions + OCIFileOpen. + + + + ********************* OCIFileExists() ************************************** + + Name + OCIFileExists - Oracle Call Interface FILE i/o EXIST + + Purpose + Check to see if the file exists. + + Syntax + sword OCIFileExists ( dvoid *hndl, + OCIError *err, + OraText *filename, + OraText *path, + ub1 *flag ) + + Comments + This function will set the flag to TRUE if the file exists else it will + be set to FALSE. + The function will return OCI_ERROR if any error is encountered, else + it will return OCI_ERROR. + + Parameters + hndl(IN) - OCI environment or session handle + err(OUT) - OCI error handle + filename(IN) - filename + path(IN) - path of the file + flag(OUT) - whether the file exists or not + + Related Functions. + None. + + + **************************** OCIFileFlush() ****************************** + + + Name + OCIFileFlush - Oracle Call Interface File i/o FLUSH + + Purpose + Flush the buffers associated with the file to the disk. + + Syntax + sword OCIFileFlush ( dvoid *hndl, + OCIError *err, + OCIFileObject *filep ) + + Comments + The function will return OCI_ERROR if any error is encountered, else + it will return OCI_ERROR. + + Parameters + hndl (IN) - the OCI environment or session handle. + err (OUT) - the OCI error handle + filep (IN) - the OCIFile file object + + Related Functions + OCIFileOpen, OCIFileWrite + + + + *************************** OCIFileGetLength() **************************** + + Name + OCIFileGetLength - Oracle Call Interface FILE i/o GET file LENGTH + + Purpose + Get the length of a file. + + Syntax + OCIFileGetLength(dvoid *hndl, + OCIError *err, + OraText *filename, + OraText *path, + ubig_ora *lenp ) + + Comments + The length of the file will be returned in lenp. + The function will return OCI_ERROR if any error is encountered, else + it will return OCI_ERROR. + + Parameters + hndl (IN) - the OCI environment or session handle. + err (OUT) - the OCI error handle. If there is an error, it is recorded + in err and this function returns OCI_ERROR. Diagnostic information can be + obtained by calling OCIErrorGet(). + filename (IN) - file name. + path (IN) - path of the file. + lenp (OUT) - On output, it is the length of the file in bytes. + is the number of bytes in the file. + + Related Functions + None. + + + + ******************************** OCIFileInit() ***************************** + + Name + OCIFileInit - Oracle Call Interface FILE i/o INITialize + + Purpose + Initialize the OCI File I/O package and create the OCIFile context. + + Syntax + sword OCIFileInit ( dvoid *hndl, + OCIError *err) + + Comments + This function should be called before any of the OCIFile functions are + used. + The function will return OCI_ERROR if any error is encountered, else + it will return OCI_ERROR. + + Parameters + hndl(IN) - OCI environment or session handle. + err(OUT) - OCI error structure. + + Related Functions + OCIFileTerm + + + + ********************************* OCIFileOpen() ***************************** + + Name + OCIFileOpen - Oracle Call Interface File i/o OPEN + + Purpose + Open a file. + + Syntax + sword OCIFileOpen ( dvoid *hndl, + OCIError *err, + OCIFileObject **filep, + OraText *filename, + OraText *path, + ub4 mode, + ub4 create, + ub4 type ) + + Comments + OCIFileOpen returns a handle to the open file in filep if the file is + successfully opened. + If one wants to use the standard file objects (stdin, stdout & stderr) + then OCIFileOpen whould be called with the type filed containing the + appropriate type (see the parameter type). If any of the standard files + are specified then filename, path, mode and create are ignored. + The function will return OCI_ERROR if any error is encountered, else + it will return OCI_ERROR. + + Parameters + hndl (OUT) - the OCI environment or session handle. + err (OUT) - the OCI error handle. If there is an error, it is recorded + in err and this function returns OCI_ERROR. Diagnostic information can be + obtained by calling OCIErrorGet(). + filep (OUT) - the file object to be returned. + filename (IN) - file name (NULL terminated string). + path (IN) - path of the file (NULL terminated string). + mode - mode in which to open the file (valid modes are OCI_FILE_READONLY, + OCI_FILE_WRITEONLY, OCI_FILE_READ_WRITE). + create - should the file be created if it does not exist. Valid values + are: + OCI_FILE_TRUNCATE - create a file regardless of whether or not it exists. + If the file already exists overwrite it. + OCI_FILE_EXIST - open it if it exists, else fail. + OCI_FILE_EXCL - fail if the file exists, else create. + OCI_FILE_CREATE - open the file if it exists, and create it if it doesn't. + OCI_FILE_APPEND - set the file pointer to the end of the file prior to + writing(this flag can be OR'ed with OCI_FILE_EXIST or + OCI_FILE_CREATE). + type - file type. Valid values are OCI_FILE_TEXT, OCI_FILE_BIN, + OCI_FILE_STDIN, OCI_FILE_STDOUT and OCI_FILE_STDERR. + If any of the standard files are specified then filename, path, mode + and create are ignored. + + Related Functions. + OCIFileClose + + + + ************************** OCIFileRead() ************************************ + + Name + OCIFileRead - Oracle Call Interface FILE i/o READ + + Purpose + Read from a file into a buffer. + + Syntax + sword OCIFileRead ( dvoid *hndl, + OCIError *err, + OCIFileObject *filep, + dvoid *bufp, + ub4 bufl, + ub4 *bytesread ) + + Comments + Upto bufl bytes from the file will be read into bufp. The user should + allocate memory for the buffer. + The number of bytes read would be in bytesread. + The function will return OCI_ERROR if any error is encountered, else + it will return OCI_ERROR. + + Parameters + hndl (IN) - the OCI environment or session handle. + err (OUT) - the OCI error handle. If there is an error, it is recorded + in err and this function returns OCI_ERROR. Diagnostic information can be + obtained by calling OCIErrorGet(). + filep (IN/OUT) - a File Object that uniquely references the file. + bufp (IN) - the pointer to a buffer into which the data will be read. The + length of the allocated memory is assumed to be bufl. + bufl - the length of the buffer in bytes. + bytesread (OUT) - the number of bytes read. + + Related Functions + OCIFileOpen, OCIFileSeek, OCIFileWrite + + + + ****************************** OCIFileSeek() ****************************** + + Name + OCIFileSeek - Oracle Call Interface FILE i/o SEEK + + Purpose + Perfom a seek to a byte position. + + Syntax + sword OCIFileSeek ( dvoid *hndl, + OCIError *err, + OCIFileObject *filep, + uword origin, + ubig_ora offset, + sb1 dir) + + Comments + The function will return OCI_ERROR if any error is encountered, else + it will return OCI_ERROR. + + Parameters + hndl (IN) - the OCI environment or session handle. + err (OUT) - the OCI error handle. If there is an error, it is recorded + in err and this function returns OCI_ERROR. Diagnostic information can be + obtained by calling OCIErrorGet(). + filep (IN/OUT) - a file handle that uniquely references the file. + origin - The starting point we want to seek from. NOTE: The starting + point may be OCI_FILE_SEEK_BEGINNING (beginning), OCI_FILE_SEEK_CURRENT + (current position), or OCI_FILE_SEEK_END (end of file). + offset - The number of bytes from the origin we want to start reading from. + dir - The direction we want to go from the origin. NOTE: The direction + can be either OCI_FILE_FORWARD or OCI_FILE_BACKWARD. + + Related Function + OCIFileOpen, OCIFileRead, OCIFileWrite + + + + *************************** OCIFileTerm() ********************************** + + Name + OCIFileTerm - Oracle Call Interface FILE i/o TERMinate + + Purpose + Terminate the OCI File I/O package and destroy the OCI File context. + + Syntax + sword OCIFileTerm ( dvoid *hndl, + OCIError *err ) + + Comments + After this function has been called no OCIFile function should be used. + The function will return OCI_ERROR if any error is encountered, else + it will return OCI_ERROR. + + Parameters + hndl(IN) - OCI environment or session handle. + err(OUT) - OCI error structure. + + Related Functions + OCIFileInit + + + ********************************* OCIFileWrite() **************************** + + Name + OCIFileWrite - Oracle Call Interface FILE i/o WRITE + + Purpose + Write data from buffer into a file. + + Syntax + sword OCIFileWrite ( dvoid *hndl, + OCIError *err, + OCIFileObject *filep, + dvoid *bufp, + ub4 buflen + ub4 *byteswritten ) + + Comments + The number of bytes written will be in *byteswritten. + The function will return OCI_ERROR if any error is encountered, else + it will return OCI_ERROR. + + Parameters + hndl (IN) - the OCI environment or session handle. + err (OUT) - the OCI error handle. If there is an error, it is recorded + in err and this function returns OCI_ERROR. Diagnostic information can be + obtained by calling OCIErrorGet(). + filep (IN/OUT) - a file handle that uniquely references the file. + bufp (IN) - the pointer to a buffer from which the data will be written. + The length of the allocated memory is assumed to be the value passed + in bufl. + bufl - the length of the buffer in bytes. + byteswritten (OUT) - the number of bytes written. + + Related Functions + OCIFileOpen, OCIFileSeek, OCIFileRead + + + + + + OCIHandleAlloc() + Name + OCI Get HaNDLe + Purpose + This call returns a pointer to an allocated and initialized handle. + Syntax + sword OCIHandleAlloc ( CONST dvoid *parenth, + dvoid **hndlpp, + ub4 type, + size_t xtramem_sz, + dvoid **usrmempp); + Comments + Returns a pointer to an allocated and initialized structure, corresponding to + the type specified in type. A non-NULL handle is returned on success. Bind + handle and define handles are allocated with respect to a statement handle. All + other handles are allocated with respect to an environment handle which is + passed in as a parent handle. + No diagnostics are available on error. This call returns OCI_SUCCESS if + successful, or OCI_INVALID_HANDLE if an out-of-memory error occurs. + Handles must be allocated using OCIHandleAlloc() before they can be passed + into an OCI call. + Parameters + parenth (IN) - an environment or a statement handle. + hndlpp (OUT) - returns a handle to a handle type. + type (IN) - specifies the type of handle to be allocated. The specific types + are: + OCI_HTYPE_ERROR - specifies generation of an error report handle of + C type OCIError + OCI_HTYPE_SVCCTX - specifies generation of a service context handle + of C type OCISvcCtx + OCI_HTYPE_STMT - specifies generation of a statement (application + request) handle of C type OCIStmt + OCI_HTYPE_BIND - specifies generation of a bind information handle + of C type OCIBind + OCI_HTYPE_DEFINE - specifies generation of a column definition + handle of C type OCIDefine + OCI_HTYPE_DESCRIBE - specifies generation of a select list + description handle of C type OCIDesc + OCI_HTYPE_SERVER - specifies generation of a server context handle + of C type OCIServer + OCI_HTYPE_SESSION - specifies generation of an authentication + context handle of C type OCISession + OCI_HTYPE_TRANS - specifies generation of a transaction context + handle of C type OCITrans + OCI_HTYPE_COMPLEXOBJECT - specifies generation of a complex + object retrieval handle of C type OCIComplexObject + OCI_HTYPE_SECURITY - specifies generation of a security handle of C + type OCISecurity + xtramem_sz (IN) - specifies an amount of user memory to be allocated. + usrmempp (OUT) - returns a pointer to the user memory of size xtramemsz + allocated by the call for the user. + Related Functions + OCIHandleFree() + + + + OCIHandleFree() + Name + OCI Free HaNDLe + Purpose + This call explicitly deallocates a handle. + Syntax + sword OCIHandleFree ( dvoid *hndlp, + ub4 type); + Comments + This call frees up storage associated with a handle, corresponding to the type + specified in the type parameter. + This call returns either OCI_SUCCESS or OCI_INVALID_HANDLE. + All handles must be explicitly deallocated. OCI will not deallocate a child + handle if the parent is deallocated. + Parameters + hndlp (IN) - an opaque pointer to some storage. + type (IN) - specifies the type of storage to be allocated. The specific types + are: + OCI_HTYPE_ENV - an environment handle + OCI_HTYPE_ERROR - an error report handle + OCI_HTYPE_SVCCTX - a service context handle + OCI_HTYPE_STMT - a statement (application request) handle + OCI_HTYPE_BIND - a bind information handle + OCI_HTYPE_DEFINE - a column definition handle + OCI_HTYPE_DESCRIBE - a select list description handle + OCI_HTYPE_SERVER - a server handle + OCI_HTYPE_SESSION - a user authentication handle + OCI_HTYPE_TRANS - a transaction handle + OCI_HTYPE_COMPLEXOBJECT - a complex object retrieval handle + OCI_HTYPE_SECURITY - a security handle + Related Functions + OCIHandleAlloc() + + + + + OCIInitialize() + Name + OCI Process Initialize + Purpose + Initializes the OCI process environment. + Syntax + sword OCIInitialize ( ub4 mode, + CONST dvoid *ctxp, + CONST dvoid *(*malocfp) + ( dvoid *ctxp, + size_t size ), + CONST dvoid *(*ralocfp) + ( dvoid *ctxp, + dvoid *memp, + size_t newsize ), + CONST void (*mfreefp) + ( dvoid *ctxp, + dvoid *memptr )); + Comments + This call initializes the OCI process environment. + OCIInitialize() must be invoked before any other OCI call. + Parameters + mode (IN) - specifies initialization of the mode. The valid modes are: + OCI_DEFAULT - default mode. + OCI_THREADED - threaded environment. In this mode, internal data + structures are protected from concurrent accesses by multiple threads. + OCI_OBJECT - will use navigational object interface. + ctxp (IN) - user defined context for the memory call back routines. + malocfp (IN) - user-defined memory allocation function. If mode is + OCI_THREADED, this memory allocation routine must be thread safe. + ctxp - context pointer for the user-defined memory allocation function. + size - size of memory to be allocated by the user-defined memory + allocation function + ralocfp (IN) - user-defined memory re-allocation function. If mode is + OCI_THREADED, this memory allocation routine must be thread safe. + ctxp - context pointer for the user-defined memory reallocation + function. + memp - pointer to memory block + newsize - new size of memory to be allocated + mfreefp (IN) - user-defined memory free function. If mode is + OCI_THREADED, this memory free routine must be thread safe. + ctxp - context pointer for the user-defined memory free function. + memptr - pointer to memory to be freed + Example + See the description of OCIStmtPrepare() on page 13-96 for an example showing + the use of OCIInitialize(). + Related Functions + + -------------------------------OCITerminate------------------------------------ + + OCITerminate() + Name + OCI process Terminate + Purpose + Do cleanup before process termination + Syntax + sword OCITerminate (ub4 mode); + + Comments + This call performs OCI related clean up before the OCI process terminates. + If the process is running in shared mode then the OCI process is disconnected + from the shared memory subsystem. + + OCITerminate() should be the last OCI call in any process. + + Parameters + mode (IN) - specifies different termination modes. + + OCI_DEFAULT - default mode. + + Example + + Related Functions + OCIInitialize() + + ------------------------ OCIAppCtxSet-------------------------------------- + Name + OCI Application context Set + Purpose + Set an attribute and its value for a particular application context + namespace + Syntax + (sword) OCIAppCtxSet((void *) sesshndl, (dvoid *)nsptr,(ub4) nsptrlen, + (dvoid *)attrptr, (ub4) attrptrlen, (dvoid *)valueptr, + (ub4) valueptrlen, errhp, (ub4)mode); + + Comments + Please note that the information set on the session handle is sent to the server during the next OCIStatementExecute or OCISessionBegin. + + This information is cleared from the session handle, once the information + has been sent over to the server,and should be setup again if needed. + + Parameters + sesshndl (IN/OUT) - Pointer to a session handle + nsptr (IN) - Pointer to namespace string + nsptrlen (IN) - length of the nsptr + attrptr (IN) - Pointer to attribute string + attrptrlen (IN) - length of the attrptr + valueptr (IN) - Pointer to value string + valueptrlen(IN) - length of the valueptr + errhp (OUT) - Error from the API + mode (IN) - mode of operation (OCI_DEFAULT) + + Returns + error if any + Example + + Related Functions + OCIAppCtxClearAll + + + ------------------------ OCIAppCtxClearAll--------------------------------- + Name + OCI Application Context Clear all attributes in a namespace + Purpose + To clear the values all attributes in a namespace + Syntax + (sword) OCIAppCtxClearAll((void *) sesshndl, (dvoid *)nsptr, (ub4) nsptrlen, + (OCIError *)errhp, (ub4)mode); + + Comments + This will clean up the context information on the server side during the next piggy-back to the server. + + Parameters + sesshndl (IN/OUT) - Pointer to a session handle + nsptr (IN) - Pointer to namespace string where the values of all + attributes are cleared + nsptrlen (IN) - length of the nsptr + errhp (OUT) - Error from the API + mode (IN) - mode of operation (OCI_DEFAULT) + Example + + Returns + error if any + + Related Functions + OCIAppCtxSet + ---------------------- OCIIntervalAssign --------------------------------- + sword OCIIntervalAssign(dvoid *hndl, OCIError *err, + CONST OCIInterval *inpinter, OCIInterval *outinter ); + + DESCRIPTION + Copies one interval to another to create a replica + PARAMETERS + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + (IN) inpinter - Input Interval + (OUT) outinter - Output Interval + RETURNS + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_SUCCESS otherwise + + ---------------------- OCIIntervalCheck ------------------------------------ + sword OCIIntervalCheck(dvoid *hndl, OCIError *err, CONST OCIInterval *interval, + ub4 *valid ); + + DESCRIPTION + Checks the validity of an interval + PARAMETERS + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + (IN) interval - Interval to be checked + (OUT) valid - Zero if the interval is valid, else returns an Ored + combination of the following codes. + + Macro name Bit number Error + ---------- ---------- ----- + OCI_INTER_INVALID_DAY 0x1 Bad day + OCI_INTER_DAY_BELOW_VALID 0x2 Bad DAy Low/high bit (1=low) + OCI_INTER_INVALID_MONTH 0x4 Bad MOnth + OCI_INTER_MONTH_BELOW_VALID 0x8 Bad MOnth Low/high bit (1=low) + OCI_INTER_INVALID_YEAR 0x10 Bad YeaR + OCI_INTER_YEAR_BELOW_VALID 0x20 Bad YeaR Low/high bit (1=low) + OCI_INTER_INVALID_HOUR 0x40 Bad HouR + OCI_INTER_HOUR_BELOW_VALID 0x80 Bad HouR Low/high bit (1=low) + OCI_INTER_INVALID_MINUTE 0x100 Bad MiNute + OCI_INTER_MINUTE_BELOW_VALID 0x200 Bad MiNute Low/high bit(1=low) + OCI_INTER_INVALID_SECOND 0x400 Bad SeCond + OCI_INTER_SECOND_BELOW_VALID 0x800 bad second Low/high bit(1=low) + OCI_INTER_INVALID_FRACSEC 0x1000 Bad Fractional second + OCI_INTER_FRACSEC_BELOW_VALID 0x2000 Bad fractional second Low/High + + + RETURNS + OCI_SUCCESS if interval is okay + OCI_INVALID_HANDLE if 'err' is NULL. + + ---------------------- OCIIntervalCompare ----------------------------------- + sword OCIIntervalCompare(dvoid *hndl, OCIError *err, OCIInterval *inter1, + OCIInterval *inter2, sword *result ); + + DESCRIPTION + Compares two intervals, returns 0 if equal, -1 if inter1 < inter2, + 1 if inter1 > inter2 + PARAMETERS + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + inter1 (IN) - Interval to be compared + inter2 (IN) - Interval to be compared + result (OUT) - comparison result, 0 if equal, -1 if inter1 < inter2, + 1 if inter1 > inter2 + + RETURNS + OCI_SUCCESS on success + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + the two input datetimes are not mutually comparable. + + ---------------------- OCIIntervalDivide ------------------------------------ + sword OCIIntervalDivide(dvoid *hndl, OCIError *err, OCIInterval *dividend, + OCINumber *divisor, OCIInterval *result ); + + DESCRIPTION + Divides an interval by an Oracle Number to produce an interval + PARAMETERS + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + dividend (IN) - Interval to be divided + divisor (IN) - Oracle Number dividing `dividend' + result (OUT) - resulting interval (dividend / divisor) + RETURNS + OCI_SUCCESS on success + OCI_INVALID_HANDLE if 'err' is NULL. + + ---------------------- OCIIntervalFromNumber -------------------- + sword OCIIntervalFromNumber(dvoid *hndl, OCIError *err, + OCIInterval *inter, OCINumber *number); + DESCRIPTION + Converts an interval to an Oracle Number + PARAMETERS + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + (OUT) interval - Interval to be converted + (IN) number - Oracle number result (in years for YEARMONTH interval + and in days for DAYSECOND) + RETURNS + OCI_SUCCESS on success + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR on error. + NOTES + Fractional portions of the date (for instance, minutes and seconds if + the unit chosen is hours) will be included in the Oracle number produced. + Excess precision will be truncated. + + ---------------------- OCIIntervalFromText --------------------------------- + sword OCIIntervalFromText( dvoid *hndl, OCIError *err, CONST OraText *inpstr, + size_t str_len, OCIInterval *result ); + + DESCRIPTION + Given an interval string produce the interval represented by the string. + The type of the interval is the type of the 'result' descriptor. + PARAMETERS + + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + (IN) inpstr - Input string + (IN) str_len - Length of input string + (OUT) result - Resultant interval + RETURNS + OCI_SUCCESS on success + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + there are too many fields in the literal string + the year is out of range (-4713 to 9999) + if the month is out of range (1 to 12) + if the day of month is out of range (1 to 28...31) + if hour is not in range (0 to 23) + if hour is not in range (0 to 11) + if minute is not in range (0 to 59) + if seconds in minute not in range (0 to 59) + if seconds in day not in range (0 to 86399) + if the interval is invalid + + + ---------------------- OCIIntervalGetDaySecond -------------------- + + DESCRIPTION + Gets values of day second interval + PARAMETERS + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + day (OUT) - number of days + hour (OUT) - number of hours + min (OUT) - number of mins + sec (OUT) - number of secs + fsec (OUT) - number of fractional seconds + result (IN) - resulting interval + RETURNS + OCI_SUCCESS on success + OCI_INVALID_HANDLE if 'err' is NULL. + + + ---------------------- OCIIntervalGetYearMonth -------------------- + + DESCRIPTION + Gets year month from an interval + PARAMETERS + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + year (OUT) - year value + month (OUT) - month value + result (IN) - resulting interval + RETURNS + OCI_SUCCESS on success + OCI_INVALID_HANDLE if 'err' is NULL. + + + + -------------------------- OCIIntervalAdd ------------------------------ + sword OCIIntervalAdd(dvoid *hndl, OCIError *err, OCIInterval *addend1, + OCIInterval *addend2, OCIInterval *result ); + NAME OCIIntervalAdd - Adds two intervals + PARAMETERS + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + addend1 (IN) - Interval to be added + addend2 (IN) - Interval to be added + result (OUT) - resulting interval (addend1 + addend2) + DESCRIPTION + Adds two intervals to produce a resulting interval + RETURNS + OCI_SUCCESS on success + OCI_ERROR if: + the two input intervals are not mutually comparable. + the resulting year would go above SB4MAXVAL + the resulting year would go below SB4MINVAL + OCI_INVALID_HANDLE if 'err' is NULL. + NOTES + The two input intervals must be mutually comparable + + ---------------------- OCIIntervalSubtract ------------------------------- + sword OCIIntervalSubtract(dvoid *hndl, OCIError *err, OCIInterval *minuend, + OCIInterval *subtrahend, OCIInterval *result ); + NAME - OCIIntervalSubtract - subtracts two intervals + PARAMETERS + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + minuend (IN) - interval to be subtracted from + subtrahend (IN) - interval subtracted from minuend + result (OUT) - resulting interval (minuend - subtrahend) + DESCRIPTION + Subtracts two intervals and stores the result in an interval + RETURNS + OCI_SUCCESS on success + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if: + the two input intervals are not mutually comparable. + the resulting leading field would go below SB4MINVAL + the resulting leading field would go above SB4MAXVAL + + ---------------------- OCIIntervalMultiply --------------------------------- + sword OCIIntervalMultiply(dvoid *hndl, OCIError *err, CONST OCIInterval *inter, + OCINumber *nfactor, OCIInterval *result ); + + DESCRIPTION + Multiplies an interval by an Oracle Number to produce an interval + PARAMETERS + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + inter (IN) - Interval to be multiplied + nfactor (IN) - Oracle Number to be multiplied + result (OUT) - resulting interval (ifactor * nfactor) + RETURNS + OCI_SUCCESS on success + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if: + the resulting year would go above SB4MAXVAL + the resulting year would go below SB4MINVAL + + + ---------------------- OCIIntervalSetDaySecond -------------------- + + DESCRIPTION + Sets day second interval + PARAMETERS + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + day (IN) - number of days + hour (IN) - number of hours + min (IN) - number of mins + sec (IN) - number of secs + fsec (IN) - number of fractional seconds + result (OUT) - resulting interval + RETURNS + OCI_SUCCESS on success + OCI_INVALID_HANDLE if 'err' is NULL. + + + ---------------------- OCIIntervalSetYearMonth -------------------- + + DESCRIPTION + Sets year month interval + PARAMETERS + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + year (IN) - year value + month (IN) - month value + result (OUT) - resulting interval + RETURNS + OCI_SUCCESS on success + OCI_INVALID_HANDLE if 'err' is NULL. + + + ----------------------- OCIIntervalToNumber --------------------------------- + sword OCIIntervalToNumber(dvoid *hndl, OCIError *err, CONST OCIInterval *inter, + OCINumber *number); + + DESCRIPTION + Converts an interval to an Oracle Number + PARAMETERS + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + (IN) inter - Interval to be converted + (OUT) number - Oracle number result (in years for YEARMONTH interval + and in days for DAYSECOND) + RETURNS + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_SUCCESS on success + NOTES + Fractional portions of the date (for instance, minutes and seconds if + the unit chosen is hours) will be included in the Oracle number produced. + Excess precision will be truncated. + + ------------------------------- OCIIntervalToText ------------------------- + sword OCIIntervalToText( dvoid *hndl, OCIError *err, CONST OCIInterval *inter, + ub1 lfprec, ub1 fsprec, OraText *buffer, + size_t buflen, size_t *resultlen ); + + DESCRIPTION + Given an interval, produces a string representing the interval. + PARAMETERS + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + (IN) inter - Interval to be converted + (IN) lfprec - Leading field precision. Number of digits used to + represent the leading field. + (IN) fsprec - Fractional second precision of the interval. Number of + digits used to represent the fractional seconds. + (OUT) buffer - buffer to hold result + (IN) buflen - length of above buffer + (OUT) resultlen - length of result placed into buffer + + RETURNS + OCI_SUCCESS on success + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR + if the buffer is not large enough to hold the result + NOTES + The interval literal will be output as `year' or `[year-]month' for + YEAR-MONTH intervals and as `seconds' or `minutes[:seconds]' or + `hours[:minutes[:seconds]]' or `days[ hours[:minutes[:seconds]]]' for + DAY-TIME intervals (where optional fields are surrounded by brackets). + + ---------------------- OCIIntervalFromTZ -------------------- + sword OCIIntervalFromTZ(dvoid *hndl, OCIError *err, CONST oratext *inpstring, + size_t str_len, OCIInterval *result); + + DESCRIPTION + Retuns an OCI_DTYPE_INTERVAL_DS OCIInterval with the region id (if + the region is specified in the input string) set and the current + absolute offset or an absolut offset with the region id set to 0. + PARAMETERS + hndl (IN) - Session/Env handle. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + inpstring (IN) - pointer to the input string + str_len (IN) - inpstring length + result - Output Interval + RETURNS + OCI_SUCCESS on success + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR on error + Bad interval type + Timezone errors + NOTES + The input string must be of the form [+/-]TZH:TZM or 'TZR [TZD]' + + ----------------------- OCIKerbAttrSet --------------------- + sword OCIKerbAttrSet(OCISession *trgthndlp, ub4 auth_mode, + ub1 *ftgt_ticket, ub4 ftgt_ticket_len, + ub1 *ftgt_sesskey, ub4 ftgt_sesskey_len, + ub2 ftgt_keytype, ub4 ftgt_ticket_flags, + sb4 ftgt_auth_time, sb4 ftgt_start_time, + sb4 ftgt_end_time, sb4 ftgt_renew_time, + text *ftgt_principal, ub4 ftgt_principal_len, + text *ftgt_realm, ub4 ftgt_realm_len, + OCIError *errhp); + + DESCRIPTION + This call sets the attributes required for Kerberos authentication + on the user handle. + + PARAMETERS + trgthndlp (IN) - The pointer to a user handle. + auth_mode (IN) - Indicates what type of Kerberos credentials should + be set. Options are: + + OCI_KERBCRED_PROXY + - Set Kerberos credentials for use with + proxy authentication. + OCI_KERBCRED_CLIENT_IDENTIFIER + - Set Kerberos credentials for use + with secure client identifier. + + ftgt_ticket (IN) - Forwardable Ticket Granting Ticket (FTGT). + ftgt_ticket_len (IN) - Length of FTGT. + ftgt_sesskey(IN) - Session Key associated with FTGT. + ftgt_sesskey_len (IN) - Length of session key. + ftgt_keytype (IN) - Type of encryption key used to encrypt FTGT. + ftgt_ticket_flags (IN) - Flags associated with encryption of FTGT. + ftgt_auth_time (IN) - Authentication time compatible with that in FTGT. + ftgt_start_time (IN) - Start time compatible with that indicated in FTGT. + ftgt_end_time (IN) - End time compatible with that indicated in FTGT. + ftgt_renew_time (IN) - Renew time compatible with that indicated in FTGT. + ftgt_principal (IN) - Client principal name from FTGT. + ftgt_principal_len (IN) - Length of client principal name. + ftgt_realm (IN) - Client realm name from FTGT. + ftgt_realm_len (IN) - Client realm name length. + errhp (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + RETURNS + OCI_SUCCESS on success + OCI_ERROR on error + NOTES + + OCILdaToSvcCtx() + Name + OCI toggle version 7 Lda_Def to SerVice context handle + Purpose + Converts a V7 Lda_Def to a V8 service context handle. + Syntax + sword OCILdaToSvcCtx ( OCISvcCtx **svchpp, + OCIError *errhp, + Lda_Def *ldap ); + Comments + Converts a V7 Lda_Def to a V8 service context handle. The action of this call + can be reversed by passing the resulting service context handle to the + OCISvcCtxToLda() function. + Parameters + svchpp (IN/OUT) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + ldap (IN/OUT) - the V7 logon data area returned by OCISvcCtxToLda() from + this service context. + Related Functions + OCISvcCtxToLda() + + + + + OCILobAppend() + + Name + OCI Lob APpend + + Purpose + Appends a LOB value at the end of another LOB. + + Syntax + sword OCILobAppend ( OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *dst_locp, + OCILobLocator *src_locp ); + Comments + Appends a LOB value at the end of LOB. The data is + copied from the source to the destination at the end of the destination. The + source and the destination must already exist. The destination LOB is + extended to accommodate the newly written data. + + It is an error to extend the destination LOB beyond the maximum length + allowed or to try to copy from a NULL LOB. + + Parameters + svchp (IN) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + dst_locp (IN/OUT) - a locator uniquely referencing the destination LOB. + src_locp (IN/OUT) - a locator uniquely referencing the source LOB. + + Related Functions + OCILobTrim() + OCIErrorGet() + OCILobWrite() + OCILobCopy() + + + + OCILobAssign() + + Name + OCI Lob ASsiGn + + Purpose + Assigns one LOB/FILE locator to another. + + Syntax + sword OCILobAssign ( OCIEnv *envhp, + OCIError *errhp, + CONST OCILobLocator *src_locp, + OCILobLocator **dst_locpp ); + + Comments + Assign source locator to destination locator. After the assignment, both + locators refer to the same LOB data. For internal LOBs, the source locator's + LOB data gets copied to the destination locator's LOB data only when the + destination locator gets stored in the table. Therefore, issuing a flush of + the object containing the destination locator will copy the LOB data. For + FILEs only the locator that refers to the OS file is copied to the table. The + OS file is not copied. + Note: The only difference between this and OCILobLocatorAssign is that this + takes an environment handle whereas OCILobLocatorAssign takes an OCI service + handle + + Parameters + envhp (IN/OUT) - OCI environment handle initialized in object mode. + errhp (IN/OUT) - The OCI error handle. If there is an error, it is recorded + in errhp and this function returns OCI_ERROR. Diagnostic information can be + obtained by calling OCIErrorGet(). + src_locp (IN) - LOB locator to copy from. + dst_locpp (IN/OUT) - LOB locator to copy to. The caller must allocate space + for the OCILobLocator by calling OCIDescriptorAlloc(). + + See also + OCIErrorGet() + OCILobIsEqual() + OCILobLocatorIsInit() + OCILobLocatorAssign() + + + OCILobCharSetForm() + + Name + OCI Lob Get Character Set Form + + Purpose + Gets the LOB locator's character set fpr,, if any. + + Syntax + sword OCILobCharSetForm ( OCIEnv *envhp, + OCIError *errhp, + CONST OCILobLocator *locp, + ub1 *csfrm ); + + Comments + Returns the character set form of the input LOB locator in the csfrm output + parameter. + + Parameters + envhp (IN/OUT) - OCI environment handle initialized in object mode. + errhp (IN/OUT) - error handle. The OCI error handle. If there is an error, it + is recorded in err and this function returns OCI_ERROR. Diagnostic + information can be obtained by calling OCIErrorGet(). + locp (IN) - LOB locator for which to get the character set form. + csfrm(OUT) - character set form of the input LOB locator. If the input + locator is for a BLOB or a BFILE, csfrm is set to 0 since there is no concept + of a character set for binary LOBs/FILEs. The caller must allocate space for + the csfrm (ub1) and not write into the space. + See also + OCIErrorGet(), OCILobCharSetId(), OCILobLocatorIsInit + + + + OCILobCharSetId() + + Name + OCI Lob get Character Set IDentifier + + Purpose + Gets the LOB locator's character set ID, if any. + + Syntax + sword OCILobCharSetId ( OCIEnv *envhp, + OCIError *errhp, + CONST OCILobLocator *locp, + ub2 *csid ); + + Comments + Returns the character set ID of the input LOB locator in the cid output + parameter. + + Parameters + envhp (IN/OUT) - OCI environment handle initialized in object mode. + errhp (IN/OUT) - error handle. The OCI error handle. If there is an error, it + is recorded in err and this function returns OCI_ERROR. Diagnostic + information can be obtained by calling OCIErrorGet(). + locp (IN) - LOB locator for which to get the character set ID. + csid (OUT) - character set ID of the input LOB locator. If the input locator + is for a BLOB or a BFILE, csid is set to 0 since there is no concept of a + character set for binary LOBs/FILEs. The caller must allocate space for the + character set id of type ub2 and not write into the space. + + See also + OCIErrorGet(), OCILobCharSetForm(), OCILobLocatorIsInit() + + + + OCILobCopy() + + Name + OCI Lob Copy + + Purpose + Copies a portion of a LOB value into another LOB value. + + Syntax + sword OCILobCopy ( OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *dst_locp, + OCILobLocator *src_locp, + ub4 amount, + ub4 dst_offset, + ub4 src_offset ); + + Comments + Copies a portion of a LOB value into another LOB as specified. The data + is copied from the source to the destination. The source (src_locp) and the + destination (dlopb) LOBs must already exist. + If the data already exists at the destination's start position, it is + overwritten with the source data. If the destination's start position is + beyond the end of the current data, a hole is created from the end of the data + to the beginning of the newly written data from the source. The destination + LOB is extended to accommodate the newly written data if it extends + beyond the current length of the destination LOB. + It is an error to extend the destination LOB beyond the maximum length + allowed or to try to copy from a NULL LOB. + Parameters + svchp (IN) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + dst_locp (IN/OUT) - a locator uniquely referencing the destination LOB. + src_locp (IN/OUT) - a locator uniquely referencing the source LOB. + amount (IN) - the number of character or bytes, as appropriate, to be copied. + dst_offset (IN) - this is the absolute offset for the destination LOB. + For character LOBs it is the number of characters from the beginning of the + LOB at which to begin writing. For binary LOBs it is the number of bytes from + the beginning of the lob from which to begin reading. The offset starts at 1. + src_offset (IN) - this is the absolute offset for the source LOB. + For character LOBs it is the number of characters from the beginning of the + LOB, for binary LOBs it is the number of bytes. Starts at 1. + + See Also + OCIErrorGet(), OCILobAppend(), OCILobWrite(), OCILobTrim() + + OCILobCreateTemporary() + + Name + OCI Lob Create Temporary + + Purpose + Create a Temporary Lob + + Syntax + sword OCILobCreateTemporary(OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *locp, + ub2 csid, + ub1 csfrm, + ub1 lobtype, + boolean cache, + OCIDuration duration); + + + Comments + svchp (IN) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + locp (IN/OUT) - a locator which points to the temporary Lob + csid (IN) - the character set id + csfrm(IN) - the character set form + lobtype (IN) - the lob type - one of the three constants OCI_TEMP_BLOB, + OCI_TEMP_CLOB and OCI_TEMP_NCLOB + cache(IN)- TRUE if the temporary LOB goes through the cache; FALSE, if not. + duration(IN)- duration of the temporary LOB; Can be a valid duration id or one + of the values: OCI_DURATION_SESSION, OCI_DURATION_CALL + Note: OCI_DURATION_TRANSACTION is NOT supported in 8.1 + Related functions + OCILobFreeTemporary() + OCILobIsTemporary() + + OCILobDisableBuffering() + + Name + OCI Lob Disable Buffering + + Purpose + Disable lob buffering for the input locator. + + + Syntax + sword OCILobDisableBuffering ( OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *locp); + + Comments + + Disable lob buffering for the input locator. The next time data is + read/written from/to the lob through the input locator, the lob + buffering subsystem is *not* used. Note that this call does *not* + implicitly flush the changes made in the buffering subsystem. The + user must explicitly call OCILobFlushBuffer() to do this. + + Parameters + svchp (IN) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + locp (IN/OUT) - a locator uniquely referencing the LOB. + + Related Functions + OCILobEnableBuffering() + OCIErrorGet() + OCILobFlushBuffer() + + + + + OCILobEnableBuffering() + + Name + OCI Lob Enable Buffering + + Purpose + Enable lob buffering for the input locator. + + + Syntax + sword OCILobEnableBuffering ( OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *locp); + + Comments + + Enable lob buffering for the input locator. The next time data is + read/written from/to the lob through the input locator, the lob + buffering subsystem is used. + + Once lob buffering is enabled for a locator, if that locator is passed to + one of the following routines, an error is returned: + OCILobCopy, OCILobAppend, OCILobErase, OCILobGetLength, OCILobTrim + + Parameters + svchp (IN) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + locp (IN/OUT) - a locator uniquely referencing the LOB. + + Related Functions + OCILobDisableBuffering() + OCIErrorGet() + OCILobWrite() + OCILobRead() + OCILobFlushBuffer() + + + + + OCILobErase() + + Name + OCI Lob ERase + + Purpose + Erases a specified portion of the LOB data starting at a specified offset. + + Syntax + sword OCILobErase ( OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *locp, + ub4 *amount, + ub4 offset ); + + Comments + Erases a specified portion of the LOB data starting at a specified offset. + The actual number of characters/bytes erased is returned. The actual number + of characters/bytes and the requested number of characters/bytes will differ + if the end of the LOB data is reached before erasing the requested number of + characters/bytes. + If a section of data from the middle of the LOB data is erased, a hole is + created. When data from that hole is read, 0's are returned. If the LOB is + NULL, this routine will indicate that 0 characters/bytes were erased. + + Parameters + svchp (IN) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + locp (IN/OUT) - the LOB for which to erase a section of data. + amount (IN/OUT) - On IN, the number of characters/bytes to erase. On OUT, + the actual number of characters/bytes erased. + offset (IN) - absolute offset from the beginning of the LOB data from which + to start erasing data. Starts at 1. + + See Also + OCIErrorGet(), OCILobRead(), OCILobWrite() + + OCILobOpen() + + Name + OCI Lob Open + + Purpose + Opens an internal or external Lob. + + Syntax + sword OCILobOpen( OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *locp, + ub1 mode ); + + Comments + It is an error if the same lob is opened more than once in + the same transaction. Lobs are opened implicitly if they are + not opened before using them. A LOB has to be closed before + the transaction commits else the transaction is rolled back. + Open locators are closed if the transaction aborts. Multiple + users can open the same lob on different locators. + Parameters + svchp (IN) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + locp (IN/OUT) - locator points to the LOB to be opened + mode (IN) - mode in which to open the lob. The valid modes are + read-only - OCI_FILE_READONLY, read-write - OCI_FILE_READWRITE + + OCILobClose() + + Name + OCI Lob Close + + Purpose + Closes an open internal or external Lob. + + Syntax + sword OCILobClose( OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *locp ); + + + Comments + It is an error if the lob is not open at this time. All LOBs + that have been opened in a transaction have to be closed + before the transaction commits, else the transaction gets + rolled back. + + Parameters + svchp (IN) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + locp (IN) - A locator that was opened using OCILobOpen() + + + OCILobFileClose() + + Name + OCI Lob File CLoSe + + Purpose + Closes a previously opened FILE. + + Syntax + sword OCILobFileClose ( OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *filep ); + + Comments + Closes a previously opened FILE. It is an error if this function is called for + an internal LOB. No error is returned if the FILE exists but is not opened. + Parameters + svchp (IN) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + filep (IN/OUT) - a pointer to a FILE locator to be closed. + + See Also + OCIErrorGet(), OCILobFileOpen(), OCILobFileCloseAll(), OCILobFileIsOpen(), + OCILobFileExists(), CREATE DIRECTORY DDL + + + + + OCILobFileCloseAll() + + Name + OCI LOB FILE Close All + + Purpose + Closes all open FILEs on a given service context. + + Syntax + sword OCILobFileCLoseAll ( OCISvcCtx *svchp, + OCIError *errhp ); + + Comments + Closes all open FILEs on a given service context. + + Parameters + svchp (IN) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + + See also + OCILobFileClose(), + OCIErrorGet(), OCILobFileOpen(), OCILobFileIsOpen(), + OCILobFileExists(), CREATE DIRECTORY DDL + + + + + OCILobFileExists() + + Name + OCI LOB FILE exists + + Purpose + Tests to see if the FILE exists on the server + + Syntax + sword OCILobFileExists ( OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *filep, + boolean *flag ); + + Comments + Checks to see if a FILE exists for on the server. + + Parameters + svchp (IN) - the OCI service context handle. + errhp (IN/OUT) - error handle. The OCI error handle. If there is an error, + it is recorded in err and this function returns OCI_ERROR. Diagnostic + information can be obtained by calling OCIErrorGet(). + filep (IN) - pointer to the FILE locator that refers to the file. + flag (OUT) - returns TRUE if the FILE exists; FALSE if it does not. + + See also + OCIErrorGet, CREATE DIRECTORY (DDL) + + + + + OCILobFileGetName() + + Name + OCI LOB FILE Get file Name + + Purpose + Gets the FILE locator's directory alias and file name. + + Syntax + sword OCILobFileGetName ( OCIEnv *envhp, + OCIError *errhp, + CONST OCILobLocator *filep, + OraText *dir_alias, + ub2 *d_length, + OraText *filename, + ub2 *f_length ); + + Comments + Returns the directory alias and file name associated with this file locator. + + Parameters + envhp (IN/OUT) - OCI environment handle initialized in object mode. + errhp (IN/OUT) -The OCI error handle. If there is an error, it is recorded in + errhp and this function returns OCI_ERROR. Diagnostic information can be + obtained by calling OCIErrorGet(). + filep (IN) - FILE locator for which to get the directory alias and file name. + dir_alias (OUT) - buffer into which the directory alias name is placed. The + caller must allocate enough space for the directory alias name and must not + write into the space. + d_length (IN/OUT) + - IN: length of the input dir_alias string; + - OUT: length of the returned dir_alias string. + filename (OUT) - buffer into which the file name is placed. The caller must + allocate enough space for the file name and must not write into the space. + f_length (IN/OUT) + - IN: length of the input filename string; + - OUT: lenght of the returned filename string. + + See also + OCILobFileSetName(), OCIErrorGet() + + + + + OCILobFileIsOpen() + + Name + OCI LOB FILE Is Open? + + Purpose + Tests to see if the FILE is open + + Syntax + sword OCILobFileIsOpen ( OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *filep, + boolean *flag ); + + Comments + Checks to see if the FILE on the server is open for a given LobLocator. + + Parameters + svchp (IN) - the OCI service context handle. + errhp (IN/OUT) - error handle. The OCI error handle. If there is an error, it + is recorded in err and this function returns OCI_ERROR. Diagnostic + information can be obtained by calling OCIErrorGet(). + filep (IN) - pointer to the FILE locator being examined. If the input file + locator was never passed to OCILobFileOpen(), the file is considered not to + be opened by this locator. However, a different locator may have opened the + file. More than one file opens can be performed on the same file using + different locators. + flag (OUT) - returns TRUE if the FILE is opened using this locator; FALSE if + it is not. + + See also + OCIErrorGet, OCILobFileOpen, OCILobFileClose, OCILobFileCloseAll, CREATE + DIRECTORY SQL command + + + OCILobFileOpen() + + Name + OCI LOB FILE open + + Purpose + Opens a FILE for read-only access + + Syntax + sword OCILobFileOpen ( OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *filep, + ub1 mode ); + + Comments + Opens a FILE. The FILE can be opened for read-only access only. FILEs may not + be written to throough ORACLE. + + Parameters + svchp (IN) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + filep (IN/OUT) - the FILE to open. Error if the locator does not refer to a + FILE. + mode (IN) - mode in which to open the file. The only valid mode is + read-only - OCI_FILE_READONLY. + + See Also + OCILobFileClose, OCIErrorGet, OCILobFileCloseAll, OCILobFileIsOpen, + OCILobFileSetName, CREATE DIRECTORY + + + + + OCILobFileSetName() + + Name + OCI Lob File Set NaMe + + Purpose + Sets directory alias and file name in the FILE locator. + + Syntax + sword OCILobFileSetName ( OCIEnv *envhp, + OCIError *errhp, + OCILobLocator **filepp, + OraText *dir_alias, + ub2 d_length, + OraText *filename, + ub2 f_length ); + Comments + Sets the directory alias and file name in the LOB file locator. + Parameters + envhp (IN/OUT) - OCI environment handle initialized in object mode. + errhp (IN/OUT) - The OCI error handle. If there is an error, it is recorded + in errhp and this function returns OCI_ERROR. Diagnostic information can be + obtained by calling OCIErrorGet(). + filepp (IN/OUT) - FILE locator for which to set the directory alias name. + The caller must have already allocated space for the locator by calling + OCIDescriptorAlloc(). + dir_alias (IN) - buffer that contains the directory alias name to set in the + locator. + d_length (IN) - length of the input dir_alias parameter. + filename (IN) - buffer that contains the file name is placed. + f_length (IN) - length of the input filename parameter. + See also + OCILobFileGetName, OCIErrorGet, CREATE DIRECTORY + + + + + OCILobFlushBuffer() + + Name + OCI Lob Flush all Buffers for this lob. + + Purpose + Flush/write all buffers for this lob to the server. + + + Syntax + sword OCILobFlushBuffer ( OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *locp, + ub4 flag); + + Comments + + Flushes to the server, changes made to the buffering subsystem that + are associated with the lob referenced by the input locator. This + routine will actually write the data in the buffer to the lob in + the database. Lob buffering must have already been enabled for the + input lob locator. + + This routine, by default, does not free the buffer resources for + reallocation to another buffered LOB operation. However, if you + want to free the buffer explicitly, you can set the flag parameter + to OCI_LOB_BUFFER_FREE. + + Parameters + svchp (IN/OUT) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + locp (IN/OUT) - a locator uniquely referencing the LOB. + flag (IN) - to indicate if the buffer resources need to be freed + after a flush. Default value is OCI_LOB_BUFFER_NOFREE. + Set it to OCI_LOB_BUFFER_FREE if you want the buffer + resources to be freed. + Related Functions + OCILobEnableBuffering() + OCILobDisableBuffering() + OCIErrorGet() + OCILobWrite() + OCILobRead() + + + OCILobFreeTemporary() + + Name + OCI Lob Free Temporary + + Purpose + Free a temporary LOB + + Syntax + sword OCILobFreeTemporary(OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *locp); + + Comments + Frees the contents of the temporary Lob this locator is pointing to. Note + that the locator itself is not freed until a OCIDescriptorFree is done. + + Parameters + svchp (IN/OUT) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + locp (IN/OUT) - a locator uniquely referencing the LOB + + Related functions + OCILobCreateTemporary() + OCILobIsTemporary() + + + Name + OCI Lob/File Get Chunk Size + + Purpose + When creating the table, the user can specify the chunking factor, which can + be a multiple of Oracle blocks. This corresponds to the chunk size used by the + LOB data layer when accessing/modifying the LOB value. Part of the chunk is + used to store system-related information and the rest stores the LOB value. + This function returns the amount of space used in the LOB chunk to store + the LOB value. + + Syntax + sword OCILobGetChunkSize ( OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *locp, + ub4 *chunksizep ); + + Comments + Performance will be improved if the user issues read/write + requests using a multiple of this chunk size. For writes, there is an added + benefit since LOB chunks are versioned and, if all writes are done on chunk + basis, no extra/excess versioning is done nor duplicated. Users could batch + up the write until they have enough for a chunk instead of issuing several + write calls for the same chunk. + + Parameters + svchp (IN) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + locp (IN/OUT) - a LOB locator that uniquely references the LOB. For internal + LOBs, this locator must be a locator that was obtained from the server + specified by svchp. For FILEs, this locator can be initialized by a Select or + OCILobFileSetName. + chunksizep (OUT) - On output, it is the length of the LOB if not NULL - for + character LOBs it is the number of characters, for binary LOBs it is the + number of bytes in the LOB. + + Related Functions + + OCILobGetLength() + + Name + OCI Lob/File Length + + Purpose + Gets the length of a LOB/FILE. + + Syntax + sword OCILobGetLength ( OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *locp, + ub4 *lenp ); + + Comments + Gets the length of a LOB/FILE. If the LOB/FILE is NULL, the length is + undefined. + + Parameters + svchp (IN) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + locp (IN/OUT) - a LOB locator that uniquely references the LOB. For internal + LOBs, this locator must be a locator that was obtained from the server + specified by svchp. For FILEs, this locator can be initialized by a Select or + OCILobFileSetName. + lenp (OUT) - On output, it is the length of the LOB if not NULL - for + character LOBs it is the number of characters, for binary LOBs it is the + number of bytes in the LOB. + + Related Functions + OCIErrorGet, OCIFileSetName + + + + OCILobIsEqual() + + Name + + OCI Lob Is Equal + + Purpose + Compares two LOB locators for equality. + + Syntax + sword OCILobIsEqual ( OCIEnv *envhp, + CONST OCILobLocator *x, + CONST OCILobLocator *y, + boolean *is_equal ); + + Comments + Compares the given LOB locators for equality. Two LOB locators are equal if + and only if they both refer to the same LOB data. + Two NULL locators are considered not equal by this function. + Parameters + envhp (IN) - the OCI environment handle. + x (IN) - LOB locator to compare. + y (IN) - LOB locator to compare. + is_equal (OUT) - TRUE, if the LOB locators are equal; FALSE if they are not. + + See also + OCILobAssign, OCILobLocatorIsInit + OCILobLocatorAssign, + OCILobIsOpen() + + Name + + OCI Lob Is Open + sword OCILobIsOpen(svchp, errhp, locp, flag) + OCISvcCtx *svchp; + OCIError *errhp; + OCILobLocator *locp; + boolean *flag; + + Comments + Checks if the LOB locator was opened before. flag is set to TRUE + if opened; FALSE otherwise + + + Parameters + svchp (IN) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + locp (IN) - the locator to test for temporary LOB + flag(OUT) - TRUE, if the LOB locator points to is open + FALSE, if not. + + OCILobIsTemporary() + + Name + + OCI Lob Is Temporary + + Purpose + Tests if this locator points to a temporary LOB + + Syntax + sword OCILobIsTemporary(OCIEnv *envhp, + OCIError *errhp, + OCILobLocator *locp, + boolean *is_temporary); + + Comments + Tests the locator to determine if it points to a temporary LOB. + If so, is_temporary is set to TRUE. If not, is_temporary is set + to FALSE. + + Parameters + envhp (IN) - the environment handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + locp (IN) - the locator to test for temporary LOB + is_temporary(OUT) - TRUE, if the LOB locator points to a temporary LOB; + FALSE, if not. + + See Also + OCILobCreateTemporary, OCILobFreeTemporary + + + OCILobLoadFromFile() + + Name + OCI Lob Load From File + + Purpose + Load/copy all or a portion of the file into an internal LOB. + + Syntax + sword OCILobLoadFromFile ( OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *dst_locp, + OCILobLocator *src_filep, + ub4 amount, + ub4 dst_offset, + ub4 src_offset ); + + Comments + Loads/copies a portion or all of a file value into an internal LOB as + specified. The data is copied from the source file to the destination + internal LOB (BLOB/CLOB). No character set conversions are performed + when copying the bfile data to a clob/nclob. The bfile data must already + be in the same character set as the clob/nclob in the database. No + error checking is performed to verify this. + The source (src_filep) and the destination (dst_locp) LOBs must already exist. + If the data already exists at the destination's start position, it is + overwritten with the source data. If the destination's start position is + beyond the end of the current data, a hole is created from the end of the data + to the beginning of the newly written data from the source. The destination + LOB is extended to accommodate the newly written data if it extends + beyond the current length of the destination LOB. + It is an error to extend the destination LOB beyond the maximum length + allowed or to try to copy from a NULL LOB. + Parameters + svchp (IN) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + dst_locp (IN/OUT) - a locator uniquely referencing the destination internal + LOB which may be of type blob, clob, or nclob. + src_filep (IN/OUT) - a locator uniquely referencing the source BFILE. + amount (IN) - the number of bytes to be copied. + dst_offset (IN) - this is the absolute offset for the destination LOB. + For character LOBs it is the number of characters from the beginning of the + LOB at which to begin writing. For binary LOBs it is the number of bytes from + the beginning of the lob from which to begin reading. The offset starts at 1. + src_offset (IN) - this is the absolute offset for the source BFILE. It is + the number of bytes from the beginning of the LOB. The offset starts at 1. + + See Also + OCIErrorGet(), OCILobAppend(), OCILobWrite(), OCILobTrim(), OCILobCopy() + + OCILobLocatorAssign() + + Name + OCI Lob LOCATOR ASsiGn + + Purpose + Assigns one LOB/FILE locator to another. + + Syntax + sword OCILobLocatorAssign ( OCISvcCtx *svchp, + OCIError *errhp, + CONST OCILobLocator *src_locp, + OCILobLocator **dst_locpp ); + + Comments + Assign source locator to destination locator. After the assignment, both + locators refer to the same LOB data. For internal LOBs, the source locator's + LOB data gets copied to the destination locator's LOB data only when the + destination locator gets stored in the table. Therefore, issuing a flush of + the object containing the destination locator will copy the LOB data. For + FILEs only the locator that refers to the OS file is copied to the table. The + OS file is not copied. + Note : the only difference between this and OCILobAssign is that this takes + a OCI service handle pointer instead of a OCI environment handle pointer + + Parameters + svchp (IN/OUT) - OCI service handle initialized in object mode. + errhp (IN/OUT) - The OCI error handle. If there is an error, it is recorded + in errhp and this function returns OCI_ERROR. Diagnostic information can be + obtained by calling OCIErrorGet(). + src_locp (IN) - LOB locator to copy from. + dst_locpp (IN/OUT) - LOB locator to copy to. The caller must allocate space + for the OCILobLocator by calling OCIDescriptorAlloc(). + + See also + OCIErrorGet() + OCILobIsEqual() + OCILobLocatorIsInit() + OCILobAssign() + + + + + OCILobLocatorIsInit() + + Name + OCI LOB locator is initialized? + + Purpose + Tests to see if a given LOB locator is initialized. + + Syntax + sword OCILobLocatorIsInit ( OCIEnv *envhp, + OCIError *errhp, + CONST OCILobLocator *locp, + boolean *is_initialized ); + + Comments + Tests to see if a given LOB locator is initialized. + + Parameters + envhp (IN/OUT) - OCI environment handle initialized in object mode. + errhp (IN/OUT) - error handle. The OCI error handle. If there is an error, it + is recorded in err and this function returns OCI_ERROR. Diagnostic + information can be obtained by calling OCIErrorGet(). + locp (IN) - the LOB locator being tested + is_initialized (OUT) - returns TRUE if the given LOB locator is initialized; + FALSE if it is not. + + See also + OCIErrorGet, OCILobIsEqual + + + + + OCILobRead() + + Name + OCI Lob/File ReaD + + Purpose + Reads a portion of a LOB/FILE as specified by the call into a buffer. + + Syntax + sword OCILobRead ( OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *locp, + ub4 offset, + ub4 *amtp, + dvoid *bufp, + ub4 bufl, + dvoid *ctxp, + OCICallbackLobRead cbfp, + ub2 csid, + ub1 csfrm ); + + Comments + Reads a portion of a LOB/FILE as specified by the call into a buffer. Data + read from a hole is returned as 0s. It is an error to try to read from a NULL + LOB/FILE. The OS FILE must already exist on the server and must have been + opened using the input locator. Oracle must hav epermission to read the OS + file and user must have read permission on the directory object. + + Parameters + svchp (IN/OUT) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + locp (IN/OUT) - a LOB locator that uniquely references a LOB. + offset (IN) - On input, it is the absolute offset, for character LOBs in the + number of characters from the beginning of the LOB, for binary LOBs it is the + number of bytes. Starts from 1. + amtp (IN/OUT) - On input, the number of character or bytes to be read. On + output, the actual number of bytes or characters read. + If the amount of bytes to be read is larger than the buffer length it is + assumed that the LOB is being read in a streamed mode. On input if this value + is 0, then the data shall be read in streamed mode from the LOB until the end + of LOB. If the data is read in pieces, *amtp always contains the length of + the last piece read. If a callback function is defined, then this callback + function will be invoked each time bufl bytes are read off the pipe. Each + piece will be written into bufp. + If the callback function is not defined, then OCI_NEED_DATA error code will + be returned. The application must invoke the LOB read over and over again to + read more pieces of the LOB until the OCI_NEED_DATA error code is not + returned. The buffer pointer and the length can be different in each call + if the pieces are being read into different sizes and location. + bufp (IN) - the pointer to a buffer into which the piece will be read. The + length of the allocated memory is assumed to be bufl. + bufl (IN) - the length of the buffer in octets. + ctxp (IN) - the context for the call back function. Can be NULL. + cbfp (IN) - a callback that may be registered to be called for each piece. If + this is NULL, then OCI_NEED_DATA will be returned for each piece. + The callback function must return OCI_CONTINUE for the read to continue. + If any other error code is returned, the LOB read is aborted. + ctxp (IN) - the context for the call back function. Can be NULL. + bufp (IN) - a buffer pointer for the piece. + len (IN) - the length of length of current piece in bufp. + piece (IN) - which piece - OCI_FIRST_PIECE, OCI_NEXT_PIECE or + OCI_LAST_PIECE. + csid - the character set ID of the buffer data + csfrm - the character set form of the buffer data + + Related Functions + OCIErrorGet, OCILobWrite, OCILobFileOpen, OCILobFileSetName, CREATE DIRECTORY + + + + + OCILobTrim() + + Name + + OCI Lob Trim + + Purpose + Trims the lob value to a shorter length + + Syntax + sword OCILobTrim ( OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *locp, + ub4 newlen ); + + Comments + Truncates LOB data to a specified shorter length. + + Parameters + svchp (IN) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + locp (IN/OUT) - a LOB locator that uniquely references the LOB. This locator + must be a locator that was obtained from the server specified by svchp. + newlen (IN) - the new length of the LOB data, which must be less than or equal + to the current length. + + Related Functions + OCIErrorGet, OCILobWrite, OCiLobErase, OCILobAppend, OCILobCopy + + + + + + OCILobWrite() + + Name + OCI Lob Write + + Purpose + Writes a buffer into a LOB + + Syntax + sword OCILobWrite ( OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *locp, + ub4 offset, + ub4 *amtp, + dvoid *bufp, + ub4 buflen, + ub1 piece, + dvoid *ctxp, + OCICallbackLobWrite (cbfp) + ( + dvoid *ctxp, + dvoid *bufp, + ub4 *lenp, + ub1 *piecep ) + ub2 csid + ub1 csfrm ); + + + Comments + Writes a buffer into a LOB as specified. If LOB data already exists + it is overwritten with the data stored in the buffer. + The buffer can be written to the LOB in a single piece with this call, or + it can be provided piecewise using callbacks or a standard polling method. + If this value of the piece parameter is OCI_FIRST_PIECE, data must be + provided through callbacks or polling. + If a callback function is defined in the cbfp parameter, then this callback + function will be invoked to get the next piece after a piece is written to + the pipe. Each piece will be written from bufp. + If no callback function is defined, then OCILobWrite() returns the + OCI_NEED_DATA error code. The application must all OCILobWrite() again + to write more pieces of the LOB. In this mode, the buffer pointer and the + length can be different in each call if the pieces are of different sizes and + from different locations. A piece value of OCI_LAST_PIECE terminates the + piecewise write. + + Parameters + svchp (IN/OUT) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + locp (IN/OUT) - a LOB locator that uniquely references a LOB. + offset (IN) - On input, it is the absolute offset, for character LOBs in + the number of characters from the beginning of the LOB, for binary LOBs it + is the number of bytes. Starts at 1. + bufp (IN) - the pointer to a buffer from which the piece will be written. The + length of the allocated memory is assumed to be the value passed in bufl. + Even if the data is being written in pieces, bufp must contain the first + piece of the LOB when this call is invoked. + bufl (IN) - the length of the buffer in bytes. + Note: This parameter assumes an 8-bit byte. If your platform uses a + longer byte, the value of bufl must be adjusted accordingly. + piece (IN) - which piece of the buffer is being written. The default value for + this parameter is OCI_ONE_PIECE, indicating the buffer will be written in a + single piece. + The following other values are also possible for piecewise or callback mode: + OCI_FIRST_PIECE, OCI_NEXT_PIECE and OCI_LAST_PIECE. + amtp (IN/OUT) - On input, takes the number of character or bytes to be + written. On output, returns the actual number of bytes or characters written. + If the data is written in pieces, *amtp will contain the total length of the + pieces written at the end of the call (last piece written) and is undefined in + between. + (Note it is different from the piecewise read case) + ctxp (IN) - the context for the call back function. Can be NULL. + cbfp (IN) - a callback that may be registered to be called for each piece in + a piecewise write. If this is NULL, the standard polling method will be used. + The callback function must return OCI_CONTINUE for the write to continue. + If any other error code is returned, the LOB write is aborted. The + callback takes the following parameters: + ctxp (IN) - the context for the call back function. Can be NULL. + bufp (IN/OUT) - a buffer pointer for the piece. + lenp (IN/OUT) - the length of the buffer (in octets) and the length of + current piece in bufp (out octets). + piecep (OUT) - which piece - OCI_NEXT_PIECE or OCI_LAST_PIECE. + csid - the character set ID of the buffer data + csfrm - the character set form of the buffer data + Related Functions + + OCILobWriteAppend() + + Name + OCI Lob Write Append + + Purpose + Writes data to the end of a LOB value. This call provides the ability + to get the length of the data and append it to the end of the LOB in + a single round trip to the server. + + Syntax + sword OCILobWriteAppend ( OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *locp, + ub4 *amtp, + dvoid *bufp, + ub4 buflen, + ub1 piece, + dvoid *ctxp, + OCICallbackLobWrite (cbfp) + ( + dvoid *ctxp, + dvoid *bufp, + ub4 *lenp, + ub1 *piecep ) + ub2 csid + ub1 csfrm ); + + + Comments + Writes a buffer to the end of a LOB as specified. If LOB data already exists + it is overwritten with the data stored in the buffer. + The buffer can be written to the LOB in a single piece with this call, or + it can be provided piecewise using callbacks or a standard polling method. + If this value of the piece parameter is OCI_FIRST_PIECE, data must be + provided through callbacks or polling. + If a callback function is defined in the cbfp parameter, then this callback + function will be invoked to get the next piece after a piece is written to the + pipe. Each piece will be written from bufp. + If no callback function is defined, then OCILobWriteAppend() returns the + OCI_NEED_DATA error code. The application must all OCILobWriteAppend() again + to write more pieces of the LOB. In this mode, the buffer pointer and the + length can be different in each call if the pieces are of different sizes and + from different locations. A piece value of OCI_LAST_PIECE terminates the + piecewise write. + + Parameters + svchp (IN/OUT) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + locp (IN/OUT) - a LOB locator that uniquely references a LOB. + bufp (IN) - the pointer to a buffer from which the piece will be written. The + length of the allocated memory is assumed to be the value passed in bufl. Even + if the data is being written in pieces, bufp must contain the first piece of + the LOB when this call is invoked. + bufl (IN) - the length of the buffer in bytes. + Note: This parameter assumes an 8-bit byte. If your platform uses a + longer byte, the value of bufl must be adjusted accordingly. + piece (IN) - which piece of the buffer is being written. The default value for + this parameter is OCI_ONE_PIECE, indicating the buffer will be written in a + single piece. + The following other values are also possible for piecewise or callback mode: + OCI_FIRST_PIECE, OCI_NEXT_PIECE and OCI_LAST_PIECE. + amtp (IN/OUT) - On input, takes the number of character or bytes to be + written. On output, returns the actual number of bytes or characters written. + If the data is written in pieces, *amtp will contain the total length of the + pieces written at the end of the call (last piece written) and is undefined in + between. + (Note it is different from the piecewise read case) + ctxp (IN) - the context for the call back function. Can be NULL. + cbfp (IN) - a callback that may be registered to be called for each piece in a + piecewise write. If this is NULL, the standard polling method will be used. + The callback function must return OCI_CONTINUE for the write to continue. + If any other error code is returned, the LOB write is aborted. The + callback takes the following parameters: + ctxp (IN) - the context for the call back function. Can be NULL. + bufp (IN/OUT) - a buffer pointer for the piece. + lenp (IN/OUT) - the length of the buffer (in octets) and the length of + current piece in bufp (out octets). + piecep (OUT) - which piece - OCI_NEXT_PIECE or OCI_LAST_PIECE. + csid - the character set ID of the buffer data + csfrm - the character set form of the buffer data + Related Functions + + + + + OCILobGetStorageLimit() + + Name + OCI Lob Get Storage Limit + + Purpose + To get the maximum Length of a LOB in bytes that can be stored in the database. + + Syntax + sword OCILobGetStorageLimit ( OCISvcCtx *svchp, + OCIError *errhp, + OCILobLocator *locp, + oraub8 *limitp); + + + Comments + With unlimited size LOB support the limit for a LOB is no longer restricted to 4GB. + This interface should be used to get the actual limit for storing data for a specific + LOB locator. Note that if the compatibality is set to 9.2 or older the limit would still + be 4GB. + + Parameters + svchp (IN/OUT) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + locp (IN/OUT) - a LOB locator that uniquely references a LOB. + limitp (OUT) - The storage limit for a LOB in bytes. + Related Functions + + + + + OCILogoff() + Name + OCI simplified Logoff + Purpose + This function is used to terminate a session created with OCILogon() or + OCILogon2(). + Syntax + sword OCILogoff ( OCISvcCtx *svchp + OCIError *errhp ); + Comments + This call is used to terminate a session which was created with OCILogon() or + OCILogon2(). + This call implicitly deallocates the server, authentication, and service + context handles. + Note: For more information on logging on and off in an application, + refer to the section "Application Initialization, Connection, and + Authorization" on page 2-16. + Parameters + svchp (IN) - the service context handle which was used in the call to + OCILogon() or OCILogon2(). + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + See Also + OCILogon(), OCILogon2(). + + + + + + + OCILogon() + Name + OCI Service Context Logon + Purpose + This function is used to create a simple logon session. + Syntax + sword OCILogon ( OCIEnv *envhp, + OCIError *errhp, + OCISvcCtx *svchp, + CONST OraText *username, + ub4 uname_len, + CONST OraText *password, + ub4 passwd_len, + CONST OraText *dbname, + ub4 dbname_len ); + Comments + This function is used to create a simple logon session for an application. + Note: Users requiring more complex session (e.g., TP monitor + applications) should refer to the section "Application Initialization, + Connection, and Authorization" on page 2-16. + This call allocates the error and service context handles which are passed to + it. This call also implicitly allocates server and authentication handles + associated with the session. These handles can be retrieved by calling + OCIAttrGet() on the service context handle. + Parameters + envhp (IN) - the OCI environment handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + svchp (OUT) - the service context pointer. + username (IN) - the username. + uname_len (IN) - the length of username. + password (IN) - the user's password. + passwd_len (IN) - the length of password. + dbname (IN) - the name of the database to connect to. + dbname_len (IN) - the length of dbname. + See Also + OCILogoff() + + + + + + OCILogon2() + Name + OCI Service Context Logon + Purpose + This function is used to create a logon session in connection pooling mode. + Syntax + sword OCILogon2 ( OCIEnv *envhp, + OCIError *errhp, + OCISvcCtx **svchp, + CONST OraText *username, + ub4 uname_len, + CONST OraText *password, + ub4 passwd_len, + CONST OraText *dbname, + ub4 dbname_len, + ub4 mode); + Comments + This function is used to create a simple logon session for an application in + Connection Pooling mode. The valid values for mode are currently OCI_POOL and + OCI_DEFAULT. Call to this function with OCI_DEFAULT mode is equivalent to + OCILogon() call. + This call allocates the error and service context handles which are passed to + it. This call also implicitly allocates server and authentication handles + associated with the session. These handles can be retrieved by calling + OCIAttrGet() on the service context handle. This call assumes that + OCIConnectionPoolCreate() has already been called for the same dbname. + Parameters + envhp (IN) - the OCI environment handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + svchp (OUT) - the service context pointer. + username (IN) - the username. + uname_len (IN) - the length of username. + password (IN) - the user's password. If this is null, it is assumed that a + proxy session has to be created and the required grants on + the database are already done. + passwd_len (IN) - the length of password. + dbname (IN) - the name of the database to connect to. + dbname_len (IN) - the length of dbname. + mode (IN) - the mode for doing the server attach. Should be OCI_POOL for + using Connection Pooling. + + + See Also + OCILogoff() + + + + + + OCIMemoryFree() + Name + OCI FREE Memory + Purpose + Frees up storage associated with the pointer. + Syntax + void OCIMemoryFree ( CONST OCIStmt *stmhp, + dvoid *memptr); + Comments + Frees up dynamically allocated data pointers associated with the pointer using + either the default memory free function or the registered memory free + function, as the case may be. + A user-defined memory free function can be registered during the initial call + to OCIInitialize(). + This call is always successful. + Parameters + stmhp (IN) - statement handle which returned this data buffer. + memptr (IN) - pointer to data allocated by the client library. + Related Functions + OCIInitialize() + + + + + + OCIParamGet() + Name + OCI Get PARaMeter + Purpose + Returns a descriptor of a parameter specified by position in the describe + handle or statement handle. + Syntax + sword OCIParamGet ( CONST dvoid *hndlp, + ub4 htype, + OCIError *errhp, + dvoid **parmdpp, + ub4 pos ); + Comments + This call returns a descriptor of a parameter specified by position in the + describe handle or statement handle. Parameter descriptors are always + allocated internally by the OCI library. They are read-only. + OCI_NO_DATA may be returned if there are no parameter descriptors for this + position. + See Appendix B for more detailed information about parameter descriptor + attributes. + Parameters + hndlp (IN) - a statement handle or describe handle. The OCIParamGet() + function will return a parameter descriptor for this handle. + htype (IN) - the type of the handle passed in the handle parameter. Valid + types are OCI_HTYPE_DESCRIBE, for a describe handle OCI_HTYPE_STMT, for a + statement handle + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + parmdpp (OUT) - a descriptor of the parameter at the position given in the pos + parameter. + pos (IN) - position number in the statement handle or describe handle. A + parameter descriptor will be returned for this position. + Note: OCI_NO_DATA may be returned if there are no parameter + descriptors for this position. + Related Functions + OCIAttrGet(), OCIAttrSet() + + + + + + OCIParamSet() + Name + OCI Parameter Set in handle + Purpose + Used to set a complex object retrieval descriptor into a complex object + retrieval handle. + Syntax + sword OCIParamGet ( dvoid *hndlp, + ub4 htyp, + OCIError *errhp, + CONST dvoid *dscp, + ub4 dtyp, + ub4 pos ); + Comments + This call sets a given complex object retrieval descriptor into a complex + object retrieval handle. + The handle must have been previously allocated using OCIHandleAlloc(), and + the descriptor must have been previously allocated using OCIDescAlloc(). + Attributes of the descriptor are set using OCIAttrSet(). + Parameters + hndlp (IN/OUT) - handle pointer. + htype (IN) - handle type. + errhp (IN/OUT) - error handle. + dscp (IN) - complex object retrieval descriptor pointer. + dtyp (IN) - + pos (IN) - position number. + See Also + + + + + + OCIPasswordChange() + Name + OCI Change PassWord + Purpose + This call allows the password of an account to be changed. + Syntax + sword OCIPasswordChange ( OCISvcCtx *svchp, + OCIError *errhp, + CONST OraText *user_name, + ub4 usernm_len, + CONST OraText *opasswd, + ub4 opasswd_len, + CONST OraText *npasswd, + sb4 npasswd_len, + ub4 mode); + Comments + This call allows the password of an account to be changed. This call is + similar to OCISessionBegin() with the following differences: + If the user authentication is already established, it authenticates + the account using the old password and then changes the + password to the new password + If the user authentication is not established, it establishes a user + authentication and authenticates the account using the old + password, then changes the password to the new password. + This call is useful when the password of an account is expired and + OCISessionBegin() returns an error or warning which indicates that the + password has expired. + Parameters + svchp (IN/OUT) - a handle to a service context. The service context handle + must be initialized and have a server context handle associated with it. + errhp (IN) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + user_name (IN) - specifies the user name. It points to a character string, + whose length is specified in usernm_len. This parameter must be NULL if the + service context has been initialized with an authentication handle. + usernm_len (IN) - the length of the user name string specified in user_name. + For a valid user name string, usernm_len must be non-zero. + opasswd (IN) - specifies the user's old password. It points to a character + string, whose length is specified in opasswd_len . + opasswd_len (IN) - the length of the old password string specified in opasswd. + For a valid password string, opasswd_len must be non-zero. + npasswd (IN) - specifies the user's new password. It points to a character + string, whose length is specified in npasswd_len which must be non-zero for a + valid password string. If the password complexity verification routine is + specified in the user's profile to verify the new password's complexity, the + new password must meet the complexity requirements of the verification + function. + npasswd_len (IN) - then length of the new password string specified in + npasswd. For a valid password string, npasswd_len must be non-zero. + mode - pass as OCI_DEFAULT. + Related Functions + OCISessionBegin() + + + ----------------------------------OCIReset------------------------------------ + + + OCIReset() + Name + OCI Reset + Purpose + Resets the interrupted asynchronous operation and protocol. Must be called + if a OCIBreak call had been issued while a non-blocking operation was in + progress. + Syntax + sword OCIReset ( dvoid *hndlp, + OCIError *errhp); + Comments + This call is called in non-blocking mode ONLY. Resets the interrupted + asynchronous operation and protocol. Must be called if a OCIBreak call + had been issued while a non-blocking operation was in progress. + Parameters + hndlp (IN) - the service context handle or the server context handle. + errhp (IN) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + Related Functions + + + OCIResultSetToStmt() + Name + OCI convert Result Set to Statement Handle + Purpose + Converts a descriptor to statement handle for fetching rows. + Syntax + sword OCIResultSetToStmt ( OCIResult *rsetdp, + OCIError *errhp ); + Comments + Converts a descriptor to statement handle for fetching rows. + A result set descriptor can be allocated with a call to OCIDescAlloc(). + Parameters + rsetdp (IN/OUT) - a result set descriptor pointer. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + Related Functions + OCIDescAlloc() + + + + + OCIServerAttach() + Name + OCI ATtaCH to server + Purpose + Creates an access path to a data source for OCI operations. + Syntax + sword OCIServerAttach ( OCIServer *srvhp, + OCIError *errhp, + CONST OraText *dblink, + sb4 dblink_len, + ub4 mode); + Comments + This call is used to create an association between an OCI application and a + particular server. + This call initializes a server context handle, which must have been previously + allocated with a call to OCIHandleAlloc(). + The server context handle initialized by this call can be associated with a + service context through a call to OCIAttrSet(). Once that association has been + made, OCI operations can be performed against the server. + If an application is operating against multiple servers, multiple server + context handles can be maintained. OCI operations are performed against + whichever server context is currently associated with the service context. + Parameters + srvhp (IN/OUT) - an uninitialized server context handle, which gets + initialized by this call. Passing in an initialized server handle causes an + error. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + dblink (IN) - specifies the database (server) to use. This parameter points to + a character string which specifies a connect string or a service point. If the + connect string is NULL, then this call attaches to the default host. The length + of connstr is specified in connstr_len. The connstr pointer may be freed by the + caller on return. + dblink_len (IN) - the length of the string pointed to by connstr. For a valid + connect string name or alias, connstr_len must be non-zero. + mode (IN) - specifies the various modes of operation. For release 8.0, pass as + OCI_DEFAULT - in this mode, calls made to the server on this server context + are made in blocking mode. + Example + See the description of OCIStmtPrepare() on page 13-96 for an example showing + the use of OCIServerAttach(). + Related Functions + OCIServerDetach() + + + + OCIServerDetach() + Name + OCI DeTaCH server + Purpose + Deletes an access to a data source for OCI operations. + Syntax + sword OCIServerDetach ( OCIServer *svrhp, + OCIError *errhp, + ub4 mode); + Comments + This call deletes an access to data source for OCI operations, which was + established by a call to OCIServerAttach(). + Parameters + srvhp (IN) - a handle to an initialized server context, which gets reset to + uninitialized state. The handle is not de-allocated. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + mode (IN) - specifies the various modes of operation. The only valid mode is + OCI_DEFAULT for the default mode. + Related Functions + OCIServerAttach() + + + + OCIServerVersion() + Name + OCI VERSion + Purpose + Returns the version string of the Oracle server. + Syntax + sword OCIServerVersion ( dvoid *hndlp, + OCIError *errhp, + OraText *bufp, + ub4 bufsz + ub1 hndltype ); + Comments + This call returns the version string of the Oracle server. + For example, the following might be returned as the version string if your + application is running against a 7.3.2 server: + Oracle7 Server Release 7.3.2.0.0 - Production Release + PL/SQL Release 2.3.2.0.0 - Production + CORE Version 3.5.2.0.0 - Production + TNS for SEQUENT DYNIX/ptx: Version 2.3.2.0.0 - Production + NLSRTL Version 3.2.2.0.0 - Production + + Parameters + hndlp (IN) - the service context handle or the server context handle. + errhp (IN) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + bufp (IN) - the buffer in which the version information is returned. + bufsz (IN) - the length of the buffer. + hndltype (IN) - the type of handle passed to the function. + Related Functions + + + + + + OCISessionBegin() + Name + OCI Session Begin and authenticate user + Purpose + Creates a user authentication and begins a user session for a given server. + Syntax + sword OCISessionBegin ( OCISvcCtx *svchp, + OCIError *errhp, + OCISession *usrhp, + ub4 credt, + ub4 mode); + + Comments + For Oracle8, OCISessionBegin() must be called for any given server handle + before requests can be made against it. Also, OCISessionBegin() only supports + authenticating the user for access to the Oracle server specified by the + server handle in the service context. In other words, after OCIServerAttach() + is called to initialize a server handle, OCISessionBegin() must be called to + authenticate the user for that given server. + When OCISessionBegin() is called for the first time for the given server + handle, the initialized authentication handle is called a primary + authentication context. A primary authentication context may not be created + with the OCI_MIGRATE mode. Also, only one primary authentication context can + be created for a given server handle and the primary authentication context c + an only ever be used with that server handle. If the primary authentication + context is set in a service handle with a different server handle, then an + error will result. + After OCISessionBegin() has been called for the server handle, and the primary + authentication context is set in the service handle, OCISessionBegin() may be + called again to initialize another authentication handle with different (or + the same) credentials. When OCISessionBegin() is called with a service handle + set with a primary authentication context, the returned authentication context + in authp is called a user authentication context. As many user authentication + contexts may be initialized as desired. + User authentication contexts may be created with the OCI_MIGRATE mode. + If the OCI_MIGRATE mode is not specified, then the user authentication + context can only ever be used with the same server handle set in svchp. If + OCI_MIGRATE mode is specified, then the user authentication may be set + with different server handles. However, the user authentication context is + restricted to use with only server handles which resolve to the same database + instance and that have equivalent primary authentication contexts. Equivalent + authentication contexts are those which were authenticated as the same + database user. + OCI_SYSDBA, OCI_SYSOPER, and OCI_PRELIM_AUTH may only be used + with a primary authentication context. + To provide credentials for a call to OCISessionBegin(), one of two methods are + supported. The first is to provide a valid username and password pair for + database authentication in the user authentication handle passed to + OCISessionBegin(). This involves using OCIAttrSet() to set the + OCI_ATTR_USERNAME and OCI_ATTR_PASSWORD attributes on the + authentication handle. Then OCISessionBegin() is called with + OCI_CRED_RDBMS. + Note: When the authentication handle is terminated using + OCISessionEnd(), the username and password attributes remain + unchanged and thus can be re-used in a future call to OCISessionBegin(). + Otherwise, they must be reset to new values before the next + OCISessionBegin() call. + The second type of credentials supported are external credentials. No + attributes need to be set on the authentication handle before calling + OCISessionBegin(). The credential type is OCI_CRED_EXT. This is equivalent + to the Oracle7 `connect /' syntax. If values have been set for + OCI_ATTR_USERNAME and OCI_ATTR_PASSWORD, then these are + ignored if OCI_CRED_EXT is used. + Parameters + svchp (IN) - a handle to a service context. There must be a valid server + handle set in svchp. + errhp (IN) - an error handle to the retrieve diagnostic information. + usrhp (IN/OUT) - a handle to an authentication context, which is initialized + by this call. + credt (IN) - specifies the type of credentials to use for authentication. + Valid values for credt are: + OCI_CRED_RDBMS - authenticate using a database username and + password pair as credentials. The attributes OCI_ATTR_USERNAME + and OCI_ATTR_PASSWORD should be set on the authentication + context before this call. + OCI_CRED_EXT - authenticate using external credentials. No username + or password is provided. + mode (IN) - specifies the various modes of operation. Valid modes are: + OCI_DEFAULT - in this mode, the authentication context returned may + only ever be set with the same server context specified in svchp. This + establishes the primary authentication context. + OCI_MIGRATE - in this mode, the new authentication context may be + set in a service handle with a different server handle. This mode + establishes the user authentication context. + OCI_SYSDBA - in this mode, the user is authenticated for SYSDBA + access. + OCI_SYSOPER - in this mode, the user is authenticated for SYSOPER + access. + OCI_PRELIM_AUTH - this mode may only be used with OCI_SYSDBA + or OCI_SYSOPER to authenticate for certain administration tasks. + Related Functions + OCISessionEnd() + + + + + + + OCISessionEnd() + Name + OCI Terminate user Authentication Context + Purpose + Terminates a user authentication context created by OCISessionBegin() + Syntax + sword OCISessionEnd ( OCISvcCtx *svchp, + OCIError *errhp, + OCISession *usrhp, + ub4 mode); + + Comments + The user security context associated with the service context is invalidated + by this call. Storage for the authentication context is not freed. The + transaction specified by the service context is implicitly committed. The + transaction handle, if explicitly allocated, may be freed if not being used. + Resources allocated on the server for this user are freed. + The authentication handle may be reused in a new call to OCISessionBegin(). + Parameters + svchp (IN/OUT) - the service context handle. There must be a valid server + handle and user authentication handle associated with svchp. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + usrhp (IN) - de-authenticate this user. If this parameter is passed as NULL, + the user in the service context handle is de-authenticated. + mode (IN) - the only valid mode is OCI_DEFAULT. + Example + In this example, an authentication context is destroyed. + Related Functions + OCISessionBegin() + + + + + OCIStmtExecute() + Name + OCI EXECute + Purpose + This call associates an application request with a server. + Syntax + sword OCIStmtExecute ( OCISvcCtx *svchp, + OCIStmt *stmtp, + OCIError *errhp, + ub4 iters, + ub4 rowoff, + CONST OCISnapshot *snap_in, + OCISnapshot *snap_out, + ub4 mode ); + Comments + This function is used to execute a prepared SQL statement. + Using an execute call, the application associates a request with a server. On + success, OCI_SUCCESS is returned. + If a SELECT statement is executed, the description of the select list follows + implicitly as a response. This description is buffered on the client side for + describes, fetches and define type conversions. Hence it is optimal to + describe a select list only after an execute. + Also for SELECT statements, some results are available implicitly. Rows will + be received and buffered at the end of the execute. For queries with small row + count, a prefetch causes memory to be released in the server if the end of + fetch is reached, an optimization that may result in memory usage reduction. + Set attribute call has been defined to set the number of rows to be prefetched + per result set. + For SELECT statements, at the end of the execute, the statement handle + implicitly maintains a reference to the service context on which it is + executed. It is the user's responsibility to maintain the integrity of the + service context. If the attributes of a service context is changed for + executing some operations on this service context, the service context must + be restored to have the same attributes, that a statement was executed with, + prior to a fetch on the statement handle. The implicit reference is maintained + until the statement handle is freed or the fetch is cancelled or an end of + fetch condition is reached. + Note: If output variables are defined for a SELECT statement before a + call to OCIStmtExecute(), the number of rows specified by iters will be + fetched directly into the defined output buffers and additional rows + equivalent to the prefetch count will be prefetched. If there are no + additional rows, then the fetch is complete without calling + OCIStmtFetch(). + The execute call will return errors if the statement has bind data types that + are not supported in an Oracle7 server. + Parameters + svchp (IN/OUT) - service context handle. + stmtp (IN/OUT) - an statement handle - defines the statement and the + associated data to be executed at the server. It is invalid to pass in a + statement handle that has bind of data types only supported in release 8.0 + when srvchp points to an Oracle7 server. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. If the statement is being + batched and it is successful, then this handle will contain this particular + statement execution specific errors returned from the server when the batch is + flushed. + iters (IN) - the number of times this statement is executed for non-Select + statements. For Select statements, if iters is non-zero, then defines must + have been done for the statement handle. The execution fetches iters rows into + these predefined buffers and prefetches more rows depending upon the prefetch + row count. This function returns an error if iters=0 for non-SELECT + statements. + rowoff (IN) - the index from which the data in an array bind is relevant for + this multiple row execution. + snap_in (IN) - this parameter is optional. if supplied, must point to a + snapshot descriptor of type OCI_DTYPE_SNAP. The contents of this descriptor + must be obtained from the snap_out parameter of a previous call. The + descriptor is ignored if the SQL is not a SELECT. This facility allows + multiple service contexts to ORACLE to see the same consistent snapshot of the + database's committed data. However, uncommitted data in one context is not + visible to another context even using the same snapshot. + snap_out (OUT) - this parameter optional. if supplied, must point to a + descriptor of type OCI_DTYPE_SNAP. This descriptor is filled in with an + opaque representation which is the current ORACLE "system change + number" suitable as a snap_in input to a subsequent call to OCIStmtExecute(). + This descriptor should not be used any longer than necessary in order to avoid + "snapshot too old" errors. + mode (IN) - The modes are: + If OCI_DEFAULT_MODE, the default mode, is selected, the request is + immediately executed. Error handle contains diagnostics on error if any. + OCI_EXACT_FETCH - if the statement is a SQL SELECT, this mode is + only valid if the application has set the prefetch row count prior to this + call. In this mode, the OCI library will get up to the number of rows + specified (i.e., prefetch row count plus iters). If the number of rows + returned by the query is greater than this value, OCI_ERROR will be + returned with ORA-01422 as the implementation specific error in a + diagnostic record. If the number of rows returned by the query is + smaller than the prefetch row count, OCI_SUCCESS_WITH_INFO will + be returned with ORA-01403 as the implementation specific error. The + prefetch buffer size is ignored and the OCI library tries to allocate all the + space required to contain the prefetched rows. The exact fetch semantics + apply to only the top level rows. No more rows can be fetched for this + query at the end of the call. + OCI_KEEP_FETCH_STATE - the result set rows (not yet fetched) of this + statement executed in this transaction will be maintained when the + transaction is detached for migration. By default, a query is cancelled + when a transaction is detached for migration. This mode is the default + mode when connected to a V7 server. + Related Functions + OCIStmtPrepare() + + + + + + OCIStmtFetch() + Name + OCI FetCH + Purpose + Fetches rows from a query. + Syntax + sword OCIStmtFetch ( OCIStmt *stmtp, + OCIError *errhp, + ub4 nrows, + ub2 orientation, + ub4 mode); + Comments + The fetch call is a local call, if prefetched rows suffice. However, this is + transparent to the application. If LOB columns are being read, LOB locators + are fetched for subsequent LOB operations to be performed on these locators. + Prefetching is turned off if LONG columns are involved. + A fetch with nrows set to 0 rows effectively cancels the fetch for this + statement. + Parameters + stmtp (IN) - a statement (application request) handle. + errhp (IN) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + nrows (IN) - number of rows to be fetched from the current position. + orientation (IN) - for release 8.0, the only acceptable value is + OCI_FETCH_NEXT, which is also the default value. + mode (IN) - for release 8.0, beta-1, the following mode is defined. + OCI_DEFAULT - default mode + OCI_EOF_FETCH - indicates that it is the last fetch from the result set. + If nrows is non-zero, setting this mode effectively cancels fetching after + retrieving nrows, otherwise it cancels fetching immediately. + Related Functions + OCIAttrGet() + + OCIStmtFetch2() + Name + OCI FetCH2 + Purpose + Fetches rows from a query. + Syntax + sword OCIStmtFetch2 ( OCIStmt *stmtp, + OCIError *errhp, + ub4 nrows, + ub2 orientation, + ub4 scrollOffset, + ub4 mode); + Comments + The fetch call works similar to the OCIStmtFetch call with the + addition of the fetchOffset parameter. It can be used on any + statement handle, whether it is scrollable or not. For a + non-scrollable statement handle, the only acceptable value + will be OCI_FETCH_NEXT, and the fetchOffset parameter will be + ignored. Applications are encouraged to use this new call. + + A fetchOffset with OCI_FETCH_RELATIVE is equivalent to + OCI_FETCH_CURRENT with a value of 0, is equivalent to + OCI_FETCH_NEXT with a value of 1, and equivalent to + OCI_FETCH_PRIOR with a value of -1. Note that the range of + accessible rows is [1,OCI_ATTR_ROW_COUNT] beyond which an + error could be raised if sufficient rows do not exist in + + The fetch call is a local call, if prefetched rows suffice. However, this is + transparent to the application. If LOB columns are being read, LOB locators + are fetched for subsequent LOB operations to be performed on these locators. + Prefetching is turned off if LONG columns are involved. + A fetch with nrows set to 0 rows effectively cancels the fetch for this + statement. + Parameters + stmtp (IN) - a statement (application request) handle. + errhp (IN) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + nrows (IN) - number of rows to be fetched from the current position. + It defaults to 1 for orientation OCI_FETCH_LAST. + orientation (IN) - The acceptable values are as follows, with + OCI_FETCH_NEXT being the default value. + OCI_FETCH_CURRENT gets the current row, + OCI_FETCH_NEXT gets the next row from the current position, + OCI_FETCH_FIRST gets the first row in the result set, + OCI_FETCH_LAST gets the last row in the result set, + OCI_FETCH_PRIOR gets the previous row from the current row in the result set, + OCI_FETCH_ABSOLUTE will fetch the row number (specified by fetchOffset + parameter) in the result set using absolute positioning, + OCI_FETCH_RELATIVE will fetch the row number (specified by fetchOffset + parameter) in the result set using relative positioning. + scrollOffset(IN) - offset used with the OCI_FETCH_ABSOLUTE and + OCI_FETCH_RELATIVE orientation parameters only. It specify + the new current position for scrollable result set. It is + ignored for non-scrollable result sets. + mode (IN) - for release 8.0, beta-1, the following mode is defined. + OCI_DEFAULT - default mode + OCI_EOF_FETCH - indicates that it is the last fetch from the result set. + If nrows is non-zero, setting this mode effectively cancels fetching after + retrieving nrows, otherwise it cancels fetching immediately. + Related Functions + OCIAttrGet() + + + + OCIStmtGetPieceInfo() + Name + OCI Get Piece Information + Purpose + Returns piece information for a piecewise operation. + Syntax + sword OCIStmtGetPieceInfo( CONST OCIStmt *stmtp, + OCIError *errhp, + dvoid **hndlpp, + ub4 *typep, + ub1 *in_outp, + ub4 *iterp, + ub4 *idxp, + ub1 *piecep ); + + Comments + When an execute/fetch call returns OCI_NEED_DATA to get/return a + dynamic bind/define value or piece, OCIStmtGetPieceInfo() returns the + relevant information: bind/define handle, iteration or index number and + which piece. + See the section "Runtime Data Allocation and Piecewise Operations" on page + 5-16 for more information about using OCIStmtGetPieceInfo(). + Parameters + stmtp (IN) - the statement when executed returned OCI_NEED_DATA. + errhp (OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + hndlpp (OUT) - returns a pointer to the bind or define handle of the bind or + define whose runtime data is required or is being provided. + typep (OUT) - the type of the handle pointed to by hndlpp: OCI_HTYPE_BIND + (for a bind handle) or OCI_HTYPE_DEFINE (for a define handle). + in_outp (OUT) - returns OCI_PARAM_IN if the data is required for an IN bind + value. Returns OCI_PARAM_OUT if the data is available as an OUT bind + variable or a define position value. + iterp (OUT) - returns the row number of a multiple row operation. + idxp (OUT) - the index of an array element of a PL/SQL array bind operation. + piecep (OUT) - returns one of the following defined values - + OCI_ONE_PIECE, OCI_FIRST_PIECE, OCI_NEXT_PIECE and + OCI_LAST_PIECE. The default value is always OCI_ONE_PIECE. + Related Functions + OCIAttrGet(), OCIAttrGet(), OCIStmtExecute(), OCIStmtFetch(), + OCIStmtSetPieceInfo() + + + + + OCIStmtPrepare() + Name + OCI Statement REQuest + Purpose + This call defines the SQL/PLSQL statement to be executed. + Syntax + sword OCIStmtPrepare ( OCIStmt *stmtp, + OCIError *errhp, + CONST OraText *stmt, + ub4 stmt_len, + ub4 language, + ub4 mode); + Comments + This call is used to prepare a SQL or PL/SQL statement for execution. The + OCIStmtPrepare() call defines an application request. + This is a purely local call. Data values for this statement initialized in + subsequent bind calls will be stored in a bind handle which will hang off this + statement handle. + This call does not create an association between this statement handle and any + particular server. + See the section "Preparing Statements" on page 2-21 for more information + about using this call. + Parameters + stmtp (IN) - a statement handle. + errhp (IN) - an error handle to retrieve diagnostic information. + stmt (IN) - SQL or PL/SQL statement to be executed. Must be a null-terminated + string. The pointer to the OraText of the statement must be available as long + as the statement is executed. + stmt_len (IN) - length of the statement. Must not be zero. + language (IN) - V7, V8, or native syntax. Possible values are: + OCI_V7_SYNTAX - V7 ORACLE parsing syntax + OCI_V8_SYNTAX - V8 ORACLE parsing syntax + OCI_NTV_SYNTAX - syntax depending upon the version of the server. + mode (IN) - the only defined mode is OCI_DEFAULT for default mode. + Example + This example demonstrates the use of OCIStmtPrepare(), as well as the OCI + application initialization calls. + Related Functions + OCIAttrGet(), OCIStmtExecute() + + + OCIStmtPrepare2() + Name + OCI Statement REQuest with (a) early binding to svchp and/or + (b) stmt caching + Purpose + This call defines the SQL/PLSQL statement to be executed. + Syntax + sword OCIStmtPrepare2 ( OCISvcCtx *svchp, + OCIStmt **stmtp, + OCIError *errhp, + CONST OraText *stmt, + ub4 stmt_len, + CONST OraText *key, + ub4 key_len, + ub4 language, + ub4 mode); + Comments + This call is used to prepare a SQL or PL/SQL statement for execution. The + OCIStmtPrepare() call defines an application request. + This is a purely local call. Data values for this statement initialized in + subsequent bind calls will be stored in a bind handle which will hang off this + statement handle. + This call creates an association between the statement handle and a service + context. It differs from OCIStmtPrepare in that respect.It also supports + stmt caching. The stmt will automatically be cached if the authp of the stmt + has enabled stmt caching. + Parameters + svchp (IN) - the service context handle that contains the session that + this stmt handle belongs to. + stmtp (OUT) - an unallocated stmt handle must be pased in. An allocated + and prepared statement handle will be returned. + errhp (IN) - an error handle to retrieve diagnostic information. + stmt (IN) - SQL or PL/SQL statement to be executed. Must be a null- + terminated string. The pointer to the OraText of the statement + must be available as long as the statement is executed. + stmt_len (IN) - length of the statement. Must not be zero. + key (IN) - This is only Valid for OCI Stmt Caching. It indicates the + key to search with. It thus optimizes the search in the cache. + key_len (IN) - the length of the key. This, too, is onlly valid for stmt + caching. + language (IN) - V7, V8, or native syntax. Possible values are: + OCI_V7_SYNTAX - V7 ORACLE parsing syntax + OCI_V8_SYNTAX - V8 ORACLE parsing syntax + OCI_NTV_SYNTAX - syntax depending upon the version of the server. + mode (IN) - the defined modes are OCI_DEFAULT and OCI_PREP2_CACHE_SEARCHONLY. + Example + Related Functions + OCIStmtExecute(), OCIStmtRelease() + + + OCIStmtRelease() + Name + OCI Statement Release. This call is used to relesae the stmt that + was retreived using OCIStmtPrepare2(). If the stmt is release + using this call, OCIHandleFree() must not be called on the stmt + handle. + Purpose + This call releases the statement obtained by OCIStmtPrepare2 + Syntax + sword OCIStmtRelease ( OCIStmt *stmtp, + OCIError *errhp, + cONST OraText *key, + ub4 key_len, + ub4 mode); + Comments + This call is used to release a handle obtained via OCIStmtPrepare2(). + It also frees the memory associated with the handle. + This is a purely local call. + Parameters + stmtp (IN/OUT) - The statement handle to be released/freed. + errhp (IN) - an error handle to retrieve diagnostic information. + key (IN) - This is only Valid for OCI Stmt Caching. It indicates the + key to tag the stmt with. + key_len (IN) - the length of the key. This, too, is only valid for stmt + caching. + mode (IN) - the defined modes are OCI_DEFAULT for default mode and + OCI_STRLS_CACHE_DELETE (only used for Stmt Caching). + Example + Related Functions + OCIStmtExecute(), OCIStmtPrepare2() + + + OCIStmtSetPieceInfo() + Name + OCI Set Piece Information + Purpose + Sets piece information for a piecewise operation. + Syntax + sword OCIStmtSetPieceInfo ( dvoid *hndlp, + ub4 type, + OCIError *errhp, + CONST dvoid *bufp, + ub4 *alenp, + ub1 piece, + CONST dvoid *indp, + ub2 *rcodep ); + Comments + When an execute call returns OCI_NEED_DATA to get a dynamic IN/OUT + bind value or piece, OCIStmtSetPieceInfo() sets the piece information: the + buffer, the length, the indicator and which piece is currently being processed. + For more information about using OCIStmtSetPieceInfo() see the section + "Runtime Data Allocation and Piecewise Operations" on page 5-16. + Parameters + hndlp (IN/OUT) - the bind/define handle. + type (IN) - type of the handle. + errhp (OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + bufp (IN/OUT) - bufp is a pointer to a storage containing the data value or + the piece when it is an IN bind variable, otherwise bufp is a pointer to + storage for getting a piece or a value for OUT binds and define variables. For + named data types or REFs, a pointer to the object or REF is returned. + alenp (IN/OUT) - the length of the piece or the value. + piece (IN) - the piece parameter. The following are valid values: + OCI_ONE_PIECE, OCI_FIRST_PIECE, OCI_NEXT_PIECE, or + OCI_LAST_PIECE. + The default value is OCI_ONE_PIECE. This parameter is used for IN bind + variables only. + indp (IN/OUT) - indicator. A pointer to a sb2 value or pointer to an indicator + structure for named data types (SQLT_NTY) and REFs (SQLT_REF), i.e., *indp + is either an sb2 or a dvoid * depending upon the data type. + rcodep (IN/OUT) - return code. + Related Functions + OCIAttrGet(), OCIAttrGet(), OCIStmtExecute(), OCIStmtFetch(), + OCIStmtGetPieceInfo() + + + OCIFormatInit + Name + OCIFormat Package Initialize + Purpose + Initializes the OCIFormat package. + Syntax + sword OCIFormatInit(dvoid *hndl, OCIError *err); + Comments + This routine must be called before calling any other OCIFormat routine. + Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR + Parameters + hndl (IN/OUT) - OCI environment or session handle + err (IN/OUT) - OCI error handle + Related Functions + OCIFormatTerm() + + + OCIFormatString + Name + OCIFormat Package Format String + Purpose + Writes a text string into the supplied text buffer using the argument + list submitted to it and in accordance with the format string given. + Syntax + sword OCIFormatString(dvoid *hndl, OCIError *err, OraText *buffer, + sbig_ora bufferLength, sbig_ora *returnLength, + CONST OraText *formatString, ...); + Comments + The first call to this routine must be preceded by a call to the + OCIFormatInit routine that initializes the OCIFormat package + for use. When this routine is no longer needed then terminate + the OCIFormat package by a call to the OCIFormatTerm routine. + Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR + Parameters + hndl (IN/OUT) - OCI environment or session handle + err (IN/OUT) - OCI error handle + buffer (OUT) - text buffer for the string + bufferLength (IN) - length of the text buffer + returnLength (OUT) - length of the formatted string + formatString (IN) - format specification string + ... (IN) - variable argument list + Related Functions + + + OCIFormatTerm + Name + OCIFormat Package Terminate + Purpose + Terminates the OCIFormat package. + Syntax + sword OCIFormatTerm(dvoid *hndl, OCIError *err); + Comments + It must be called after the OCIFormat package is no longer being used. + Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR + Parameters + hndl (IN/OUT) - OCI environment or session handle + err (IN/OUT) - OCI error handle + Related Functions + OCIFormatInit() + + + OCIFormatTUb1 + Name + OCIFormat Package ub1 Type + Purpose + Return the type value for the ub1 type. + Syntax + sword OCIFormatTUb1(void); + Comments + None + Parameters + None + Related Functions + None + + + OCIFormatTUb2 + Name + OCIFormat Package ub2 Type + Purpose + Return the type value for the ub2 type. + Syntax + sword OCIFormatTUb2(void); + Comments + None + Parameters + None + Related Functions + None + + + OCIFormatTUb4 + Name + OCIFormat Package ub4 Type + Purpose + Return the type value for the ub4 type. + Syntax + sword OCIFormatTUb4(void); + Comments + None + Parameters + None + Related Functions + None + + + OCIFormatTUword + Name + OCIFormat Package uword Type + Purpose + Return the type value for the uword type. + Syntax + sword OCIFormatTUword(void); + Comments + None + Parameters + None + Related Functions + None + + + OCIFormatTUbig_ora + Name + OCIFormat Package ubig_ora Type + Purpose + Return the type value for the ubig_ora type. + Syntax + sword OCIFormatTUbig_ora(void); + Comments + None + Parameters + None + Related Functions + None + + + OCIFormatTSb1 + Name + OCIFormat Package sb1 Type + Purpose + Return the type value for the sb1 type. + Syntax + sword OCIFormatTSb1(void); + Comments + None + Parameters + None + Related Functions + None + + + OCIFormatTSb2 + Name + OCIFormat Package sb2 Type + Purpose + Return the type value for the sb2 type. + Syntax + sword OCIFormatTSb2(void); + Comments + None + Parameters + None + Related Functions + None + + + OCIFormatTSb4 + Name + OCIFormat Package sb4 Type + Purpose + Return the type value for the sb4 type. + Syntax + sword OCIFormatTSb4(void); + Comments + None + Parameters + None + Related Functions + None + + + OCIFormatTSword + Name + OCIFormat Package sword Type + Purpose + Return the type value for the sword type. + Syntax + sword OCIFormatTSword(void); + Comments + None + Parameters + None + Related Functions + None + + + OCIFormatTSbig_ora + Name + OCIFormat Package sbig_ora Type + Purpose + Return the type value for the sbig_ora type. + Syntax + sword OCIFormatTSbig_ora(void); + Comments + None + Parameters + None + Related Functions + None + + + OCIFormatTEb1 + Name + OCIFormat Package eb1 Type + Purpose + Return the type value for the eb1 type. + Syntax + sword OCIFormatTEb1(void); + Comments + None + Parameters + None + Related Functions + None + + + OCIFormatTEb2 + Name + OCIFormat Package eb2 Type + Purpose + Return the type value for the eb2 type. + Syntax + sword OCIFormatTEb2(void); + Comments + None + Parameters + None + Related Functions + None + + + OCIFormatTEb4 + Name + OCIFormat Package eb4 Type + Purpose + Return the type value for the eb4 type. + Syntax + sword OCIFormatTEb4(void); + Comments + None + Parameters + None + Related Functions + None + + + OCIFormatTEword + Name + OCIFormat Package eword Type + Purpose + Return the type value for the eword type. + Syntax + sword OCIFormatTEword(void); + Comments + None + Parameters + None + Related Functions + None + + + OCIFormatTChar + Name + OCIFormat Package text Type + Purpose + Return the type value for the text type. + Syntax + sword OCIFormatTChar(void); + Comments + None + Parameters + None + Related Functions + None + + + OCIFormatTText + Name + OCIFormat Package *text Type + Purpose + Return the type value for the *text type. + Syntax + sword OCIFormatTText(void); + Comments + None + Parameters + None + Related Functions + None + + + OCIFormatTDouble + Name + OCIFormat Package double Type + Purpose + Return the type value for the double type. + Syntax + sword OCIFormatTDouble(void); + Comments + None + Parameters + None + Related Functions + None + + + OCIFormatDvoid + Name + OCIFormat Package dvoid Type + Purpose + Return the type value for the dvoid type. + Syntax + sword OCIFormatTDvoid(void); + Comments + None + Parameters + None + Related Functions + None + + + OCIFormatTEnd + Name + OCIFormat Package end Type + Purpose + Return the list terminator's "type". + Syntax + sword OCIFormatTEnd(void); + Comments + None + Parameters + None + Related Functions + None + + + OCISvcCtxToLda() + Name + OCI toggle SerVice context handle to Version 7 Lda_Def + Purpose + Toggles between a V8 service context handle and a V7 Lda_Def. + Syntax + sword OCISvcCtxToLda ( OCISvcCtx *srvhp, + OCIError *errhp, + Lda_Def *ldap ); + Comments + Toggles between an Oracle8 service context handle and an Oracle7 Lda_Def. + This function can only be called after a service context has been properly + initialized. + Once the service context has been translated to an Lda_Def, it can be used in + release 7.x OCI calls (e.g., obindps(), ofen()). + Note: If there are multiple service contexts which share the same server + handle, only one can be in V7 mode at any time. + The action of this call can be reversed by passing the resulting Lda_Def to + the OCILdaToSvcCtx() function. + Parameters + svchp (IN/OUT) - the service context handle. + errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + ldap (IN/OUT) - a Logon Data Area for V7-style OCI calls which is initialized + by this call. + Related Functions + OCILdaToSvcCtx() + + + + + OCITransCommit() + Name + OCI TX (transaction) CoMmit + Purpose + Commits the transaction associated with a specified service context. + Syntax + sword OCITransCommit ( OCISvcCtx *srvcp, + OCIError *errhp, + ub4 flags ); + Comments + The transaction currently associated with the service context is committed. If + it is a distributed transaction that the server cannot commit, this call + additionally retrieves the state of the transaction from the database to be + returned to the user in the error handle. + If the application has defined multiple transactions, this function operates + on the transaction currently associated with the service context. If the + application is working with only the implicit local transaction created when + database changes are made, that implicit transaction is committed. + If the application is running in the object mode, then the modified or updated + objects in the object cache for this transaction are also committed. + The flags parameter is used for one-phase commit optimization in distributed + transactions. If the transaction is non-distributed, the flags parameter is + ignored, and OCI_DEFAULT can be passed as its value. OCI applications + managing global transactions should pass a value of + OCI_TRANS_TWOPHASE to the flags parameter for a two-phase commit. The + default is one-phase commit. + Under normal circumstances, OCITransCommit() returns with a status + indicating that the transaction has either been committed or rolled back. With + distributed transactions, it is possible that the transaction is now in-doubt + (i.e., neither committed nor aborted). In this case, OCITransCommit() + attempts to retrieve the status of the transaction from the server. + The status is returned. + Parameters + srvcp (IN) - the service context handle. + errhp (IN) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + flags -see the "Comments" section above. + Related Functions + OCITransRollback() + + + + + OCITransDetach() + Name + OCI TX (transaction) DeTach + Purpose + Detaches a transaction. + Syntax + sword OCITransDetach ( OCISvcCtx *srvcp, + OCIError *errhp, + ub4 flags); + Comments + Detaches a global transaction from the service context handle. The transaction + currently attached to the service context handle becomes inactive at the end + of this call. The transaction may be resumed later by calling OCITransStart(), + specifying a flags value of OCI_TRANS_RESUME. + When a transaction is detached, the value which was specified in the timeout + parameter of OCITransStart() when the transaction was started is used to + determine the amount of time the branch can remain inactive before being + deleted by the server's PMON process. + Note: The transaction can be resumed by a different process than the one + that detached it, provided that the transaction has the same + authorization. + Parameters + srvcp (IN) - the service context handle. + errhp (IN) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + flags (IN) - you must pass a value of OCI_DEFAULT for this parameter. + Related Functions + OCITransStart() + + + + OCITransForget() + Name + OCI TX (transaction) ForGeT + Purpose + Causes the server to forget a heuristically completed global transaction. + Syntax + sword OCITransForget ( OCISvcCtx *svchp, + OCIError *errhp, + ub4 flags); + + Comments + + Forgets a heuristically completed global transaction. The server deletes the + status of the transaction from the system's pending transaction table. + The XID of the transaction to be forgotten is set as an attribute of the + transaction handle (OCI_ATTR_XID). + Parameters + srvcp (IN) - the service context handle - the transaction is rolled back. + errhp (IN) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + flags (IN) - you must pass OCI_DEFAULT for this parameter. + Related Functions + OCITransCommit(), OCITransRollback() + + + OCITransMultiPrepare() + Name + OCI Trans(action) Multi-Branch Prepare + Purpose + Prepares a transaction with multiple branches in a single call. + Syntax + sword OCITransMultiPrepare ( OCISvcCtx *svchp, + ub4 numBranches, + OCITrans **txns, + OCIError **errhp); + + Comments + + Prepares the specified global transaction for commit. + This call is valid only for distributed transactions. + This call is an advanced performance feature intended for use only in + situations where the caller is responsible for preparing all the branches + in a transaction. + Parameters + srvcp (IN) - the service context handle. + numBranches (IN) - This is the number of branches expected. It is also the + array size for the next two parameters. + txns (IN) - This is the array of transaction handles for the branches to + prepare. They should all have the OCI_ATTR_XID set. The global transaction + ID should be the same. + errhp (IN) - This is the array of error handles. If OCI_SUCCESS is not + returned, then these will indicate which branches received which errors. + Related Functions + OCITransPrepare() + + + OCITransPrepare() + Name + OCI TX (transaction) PREpare + Purpose + Prepares a transaction for commit. + Syntax + sword OCITransPrepare ( OCISvcCtx *svchp, + OCIError *errhp, + ub4 flags); + + Comments + + Prepares the specified global transaction for commit. + This call is valid only for distributed transactions. + The call returns OCI_SUCCESS_WITH_INFO if the transaction has not made + any changes. The error handle will indicate that the transaction is read-only. + The flag parameter is not currently used. + Parameters + srvcp (IN) - the service context handle. + errhp (IN) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + flags (IN) - you must pass OCI_DEFAULT for this parameter. + Related Functions + OCITransCommit(), OCITransForget() + + + + + OCITransRollback() + Name + OCI TX (transaction) RoLlback + Purpose + Rolls back the current transaction. + Syntax + sword OCITransRollback ( dvoid *svchp, + OCIError *errhp, + ub4 flags ); + Comments + The current transaction- defined as the set of statements executed since the + last OCITransCommit() or since OCISessionBegin()-is rolled back. + If the application is running under object mode then the modified or updated + objects in the object cache for this transaction are also rolled back. + An error is returned if an attempt is made to roll back a global transaction + that is not currently active. + Parameters + svchp (IN) - a service context handle. The transaction currently set in the + service context handle is rolled back. + errhp -(IN) - an error handle which can be passed to OCIErrorGet() for + diagnostic information in the event of an error. + flags - you must pass a value of OCI_DEFAULT for this parameter. + Related Functions + OCITransCommit() + + + + + OCITransStart() + Name + OCI TX (transaction) STart + Purpose + Sets the beginning of a transaction. + Syntax + sword OCITransStart ( OCISvcCtx *svchp, + OCIError *errhp, + uword timeout, + ub4 flags); + + Comments + This function sets the beginning of a global or serializable transaction. The + transaction context currently associated with the service context handle is + initialized at the end of the call if the flags parameter specifies that a new + transaction should be started. + The XID of the transaction is set as an attribute of the transaction handle + (OCI_ATTR_XID) + Parameters + svchp (IN/OUT) - the service context handle. The transaction context in the + service context handle is initialized at the end of the call if the flag + specified a new transaction to be started. + errhp (IN/OUT) - The OCI error handle. If there is an error, it is recorded in + err and this function returns OCI_ERROR. Diagnostic information can be + obtained by calling OCIErrorGet(). + timeout (IN) - the time, in seconds, to wait for a transaction to become + available for resumption when OCI_TRANS_RESUME is specified. When + OCI_TRANS_NEW is specified, this value is stored and may be used later by + OCITransDetach(). + flags (IN) - specifies whether a new transaction is being started or an + existing transaction is being resumed. Also specifies serializiability or + read-only status. More than a single value can be specified. By default, + a read/write transaction is started. The flag values are: + OCI_TRANS_NEW - starts a new transaction branch. By default starts a + tightly coupled and migratable branch. + OCI_TRANS_TIGHT - explicitly specifies a tightly coupled branch + OCI_TRANS_LOOSE - specifies a loosely coupled branch + OCI_TRANS_RESUME - resumes an existing transaction branch. + OCI_TRANS_READONLY - start a readonly transaction + OCI_TRANS_SERIALIZABLE - start a serializable transaction + Related Functions + OCITransDetach() + + + + + + ***************************************************************************** } + {-----------------------Dynamic Callback Function Pointers------------------ } + + type + + OCICallbackInBind = function (ictxp:Pdvoid; bindp:POCIBind; iter:ub4; index:ub4; bufpp:PPdvoid; + alenp:Pub4; piecep:Pub1; indp:PPdvoid):sb4;cdecl; + + OCICallbackOutBind = function (octxp:Pdvoid; bindp:POCIBind; iter:ub4; index:ub4; bufpp:PPdvoid; + alenp:PPub4; piecep:Pub1; indp:PPdvoid; rcodep:PPub2):sb4;cdecl; + + OCICallbackDefine = function (octxp:Pdvoid; defnp:POCIDefine; iter:ub4; bufpp:PPdvoid; alenp:PPub4; + piecep:Pub1; indp:PPdvoid; rcodep:PPub2):sb4;cdecl; + +// OCIUserCallback = function (ctxp:Pdvoid; hndlp:Pdvoid; _type:ub4; fcode:ub4; when:ub4; +// returnCode:sword; errnop:Psb4; arglist:va_list):sword;cdecl; + + OCIEnvCallbackType = function (env:POCIEnv; mode:ub4; xtramem_sz:size_t; usrmemp:Pdvoid; ucbDesc:POCIUcb):sword;cdecl; +(* Const before type ignored *) + + OCICallbackLobRead = function (ctxp:Pdvoid; bufp:Pdvoid; len:ub4; piece:ub1):sb4;cdecl; + + OCICallbackLobWrite = function (ctxp:Pdvoid; bufp:Pdvoid; lenp:Pub4; piece:Pub1):sb4;cdecl; +{$ifdef ORAXB8_DEFINED} +(* Const before type ignored *) + + type + + OCICallbackLobRead2 = function (ctxp:Pdvoid; bufp:Pdvoid; len:oraub8; piece:ub1; changed_bufpp:PPdvoid; + changed_lenp:Poraub8):sb4;cdecl; + + OCICallbackLobWrite2 = function (ctxp:Pdvoid; bufp:Pdvoid; lenp:Poraub8; piece:Pub1; changed_bufpp:PPdvoid; + changed_lenp:Poraub8):sb4;cdecl; +(* Const before type ignored *) + + OCICallbackLobArrayRead = function (ctxp:Pdvoid; array_iter:ub4; bufp:Pdvoid; len:oraub8; piece:ub1; + changed_bufpp:PPdvoid; changed_lenp:Poraub8):sb4;cdecl; + + OCICallbackLobArrayWrite = function (ctxp:Pdvoid; array_iter:ub4; bufp:Pdvoid; lenp:Poraub8; piece:Pub1; + changed_bufpp:PPdvoid; changed_lenp:Poraub8):sb4;cdecl; +{$endif} + + type + + OCICallbackAQEnq = function (ctxp:Pdvoid; payload:PPdvoid; payload_ind:PPdvoid):sb4;cdecl; + + OCICallbackAQDeq = function (ctxp:Pdvoid; payload:PPdvoid; payload_ind:PPdvoid):sb4;cdecl; + {--------------------------Failover Callback Structure --------------------- } + + OCICallbackFailover = function (svcctx:Pdvoid; envctx:Pdvoid; fo_ctx:Pdvoid; fo_type:ub4; fo_event:ub4):sb4;cdecl; + + POCIFocbkStruct = ^OCIFocbkStruct; + OCIFocbkStruct = record + callback_function : OCICallbackFailover; + fo_ctx : Pdvoid; + end; + {--------------------------HA Callback Structure --------------------- } + + OCIEventCallback = procedure (evtctx:Pdvoid; eventhp:POCIEvent);cdecl; + {**************************************************************************** + ACTUAL PROTOTYPE DECLARATIONS + ***************************************************************************** } + type + tmalocfp = function (ctxp:Pdvoid; size:size_t):Pdvoid; + tralocfp = function (ctxp:Pdvoid; memptr:Pdvoid;newsize:size_t):Pdvoid; + tmfreefp = procedure (ctxp:Pdvoid; memptr:Pdvoid); + +{$IFNDEF LinkDynamically} + + function OCIInitialize(mode:ub4; ctxp:Pdvoid; malocfp:tmalocfp; ralocfp:tralocfp;mfreefp:tmfreefp ):sword;cdecl;external ocilib name 'OCIInitialize'; + + function OCITerminate(mode:ub4):sword;cdecl;external ocilib name 'OCITerminate'; + + function OCIEnvCreate(var envp:POCIEnv; mode:ub4; ctxp:Pdvoid; malocfp:tmalocfp; ralocfp:tralocfp; + mfreefp:tmfreefp; xtramem_sz:size_t; usrmempp:PPdvoid):sword;cdecl;external ocilib name 'OCIEnvCreate'; + + function OCIEnvNlsCreate(var envp:POCIEnv; mode:ub4; ctxp:Pdvoid; malocfp:tmalocfp; ralocfp:tralocfp; + mfreefp:tmfreefp; xtramem_sz:size_t; usrmempp:PPdvoid; charset:ub2; ncharset:ub2):sword;cdecl;external ocilib name 'OCIEnvNlsCreate'; + + function OCIFEnvCreate(var envp:POCIEnv; mode:ub4; ctxp:Pdvoid; malocfp:tmalocfp; ralocfp:tralocfp; + mfreefp:tmfreefp; xtramem_sz:size_t; usrmempp:PPdvoid; fupg:Pdvoid):sword;cdecl;external ocilib name 'OCIFEnvCreate'; + + function OCIHandleAlloc(parenth:Pdvoid; var hndlpp:Pdvoid; _type:ub4; xtramem_sz:size_t; usrmempp:PPdvoid):sword;cdecl;external ocilib name 'OCIHandleAlloc'; + + function OCIHandleFree(hndlp:Pdvoid; _type:ub4):sword;cdecl;external ocilib name 'OCIHandleFree'; + + function OCIDescriptorAlloc(parenth:Pdvoid; descpp:PPdvoid; _type:ub4; xtramem_sz:size_t; usrmempp:PPdvoid):sword;cdecl;external ocilib name 'OCIDescriptorAlloc'; + + function OCIDescriptorFree(descp:Pdvoid; _type:ub4):sword;cdecl;external ocilib name 'OCIDescriptorFree'; + + function OCIEnvInit(var envp:POCIEnv; mode:ub4; xtramem_sz:size_t; usrmempp:PPdvoid):sword;cdecl;external ocilib name 'OCIEnvInit'; + + function OCIServerAttach(srvhp:POCIServer; errhp:POCIError; dblink:POraText; dblink_len:sb4; mode:ub4):sword;cdecl;external ocilib name 'OCIServerAttach'; + + function OCIServerDetach(srvhp:POCIServer; errhp:POCIError; mode:ub4):sword;cdecl;external ocilib name 'OCIServerDetach'; + + function OCISessionBegin(svchp:POCISvcCtx; errhp:POCIError; usrhp:POCISession; credt:ub4; mode:ub4):sword;cdecl;external ocilib name 'OCISessionBegin'; + + function OCISessionEnd(svchp:POCISvcCtx; errhp:POCIError; usrhp:POCISession; mode:ub4):sword;cdecl;external ocilib name 'OCISessionEnd'; + + function OCILogon(envhp:POCIEnv; errhp:POCIError;var svchp:POCISvcCtx; username:POraText; uname_len:ub4; + password:POraText; passwd_len:ub4; dbname:POraText; dbname_len:ub4):sword;cdecl;external ocilib name 'OCILogon'; + + function OCILogon2(envhp:POCIEnv; errhp:POCIError; var svchp:POCISvcCtx; username:POraText; uname_len:ub4; + password:POraText; passwd_len:ub4; dbname:POraText; dbname_len:ub4; mode:ub4):sword;cdecl;external ocilib name 'OCILogon2'; + + function OCILogoff(svchp:POCISvcCtx; errhp:POCIError):sword;cdecl;external ocilib name 'OCILogoff'; + + function OCIPasswordChange(svchp:POCISvcCtx; errhp:POCIError; user_name:POraText; usernm_len:ub4; opasswd:POraText; + opasswd_len:ub4; npasswd:POraText; npasswd_len:ub4; mode:ub4):sword;cdecl;external ocilib name 'OCIPasswordChange'; + + function OCIStmtPrepare(stmtp:POCIStmt; errhp:POCIError; stmt:POraText; stmt_len:ub4; language:ub4; + mode:ub4):sword;cdecl;external ocilib name 'OCIStmtPrepare'; + + function OCIStmtPrepare2(svchp:POCISvcCtx; var stmtp:POCIStmt; errhp:POCIError; stmt:POraText; stmt_len:ub4; + key:POraText; key_len:ub4; language:ub4; mode:ub4):sword;cdecl;external ocilib name 'OCIStmtPrepare2'; + + function OCIStmtRelease(stmtp:POCIStmt; errhp:POCIError; key:POraText; key_len:ub4; mode:ub4):sword;cdecl;external ocilib name 'OCIStmtRelease'; + + function OCIBindByPos(stmtp:POCIStmt; var bindp:POCIBind; errhp:POCIError; position:ub4; valuep:Pdvoid; + value_sz:sb4; dty:ub2; indp:Pdvoid; alenp:Pub2; rcodep:Pub2; + maxarr_len:ub4; curelep:Pub4; mode:ub4):sword;cdecl;external ocilib name 'OCIBindByPos'; + + function OCIBindByName(stmtp:POCIStmt; var bindp: POCIBind; errhp:POCIError; placeholder:POraText; placeh_len:sb4; + valuep:Pdvoid; value_sz:sb4; dty:ub2; indp:Pdvoid; alenp:Pub2; + rcodep:Pub2; maxarr_len:ub4; curelep:Pub4; mode:ub4):sword;cdecl;external ocilib name 'OCIBindByName'; + + function OCIBindObject(bindp:POCIBind; errhp:POCIError; _type:POCIType; pgvpp:PPdvoid; pvszsp:Pub4; + indpp:PPdvoid; indszp:Pub4):sword;cdecl;external ocilib name 'OCIBindObject'; + + function OCIBindDynamic(bindp:POCIBind; errhp:POCIError; ictxp:Pdvoid; icbfp:OCICallbackInBind; octxp:Pdvoid; + ocbfp:OCICallbackOutBind):sword;cdecl;external ocilib name 'OCIBindDynamic'; + + function OCIBindArrayOfStruct(bindp:POCIBind; errhp:POCIError; pvskip:ub4; indskip:ub4; alskip:ub4; + rcskip:ub4):sword;cdecl;external ocilib name 'OCIBindArrayOfStruct'; + + function OCIStmtGetPieceInfo(stmtp:POCIStmt; errhp:POCIError; hndlpp:PPdvoid; typep:Pub4; in_outp:Pub1; + iterp:Pub4; idxp:Pub4; piecep:Pub1):sword;cdecl;external ocilib name 'OCIStmtGetPieceInfo'; + + function OCIStmtSetPieceInfo(hndlp:Pdvoid; _type:ub4; errhp:POCIError; bufp:Pdvoid; alenp:Pub4; + piece:ub1; indp:Pdvoid; rcodep:Pub2):sword;cdecl;external ocilib name 'OCIStmtSetPieceInfo'; + + function OCIStmtExecute(svchp:POCISvcCtx; stmtp:POCIStmt; errhp:POCIError; iters:ub4; rowoff:ub4; + snap_in:POCISnapshot; snap_out:POCISnapshot; mode:ub4):sword;cdecl;external ocilib name 'OCIStmtExecute'; + + function OCIDefineByPos(stmtp:POCIStmt; var defnp:POCIDefine; errhp:POCIError; position:ub4; valuep:Pdvoid; + value_sz:sb4; dty:ub2; indp:Pdvoid; rlenp:Pub2; rcodep:Pub2; + mode:ub4):sword;cdecl;external ocilib name 'OCIDefineByPos'; + + function OCIDefineObject(defnp:POCIDefine; errhp:POCIError; _type:POCIType; pgvpp:PPdvoid; pvszsp:Pub4; + indpp:PPdvoid; indszp:Pub4):sword;cdecl;external ocilib name 'OCIDefineObject'; + + function OCIDefineDynamic(defnp:POCIDefine; errhp:POCIError; octxp:Pdvoid; ocbfp:OCICallbackDefine):sword;cdecl;external ocilib name 'OCIDefineDynamic'; + + function OCIRowidToChar(rowidDesc:POCIRowid; outbfp:POraText; outbflp:Pub2; errhp:POCIError):sword;cdecl;external ocilib name 'OCIRowidToChar'; + + function OCIDefineArrayOfStruct(defnp:POCIDefine; errhp:POCIError; pvskip:ub4; indskip:ub4; rlskip:ub4; + rcskip:ub4):sword;cdecl;external ocilib name 'OCIDefineArrayOfStruct'; + + function OCIStmtFetch(stmtp:POCIStmt; errhp:POCIError; nrows:ub4; orientation:ub2; mode:ub4):sword;cdecl;external ocilib name 'OCIStmtFetch'; + + function OCIStmtFetch2(stmtp:POCIStmt; errhp:POCIError; nrows:ub4; orientation:ub2; scrollOffset:sb4; + mode:ub4):sword;cdecl;external ocilib name 'OCIStmtFetch2'; + + function OCIStmtGetBindInfo(stmtp:POCIStmt; errhp:POCIError; size:ub4; startloc:ub4; found:Psb4; + bvnp:array of POraText; bvnl:array of ub1; invp:array of POraText; inpl:array of ub1; dupl:array of ub1; + var hndl:POCIBind):sword;cdecl;external ocilib name 'OCIStmtGetBindInfo'; + + function OCIDescribeAny(svchp:POCISvcCtx; errhp:POCIError; objptr:Pdvoid; objnm_len:ub4; objptr_typ:ub1; + info_level:ub1; objtyp:ub1; dschp:POCIDescribe):sword;cdecl;external ocilib name 'OCIDescribeAny'; + + function OCIParamGet(hndlp:Pdvoid; htype:ub4; errhp:POCIError; var parmdpp:Pdvoid; pos:ub4):sword;cdecl;external ocilib name 'OCIParamGet'; + + function OCIParamSet(hdlp:Pdvoid; htyp:ub4; errhp:POCIError; dscp:Pdvoid; dtyp:ub4; + pos:ub4):sword;cdecl;external ocilib name 'OCIParamSet'; + + function OCITransStart(svchp:POCISvcCtx; errhp:POCIError; timeout:uword; flags:ub4):sword;cdecl;external ocilib name 'OCITransStart'; + + function OCITransDetach(svchp:POCISvcCtx; errhp:POCIError; flags:ub4):sword;cdecl;external ocilib name 'OCITransDetach'; + + function OCITransCommit(svchp:POCISvcCtx; errhp:POCIError; flags:ub4):sword;cdecl;external ocilib name 'OCITransCommit'; + + function OCITransRollback(svchp:POCISvcCtx; errhp:POCIError; flags:ub4):sword;cdecl;external ocilib name 'OCITransRollback'; + + function OCITransPrepare(svchp:POCISvcCtx; errhp:POCIError; flags:ub4):sword;cdecl;external ocilib name 'OCITransPrepare'; + + function OCITransMultiPrepare(svchp:POCISvcCtx; numBranches:ub4; var txns:POCITrans; var errhp:POCIError):sword;cdecl;external ocilib name 'OCITransMultiPrepare'; + + function OCITransForget(svchp:POCISvcCtx; errhp:POCIError; flags:ub4):sword;cdecl;external ocilib name 'OCITransForget'; + + function OCIErrorGet(hndlp:Pdvoid; recordno:ub4; sqlstate:POraText; var errcodep:sb4; bufp:POraText; + bufsiz:ub4; _type:ub4):sword;cdecl;external ocilib name 'OCIErrorGet'; + + function OCILobAppend(svchp:POCISvcCtx; errhp:POCIError; dst_locp:POCILobLocator; src_locp:POCILobLocator):sword;cdecl;external ocilib name 'OCILobAppend'; + + function OCILobAssign(envhp:POCIEnv; errhp:POCIError; src_locp:POCILobLocator; var dst_locpp:POCILobLocator):sword;cdecl;external ocilib name 'OCILobAssign'; + + function OCILobCharSetForm(envhp:POCIEnv; errhp:POCIError; locp:POCILobLocator; csfrm:Pub1):sword;cdecl;external ocilib name 'OCILobCharSetForm'; + + function OCILobCharSetId(envhp:POCIEnv; errhp:POCIError; locp:POCILobLocator; csid:Pub2):sword;cdecl;external ocilib name 'OCILobCharSetId'; + + function OCILobCopy(svchp:POCISvcCtx; errhp:POCIError; dst_locp:POCILobLocator; src_locp:POCILobLocator; amount:ub4; + dst_offset:ub4; src_offset:ub4):sword;cdecl;external ocilib name 'OCILobCopy'; + + function OCILobCreateTemporary(svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; csid:ub2; csfrm:ub1; + lobtype:ub1; cache:boolean; duration:OCIDuration):sword;cdecl;external ocilib name 'OCILobCreateTemporary'; + + function OCILobClose(svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator):sword;cdecl;external ocilib name 'OCILobClose'; + + function OCILobDisableBuffering(svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator):sword;cdecl;external ocilib name 'OCILobDisableBuffering'; + + function OCILobEnableBuffering(svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator):sword;cdecl;external ocilib name 'OCILobEnableBuffering'; + + function OCILobErase(svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; amount:Pub4; offset:ub4):sword;cdecl;external ocilib name 'OCILobErase'; + + function OCILobFileClose(svchp:POCISvcCtx; errhp:POCIError; filep:POCILobLocator):sword;cdecl;external ocilib name 'OCILobFileClose'; + + function OCILobFileCloseAll(svchp:POCISvcCtx; errhp:POCIError):sword;cdecl;external ocilib name 'OCILobFileCloseAll'; + + function OCILobFileExists(svchp:POCISvcCtx; errhp:POCIError; filep:POCILobLocator; flag:Pboolean):sword;cdecl;external ocilib name 'OCILobFileExists'; + + function OCILobFileGetName(envhp:POCIEnv; errhp:POCIError; filep:POCILobLocator; dir_alias:POraText; d_length:Pub2; + filename:POraText; f_length:Pub2):sword;cdecl;external ocilib name 'OCILobFileGetName'; + + function OCILobFileIsOpen(svchp:POCISvcCtx; errhp:POCIError; filep:POCILobLocator; flag:Pboolean):sword;cdecl;external ocilib name 'OCILobFileIsOpen'; + + function OCILobFileOpen(svchp:POCISvcCtx; errhp:POCIError; filep:POCILobLocator; mode:ub1):sword;cdecl;external ocilib name 'OCILobFileOpen'; + + function OCILobFileSetName(envhp:POCIEnv; errhp:POCIError; var filepp:POCILobLocator; dir_alias:POraText; d_length:ub2; + filename:POraText; f_length:ub2):sword;cdecl;external ocilib name 'OCILobFileSetName'; + + function OCILobFlushBuffer(svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; flag:ub4):sword;cdecl;external ocilib name 'OCILobFlushBuffer'; + + function OCILobFreeTemporary(svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator):sword;cdecl;external ocilib name 'OCILobFreeTemporary'; + + function OCILobGetChunkSize(svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; chunksizep:Pub4):sword;cdecl;external ocilib name 'OCILobGetChunkSize'; + + function OCILobGetLength(svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; lenp:Pub4):sword;cdecl;external ocilib name 'OCILobGetLength'; + + function OCILobIsEqual(envhp:POCIEnv; x:POCILobLocator; y:POCILobLocator; is_equal:Pboolean):sword;cdecl;external ocilib name 'OCILobIsEqual'; + + function OCILobIsOpen(svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; flag:Pboolean):sword;cdecl;external ocilib name 'OCILobIsOpen'; + + function OCILobIsTemporary(envp:POCIEnv; errhp:POCIError; locp:POCILobLocator; is_temporary:Pboolean):sword;cdecl;external ocilib name 'OCILobIsTemporary'; + + function OCILobLoadFromFile(svchp:POCISvcCtx; errhp:POCIError; dst_locp:POCILobLocator; src_filep:POCILobLocator; amount:ub4; + dst_offset:ub4; src_offset:ub4):sword;cdecl;external ocilib name 'OCILobLoadFromFile'; + + function OCILobLocatorAssign(svchp:POCISvcCtx; errhp:POCIError; src_locp:POCILobLocator; var dst_locpp:POCILobLocator):sword;cdecl;external ocilib name 'OCILobLocatorAssign'; + + function OCILobLocatorIsInit(envhp:POCIEnv; errhp:POCIError; locp:POCILobLocator; is_initialized:Pboolean):sword;cdecl;external ocilib name 'OCILobLocatorIsInit'; + + function OCILobOpen(svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; mode:ub1):sword;cdecl;external ocilib name 'OCILobOpen'; + + function OCILobRead(svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; amtp:Pub4; offset:ub4; + bufp:Pdvoid; bufl:ub4; ctxp:Pdvoid; cbfp:OCICallbackLobRead; csid:ub2; + csfrm:ub1):sword;cdecl;external ocilib name 'OCILobRead'; + + function OCILobTrim(svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; newlen:ub4):sword;cdecl;external ocilib name 'OCILobTrim'; + + function OCILobWrite(svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; amtp:Pub4; offset:ub4; + bufp:Pdvoid; buflen:ub4; piece:ub1; ctxp:Pdvoid; cbfp:OCICallbackLobWrite; + csid:ub2; csfrm:ub1):sword;cdecl;external ocilib name 'OCILobWrite'; + + function OCILobWriteAppend(svchp:POCISvcCtx; errhp:POCIError; lobp:POCILobLocator; amtp:Pub4; bufp:Pdvoid; + bufl:ub4; piece:ub1; ctxp:Pdvoid; cbfp:OCICallbackLobWrite; csid:ub2; + csfrm:ub1):sword;cdecl;external ocilib name 'OCILobWriteAppend'; + + function OCIBreak(hndlp:Pdvoid; errhp:POCIError):sword;cdecl;external ocilib name 'OCIBreak'; + + function OCIReset(hndlp:Pdvoid; errhp:POCIError):sword;cdecl;external ocilib name 'OCIReset'; + + function OCIServerVersion(hndlp:Pdvoid; errhp:POCIError; bufp:POraText; bufsz:ub4; hndltype:ub1):sword;cdecl;external ocilib name 'OCIServerVersion'; + + function OCIServerRelease(hndlp:Pdvoid; errhp:POCIError; bufp:POraText; bufsz:ub4; hndltype:ub1; + version:Pub4):sword;cdecl;external ocilib name 'OCIServerRelease'; + + function OCIAttrGet(trgthndlp:Pdvoid; trghndltyp:ub4; attributep:Pdvoid; sizep:Pub4; attrtype:ub4; + errhp:POCIError):sword;cdecl;external ocilib name 'OCIAttrGet'; + + function OCIAttrSet(trgthndlp:Pdvoid; trghndltyp:ub4; attributep:Pdvoid; size:ub4; attrtype:ub4; + errhp:POCIError):sword;cdecl;external ocilib name 'OCIAttrSet'; + + function OCISvcCtxToLda(svchp:POCISvcCtx; errhp:POCIError; ldap:PLda_Def):sword;cdecl;external ocilib name 'OCISvcCtxToLda'; + + function OCILdaToSvcCtx(var svchpp:POCISvcCtx; errhp:POCIError; ldap:PLda_Def):sword;cdecl;external ocilib name 'OCILdaToSvcCtx'; + + function OCIResultSetToStmt(rsetdp:POCIResult; errhp:POCIError):sword;cdecl;external ocilib name 'OCIResultSetToStmt'; + + function OCIFileClose(hndl:Pdvoid; err:POCIError; filep:POCIFileObject):sword;cdecl;external ocilib name 'OCIFileClose'; + +// function OCIUserCallbackRegister(hndlp:Pdvoid; _type:ub4; ehndlp:Pdvoid; callback:OCIUserCallback; ctxp:Pdvoid; +// fcode:ub4; when:ub4; ucbDesc:POCIUcb):sword;cdecl;external ocilib name 'OCIUserCallbackRegister'; + +// function OCIUserCallbackGet(hndlp:Pdvoid; _type:ub4; ehndlp:Pdvoid; fcode:ub4; when:ub4; +// callbackp:POCIUserCallback; ctxpp:PPdvoid; ucbDesc:POCIUcb):sword;cdecl;external ocilib name 'OCIUserCallbackGet'; + + function OCISharedLibInit(metaCtx:Pdvoid; libCtx:Pdvoid; argfmt:ub4; argc:sword; argv:PPdvoid; + envCallback:OCIEnvCallbackType):sword;cdecl;external ocilib name 'OCISharedLibInit'; + + function OCIFileExists(hndl:Pdvoid; err:POCIError; filename:POraText; path:POraText; flag:Pub1):sword;cdecl;external ocilib name 'OCIFileExists'; + + function OCIFileFlush(hndl:Pdvoid; err:POCIError; filep:POCIFileObject):sword;cdecl;external ocilib name 'OCIFileFlush'; + + function OCIFileGetLength(hndl:Pdvoid; err:POCIError; filename:POraText; path:POraText; lenp:Pubig_ora):sword;cdecl;external ocilib name 'OCIFileGetLength'; + + function OCIFileInit(hndl:Pdvoid; err:POCIError):sword;cdecl;external ocilib name 'OCIFileInit'; + + function OCIFileOpen(hndl:Pdvoid; err:POCIError; var filep:POCIFileObject; filename:POraText; path:POraText; + mode:ub4; create:ub4; _type:ub4):sword;cdecl;external ocilib name 'OCIFileOpen'; + + function OCIFileRead(hndl:Pdvoid; err:POCIError; filep:POCIFileObject; bufp:Pdvoid; bufl:ub4; + bytesread:Pub4):sword;cdecl;external ocilib name 'OCIFileRead'; + + function OCIFileSeek(hndl:Pdvoid; err:POCIError; filep:POCIFileObject; origin:uword; offset:ubig_ora; + dir:sb1):sword;cdecl;external ocilib name 'OCIFileSeek'; + + function OCIFileTerm(hndl:Pdvoid; err:POCIError):sword;cdecl;external ocilib name 'OCIFileTerm'; + + function OCIFileWrite(hndl:Pdvoid; err:POCIError; filep:POCIFileObject; bufp:Pdvoid; buflen:ub4; + byteswritten:Pub4):sword;cdecl;external ocilib name 'OCIFileWrite'; + +{$ifdef ORAXB8_DEFINED} + + function OCILobCopy2(svchp:POCISvcCtx; errhp:POCIError; dst_locp:POCILobLocator; src_locp:POCILobLocator; amount:oraub8; + dst_offset:oraub8; src_offset:oraub8):sword;cdecl;external ocilib name 'OCILobCopy2'; + + function OCILobErase2(svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; amount:Poraub8; offset:oraub8):sword;cdecl;external ocilib name 'OCILobErase2'; + + function OCILobGetLength2(svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; lenp:Poraub8):sword;cdecl;external ocilib name 'OCILobGetLength2'; + + function OCILobLoadFromFile2(svchp:POCISvcCtx; errhp:POCIError; dst_locp:POCILobLocator; src_filep:POCILobLocator; amount:oraub8; + dst_offset:oraub8; src_offset:oraub8):sword;cdecl;external ocilib name 'OCILobLoadFromFile2'; + + function OCILobRead2(svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; byte_amtp:Poraub8; char_amtp:Poraub8; + offset:oraub8; bufp:Pdvoid; bufl:oraub8; piece:ub1; ctxp:Pdvoid; + cbfp:OCICallbackLobRead2; csid:ub2; csfrm:ub1):sword;cdecl;external ocilib name 'OCILobRead2'; + + function OCILobArrayRead(svchp:POCISvcCtx; errhp:POCIError; array_iter:Pub4; lobp_arr:PPOCILobLocator; byte_amt_arr:Poraub8; + char_amt_arr:Poraub8; offset_arr:Poraub8; bufp_arr:PPdvoid; bufl_arr:Poraub8; piece:ub1; + ctxp:Pdvoid; cbfp:OCICallbackLobArrayRead; csid:ub2; csfrm:ub1):sword;cdecl;external ocilib name 'OCILobArrayRead'; + + function OCILobTrim2(svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; newlen:oraub8):sword;cdecl;external ocilib name 'OCILobTrim2'; + + function OCILobWrite2(svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; byte_amtp:Poraub8; char_amtp:Poraub8; + offset:oraub8; bufp:Pdvoid; buflen:oraub8; piece:ub1; ctxp:Pdvoid; + cbfp:OCICallbackLobWrite2; csid:ub2; csfrm:ub1):sword;cdecl;external ocilib name 'OCILobWrite2'; + + function OCILobArrayWrite(svchp:POCISvcCtx; errhp:POCIError; array_iter:Pub4; lobp_arr:PPOCILobLocator; byte_amt_arr:Poraub8; + char_amt_arr:Poraub8; offset_arr:Poraub8; bufp_arr:PPdvoid; bufl_arr:Poraub8; piece:ub1; + ctxp:Pdvoid; cbfp:OCICallbackLobArrayWrite; csid:ub2; csfrm:ub1):sword;cdecl;external ocilib name 'OCILobArrayWrite'; + + function OCILobWriteAppend2(svchp:POCISvcCtx; errhp:POCIError; lobp:POCILobLocator; byte_amtp:Poraub8; char_amtp:Poraub8; + bufp:Pdvoid; bufl:oraub8; piece:ub1; ctxp:Pdvoid; cbfp:OCICallbackLobWrite2; + csid:ub2; csfrm:ub1):sword;cdecl;external ocilib name 'OCILobWriteAppend2'; + + function OCILobGetStorageLimit(svchp:POCISvcCtx; errhp:POCIError; lobp:POCILobLocator; limitp:Poraub8):sword;cdecl;external ocilib name 'OCILobGetStorageLimit'; + +{$endif} + { + ** Initialize the security package + } + + function OCISecurityInitialize(sechandle:POCISecurity; error_handle:POCIError):sword;cdecl;external ocilib name 'OCISecurityInitialize'; + + function OCISecurityTerminate(sechandle:POCISecurity; error_handle:POCIError):sword;cdecl;external ocilib name 'OCISecurityTerminate'; + + function OCISecurityOpenWallet(osshandle:POCISecurity; error_handle:POCIError; wrllen:size_t; wallet_resource_locator:POraText; pwdlen:size_t; + password:POraText; wallet:PnzttWallet):sword;cdecl;external ocilib name 'OCISecurityOpenWallet'; + + function OCISecurityCloseWallet(osshandle:POCISecurity; error_handle:POCIError; wallet:PnzttWallet):sword;cdecl;external ocilib name 'OCISecurityCloseWallet'; + + function OCISecurityCreateWallet(osshandle:POCISecurity; error_handle:POCIError; wrllen:size_t; wallet_resource_locator:POraText; pwdlen:size_t; + password:POraText; wallet:PnzttWallet):sword;cdecl;external ocilib name 'OCISecurityCreateWallet'; + + function OCISecurityDestroyWallet(osshandle:POCISecurity; error_handle:POCIError; wrllen:size_t; wallet_resource_locator:POraText; pwdlen:size_t; + password:POraText):sword;cdecl;external ocilib name 'OCISecurityDestroyWallet'; + + function OCISecurityStorePersona(osshandle:POCISecurity; error_handle:POCIError; var persona:PnzttPersona; wallet:PnzttWallet):sword;cdecl;external ocilib name 'OCISecurityStorePersona'; + + function OCISecurityOpenPersona(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona):sword;cdecl;external ocilib name 'OCISecurityOpenPersona'; + + function OCISecurityClosePersona(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona):sword;cdecl;external ocilib name 'OCISecurityClosePersona'; + + function OCISecurityRemovePersona(osshandle:POCISecurity; error_handle:POCIError; var persona:PnzttPersona):sword;cdecl;external ocilib name 'OCISecurityRemovePersona'; + + function OCISecurityCreatePersona(osshandle:POCISecurity; error_handle:POCIError; identity_type:nzttIdentType; cipher_type:nzttCipherType; desc:PnzttPersonaDesc; + var persona:PnzttPersona):sword;cdecl;external ocilib name 'OCISecurityCreatePersona'; + + function OCISecuritySetProtection(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; crypto_engine_function:nzttcef; data_unit_format:nztttdufmt; + protection_info:PnzttProtInfo):sword;cdecl;external ocilib name 'OCISecuritySetProtection'; + + function OCISecurityGetProtection(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; crypto_engine_function:nzttcef; data_unit_format_ptr:Pnztttdufmt; + protection_info:PnzttProtInfo):sword;cdecl;external ocilib name 'OCISecurityGetProtection'; + + function OCISecurityRemoveIdentity(osshandle:POCISecurity; error_handle:POCIError; var identity_ptr:PnzttIdentity):sword;cdecl;external ocilib name 'OCISecurityRemoveIdentity'; + + function OCISecurityCreateIdentity(osshandle:POCISecurity; error_handle:POCIError; _type:nzttIdentType; desc:PnzttIdentityDesc; var identity_ptr:PnzttIdentity):sword;cdecl;external ocilib name 'OCISecurityCreateIdentity'; + + function OCISecurityAbortIdentity(osshandle:POCISecurity; error_handle:POCIError; var identity_ptr:PnzttIdentity):sword;cdecl;external ocilib name 'OCISecurityAbortIdentity'; + + function OCISecurityFreeIdentity(osshandle:POCISecurity; error_handle:POCIError; var identity_ptr:PnzttIdentity):sword;cdecl;external ocilib name 'OCISecurityFreeIdentity'; + + function OCISecurityStoreTrustedIdentity(osshandle:POCISecurity; error_handle:POCIError; var identity_ptr:PnzttIdentity; persona:PnzttPersona):sword;cdecl;external ocilib name 'OCISecurityStoreTrustedIdentity'; + + function OCISecuritySign(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; signature_state:nzttces; input_length:size_t; + input:Pub1; buffer_block:PnzttBufferBlock):sword;cdecl;external ocilib name 'OCISecuritySign'; + + function OCISecuritySignExpansion(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; inputlen:size_t; signature_length:Psize_t):sword;cdecl;external ocilib name 'OCISecuritySignExpansion'; + + function OCISecurityVerify(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; signature_state:nzttces; siglen:size_t; + signature:Pub1; extracted_message:PnzttBufferBlock; verified:Pboolean; validated:Pboolean; var signing_party_identity:PnzttIdentity):sword;cdecl;external ocilib name 'OCISecurityVerify'; + + function OCISecurityValidate(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; identity:PnzttIdentity; validated:Pboolean):sword;cdecl;external ocilib name 'OCISecurityValidate'; + + function OCISecuritySignDetached(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; signature_state:nzttces; input_length:size_t; + input:Pub1; signature:PnzttBufferBlock):sword;cdecl;external ocilib name 'OCISecuritySignDetached'; + + function OCISecuritySignDetExpansion(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; input_length:size_t; required_buffer_length:Psize_t):sword;cdecl;external ocilib name 'OCISecuritySignDetExpansion'; + + function OCISecurityVerifyDetached(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; signature_state:nzttces; data_length:size_t; + data:Pub1; siglen:size_t; signature:Pub1; verified:Pboolean; validated:Pboolean; + var signing_party_identity:PnzttIdentity):sword;cdecl;external ocilib name 'OCISecurityVerifyDetached'; + + function OCISecurity_PKEncrypt(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; number_of_recipients:size_t; recipient_list:PnzttIdentity; + encryption_state:nzttces; input_length:size_t; input:Pub1; encrypted_data:PnzttBufferBlock):sword;cdecl;external ocilib name 'OCISecurity_PKEncrypt'; + + function OCISecurityPKEncryptExpansion(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; number_recipients:size_t; input_length:size_t; + buffer_length_required:Psize_t):sword;cdecl;external ocilib name 'OCISecurityPKEncryptExpansion'; + + function OCISecurityPKDecrypt(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; encryption_state:nzttces; input_length:size_t; + input:Pub1; encrypted_data:PnzttBufferBlock):sword;cdecl;external ocilib name 'OCISecurityPKDecrypt'; + + function OCISecurityEncrypt(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; encryption_state:nzttces; input_length:size_t; + input:Pub1; encrypted_data:PnzttBufferBlock):sword;cdecl;external ocilib name 'OCISecurityEncrypt'; + + function OCISecurityEncryptExpansion(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; input_length:size_t; encrypted_data_length:Psize_t):sword;cdecl;external ocilib name 'OCISecurityEncryptExpansion'; + + function OCISecurityDecrypt(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; decryption_state:nzttces; input_length:size_t; + input:Pub1; decrypted_data:PnzttBufferBlock):sword;cdecl;external ocilib name 'OCISecurityDecrypt'; + + function OCISecurityEnvelope(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; number_of_recipients:size_t; identity:PnzttIdentity; + encryption_state:nzttces; input_length:size_t; input:Pub1; enveloped_data:PnzttBufferBlock):sword;cdecl;external ocilib name 'OCISecurityEnvelope'; + + function OCISecurityDeEnvelope(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; decryption_state:nzttces; input_length:size_t; + input:Pub1; output_message:PnzttBufferBlock; verified:Pboolean; validated:Pboolean; var sender_identity:PnzttIdentity):sword;cdecl;external ocilib name 'OCISecurityDeEnvelope'; + + function OCISecurityKeyedHash(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; hash_state:nzttces; input_length:size_t; + input:Pub1; keyed_hash:PnzttBufferBlock):sword;cdecl;external ocilib name 'OCISecurityKeyedHash'; + + function OCISecurityKeyedHashExpansion(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; input_length:size_t; required_buffer_length:Psize_t):sword;cdecl;external ocilib name 'OCISecurityKeyedHashExpansion'; + + function OCISecurityHash(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; hash_state:nzttces; input:size_t; + input_length:Pub1; hash:PnzttBufferBlock):sword;cdecl;external ocilib name 'OCISecurityHash'; + + function OCISecurityHashExpansion(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; input_length:size_t; required_buffer_length:Psize_t):sword;cdecl;external ocilib name 'OCISecurityHashExpansion'; + + function OCISecuritySeedRandom(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; seed_length:size_t; seed:Pub1):sword;cdecl;external ocilib name 'OCISecuritySeedRandom'; + + function OCISecurityRandomBytes(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; number_of_bytes_desired:size_t; random_bytes:PnzttBufferBlock):sword;cdecl;external ocilib name 'OCISecurityRandomBytes'; + + function OCISecurityRandomNumber(osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; random_number_ptr:Puword):sword;cdecl;external ocilib name 'OCISecurityRandomNumber'; + + function OCISecurityInitBlock(osshandle:POCISecurity; error_handle:POCIError; buffer_block:PnzttBufferBlock):sword;cdecl;external ocilib name 'OCISecurityInitBlock'; + + function OCISecurityReuseBlock(osshandle:POCISecurity; error_handle:POCIError; buffer_block:PnzttBufferBlock):sword;cdecl;external ocilib name 'OCISecurityReuseBlock'; + + function OCISecurityPurgeBlock(osshandle:POCISecurity; error_handle:POCIError; buffer_block:PnzttBufferBlock):sword;cdecl;external ocilib name 'OCISecurityPurgeBlock'; + + function OCISecuritySetBlock(osshandle:POCISecurity; error_handle:POCIError; flags_to_set:uword; buffer_length:size_t; used_buffer_length:size_t; + buffer:Pub1; buffer_block:PnzttBufferBlock):sword;cdecl;external ocilib name 'OCISecuritySetBlock'; + + function OCISecurityGetIdentity(osshandle:POCISecurity; error_handle:POCIError; namelen:size_t; distinguished_name:POraText; var identity:PnzttIdentity):sword;cdecl;external ocilib name 'OCISecurityGetIdentity'; + + function OCIAQEnq(svchp:POCISvcCtx; errhp:POCIError; queue_name:POraText; enqopt:POCIAQEnqOptions; msgprop:POCIAQMsgProperties; + payload_tdo:POCIType; payload:PPdvoid; payload_ind:PPdvoid; var msgid:POCIRaw; flags:ub4):sword;cdecl;external ocilib name 'OCIAQEnq'; + + function OCIAQDeq(svchp:POCISvcCtx; errhp:POCIError; queue_name:POraText; deqopt:POCIAQDeqOptions; msgprop:POCIAQMsgProperties; + payload_tdo:POCIType; payload:PPdvoid; payload_ind:PPdvoid; var msgid: POCIRaw; flags:ub4):sword;cdecl;external ocilib name 'OCIAQDeq'; + + function OCIAQEnqArray(svchp:POCISvcCtx; errhp:POCIError; queue_name:POraText; enqopt:POCIAQEnqOptions; iters:Pub4; + var msgprop:POCIAQMsgProperties; payload_tdo:POCIType; payload:PPdvoid; payload_ind:PPdvoid; var msgid:POCIRaw; + ctxp:Pdvoid; enqcbfp:OCICallbackAQEnq; flags:ub4):sword;cdecl;external ocilib name 'OCIAQEnqArray'; + + function OCIAQDeqArray(svchp:POCISvcCtx; errhp:POCIError; queue_name:POraText; deqopt:POCIAQDeqOptions; iters:Pub4; + var msgprop:POCIAQMsgProperties; payload_tdo:POCIType; payload:PPdvoid; payload_ind:PPdvoid; var msgid:POCIRaw; + ctxp:Pdvoid; deqcbfp:OCICallbackAQDeq; flags:ub4):sword;cdecl;external ocilib name 'OCIAQDeqArray'; + + function OCIAQListen(svchp:POCISvcCtx; errhp:POCIError; var agent_list:POCIAQAgent; num_agents:ub4; wait:sb4; + var agent:POCIAQAgent; flags:ub4):sword;cdecl;external ocilib name 'OCIAQListen'; + + function OCIAQListen2(svchp:POCISvcCtx; errhp:POCIError; var agent_list:POCIAQAgent; num_agents:ub4; lopts:POCIAQListenOpts; + var agent:POCIAQAgent; lmops:POCIAQLisMsgProps; flags:ub4):sword;cdecl;external ocilib name 'OCIAQListen2'; + + function OCIExtractInit(hndl:Pdvoid; err:POCIError):sword;cdecl;external ocilib name 'OCIExtractInit'; + + function OCIExtractTerm(hndl:Pdvoid; err:POCIError):sword;cdecl;external ocilib name 'OCIExtractTerm'; + + function OCIExtractReset(hndl:Pdvoid; err:POCIError):sword;cdecl;external ocilib name 'OCIExtractReset'; + + function OCIExtractSetNumKeys(hndl:Pdvoid; err:POCIError; numkeys:uword):sword;cdecl;external ocilib name 'OCIExtractSetNumKeys'; + + function OCIExtractSetKey(hndl:Pdvoid; err:POCIError; name:POraText; _type:ub1; flag:ub4; + defval:Pdvoid; intrange:Psb4; var strlist:POraText):sword;cdecl;external ocilib name 'OCIExtractSetKey'; + + function OCIExtractFromFile(hndl:Pdvoid; err:POCIError; flag:ub4; filename:POraText):sword;cdecl;external ocilib name 'OCIExtractFromFile'; + + function OCIExtractFromStr(hndl:Pdvoid; err:POCIError; flag:ub4; input:POraText):sword;cdecl;external ocilib name 'OCIExtractFromStr'; + + function OCIExtractToInt(hndl:Pdvoid; err:POCIError; keyname:POraText; valno:uword; retval:Psb4):sword;cdecl;external ocilib name 'OCIExtractToInt'; + + function OCIExtractToBool(hndl:Pdvoid; err:POCIError; keyname:POraText; valno:uword; retval:Pub1):sword;cdecl;external ocilib name 'OCIExtractToBool'; + + function OCIExtractToStr(hndl:Pdvoid; err:POCIError; keyname:POraText; valno:uword; retval:POraText; + buflen:uword):sword;cdecl;external ocilib name 'OCIExtractToStr'; + + function OCIExtractToOCINum(hndl:Pdvoid; err:POCIError; keyname:POraText; valno:uword; retval:POCINumber):sword;cdecl;external ocilib name 'OCIExtractToOCINum'; + + function OCIExtractToList(hndl:Pdvoid; err:POCIError; numkeys:Puword):sword;cdecl;external ocilib name 'OCIExtractToList'; + + function OCIExtractFromList(hndl:Pdvoid; err:POCIError; index:uword; var name:POraText; _type:Pub1; + numvals:Puword; values:PPPdvoid):sword;cdecl;external ocilib name 'OCIExtractFromList'; + + { Memory Related Service Interfaces } + function OCIMemoryAlloc(hdl:Pdvoid; err:POCIError; mem:PPdvoid; dur:OCIDuration; size:ub4; + flags:ub4):sword;cdecl;external ocilib name 'OCIMemoryAlloc'; + + function OCIMemoryResize(hdl:Pdvoid; err:POCIError; mem:PPdvoid; newsize:ub4; flags:ub4):sword;cdecl;external ocilib name 'OCIMemoryResize'; + + function OCIMemoryFree(hdl:Pdvoid; err:POCIError; mem:Pdvoid):sword;cdecl;external ocilib name 'OCIMemoryFree'; + + function OCIContextSetValue(hdl:Pdvoid; err:POCIError; duration:OCIDuration; key:Pub1; keylen:ub1; + ctx_value:Pdvoid):sword;cdecl;external ocilib name 'OCIContextSetValue'; + + function OCIContextGetValue(hdl:Pdvoid; err:POCIError; key:Pub1; keylen:ub1; ctx_value:PPdvoid):sword;cdecl;external ocilib name 'OCIContextGetValue'; + + function OCIContextClearValue(hdl:Pdvoid; err:POCIError; key:Pub1; keylen:ub1):sword;cdecl;external ocilib name 'OCIContextClearValue'; + + function OCIContextGenerateKey(hdl:Pdvoid; err:POCIError; key:Pub4):sword;cdecl;external ocilib name 'OCIContextGenerateKey'; + + function OCIMemorySetCurrentIDs(hdl:Pdvoid; err:POCIError; curr_session_id:ub4; curr_trans_id:ub4; curr_stmt_id:ub4):sword;cdecl;external ocilib name 'OCIMemorySetCurrentIDs'; + + function OCIPicklerTdsCtxInit(env:POCIEnv; err:POCIError; var tdsc:POCIPicklerTdsCtx):sword;cdecl;external ocilib name 'OCIPicklerTdsCtxInit'; + + function OCIPicklerTdsCtxFree(env:POCIEnv; err:POCIError; tdsc:POCIPicklerTdsCtx):sword;cdecl;external ocilib name 'OCIPicklerTdsCtxFree'; + + function OCIPicklerTdsInit(env:POCIEnv; err:POCIError; tdsc:POCIPicklerTdsCtx; var tdsh:POCIPicklerTds):sword;cdecl;external ocilib name 'OCIPicklerTdsInit'; + + function OCIPicklerTdsFree(env:POCIEnv; err:POCIError; tdsh:POCIPicklerTds):sword;cdecl;external ocilib name 'OCIPicklerTdsFree'; + + function OCIPicklerTdsCreateElementNumber(env:POCIEnv; err:POCIError; tdsh:POCIPicklerTds; prec:ub1; scale:sb1; + elt:POCIPicklerTdsElement):sword;cdecl;external ocilib name 'OCIPicklerTdsCreateElementNumber'; + + function OCIPicklerTdsCreateElementChar(env:POCIEnv; err:POCIError; tdsh:POCIPicklerTds; len:ub2; elt:POCIPicklerTdsElement):sword;cdecl;external ocilib name 'OCIPicklerTdsCreateElementChar'; + + function OCIPicklerTdsCreateElementVarchar(env:POCIEnv; err:POCIError; tdsh:POCIPicklerTds; len:ub2; elt:POCIPicklerTdsElement):sword;cdecl;external ocilib name 'OCIPicklerTdsCreateElementVarchar'; + + function OCIPicklerTdsCreateElementRaw(env:POCIEnv; err:POCIError; tdsh:POCIPicklerTds; len:ub2; elt:POCIPicklerTdsElement):sword;cdecl;external ocilib name 'OCIPicklerTdsCreateElementRaw'; + + function OCIPicklerTdsCreateElement(env:POCIEnv; err:POCIError; tdsh:POCIPicklerTds; dty:OCITypeCode; elt:POCIPicklerTdsElement):sword;cdecl;external ocilib name 'OCIPicklerTdsCreateElement'; + + function OCIPicklerTdsAddAttr(env:POCIEnv; err:POCIError; tdsh:POCIPicklerTds; elt:OCIPicklerTdsElement):sword;cdecl;external ocilib name 'OCIPicklerTdsAddAttr'; + + function OCIPicklerTdsGenerate(env:POCIEnv; err:POCIError; tdsh:POCIPicklerTds):sword;cdecl;external ocilib name 'OCIPicklerTdsGenerate'; + + function OCIPicklerTdsGetAttr(env:POCIEnv; err:POCIError; tdsh:POCIPicklerTds; attrno:ub1; typ:POCITypeCode; + len:Pub2):sword;cdecl;external ocilib name 'OCIPicklerTdsGetAttr'; + + function OCIPicklerFdoInit(env:POCIEnv; err:POCIError; var fdoh:POCIPicklerFdo):sword;cdecl;external ocilib name 'OCIPicklerFdoInit'; + + function OCIPicklerFdoFree(env:POCIEnv; err:POCIError; fdoh:POCIPicklerFdo):sword;cdecl;external ocilib name 'OCIPicklerFdoFree'; + + function OCIPicklerImageInit(env:POCIEnv; err:POCIError; fdoh:POCIPicklerFdo; tdsh:POCIPicklerTds; var imgh:POCIPicklerImage):sword;cdecl;external ocilib name 'OCIPicklerImageInit'; + + function OCIPicklerImageFree(env:POCIEnv; err:POCIError; imgh:POCIPicklerImage):sword;cdecl;external ocilib name 'OCIPicklerImageFree'; + + function OCIPicklerImageAddScalar(env:POCIEnv; err:POCIError; imgh:POCIPicklerImage; scalar:Pdvoid; len:ub4):sword;cdecl;external ocilib name 'OCIPicklerImageAddScalar'; + + function OCIPicklerImageAddNullScalar(env:POCIEnv; err:POCIError; imgh:POCIPicklerImage):sword;cdecl;external ocilib name 'OCIPicklerImageAddNullScalar'; + + function OCIPicklerImageGenerate(env:POCIEnv; err:POCIError; imgh:POCIPicklerImage):sword;cdecl;external ocilib name 'OCIPicklerImageGenerate'; + + function OCIPicklerImageGetScalarSize(env:POCIEnv; err:POCIError; imgh:POCIPicklerImage; attrno:ub4; size:Pub4):sword;cdecl;external ocilib name 'OCIPicklerImageGetScalarSize'; + + function OCIPicklerImageGetScalar(env:POCIEnv; err:POCIError; imgh:POCIPicklerImage; attrno:ub4; buf:Pdvoid; + len:Pub4; ind:POCIInd):sword;cdecl;external ocilib name 'OCIPicklerImageGetScalar'; + + function OCIPicklerImageCollBegin(env:POCIEnv; err:POCIError; imgh:POCIPicklerImage; colltdsh:POCIPicklerTds):sword;cdecl;external ocilib name 'OCIPicklerImageCollBegin'; + + function OCIPicklerImageCollAddScalar(env:POCIEnv; err:POCIError; imgh:POCIPicklerImage; scalar:Pdvoid; buflen:ub4; + ind:OCIInd):sword;cdecl;external ocilib name 'OCIPicklerImageCollAddScalar'; + + function OCIPicklerImageCollEnd(env:POCIEnv; err:POCIError; imgh:POCIPicklerImage):sword;cdecl;external ocilib name 'OCIPicklerImageCollEnd'; + + { should take svcctx for locator stuff } + function OCIPicklerImageCollBeginScan(env:POCIEnv; err:POCIError; imgh:POCIPicklerImage; coll_tdsh:POCIPicklerTds; attrnum:ub4; + startidx:ub4; ind:POCIInd):sword;cdecl;external ocilib name 'OCIPicklerImageCollBeginScan'; + + function OCIPicklerImageCollGetScalarSize(env:POCIEnv; err:POCIError; coll_tdsh:POCIPicklerTds; size:Pub4):sword;cdecl;external ocilib name 'OCIPicklerImageCollGetScalarSize'; + + function OCIPicklerImageCollGetScalar(env:POCIEnv; err:POCIError; imgh:POCIPicklerImage; buf:Pdvoid; buflen:Pub4; + ind:POCIInd):sword;cdecl;external ocilib name 'OCIPicklerImageCollGetScalar'; + + function OCIAnyDataGetType(svchp:POCISvcCtx; errhp:POCIError; sdata:POCIAnyData; tc:POCITypeCode; var _type:POCIType):sword;cdecl;external ocilib name 'OCIAnyDataGetType'; + + function OCIAnyDataIsNull(svchp:POCISvcCtx; errhp:POCIError; sdata:POCIAnyData; isnull:Pboolean):sword;cdecl;external ocilib name 'OCIAnyDataIsNull'; + + function OCIAnyDataConvert(svchp:POCISvcCtx; errhp:POCIError; tc:OCITypeCode; _type:POCIType; dur:OCIDuration; + ind:Pdvoid; data_val:Pdvoid; len:ub4; var sdata:POCIAnyData):sword;cdecl;external ocilib name 'OCIAnyDataConvert'; + + function OCIAnyDataBeginCreate(svchp:POCISvcCtx; errhp:POCIError; tc:OCITypeCode; _type:POCIType; dur:OCIDuration; + var sdata:POCIAnyData):sword;cdecl;external ocilib name 'OCIAnyDataBeginCreate'; + + function OCIAnyDataDestroy(svchp:POCISvcCtx; errhp:POCIError; sdata:POCIAnyData):sword;cdecl;external ocilib name 'OCIAnyDataDestroy'; + + function OCIAnyDataAttrSet(svchp:POCISvcCtx; errhp:POCIError; sdata:POCIAnyData; tc:OCITypeCode; _type:POCIType; + ind:Pdvoid; attr_val:Pdvoid; length:ub4; is_any:boolean):sword;cdecl;external ocilib name 'OCIAnyDataAttrSet'; + + function OCIAnyDataCollAddElem(svchp:POCISvcCtx; errhp:POCIError; sdata:POCIAnyData; tc:OCITypeCode; _type:POCIType; + ind:Pdvoid; attr_val:Pdvoid; length:ub4; is_any:boolean; last_elem:boolean):sword;cdecl;external ocilib name 'OCIAnyDataCollAddElem'; + + function OCIAnyDataEndCreate(svchp:POCISvcCtx; errhp:POCIError; sdata:POCIAnyData):sword;cdecl;external ocilib name 'OCIAnyDataEndCreate'; + + function OCIAnyDataAccess(svchp:POCISvcCtx; errhp:POCIError; sdata:POCIAnyData; tc:OCITypeCode; _type:POCIType; + ind:Pdvoid; attr_val:Pdvoid; length:Pub4):sword;cdecl;external ocilib name 'OCIAnyDataAccess'; + + function OCIAnyDataGetCurrAttrNum(svchp:POCISvcCtx; errhp:POCIError; sdata:POCIAnyData; attrnum:Pub4):sword;cdecl;external ocilib name 'OCIAnyDataGetCurrAttrNum'; + + function OCIAnyDataAttrGet(svchp:POCISvcCtx; errhp:POCIError; sdata:POCIAnyData; tc:OCITypeCode; _type:POCIType; + ind:Pdvoid; attr_val:Pdvoid; length:Pub4; is_any:boolean):sword;cdecl;external ocilib name 'OCIAnyDataAttrGet'; + + function OCIAnyDataCollGetElem(svchp:POCISvcCtx; errhp:POCIError; sdata:POCIAnyData; tc:OCITypeCode; _type:POCIType; + ind:Pdvoid; celem_val:Pdvoid; length:Pub4; is_any:boolean):sword;cdecl;external ocilib name 'OCIAnyDataCollGetElem'; + +{$ELSE} +var OCIInitialize : function (mode:ub4; ctxp:Pdvoid; malocfp:tmalocfp; ralocfp:tralocfp;mfreefp:tmfreefp ):sword;cdecl; + + OCITerminate : function (mode:ub4):sword;cdecl; + + OCIEnvCreate : function (var envp:POCIEnv; mode:ub4; ctxp:Pdvoid; malocfp:tmalocfp; ralocfp:tralocfp; + mfreefp:tmfreefp; xtramem_sz:size_t; usrmempp:PPdvoid):sword;cdecl; + + OCIEnvNlsCreate : function (var envp:POCIEnv; mode:ub4; ctxp:Pdvoid; malocfp:tmalocfp; ralocfp:tralocfp; + mfreefp:tmfreefp; xtramem_sz:size_t; usrmempp:PPdvoid; charset:ub2; ncharset:ub2):sword;cdecl; + + OCIFEnvCreate : function (var envp:POCIEnv; mode:ub4; ctxp:Pdvoid; malocfp:tmalocfp; ralocfp:tralocfp; + mfreefp:tmfreefp; xtramem_sz:size_t; usrmempp:PPdvoid; fupg:Pdvoid):sword;cdecl; + + OCIHandleAlloc : function (parenth:Pdvoid; var hndlpp:Pdvoid; _type:ub4; xtramem_sz:size_t; usrmempp:PPdvoid):sword;cdecl; + + OCIHandleFree : function (hndlp:Pdvoid; _type:ub4):sword;cdecl; + + OCIDescriptorAlloc : function (parenth:Pdvoid; descpp:PPdvoid; _type:ub4; xtramem_sz:size_t; usrmempp:PPdvoid):sword;cdecl; + + OCIDescriptorFree : function (descp:Pdvoid; _type:ub4):sword;cdecl; + + OCIEnvInit : function (var envp:POCIEnv; mode:ub4; xtramem_sz:size_t; usrmempp:PPdvoid):sword;cdecl; + + OCIServerAttach : function (srvhp:POCIServer; errhp:POCIError; dblink:POraText; dblink_len:sb4; mode:ub4):sword;cdecl; + + OCIServerDetach : function (srvhp:POCIServer; errhp:POCIError; mode:ub4):sword;cdecl; + + OCISessionBegin : function (svchp:POCISvcCtx; errhp:POCIError; usrhp:POCISession; credt:ub4; mode:ub4):sword;cdecl; + + OCISessionEnd : function (svchp:POCISvcCtx; errhp:POCIError; usrhp:POCISession; mode:ub4):sword;cdecl; + + OCILogon : function (envhp:POCIEnv; errhp:POCIError;var svchp:POCISvcCtx; username:POraText; uname_len:ub4; + password:POraText; passwd_len:ub4; dbname:POraText; dbname_len:ub4):sword;cdecl; + + OCILogon2 : function (envhp:POCIEnv; errhp:POCIError; var svchp:POCISvcCtx; username:POraText; uname_len:ub4; + password:POraText; passwd_len:ub4; dbname:POraText; dbname_len:ub4; mode:ub4):sword;cdecl; + + OCILogoff : function (svchp:POCISvcCtx; errhp:POCIError):sword;cdecl; + + OCIPasswordChange : function (svchp:POCISvcCtx; errhp:POCIError; user_name:POraText; usernm_len:ub4; opasswd:POraText; + opasswd_len:ub4; npasswd:POraText; npasswd_len:ub4; mode:ub4):sword;cdecl; + + OCIStmtPrepare : function (stmtp:POCIStmt; errhp:POCIError; stmt:POraText; stmt_len:ub4; language:ub4; + mode:ub4):sword;cdecl; + + OCIStmtPrepare2 : function (svchp:POCISvcCtx; var stmtp:POCIStmt; errhp:POCIError; stmt:POraText; stmt_len:ub4; + key:POraText; key_len:ub4; language:ub4; mode:ub4):sword;cdecl; + + OCIStmtRelease : function (stmtp:POCIStmt; errhp:POCIError; key:POraText; key_len:ub4; mode:ub4):sword;cdecl; + + OCIBindByPos : function (stmtp:POCIStmt; var bindp:POCIBind; errhp:POCIError; position:ub4; valuep:Pdvoid; + value_sz:sb4; dty:ub2; indp:Pdvoid; alenp:Pub2; rcodep:Pub2; + maxarr_len:ub4; curelep:Pub4; mode:ub4):sword;cdecl; + + OCIBindByName : function (stmtp:POCIStmt; var bindp: POCIBind; errhp:POCIError; placeholder:POraText; placeh_len:sb4; + valuep:Pdvoid; value_sz:sb4; dty:ub2; indp:Pdvoid; alenp:Pub2; + rcodep:Pub2; maxarr_len:ub4; curelep:Pub4; mode:ub4):sword;cdecl; + + OCIBindObject : function (bindp:POCIBind; errhp:POCIError; _type:POCIType; pgvpp:PPdvoid; pvszsp:Pub4; + indpp:PPdvoid; indszp:Pub4):sword;cdecl; + + OCIBindDynamic : function (bindp:POCIBind; errhp:POCIError; ictxp:Pdvoid; icbfp:OCICallbackInBind; octxp:Pdvoid; + ocbfp:OCICallbackOutBind):sword;cdecl; + + OCIBindArrayOfStruct : function (bindp:POCIBind; errhp:POCIError; pvskip:ub4; indskip:ub4; alskip:ub4; + rcskip:ub4):sword;cdecl; + + OCIStmtGetPieceInfo : function (stmtp:POCIStmt; errhp:POCIError; hndlpp:PPdvoid; typep:Pub4; in_outp:Pub1; + iterp:Pub4; idxp:Pub4; piecep:Pub1):sword;cdecl; + + OCIStmtSetPieceInfo : function (hndlp:Pdvoid; _type:ub4; errhp:POCIError; bufp:Pdvoid; alenp:Pub4; + piece:ub1; indp:Pdvoid; rcodep:Pub2):sword;cdecl; + + OCIStmtExecute : function (svchp:POCISvcCtx; stmtp:POCIStmt; errhp:POCIError; iters:ub4; rowoff:ub4; + snap_in:POCISnapshot; snap_out:POCISnapshot; mode:ub4):sword;cdecl; + + OCIDefineByPos : function (stmtp:POCIStmt; var defnp:POCIDefine; errhp:POCIError; position:ub4; valuep:Pdvoid; + value_sz:sb4; dty:ub2; indp:Pdvoid; rlenp:Pub2; rcodep:Pub2; + mode:ub4):sword;cdecl; + + OCIDefineObject : function (defnp:POCIDefine; errhp:POCIError; _type:POCIType; pgvpp:PPdvoid; pvszsp:Pub4; + indpp:PPdvoid; indszp:Pub4):sword;cdecl; + + OCIDefineDynamic : function (defnp:POCIDefine; errhp:POCIError; octxp:Pdvoid; ocbfp:OCICallbackDefine):sword;cdecl; + + OCIRowidToChar : function (rowidDesc:POCIRowid; outbfp:POraText; outbflp:Pub2; errhp:POCIError):sword;cdecl; + + OCIDefineArrayOfStruct : function (defnp:POCIDefine; errhp:POCIError; pvskip:ub4; indskip:ub4; rlskip:ub4; + rcskip:ub4):sword;cdecl; + + OCIStmtFetch : function (stmtp:POCIStmt; errhp:POCIError; nrows:ub4; orientation:ub2; mode:ub4):sword;cdecl; + + OCIStmtFetch2 : function (stmtp:POCIStmt; errhp:POCIError; nrows:ub4; orientation:ub2; scrollOffset:sb4; + mode:ub4):sword;cdecl; + + OCIStmtGetBindInfo : function (stmtp:POCIStmt; errhp:POCIError; size:ub4; startloc:ub4; found:Psb4; + bvnp:array of POraText; bvnl:array of ub1; invp:array of POraText; inpl:array of ub1; dupl:array of ub1; + var hndl:POCIBind):sword;cdecl; + + OCIDescribeAny : function (svchp:POCISvcCtx; errhp:POCIError; objptr:Pdvoid; objnm_len:ub4; objptr_typ:ub1; + info_level:ub1; objtyp:ub1; dschp:POCIDescribe):sword;cdecl; + + OCIParamGet : function (hndlp:Pdvoid; htype:ub4; errhp:POCIError; var parmdpp:Pdvoid; pos:ub4):sword;cdecl; + + OCIParamSet : function (hdlp:Pdvoid; htyp:ub4; errhp:POCIError; dscp:Pdvoid; dtyp:ub4; + pos:ub4):sword;cdecl; + + OCITransStart : function (svchp:POCISvcCtx; errhp:POCIError; timeout:uword; flags:ub4):sword;cdecl; + + OCITransDetach : function (svchp:POCISvcCtx; errhp:POCIError; flags:ub4):sword;cdecl; + + OCITransCommit : function (svchp:POCISvcCtx; errhp:POCIError; flags:ub4):sword;cdecl; + + OCITransRollback : function (svchp:POCISvcCtx; errhp:POCIError; flags:ub4):sword;cdecl; + + OCITransPrepare : function (svchp:POCISvcCtx; errhp:POCIError; flags:ub4):sword;cdecl; + + OCITransMultiPrepare : function (svchp:POCISvcCtx; numBranches:ub4; var txns:POCITrans; var errhp:POCIError):sword;cdecl; + + OCITransForget : function (svchp:POCISvcCtx; errhp:POCIError; flags:ub4):sword;cdecl; + + OCIErrorGet : function (hndlp:Pdvoid; recordno:ub4; sqlstate:POraText; var errcodep:sb4; bufp:POraText; + bufsiz:ub4; _type:ub4):sword;cdecl; + + OCILobAppend : function (svchp:POCISvcCtx; errhp:POCIError; dst_locp:POCILobLocator; src_locp:POCILobLocator):sword;cdecl; + + OCILobAssign : function (envhp:POCIEnv; errhp:POCIError; src_locp:POCILobLocator; var dst_locpp:POCILobLocator):sword;cdecl; + + OCILobCharSetForm : function (envhp:POCIEnv; errhp:POCIError; locp:POCILobLocator; csfrm:Pub1):sword;cdecl; + + OCILobCharSetId : function (envhp:POCIEnv; errhp:POCIError; locp:POCILobLocator; csid:Pub2):sword;cdecl; + + OCILobCopy : function (svchp:POCISvcCtx; errhp:POCIError; dst_locp:POCILobLocator; src_locp:POCILobLocator; amount:ub4; + dst_offset:ub4; src_offset:ub4):sword;cdecl; + + OCILobCreateTemporary : function (svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; csid:ub2; csfrm:ub1; + lobtype:ub1; cache:boolean; duration:OCIDuration):sword;cdecl; + + OCILobClose : function (svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator):sword;cdecl; + + OCILobDisableBuffering : function (svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator):sword;cdecl; + + OCILobEnableBuffering : function (svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator):sword;cdecl; + + OCILobErase : function (svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; amount:Pub4; offset:ub4):sword;cdecl; + + OCILobFileClose : function (svchp:POCISvcCtx; errhp:POCIError; filep:POCILobLocator):sword;cdecl; + + OCILobFileCloseAll : function (svchp:POCISvcCtx; errhp:POCIError):sword;cdecl; + + OCILobFileExists : function (svchp:POCISvcCtx; errhp:POCIError; filep:POCILobLocator; flag:Pboolean):sword;cdecl; + + OCILobFileGetName : function (envhp:POCIEnv; errhp:POCIError; filep:POCILobLocator; dir_alias:POraText; d_length:Pub2; + filename:POraText; f_length:Pub2):sword;cdecl; + + OCILobFileIsOpen : function (svchp:POCISvcCtx; errhp:POCIError; filep:POCILobLocator; flag:Pboolean):sword;cdecl; + + OCILobFileOpen : function (svchp:POCISvcCtx; errhp:POCIError; filep:POCILobLocator; mode:ub1):sword;cdecl; + + OCILobFileSetName : function (envhp:POCIEnv; errhp:POCIError; var filepp:POCILobLocator; dir_alias:POraText; d_length:ub2; + filename:POraText; f_length:ub2):sword;cdecl; + + OCILobFlushBuffer : function (svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; flag:ub4):sword;cdecl; + + OCILobFreeTemporary : function (svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator):sword;cdecl; + + OCILobGetChunkSize : function (svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; chunksizep:Pub4):sword;cdecl; + + OCILobGetLength : function (svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; lenp:Pub4):sword;cdecl; + + OCILobIsEqual : function (envhp:POCIEnv; x:POCILobLocator; y:POCILobLocator; is_equal:Pboolean):sword;cdecl; + + OCILobIsOpen : function (svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; flag:Pboolean):sword;cdecl; + + OCILobIsTemporary : function (envp:POCIEnv; errhp:POCIError; locp:POCILobLocator; is_temporary:Pboolean):sword;cdecl; + + OCILobLoadFromFile : function (svchp:POCISvcCtx; errhp:POCIError; dst_locp:POCILobLocator; src_filep:POCILobLocator; amount:ub4; + dst_offset:ub4; src_offset:ub4):sword;cdecl; + + OCILobLocatorAssign : function (svchp:POCISvcCtx; errhp:POCIError; src_locp:POCILobLocator; var dst_locpp:POCILobLocator):sword;cdecl; + + OCILobLocatorIsInit : function (envhp:POCIEnv; errhp:POCIError; locp:POCILobLocator; is_initialized:Pboolean):sword;cdecl; + + OCILobOpen : function (svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; mode:ub1):sword;cdecl; + + OCILobRead : function (svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; amtp:Pub4; offset:ub4; + bufp:Pdvoid; bufl:ub4; ctxp:Pdvoid; cbfp:OCICallbackLobRead; csid:ub2; + csfrm:ub1):sword;cdecl; + + OCILobTrim : function (svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; newlen:ub4):sword;cdecl; + + OCILobWrite : function (svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; amtp:Pub4; offset:ub4; + bufp:Pdvoid; buflen:ub4; piece:ub1; ctxp:Pdvoid; cbfp:OCICallbackLobWrite; + csid:ub2; csfrm:ub1):sword;cdecl; + + OCILobWriteAppend : function (svchp:POCISvcCtx; errhp:POCIError; lobp:POCILobLocator; amtp:Pub4; bufp:Pdvoid; + bufl:ub4; piece:ub1; ctxp:Pdvoid; cbfp:OCICallbackLobWrite; csid:ub2; + csfrm:ub1):sword;cdecl; + + OCIBreak : function (hndlp:Pdvoid; errhp:POCIError):sword;cdecl; + + OCIReset : function (hndlp:Pdvoid; errhp:POCIError):sword;cdecl; + + OCIServerVersion : function (hndlp:Pdvoid; errhp:POCIError; bufp:POraText; bufsz:ub4; hndltype:ub1):sword;cdecl; + + OCIServerRelease : function (hndlp:Pdvoid; errhp:POCIError; bufp:POraText; bufsz:ub4; hndltype:ub1; + version:Pub4):sword;cdecl; + + OCIAttrGet : function (trgthndlp:Pdvoid; trghndltyp:ub4; attributep:Pdvoid; sizep:Pub4; attrtype:ub4; + errhp:POCIError):sword;cdecl; + + OCIAttrSet : function (trgthndlp:Pdvoid; trghndltyp:ub4; attributep:Pdvoid; size:ub4; attrtype:ub4; + errhp:POCIError):sword;cdecl; + + OCISvcCtxToLda : function (svchp:POCISvcCtx; errhp:POCIError; ldap:PLda_Def):sword;cdecl; + + OCILdaToSvcCtx : function (var svchpp:POCISvcCtx; errhp:POCIError; ldap:PLda_Def):sword;cdecl; + + OCIResultSetToStmt : function (rsetdp:POCIResult; errhp:POCIError):sword;cdecl; + + OCIFileClose : function (hndl:Pdvoid; err:POCIError; filep:POCIFileObject):sword;cdecl; + +// OCIUserCallbackRegister : function (hndlp:Pdvoid; _type:ub4; ehndlp:Pdvoid; callback:OCIUserCallback; ctxp:Pdvoid; +// fcode:ub4; when:ub4; ucbDesc:POCIUcb):sword;cdecl;external ocilib name 'OCIUserCallbackRegister'; + +// OCIUserCallbackGet : function (hndlp:Pdvoid; _type:ub4; ehndlp:Pdvoid; fcode:ub4; when:ub4; +// callbackp:POCIUserCallback; ctxpp:PPdvoid; ucbDesc:POCIUcb):sword;cdecl;external ocilib name 'OCIUserCallbackGet'; + + OCISharedLibInit : function (metaCtx:Pdvoid; libCtx:Pdvoid; argfmt:ub4; argc:sword; argv:PPdvoid; + envCallback:OCIEnvCallbackType):sword;cdecl; + + OCIFileExists : function (hndl:Pdvoid; err:POCIError; filename:POraText; path:POraText; flag:Pub1):sword;cdecl; + + OCIFileFlush : function (hndl:Pdvoid; err:POCIError; filep:POCIFileObject):sword;cdecl; + + OCIFileGetLength : function (hndl:Pdvoid; err:POCIError; filename:POraText; path:POraText; lenp:Pubig_ora):sword;cdecl; + + OCIFileInit : function (hndl:Pdvoid; err:POCIError):sword;cdecl; + + OCIFileOpen : function (hndl:Pdvoid; err:POCIError; var filep:POCIFileObject; filename:POraText; path:POraText; + mode:ub4; create:ub4; _type:ub4):sword;cdecl; + + OCIFileRead : function (hndl:Pdvoid; err:POCIError; filep:POCIFileObject; bufp:Pdvoid; bufl:ub4; + bytesread:Pub4):sword;cdecl; + + OCIFileSeek : function (hndl:Pdvoid; err:POCIError; filep:POCIFileObject; origin:uword; offset:ubig_ora; + dir:sb1):sword;cdecl; + + OCIFileTerm : function (hndl:Pdvoid; err:POCIError):sword;cdecl; + + OCIFileWrite : function (hndl:Pdvoid; err:POCIError; filep:POCIFileObject; bufp:Pdvoid; buflen:ub4; + byteswritten:Pub4):sword;cdecl; + +{$ifdef ORAXB8_DEFINED} + + OCILobCopy2 : function (svchp:POCISvcCtx; errhp:POCIError; dst_locp:POCILobLocator; src_locp:POCILobLocator; amount:oraub8; + dst_offset:oraub8; src_offset:oraub8):sword;cdecl; + + OCILobErase2 : function (svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; amount:Poraub8; offset:oraub8):sword;cdecl; + + OCILobGetLength2 : function (svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; lenp:Poraub8):sword;cdecl; + + OCILobLoadFromFile2 : function (svchp:POCISvcCtx; errhp:POCIError; dst_locp:POCILobLocator; src_filep:POCILobLocator; amount:oraub8; + dst_offset:oraub8; src_offset:oraub8):sword;cdecl; + + OCILobRead2 : function (svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; byte_amtp:Poraub8; char_amtp:Poraub8; + offset:oraub8; bufp:Pdvoid; bufl:oraub8; piece:ub1; ctxp:Pdvoid; + cbfp:OCICallbackLobRead2; csid:ub2; csfrm:ub1):sword;cdecl; + + OCILobArrayRead : function (svchp:POCISvcCtx; errhp:POCIError; array_iter:Pub4; lobp_arr:PPOCILobLocator; byte_amt_arr:Poraub8; + char_amt_arr:Poraub8; offset_arr:Poraub8; bufp_arr:PPdvoid; bufl_arr:Poraub8; piece:ub1; + ctxp:Pdvoid; cbfp:OCICallbackLobArrayRead; csid:ub2; csfrm:ub1):sword;cdecl; + + OCILobTrim2 : function (svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; newlen:oraub8):sword;cdecl; + + OCILobWrite2 : function (svchp:POCISvcCtx; errhp:POCIError; locp:POCILobLocator; byte_amtp:Poraub8; char_amtp:Poraub8; + offset:oraub8; bufp:Pdvoid; buflen:oraub8; piece:ub1; ctxp:Pdvoid; + cbfp:OCICallbackLobWrite2; csid:ub2; csfrm:ub1):sword;cdecl; + + OCILobArrayWrite : function (svchp:POCISvcCtx; errhp:POCIError; array_iter:Pub4; lobp_arr:PPOCILobLocator; byte_amt_arr:Poraub8; + char_amt_arr:Poraub8; offset_arr:Poraub8; bufp_arr:PPdvoid; bufl_arr:Poraub8; piece:ub1; + ctxp:Pdvoid; cbfp:OCICallbackLobArrayWrite; csid:ub2; csfrm:ub1):sword;cdecl; + + OCILobWriteAppend2 : function (svchp:POCISvcCtx; errhp:POCIError; lobp:POCILobLocator; byte_amtp:Poraub8; char_amtp:Poraub8; + bufp:Pdvoid; bufl:oraub8; piece:ub1; ctxp:Pdvoid; cbfp:OCICallbackLobWrite2; + csid:ub2; csfrm:ub1):sword;cdecl; + + OCILobGetStorageLimit : function (svchp:POCISvcCtx; errhp:POCIError; lobp:POCILobLocator; limitp:Poraub8):sword;cdecl; + +{$endif} + { + ** Initialize the security package + } + + OCISecurityInitialize : function (sechandle:POCISecurity; error_handle:POCIError):sword;cdecl; + + OCISecurityTerminate : function (sechandle:POCISecurity; error_handle:POCIError):sword;cdecl; + + OCISecurityOpenWallet : function (osshandle:POCISecurity; error_handle:POCIError; wrllen:size_t; wallet_resource_locator:POraText; pwdlen:size_t; + password:POraText; wallet:PnzttWallet):sword;cdecl; + + OCISecurityCloseWallet : function (osshandle:POCISecurity; error_handle:POCIError; wallet:PnzttWallet):sword;cdecl; + + OCISecurityCreateWallet : function (osshandle:POCISecurity; error_handle:POCIError; wrllen:size_t; wallet_resource_locator:POraText; pwdlen:size_t; + password:POraText; wallet:PnzttWallet):sword;cdecl; + + OCISecurityDestroyWallet : function (osshandle:POCISecurity; error_handle:POCIError; wrllen:size_t; wallet_resource_locator:POraText; pwdlen:size_t; + password:POraText):sword;cdecl; + + OCISecurityStorePersona : function (osshandle:POCISecurity; error_handle:POCIError; var persona:PnzttPersona; wallet:PnzttWallet):sword;cdecl; + + OCISecurityOpenPersona : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona):sword;cdecl; + + OCISecurityClosePersona : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona):sword;cdecl; + + OCISecurityRemovePersona : function (osshandle:POCISecurity; error_handle:POCIError; var persona:PnzttPersona):sword;cdecl; + + OCISecurityCreatePersona : function (osshandle:POCISecurity; error_handle:POCIError; identity_type:nzttIdentType; cipher_type:nzttCipherType; desc:PnzttPersonaDesc; + var persona:PnzttPersona):sword;cdecl; + + OCISecuritySetProtection : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; crypto_engine_function:nzttcef; data_unit_format:nztttdufmt; + protection_info:PnzttProtInfo):sword;cdecl; + + OCISecurityGetProtection : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; crypto_engine_function:nzttcef; data_unit_format_ptr:Pnztttdufmt; + protection_info:PnzttProtInfo):sword;cdecl; + + OCISecurityRemoveIdentity : function (osshandle:POCISecurity; error_handle:POCIError; var identity_ptr:PnzttIdentity):sword;cdecl; + + OCISecurityCreateIdentity : function (osshandle:POCISecurity; error_handle:POCIError; _type:nzttIdentType; desc:PnzttIdentityDesc; var identity_ptr:PnzttIdentity):sword;cdecl; + + OCISecurityAbortIdentity : function (osshandle:POCISecurity; error_handle:POCIError; var identity_ptr:PnzttIdentity):sword;cdecl; + + OCISecurityFreeIdentity : function (osshandle:POCISecurity; error_handle:POCIError; var identity_ptr:PnzttIdentity):sword;cdecl; + + OCISecurityStoreTrustedIdentity : function (osshandle:POCISecurity; error_handle:POCIError; var identity_ptr:PnzttIdentity; persona:PnzttPersona):sword;cdecl; + + OCISecuritySign : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; signature_state:nzttces; input_length:size_t; + input:Pub1; buffer_block:PnzttBufferBlock):sword;cdecl; + + OCISecuritySignExpansion : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; inputlen:size_t; signature_length:Psize_t):sword;cdecl; + + OCISecurityVerify : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; signature_state:nzttces; siglen:size_t; + signature:Pub1; extracted_message:PnzttBufferBlock; verified:Pboolean; validated:Pboolean; var signing_party_identity:PnzttIdentity):sword;cdecl; + + OCISecurityValidate : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; identity:PnzttIdentity; validated:Pboolean):sword;cdecl; + + OCISecuritySignDetached : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; signature_state:nzttces; input_length:size_t; + input:Pub1; signature:PnzttBufferBlock):sword;cdecl; + + OCISecuritySignDetExpansion : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; input_length:size_t; required_buffer_length:Psize_t):sword;cdecl; + + OCISecurityVerifyDetached : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; signature_state:nzttces; data_length:size_t; + data:Pub1; siglen:size_t; signature:Pub1; verified:Pboolean; validated:Pboolean; + var signing_party_identity:PnzttIdentity):sword;cdecl; + + OCISecurity_PKEncrypt : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; number_of_recipients:size_t; recipient_list:PnzttIdentity; + encryption_state:nzttces; input_length:size_t; input:Pub1; encrypted_data:PnzttBufferBlock):sword;cdecl; + + OCISecurityPKEncryptExpansion : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; number_recipients:size_t; input_length:size_t; + buffer_length_required:Psize_t):sword;cdecl; + + OCISecurityPKDecrypt : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; encryption_state:nzttces; input_length:size_t; + input:Pub1; encrypted_data:PnzttBufferBlock):sword;cdecl; + + OCISecurityEncrypt : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; encryption_state:nzttces; input_length:size_t; + input:Pub1; encrypted_data:PnzttBufferBlock):sword;cdecl; + + OCISecurityEncryptExpansion : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; input_length:size_t; encrypted_data_length:Psize_t):sword;cdecl; + + OCISecurityDecrypt : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; decryption_state:nzttces; input_length:size_t; + input:Pub1; decrypted_data:PnzttBufferBlock):sword;cdecl; + + OCISecurityEnvelope : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; number_of_recipients:size_t; identity:PnzttIdentity; + encryption_state:nzttces; input_length:size_t; input:Pub1; enveloped_data:PnzttBufferBlock):sword;cdecl; + + OCISecurityDeEnvelope : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; decryption_state:nzttces; input_length:size_t; + input:Pub1; output_message:PnzttBufferBlock; verified:Pboolean; validated:Pboolean; var sender_identity:PnzttIdentity):sword;cdecl; + + OCISecurityKeyedHash : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; hash_state:nzttces; input_length:size_t; + input:Pub1; keyed_hash:PnzttBufferBlock):sword;cdecl; + + OCISecurityKeyedHashExpansion : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; input_length:size_t; required_buffer_length:Psize_t):sword;cdecl; + + OCISecurityHash : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; hash_state:nzttces; input:size_t; + input_length:Pub1; hash:PnzttBufferBlock):sword;cdecl; + + OCISecurityHashExpansion : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; input_length:size_t; required_buffer_length:Psize_t):sword;cdecl; + + OCISecuritySeedRandom : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; seed_length:size_t; seed:Pub1):sword;cdecl; + + OCISecurityRandomBytes : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; number_of_bytes_desired:size_t; random_bytes:PnzttBufferBlock):sword;cdecl; + + OCISecurityRandomNumber : function (osshandle:POCISecurity; error_handle:POCIError; persona:PnzttPersona; random_number_ptr:Puword):sword;cdecl; + + OCISecurityInitBlock : function (osshandle:POCISecurity; error_handle:POCIError; buffer_block:PnzttBufferBlock):sword;cdecl; + + OCISecurityReuseBlock : function (osshandle:POCISecurity; error_handle:POCIError; buffer_block:PnzttBufferBlock):sword;cdecl; + + OCISecurityPurgeBlock : function (osshandle:POCISecurity; error_handle:POCIError; buffer_block:PnzttBufferBlock):sword;cdecl; + + OCISecuritySetBlock : function (osshandle:POCISecurity; error_handle:POCIError; flags_to_set:uword; buffer_length:size_t; used_buffer_length:size_t; + buffer:Pub1; buffer_block:PnzttBufferBlock):sword;cdecl; + + OCISecurityGetIdentity : function (osshandle:POCISecurity; error_handle:POCIError; namelen:size_t; distinguished_name:POraText; var identity:PnzttIdentity):sword;cdecl; + + OCIAQEnq : function (svchp:POCISvcCtx; errhp:POCIError; queue_name:POraText; enqopt:POCIAQEnqOptions; msgprop:POCIAQMsgProperties; + payload_tdo:POCIType; payload:PPdvoid; payload_ind:PPdvoid; var msgid:POCIRaw; flags:ub4):sword;cdecl; + + OCIAQDeq : function (svchp:POCISvcCtx; errhp:POCIError; queue_name:POraText; deqopt:POCIAQDeqOptions; msgprop:POCIAQMsgProperties; + payload_tdo:POCIType; payload:PPdvoid; payload_ind:PPdvoid; var msgid: POCIRaw; flags:ub4):sword;cdecl; + + OCIAQEnqArray : function (svchp:POCISvcCtx; errhp:POCIError; queue_name:POraText; enqopt:POCIAQEnqOptions; iters:Pub4; + var msgprop:POCIAQMsgProperties; payload_tdo:POCIType; payload:PPdvoid; payload_ind:PPdvoid; var msgid:POCIRaw; + ctxp:Pdvoid; enqcbfp:OCICallbackAQEnq; flags:ub4):sword;cdecl; + + OCIAQDeqArray : function (svchp:POCISvcCtx; errhp:POCIError; queue_name:POraText; deqopt:POCIAQDeqOptions; iters:Pub4; + var msgprop:POCIAQMsgProperties; payload_tdo:POCIType; payload:PPdvoid; payload_ind:PPdvoid; var msgid:POCIRaw; + ctxp:Pdvoid; deqcbfp:OCICallbackAQDeq; flags:ub4):sword;cdecl; + + OCIAQListen : function (svchp:POCISvcCtx; errhp:POCIError; var agent_list:POCIAQAgent; num_agents:ub4; wait:sb4; + var agent:POCIAQAgent; flags:ub4):sword;cdecl; + + OCIAQListen2 : function (svchp:POCISvcCtx; errhp:POCIError; var agent_list:POCIAQAgent; num_agents:ub4; lopts:POCIAQListenOpts; + var agent:POCIAQAgent; lmops:POCIAQLisMsgProps; flags:ub4):sword;cdecl; + + OCIExtractInit : function (hndl:Pdvoid; err:POCIError):sword;cdecl; + + OCIExtractTerm : function (hndl:Pdvoid; err:POCIError):sword;cdecl; + + OCIExtractReset : function (hndl:Pdvoid; err:POCIError):sword;cdecl; + + OCIExtractSetNumKeys : function (hndl:Pdvoid; err:POCIError; numkeys:uword):sword;cdecl; + + OCIExtractSetKey : function (hndl:Pdvoid; err:POCIError; name:POraText; _type:ub1; flag:ub4; + defval:Pdvoid; intrange:Psb4; var strlist:POraText):sword;cdecl; + + OCIExtractFromFile : function (hndl:Pdvoid; err:POCIError; flag:ub4; filename:POraText):sword;cdecl; + + OCIExtractFromStr : function (hndl:Pdvoid; err:POCIError; flag:ub4; input:POraText):sword;cdecl; + + OCIExtractToInt : function (hndl:Pdvoid; err:POCIError; keyname:POraText; valno:uword; retval:Psb4):sword;cdecl; + + OCIExtractToBool : function (hndl:Pdvoid; err:POCIError; keyname:POraText; valno:uword; retval:Pub1):sword;cdecl; + + OCIExtractToStr : function (hndl:Pdvoid; err:POCIError; keyname:POraText; valno:uword; retval:POraText; + buflen:uword):sword;cdecl; + + OCIExtractToOCINum : function (hndl:Pdvoid; err:POCIError; keyname:POraText; valno:uword; retval:POCINumber):sword;cdecl; + + OCIExtractToList : function (hndl:Pdvoid; err:POCIError; numkeys:Puword):sword;cdecl; + + OCIExtractFromList : function (hndl:Pdvoid; err:POCIError; index:uword; var name:POraText; _type:Pub1; + numvals:Puword; values:PPPdvoid):sword;cdecl; + + { Memory Related Service Interfaces } + OCIMemoryAlloc : function (hdl:Pdvoid; err:POCIError; mem:PPdvoid; dur:OCIDuration; size:ub4; + flags:ub4):sword;cdecl; + + OCIMemoryResize : function (hdl:Pdvoid; err:POCIError; mem:PPdvoid; newsize:ub4; flags:ub4):sword;cdecl; + + OCIMemoryFree : function (hdl:Pdvoid; err:POCIError; mem:Pdvoid):sword;cdecl; + + OCIContextSetValue : function (hdl:Pdvoid; err:POCIError; duration:OCIDuration; key:Pub1; keylen:ub1; + ctx_value:Pdvoid):sword;cdecl; + + OCIContextGetValue : function (hdl:Pdvoid; err:POCIError; key:Pub1; keylen:ub1; ctx_value:PPdvoid):sword;cdecl; + + OCIContextClearValue : function (hdl:Pdvoid; err:POCIError; key:Pub1; keylen:ub1):sword;cdecl; + + OCIContextGenerateKey : function (hdl:Pdvoid; err:POCIError; key:Pub4):sword;cdecl; + + OCIMemorySetCurrentIDs : function (hdl:Pdvoid; err:POCIError; curr_session_id:ub4; curr_trans_id:ub4; curr_stmt_id:ub4):sword;cdecl; + + OCIPicklerTdsCtxInit : function (env:POCIEnv; err:POCIError; var tdsc:POCIPicklerTdsCtx):sword;cdecl; + + OCIPicklerTdsCtxFree : function (env:POCIEnv; err:POCIError; tdsc:POCIPicklerTdsCtx):sword;cdecl; + + OCIPicklerTdsInit : function (env:POCIEnv; err:POCIError; tdsc:POCIPicklerTdsCtx; var tdsh:POCIPicklerTds):sword;cdecl; + + OCIPicklerTdsFree : function (env:POCIEnv; err:POCIError; tdsh:POCIPicklerTds):sword;cdecl; + + OCIPicklerTdsCreateElementNumber : function (env:POCIEnv; err:POCIError; tdsh:POCIPicklerTds; prec:ub1; scale:sb1; + elt:POCIPicklerTdsElement):sword;cdecl; + + OCIPicklerTdsCreateElementChar : function (env:POCIEnv; err:POCIError; tdsh:POCIPicklerTds; len:ub2; elt:POCIPicklerTdsElement):sword;cdecl; + + OCIPicklerTdsCreateElementVarchar : function (env:POCIEnv; err:POCIError; tdsh:POCIPicklerTds; len:ub2; elt:POCIPicklerTdsElement):sword;cdecl; + + OCIPicklerTdsCreateElementRaw : function (env:POCIEnv; err:POCIError; tdsh:POCIPicklerTds; len:ub2; elt:POCIPicklerTdsElement):sword;cdecl; + + OCIPicklerTdsCreateElement : function (env:POCIEnv; err:POCIError; tdsh:POCIPicklerTds; dty:OCITypeCode; elt:POCIPicklerTdsElement):sword;cdecl; + + OCIPicklerTdsAddAttr : function (env:POCIEnv; err:POCIError; tdsh:POCIPicklerTds; elt:OCIPicklerTdsElement):sword;cdecl; + + OCIPicklerTdsGenerate : function (env:POCIEnv; err:POCIError; tdsh:POCIPicklerTds):sword;cdecl; + + OCIPicklerTdsGetAttr : function (env:POCIEnv; err:POCIError; tdsh:POCIPicklerTds; attrno:ub1; typ:POCITypeCode; + len:Pub2):sword;cdecl; + + OCIPicklerFdoInit : function (env:POCIEnv; err:POCIError; var fdoh:POCIPicklerFdo):sword;cdecl; + + OCIPicklerFdoFree : function (env:POCIEnv; err:POCIError; fdoh:POCIPicklerFdo):sword;cdecl; + + OCIPicklerImageInit : function (env:POCIEnv; err:POCIError; fdoh:POCIPicklerFdo; tdsh:POCIPicklerTds; var imgh:POCIPicklerImage):sword;cdecl; + + OCIPicklerImageFree : function (env:POCIEnv; err:POCIError; imgh:POCIPicklerImage):sword;cdecl; + + OCIPicklerImageAddScalar : function (env:POCIEnv; err:POCIError; imgh:POCIPicklerImage; scalar:Pdvoid; len:ub4):sword;cdecl; + + OCIPicklerImageAddNullScalar : function (env:POCIEnv; err:POCIError; imgh:POCIPicklerImage):sword;cdecl; + + OCIPicklerImageGenerate : function (env:POCIEnv; err:POCIError; imgh:POCIPicklerImage):sword;cdecl; + + OCIPicklerImageGetScalarSize : function (env:POCIEnv; err:POCIError; imgh:POCIPicklerImage; attrno:ub4; size:Pub4):sword;cdecl; + + OCIPicklerImageGetScalar : function (env:POCIEnv; err:POCIError; imgh:POCIPicklerImage; attrno:ub4; buf:Pdvoid; + len:Pub4; ind:POCIInd):sword;cdecl; + + OCIPicklerImageCollBegin : function (env:POCIEnv; err:POCIError; imgh:POCIPicklerImage; colltdsh:POCIPicklerTds):sword;cdecl; + + OCIPicklerImageCollAddScalar : function (env:POCIEnv; err:POCIError; imgh:POCIPicklerImage; scalar:Pdvoid; buflen:ub4; + ind:OCIInd):sword;cdecl; + + OCIPicklerImageCollEnd : function (env:POCIEnv; err:POCIError; imgh:POCIPicklerImage):sword;cdecl; + + { should take svcctx for locator stuff } + OCIPicklerImageCollBeginScan : function (env:POCIEnv; err:POCIError; imgh:POCIPicklerImage; coll_tdsh:POCIPicklerTds; attrnum:ub4; + startidx:ub4; ind:POCIInd):sword;cdecl; + + OCIPicklerImageCollGetScalarSize : function (env:POCIEnv; err:POCIError; coll_tdsh:POCIPicklerTds; size:Pub4):sword;cdecl; + + OCIPicklerImageCollGetScalar : function (env:POCIEnv; err:POCIError; imgh:POCIPicklerImage; buf:Pdvoid; buflen:Pub4; + ind:POCIInd):sword;cdecl; + + OCIAnyDataGetType : function (svchp:POCISvcCtx; errhp:POCIError; sdata:POCIAnyData; tc:POCITypeCode; var _type:POCIType):sword;cdecl; + + OCIAnyDataIsNull : function (svchp:POCISvcCtx; errhp:POCIError; sdata:POCIAnyData; isnull:Pboolean):sword;cdecl; + + OCIAnyDataConvert : function (svchp:POCISvcCtx; errhp:POCIError; tc:OCITypeCode; _type:POCIType; dur:OCIDuration; + ind:Pdvoid; data_val:Pdvoid; len:ub4; var sdata:POCIAnyData):sword;cdecl; + + OCIAnyDataBeginCreate : function (svchp:POCISvcCtx; errhp:POCIError; tc:OCITypeCode; _type:POCIType; dur:OCIDuration; + var sdata:POCIAnyData):sword;cdecl; + + OCIAnyDataDestroy : function (svchp:POCISvcCtx; errhp:POCIError; sdata:POCIAnyData):sword;cdecl; + + OCIAnyDataAttrSet : function (svchp:POCISvcCtx; errhp:POCIError; sdata:POCIAnyData; tc:OCITypeCode; _type:POCIType; + ind:Pdvoid; attr_val:Pdvoid; length:ub4; is_any:boolean):sword;cdecl; + + OCIAnyDataCollAddElem : function (svchp:POCISvcCtx; errhp:POCIError; sdata:POCIAnyData; tc:OCITypeCode; _type:POCIType; + ind:Pdvoid; attr_val:Pdvoid; length:ub4; is_any:boolean; last_elem:boolean):sword;cdecl; + + OCIAnyDataEndCreate : function (svchp:POCISvcCtx; errhp:POCIError; sdata:POCIAnyData):sword;cdecl; + + OCIAnyDataAccess : function (svchp:POCISvcCtx; errhp:POCIError; sdata:POCIAnyData; tc:OCITypeCode; _type:POCIType; + ind:Pdvoid; attr_val:Pdvoid; length:Pub4):sword;cdecl; + + OCIAnyDataGetCurrAttrNum : function (svchp:POCISvcCtx; errhp:POCIError; sdata:POCIAnyData; attrnum:Pub4):sword;cdecl; + + OCIAnyDataAttrGet : function (svchp:POCISvcCtx; errhp:POCIError; sdata:POCIAnyData; tc:OCITypeCode; _type:POCIType; + ind:Pdvoid; attr_val:Pdvoid; length:Pub4; is_any:boolean):sword;cdecl; + + OCIAnyDataCollGetElem : function (svchp:POCISvcCtx; errhp:POCIError; sdata:POCIAnyData; tc:OCITypeCode; _type:POCIType; + ind:Pdvoid; celem_val:Pdvoid; length:Pub4; is_any:boolean):sword;cdecl; + +{$ENDIF} + + + {------------------------ OCIAnyDataSet interfaces ------------------------- } + { + NAME + OCIAnyDataSetBeginCreate - OCIAnyDataSet Begin Creation + PARAMETERS + svchp (IN/OUT) - The OCI service context. + errhp (IN/OUT) - The OCI error handle. If there is an error, it is + recorded in errhp and this function returns OCI_ERROR. + Diagnostic information can be obtained by calling + OCIErrorGet(). + typecode - typecode corresponding to the OCIAnyDataSet. + type (IN) - type corresponding to the OCIAnyDataSet. If the typecode + corresponds to a built-in type (OCI_TYPECODE_NUMBER etc.) + , this parameter can be NULL. It should be non NULL for + user defined types (OCI_TYPECODE_OBJECT, + OCI_TYPECODE_REF, collection types etc.) + dur (IN) - duration for which OCIAnyDataSet is allocated. + data_set (OUT) - Initialized OCIAnyDataSet. + RETURNS - error code + NOTES + This call allocates an OCIAnyDataSet for the duration of dur and + initializes it with the type information. The OCIAnyDataSet can hold + multiple instances of the given type. For performance reasons, the + OCIAnyDataSet will end up pointing to the passed in OCIType parameter. + It is the responsibility of the caller to ensure that the OCIType is + longer lived (has allocation duration >= the duration of the OCIAnyData + if the OCIType is a transient one, allocation/pin duration >= duration of + the OCIAnyData if the OCIType is a persistent one). + + } +{$IFNDEF LinkDynamically} + function OCIAnyDataSetBeginCreate(svchp:POCISvcCtx; errhp:POCIError; typecode:OCITypeCode; _type:POCIType; dur:OCIDuration; + var data_set:POCIAnyDataSet):sword;cdecl;external ocilib name 'OCIAnyDataSetBeginCreate'; +{$ELSE} + OCIAnyDataSetBeginCreate : function (svchp:POCISvcCtx; errhp:POCIError; typecode:OCITypeCode; _type:POCIType; dur:OCIDuration; + var data_set:POCIAnyDataSet):sword;cdecl; +{$ENDIF} + + { + NAME + OCIAnyDataSetDestroy - OCIAnyDataSet Destroy + DESCRIPTION + This call frees the OCIAnyDataSet allocated using + OCIAnyDataSetBeginCreate(). + RETURNS + error code. + PARAMETERS + svchp (IN/OUT) - The OCI service context. + errhp (IN/OUT) - The OCI Error handle. + data_set (IN/OUT) - OCIAnyDataSet to be freed. + } +{$IFNDEF LinkDynamically} + function OCIAnyDataSetDestroy(svchp:POCISvcCtx; errhp:POCIError; data_set:POCIAnyDataSet):sword;cdecl;external ocilib name 'OCIAnyDataSetDestroy'; +{$ELSE} + OCIAnyDataSetDestroy : function (svchp:POCISvcCtx; errhp:POCIError; data_set:POCIAnyDataSet):sword;cdecl; +{$ENDIF} + + { + NAME + OCIAnyDataSetAddInstance - OCIAnyDataSet Add an instance + DESCRIPTION + This call adds a new skeleton instance to the OCIAnyDataSet and all the + attributes of the instance are set to NULL. It returns this skeleton + instance through the OCIAnyData parameter which can be constructed + subsequently by invoking the OCIAnyData API. + RETURNS + error code. + PARAMETERS + svchp (IN/OUT) - The OCI service context. + errhp (IN/OUT) - The OCI Error handle. + data_set (IN/OUT) - OCIAnyDataSet to which a new instance is added. + data (IN/OUT) - OCIAnyData corresponding to the newly added + instance. If (*data) is NULL, a new OCIAnyData will + be allocated for same duration as the OCIAnyDataSet. + If (*data) is not NULL, it will get reused. This + OCIAnyData can be subseqently constructed using the + OCIAnyDataConvert() call or it can be constructed + piece-wise using the OCIAnyDataAttrSet and + OCIAnyDataCollAddElem calls. + NOTES + No Destruction of the old value is done here. It is the responsibility of + the caller to destroy the old value pointed to by (*data) and set (*data) + to a null pointer before beginning to make a sequence of this call. No + deep copying (of OCIType information nor the data part.) is done in the + returned OCIAnyData. This OCIAnyData cannot be used beyond the allocation + duration of the OCIAnyDataSet (it is like a reference into the + OCIAnyDataSet). The returned OCIAnyData can be reused on subsequent calls + to this function, to sequentially add new data instances to the + OCIAnyDataSet. + } +{$IFNDEF LinkDynamically} + function OCIAnyDataSetAddInstance(svchp:POCISvcCtx; errhp:POCIError; data_set:POCIAnyDataSet; var data:POCIAnyData):sword;cdecl;external ocilib name 'OCIAnyDataSetAddInstance'; +{$ELSE} + OCIAnyDataSetAddInstance : function (svchp:POCISvcCtx; errhp:POCIError; data_set:POCIAnyDataSet; var data:POCIAnyData):sword;cdecl; +{$ENDIF} + + { + NAME + OCIAnyDataSetEndCreate - OCIAnyDataSet End Creation process. + DESCRIPTION + This call marks the end of OCIAnyDataSet creation. It should be called + after constructing all of its instance(s). + RETURNS + error code. + PARAMETERS + svchp (IN/OUT) - The OCI service context. + errhp (IN/OUT) - The OCI error handle. If there is an error, it is + recorded in errhp and this function returns + OCI_ERROR. Diagnostic information can be obtained + by calling OCIErrorGet(). + data_set (IN/OUT) - OCIAnyDataSet that has been fully constructed. + } +{$IFNDEF LinkDynamically} + function OCIAnyDataSetEndCreate(svchp:POCISvcCtx; errhp:POCIError; data_set:POCIAnyDataSet):sword;cdecl;external ocilib name 'OCIAnyDataSetEndCreate'; +{$ELSE} + OCIAnyDataSetEndCreate : function (svchp:POCISvcCtx; errhp:POCIError; data_set:POCIAnyDataSet):sword;cdecl; +{$ENDIF} + + { + NAME + OCIAnyDataSetGetType - OCIAnyDataSet Get Type of an OCIAnyDataSet + DESCRIPTION + Gets the Type corresponding to an OCIAnyDataSet. It returns the actual + pointer to the type maintained inside an OCIAnyDataSet. No copying is + done for performance reasons. The client is responsible for not using + this type once the OCIAnyDataSet is freed (or its duration ends). + RETURNS + error code. + PARAMETERS + svchp (IN/OUT) - The OCI service context. + errhp (IN/OUT) - The OCI Error handle. + data_set (IN) - Initialized OCIAnyDataSet. + tc (OUT) - The typecode of the type. + type (OUT) - The type corresponding to the OCIAnyDataSet. This + could be null if the OCIAnyData corresponds to a + built-in type. + } +{$IFNDEF LinkDynamically} + function OCIAnyDataSetGetType(svchp:POCISvcCtx; errhp:POCIError; data_set:POCIAnyDataSet; tc:POCITypeCode; var _type:POCIType):sword;cdecl;external ocilib name 'OCIAnyDataSetGetType'; +{$ELSE} + OCIAnyDataSetGetType : function (svchp:POCISvcCtx; errhp:POCIError; data_set:POCIAnyDataSet; tc:POCITypeCode; var _type:POCIType):sword;cdecl; +{$ENDIF} + + { + NAME + OCIAnyDataSetGetCount - OCIAnyDataSet Get Count of instances. + DESCRIPTION + This call gets the number of instances in the OCIAnyDataSet. + RETURNS + error code. + PARAMETERS + svchp (IN/OUT) - OCI Service Context + errhp (IN/OUT) - OCI Error handle + data_set (IN) - Well formed OCIAnyDataSet. + count (OUT) - number of instances in OCIAnyDataSet + } +{$IFNDEF LinkDynamically} + function OCIAnyDataSetGetCount(svchp:POCISvcCtx; errhp:POCIError; data_set:POCIAnyDataSet; count:Pub4):sword;cdecl;external ocilib name 'OCIAnyDataSetGetCount'; +{$ELSE} + OCIAnyDataSetGetCount : function (svchp:POCISvcCtx; errhp:POCIError; data_set:POCIAnyDataSet; count:Pub4):sword;cdecl; +{$ENDIF} + + { + NAME + OCIAnyDataSetGetInstance - OCIAnyDataSet Get next instance. + DESCRIPTION + Only sequential access to the instances in an OCIAnyDataSet is allowed. + This call returns the OCIAnyData corresponding to an instance at the + current position and updates the current position. Subsequently, the + OCIAnyData access routines may be used to access the instance. + RETURNS + error code. Returns OCI_NO_DATA if the current position is at the end of + the set, OCI_SUCCESS otherwise. + PARAMETERS + svchp (IN/OUT) - OCI Service Context + errhp (IN/OUT) - OCI Error handle + data_set (IN) - Well formed OCIAnyDataSet + data (IN/OUT) - OCIAnyData corresponding to the instance. If (*data) + is NULL, a new OCIAnyData will be allocated for same + duration as the OCIAnyDataSet. If (*data) is not NULL + , it will get reused. This OCIAnyData can be + subsequently accessed using the OCIAnyDataAccess() + call or piece-wise by using the OCIAnyDataAttrGet() + call. + NOTE + No Destruction of the old value is done here. It is the responsibility of + the caller to destroy the old value pointed to by (*data) and set (*data) + to a null pointer before beginning to make a sequence of this call. No deep + copying (of OCIType information nor the data part.) is done in the returned + OCIAnyData. This OCIAnyData cannot be used beyond the allocation duration + of the OCIAnyDataSet (it is like a reference into the OCIAnyDataSet). The + returned OCIAnyData can be reused on subsequent calls to this function to + sequentially access the OCIAnyDataSet. + } +{$IFNDEF LinkDynamically} + function OCIAnyDataSetGetInstance(svchp:POCISvcCtx; errhp:POCIError; data_set:POCIAnyDataSet; var data:POCIAnyData):sword;cdecl;external ocilib name 'OCIAnyDataSetGetInstance'; +{$ELSE} + OCIAnyDataSetGetInstance : function (svchp:POCISvcCtx; errhp:POCIError; data_set:POCIAnyDataSet; var data:POCIAnyData):sword;cdecl; +{$ENDIF} + + {--------------------- End of OCIAnyDataSet interfaces --------------------- } +{$IFNDEF LinkDynamically} + function OCIFormatInit(hndl:Pdvoid; err:POCIError):sword;cdecl;external ocilib name 'OCIFormatInit'; + +// function OCIFormatString(hndl:Pdvoid; err:POCIError; buffer:POraText; bufferLength:sbig_ora; returnLength:Psbig_ora; +// formatString:POraText; args:array of const):sword;cdecl;external ocilib name 'OCIFormatString'; + + function OCIFormatString(hndl:Pdvoid; err:POCIError; buffer:POraText; bufferLength:sbig_ora; returnLength:Psbig_ora; + formatString:POraText):sword;cdecl;external ocilib name 'OCIFormatString'; + + function OCIFormatTerm(hndl:Pdvoid; err:POCIError):sword;cdecl;external ocilib name 'OCIFormatTerm'; + + function OCIFormatTUb1:sword;cdecl;external ocilib name 'OCIFormatTUb1'; + + function OCIFormatTUb2:sword;cdecl;external ocilib name 'OCIFormatTUb2'; + + function OCIFormatTUb4:sword;cdecl;external ocilib name 'OCIFormatTUb4'; + + function OCIFormatTUword:sword;cdecl;external ocilib name 'OCIFormatTUword'; + + function OCIFormatTUbig_ora:sword;cdecl;external ocilib name 'OCIFormatTUbig_ora'; + + function OCIFormatTSb1:sword;cdecl;external ocilib name 'OCIFormatTSb1'; + + function OCIFormatTSb2:sword;cdecl;external ocilib name 'OCIFormatTSb2'; + + function OCIFormatTSb4:sword;cdecl;external ocilib name 'OCIFormatTSb4'; + + function OCIFormatTSword:sword;cdecl;external ocilib name 'OCIFormatTSword'; + + function OCIFormatTSbig_ora:sword;cdecl;external ocilib name 'OCIFormatTSbig_ora'; + + function OCIFormatTEb1:sword;cdecl;external ocilib name 'OCIFormatTEb1'; + + function OCIFormatTEb2:sword;cdecl;external ocilib name 'OCIFormatTEb2'; + + function OCIFormatTEb4:sword;cdecl;external ocilib name 'OCIFormatTEb4'; + + function OCIFormatTEword:sword;cdecl;external ocilib name 'OCIFormatTEword'; + + function OCIFormatTChar:sword;cdecl;external ocilib name 'OCIFormatTChar'; + + function OCIFormatTText:sword;cdecl;external ocilib name 'OCIFormatTText'; + + function OCIFormatTDouble:sword;cdecl;external ocilib name 'OCIFormatTDouble'; + + function OCIFormatTDvoid:sword;cdecl;external ocilib name 'OCIFormatTDvoid'; + + function OCIFormatTEnd:sword;cdecl;external ocilib name 'OCIFormatTEnd'; + +{$ELSE} + OCIFormatInit : function (hndl:Pdvoid; err:POCIError):sword;cdecl; +// function OCIFormatString(hndl:Pdvoid; err:POCIError; buffer:POraText; bufferLength:sbig_ora; returnLength:Psbig_ora; +// formatString:POraText; args:array of const):sword;cdecl;external ocilib name 'OCIFormatString'; + + OCIFormatString : function (hndl:Pdvoid; err:POCIError; buffer:POraText; bufferLength:sbig_ora; returnLength:Psbig_ora; + formatString:POraText):sword;cdecl; + + OCIFormatTerm : function (hndl:Pdvoid; err:POCIError):sword;cdecl; + + OCIFormatTUb1: function : sword;cdecl; + + OCIFormatTUb2: function : sword;cdecl; + + OCIFormatTUb4: function :sword;cdecl; + + OCIFormatTUword: function :sword;cdecl; + + OCIFormatTUbig_ora: function :sword;cdecl; + + OCIFormatTSb1: function :sword;cdecl; + + OCIFormatTSb2: function :sword;cdecl; + + OCIFormatTSb4: function :sword;cdecl; + + OCIFormatTSword: function :sword;cdecl; + + OCIFormatTSbig_ora: function :sword;cdecl; + + OCIFormatTEb1: function :sword;cdecl; + + OCIFormatTEb2: function :sword;cdecl; + + OCIFormatTEb4: function :sword;cdecl; + + OCIFormatTEword: function :sword;cdecl; + + OCIFormatTChar: function :sword;cdecl; + + OCIFormatTText: function :sword;cdecl; + + OCIFormatTDouble: function :sword;cdecl; + + OCIFormatTDvoid: function :sword;cdecl; + + OCIFormatTEnd: function :sword;cdecl; + +{$ENDIF} + + + {-------------------------- Extensions to XA interface --------------------- } + { ------------------------- xaosvch ---------------------------------------- } + { + NAME + xaosvch - XA Oracle get SerViCe Handle + DESCRIPTION + Given a database name return the service handle that is used by the + XA library + NOTE + This macro has been provided for backward compatibilty with 8.0.2 + } +{$IFNDEF LinkDynamically} + function xaosvch(dbname:POraText):POCISvcCtx;cdecl;external ocilib name 'xaosvch'; +{$ELSE} + xaosvch : function (dbname:POraText):POCISvcCtx;cdecl; +{$ENDIF} + + { ------------------------- xaoSvcCtx -------------------------------------- } + { + NAME + xaoSvcCtx - XA Oracle get SerViCe ConTeXt + DESCRIPTION + Given a database name return the service handle that is used by the + XA library + NOTE + This routine has been provided for APs to get access to the service + handle that XA library uses. Without this routine APs must use SQLLIB + routine sqlld2 to get access to the Logon data area registered by the + XA library + } +{$IFNDEF LinkDynamically} + function xaoSvcCtx(dbname:POraText):POCISvcCtx;cdecl;external ocilib name 'xaoSvcCtx'; +{$ELSE} + xaoSvcCtx : function (dbname:POraText):POCISvcCtx;cdecl; +{$ENDIF} + + { ------------------------- xaoEnv ----------------------------------------- } + { + NAME + xaoEnv - XA Oracle get ENvironment Handle + DESCRIPTION + Given a database name return the environment handle that is used by the + XA library + NOTE + This routine has been provided for APs to get access to the environment + handle that XA library uses. Without this routine APs must use SQLLIB + routine sqlld2 to get access to the Logon data area registered by the + XA library + } +{$IFNDEF LinkDynamically} + function xaoEnv(dbname:POraText):POCIEnv;cdecl;external ocilib name 'xaoEnv'; +{$ELSE} + xaoEnv : function (dbname:POraText):POCIEnv;cdecl; +{$ENDIF} + + { ------------------------- xaosterr --------------------------------------- } + { + NAME + xaosterr - XA Oracle get xa STart ERRor code + DESCRIPTION + Given an oracle error code return the XA error code + } +{$IFNDEF LinkDynamically} + function xaosterr(svch:POCISvcCtx; error:sb4):longint;cdecl;external ocilib name 'xaosterr'; +{$ELSE} + xaosterr : function (svch:POCISvcCtx; error:sb4):longint;cdecl; +{$ENDIF} + + {-------------------------- End Extensions --------------------------------- } + {---------------------- Extensions to NLS cartridge service ---------------- } + { ----------------------- OCINlsGetInfo ------------------------------------ } + { + NAME + OCINlsGetInfo - Get NLS info from OCI environment handle + REMARKS + This function generates language information specified by item from OCI + environment handle envhp into an array pointed to by buf within size + limitation as buflen. + RETURNS + OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR on wrong item. + envhp(IN/OUT) + OCI environment handle. + errhp(IN/OUT) + The OCI error handle. If there is an error, it is record in errhp and + this function returns a NULL pointer. Diagnostic information can be + obtained by calling OCIErrorGet(). + buf(OUT) + Pointer to the destination buffer. + buflen(IN) + The size of destination buffer. The maximum length for each information + is 32 bytes. + item(IN) + It specifies to get which item in OCI environment handle and can be one + of following values: + OCI_NLS_DAYNAME1 : Native name for Monday. + OCI_NLS_DAYNAME2 : Native name for Tuesday. + OCI_NLS_DAYNAME3 : Native name for Wednesday. + OCI_NLS_DAYNAME4 : Native name for Thursday. + OCI_NLS_DAYNAME5 : Native name for Friday. + OCI_NLS_DAYNAME6 : Native name for for Saturday. + OCI_NLS_DAYNAME7 : Native name for for Sunday. + OCI_NLS_ABDAYNAME1 : Native abbreviated name for Monday. + OCI_NLS_ABDAYNAME2 : Native abbreviated name for Tuesday. + OCI_NLS_ABDAYNAME3 : Native abbreviated name for Wednesday. + OCI_NLS_ABDAYNAME4 : Native abbreviated name for Thursday. + OCI_NLS_ABDAYNAME5 : Native abbreviated name for Friday. + OCI_NLS_ABDAYNAME6 : Native abbreviated name for for Saturday. + OCI_NLS_ABDAYNAME7 : Native abbreviated name for for Sunday. + OCI_NLS_MONTHNAME1 : Native name for January. + OCI_NLS_MONTHNAME2 : Native name for February. + OCI_NLS_MONTHNAME3 : Native name for March. + OCI_NLS_MONTHNAME4 : Native name for April. + OCI_NLS_MONTHNAME5 : Native name for May. + OCI_NLS_MONTHNAME6 : Native name for June. + OCI_NLS_MONTHNAME7 : Native name for July. + OCI_NLS_MONTHNAME8 : Native name for August. + OCI_NLS_MONTHNAME9 : Native name for September. + OCI_NLS_MONTHNAME10 : Native name for October. + OCI_NLS_MONTHNAME11 : Native name for November. + OCI_NLS_MONTHNAME12 : Native name for December. + OCI_NLS_ABMONTHNAME1 : Native abbreviated name for January. + OCI_NLS_ABMONTHNAME2 : Native abbreviated name for February. + OCI_NLS_ABMONTHNAME3 : Native abbreviated name for March. + OCI_NLS_ABMONTHNAME4 : Native abbreviated name for April. + OCI_NLS_ABMONTHNAME5 : Native abbreviated name for May. + OCI_NLS_ABMONTHNAME6 : Native abbreviated name for June. + OCI_NLS_ABMONTHNAME7 : Native abbreviated name for July. + OCI_NLS_ABMONTHNAME8 : Native abbreviated name for August. + OCI_NLS_ABMONTHNAME9 : Native abbreviated name for September. + OCI_NLS_ABMONTHNAME10 : Native abbreviated name for October. + OCI_NLS_ABMONTHNAME11 : Native abbreviated name for November. + OCI_NLS_ABMONTHNAME12 : Native abbreviated name for December. + OCI_NLS_YES : Native string for affirmative response. + OCI_NLS_NO : Native negative response. + OCI_NLS_AM : Native equivalent string of AM. + OCI_NLS_PM : Native equivalent string of PM. + OCI_NLS_AD : Native equivalent string of AD. + OCI_NLS_BC : Native equivalent string of BC. + OCI_NLS_DECIMAL : decimal character. + OCI_NLS_GROUP : group separator. + OCI_NLS_DEBIT : Native symbol of debit. + OCI_NLS_CREDIT : Native sumbol of credit. + OCI_NLS_DATEFORMAT : Oracle date format. + OCI_NLS_INT_CURRENCY: International currency symbol. + OCI_NLS_LOC_CURRENCY : Locale currency symbol. + OCI_NLS_LANGUAGE : Language name. + OCI_NLS_ABLANGUAGE : Abbreviation for language name. + OCI_NLS_TERRITORY : Territory name. + OCI_NLS_CHARACTER_SET : Character set name. + OCI_NLS_LINGUISTIC : Linguistic name. + OCI_NLS_CALENDAR : Calendar name. + OCI_NLS_DUAL_CURRENCY : Dual currency symbol. + } +{$IFNDEF LinkDynamically} + function OCINlsGetInfo(envhp:Pdvoid; errhp:POCIError; buf:POraText; buflen:size_t; item:ub2):sword;cdecl;external ocilib name 'OCINlsGetInfo'; +{$ELSE} + OCINlsGetInfo : function (envhp:Pdvoid; errhp:POCIError; buf:POraText; buflen:size_t; item:ub2):sword;cdecl; +{$ENDIF} + + { ----------------------- OCINlsNumericInfoGet ----------------------------- } + { + NAME + OCINlsNumericInfoGet - Get NLS numeric info from OCI environment handle + REMARKS + This function generates numeric language information specified by item + from OCI environment handle envhp into an output number variable. + RETURNS + OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR on wrong item. + envhp(IN/OUT) + OCI environment handle. If handle invalid, returns OCI_INVALID_HANDLE. + errhp(IN/OUT) + The OCI error handle. If there is an error, it is record in errhp and + this function returns a NULL pointer. Diagnostic information can be + obtained by calling OCIErrorGet(). + val(OUT) + Pointer to the output number variable. On OCI_SUCCESS return, it will + contain the requested NLS numeric info. + item(IN) + It specifies to get which item in OCI environment handle and can be one + of following values: + OCI_NLS_CHARSET_MAXBYTESZ : Maximum character byte size for OCI + environment or session handle charset + OCI_NLS_CHARSET_FIXEDWIDTH: Character byte size for fixed-width charset; + 0 for variable-width charset + } +{$IFNDEF LinkDynamically} + function OCINlsNumericInfoGet(envhp:Pdvoid; errhp:POCIError; val:Psb4; item:ub2):sword;cdecl;external ocilib name 'OCINlsNumericInfoGet'; +{$ELSE} + OCINlsNumericInfoGet : function (envhp:Pdvoid; errhp:POCIError; val:Psb4; item:ub2):sword;cdecl; +{$ENDIF} + + { ----------------------- OCINlsCharSetNameToId ---------------------------- } + { + NAME + OCINlsCharSetNameToId - Get Oracle charset id given Oracle charset name + REMARKS + This function will get the Oracle character set id corresponding to + the given Oracle character set name. + RETURNS + Oracle character set id for the given Oracle character set name if + character set name and OCI handle are valid; otherwise returns 0. + envhp(IN/OUT) + OCI environment handle. + name(IN) + Pointer to a null-terminated Oracle character set name whose id + will be returned. + } +{$IFNDEF LinkDynamically} + function OCINlsCharSetNameToId(envhp:Pdvoid; name:Poratext):ub2;cdecl;external ocilib name 'OCINlsCharSetNameToId'; +{$ELSE} + OCINlsCharSetNameToId : function (envhp:Pdvoid; name:Poratext):ub2;cdecl; +{$ENDIF} + + { ----------------------- OCINlsCharSetIdToName ---------------------------- } + { + NAME + OCINlsCharSetIdToName - Get Oracle charset name given Oracle charset id + REMARKS + This function will get the Oracle character set name corresponding to + the given Oracle character set id. + RETURNS + OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR + envhp(IN/OUT) + OCI environment handle. If handle invalid, returns OCI_INVALID_HANDLE. + buf(OUT) + Pointer to the destination buffer. On OCI_SUCCESS return, it will contain + the null-terminated string for character set name. + buflen(IN) + Size of destination buffer. Recommended size is OCI_NLS_MAXBUFSZ for + guarantee to store an Oracle character set name. If it's smaller than + the length of the character set name, the function will return OCI_ERROR. + id(IN) + Oracle character set id. + } +{$IFNDEF LinkDynamically} + function OCINlsCharSetIdToName(envhp:Pdvoid; buf:Poratext; buflen:size_t; id:ub2):sword;cdecl;external ocilib name 'OCINlsCharSetIdToName'; +{$ELSE} + OCINlsCharSetIdToName : function (envhp:Pdvoid; buf:Poratext; buflen:size_t; id:ub2):sword;cdecl; +{$ENDIF} + + { ----------------------- OCINlsNameMap ------------------------------------ } + { + NAME + OCINlsNameMap - Map NLS naming from Oracle to other standards and vice + versa + REMARKS + This function will map NLS naming from Oracle to other standards (such + as ISO, IANA) and vice versa. + RETURNS + OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR + envhp(IN/OUT) + OCI environment handle. If handle invalid, returns OCI_INVALID_HANDLE. + buf(OUT) + Pointer to the destination buffer. On OCI_SUCCESS return, it will + contain null-terminated string for requested mapped name. + buflen(IN) + The size of destination buffer. Recommended size is OCI_NLS_MAXBUFSZ + for guarantee to store an NLS name. If it is smaller than the length + of the name, the function will return OCI_ERROR. + srcbuf(IN) + Pointer to null-terminated NLS name. If it is not a valid name in its + define scope, the function will return OCI_ERROR. + flag(IN) + It specifies name mapping direction and can take the following values: + OCI_NLS_CS_IANA_TO_ORA : Map character set name from IANA to Oracle + OCI_NLS_CS_ORA_TO_IANA : Map character set name from Oracle to IANA + OCI_NLS_LANG_ISO_TO_ORA : Map language name from ISO to Oracle + OCI_NLS_LANG_ORA_TO_ISO : Map language name from Oracle to ISO + OCI_NLS_TERR_ISO_TO_ORA : Map territory name from ISO to Oracle + OCI_NLS_TERR_ORA_TO_ISO : Map territory name from Oracle to ISO + OCI_NLS_TERR_ISO3_TO_ORA : Map territory name from 3-letter ISO + abbreviation to Oracle + OCI_NLS_TERR_ORA_TO_ISO3 : Map territory name from Oracle to 3-letter + ISO abbreviation + } +{$IFNDEF LinkDynamically} + function OCINlsNameMap(envhp:Pdvoid; buf:Poratext; buflen:size_t; srcbuf:Poratext; flag:ub4):sword;cdecl;external ocilib name 'OCINlsNameMap'; +{$ELSE} + OCINlsNameMap : function (envhp:Pdvoid; buf:Poratext; buflen:size_t; srcbuf:Poratext; flag:ub4):sword;cdecl; +{$ENDIF} + + { -------------------- OCIMultiByteToWideChar ------------------------------ } + { + NAME + OCIMultiByteToWideChar - Convert a null terminated multibyte string into + wchar + REMARKS + This routine converts an entire null-terminated string into the wchar + format. The wchar output buffer will be null-terminated. + RETURNS + OCI_SUCCESS, OCI_INVALID_HANDLE or OCI_ERROR + envhp(IN/OUT) + OCI environment handle to determine the character set of string. + dst (OUT) + Destination buffer for wchar. + src (IN) + Source string to be converted. + rsize (OUT) + Number of characters converted including null-terminator. + If it is a NULL pointer, no number return + } +{$IFNDEF LinkDynamically} + function OCIMultiByteToWideChar(envhp:Pdvoid; dst:POCIWchar; src:POraText; rsize:Psize_t):sword;cdecl;external ocilib name 'OCIMultiByteToWideChar'; +{$ELSE} + OCIMultiByteToWideChar : function (envhp:Pdvoid; dst:POCIWchar; src:POraText; rsize:Psize_t):sword;cdecl; +{$ENDIF} + + { --------------------- OCIMultiByteInSizeToWideChar ----------------------- } + { + NAME + OCIMultiByteInSizeToWideChar - Convert a mulitbyte string in length into + wchar + REMARKS + This routine converts part of string into the wchar format. It will + convert as many complete characters as it can until it reaches output + buffer size or input buffer size or it reaches a null-terminator in + source string. The output buffer will be null-terminated if space permits. + If dstsz is zero, this function will only return number of characters not + including ending null terminator for converted string. + RETURNS + OCI_SUCCESS, OCI_INVALID_HANDLE or OCI_ERROR + envhp(IN/OUT) + OCI environment handle to determine the character set of string. + dst (OUT) + Pointer to a destination buffer for wchar. It can be NULL pointer when + dstsz is zero. + dstsz(IN) + Destination buffer size in character. If it is zero, this function just + returns number of characters will be need for the conversion. + src (IN) + Source string to be converted. + srcsz(IN) + Length of source string in byte. + rsize(OUT) + Number of characters written into destination buffer, or number of + characters for converted string is dstsz is zero. + If it is NULL pointer, nothing to return. + } +{$IFNDEF LinkDynamically} + function OCIMultiByteInSizeToWideChar(envhp:Pdvoid; dst:POCIWchar; dstsz:size_t; src:POraText; srcsz:size_t; + rsize:Psize_t):sword;cdecl;external ocilib name 'OCIMultiByteInSizeToWideChar'; +{$ELSE} + OCIMultiByteInSizeToWideChar : function (envhp:Pdvoid; dst:POCIWchar; dstsz:size_t; src:POraText; srcsz:size_t; + rsize:Psize_t):sword;cdecl; +{$ENDIF} + + { ---------------------- OCIWideCharToMultiByte ---------------------------- } + { + NAME + OCIWideCharToMultiByte - Convert a null terminated wchar string into + multibyte + REMARKS + This routine converts an entire null-terminated wide character string into + multi-byte string. The output buffer will be null-terminated. + RETURNS + OCI_SUCCESS, OCI_INVALID_HANDLE or OCI_ERROR + envhp(IN/OUT) + OCI environment handle to determine the character set of string. + dst (OUT) + Destination buffer for multi-byte string. + src (IN) + Source wchar string to be converted. + rsize (OUT) + Number of bytes written into the destination buffer. + If it is NULL pointer, nothing to return. + } +{$IFNDEF LinkDynamically} + function OCIWideCharToMultiByte(envhp:Pdvoid; dst:POraText; src:POCIWchar; rsize:Psize_t):sword;cdecl;external ocilib name 'OCIWideCharToMultiByte'; +{$ELSE} + OCIWideCharToMultiByte : function (envhp:Pdvoid; dst:POraText; src:POCIWchar; rsize:Psize_t):sword;cdecl; +{$ENDIF} + + { ---------------------- OCIWideCharInSizeToMultiByte ---------------------- } + { + NAME + OCIWideCharInSizeToMultiByte - Convert a wchar string in length into + mulitbyte + REMARKS + This routine converts part of wchar string into the multi-byte format. + It will convert as many complete characters as it can until it reaches + output buffer size or input buffer size or it reaches a null-terminator + in source string. The output buffer will be null-terminated if space + permits. If dstsz is zero, the function just returns the size of byte not + including ending null-terminator need to store the converted string. + RETURNS + OCI_SUCCESS, OCI_INVALID_HANDLE or OCI_ERROR + envhp(IN/OUT) + OCI environment handle to determine the character set of string. + dst (OUT) + Destination buffer for multi-byte. It can be NULL pointer if dstsz is + zero. + dstsz(IN) + Destination buffer size in byte. If it is zero, it just returns the size + of bytes need for converted string. + src (IN) + Source wchar string to be converted. + srcsz(IN) + Length of source string in character. + rsize(OUT) + Number of bytes written into destination buffer, or number of bytes need + to store the converted string if dstsz is zero. + If it is NULL pointer, nothing to return. + } +{$IFNDEF LinkDynamically} + function OCIWideCharInSizeToMultiByte(envhp:Pdvoid; dst:POraText; dstsz:size_t; src:POCIWchar; srcsz:size_t; + rsize:Psize_t):sword;cdecl;external ocilib name 'OCIWideCharInSizeToMultiByte'; +{$ELSE} + OCIWideCharInSizeToMultiByte : function (envhp:Pdvoid; dst:POraText; dstsz:size_t; src:POCIWchar; srcsz:size_t; + rsize:Psize_t):sword;cdecl; +{$ENDIF} + + { ----------------------- OCIWideCharIsAlnum ------------------------------- } + { + NAME + OCIWideCharIsAlnum - test whether wc is a letter or decimal digit + REMARKS + It tests whether wc is a letter or decimal digit. + RETURNS + TRUE or FLASE. + envhp(IN/OUT) + OCI environment handle to determine the character set . + wc(IN) + Wchar for testing. + } +{$IFNDEF LinkDynamically} + function OCIWideCharIsAlnum(envhp:Pdvoid; wc:OCIWchar):boolean;cdecl;external ocilib name 'OCIWideCharIsAlnum'; +{$ELSE} + OCIWideCharIsAlnum : function (envhp:Pdvoid; wc:OCIWchar):boolean;cdecl; +{$ENDIF} + + { ----------------------- OCIWideCharIsAlpha ------------------------------- } + { + NAME + OCIWideCharIsAlpha - test whether wc is an alphabetic letter + REMARKS + It tests whether wc is an alphabetic letter + RETURNS + TRUE or FLASE. + envhp(IN/OUT) + OCI environment handle to determine the character set . + wc(IN) + Wchar for testing. + } +{$IFNDEF LinkDynamically} + function OCIWideCharIsAlpha(envhp:Pdvoid; wc:OCIWchar):boolean;cdecl;external ocilib name 'OCIWideCharIsAlpha'; +{$ELSE} + OCIWideCharIsAlpha : function (envhp:Pdvoid; wc:OCIWchar):boolean;cdecl; +{$ENDIF} + + { --------------------- OCIWideCharIsCntrl --------------------------------- } + { + NAME + OCIWideCharIsCntrl - test whether wc is a control character + REMARKS + It tests whether wc is a control character. + RETURNS + TRUE or FLASE. + envhp(IN/OUT) + OCI environment handle to determine the character set . + wc(IN) + Wchar for testing. + } +{$IFNDEF LinkDynamically} + function OCIWideCharIsCntrl(envhp:Pdvoid; wc:OCIWchar):boolean;cdecl;external ocilib name 'OCIWideCharIsCntrl'; +{$ELSE} + OCIWideCharIsCntrl : function (envhp:Pdvoid; wc:OCIWchar):boolean;cdecl; +{$ENDIF} + + { ----------------------- OCIWideCharIsDigit ------------------------------- } + { + NAME + OCIWideCharIsDigit - test whether wc is a decimal digit character + REMARKS + It tests whether wc is a decimal digit character. + RETURNS + TRUE or FLASE. + envhp(IN/OUT) + OCI environment handle to determine the character set . + wc(IN) + Wchar for testing. + } +{$IFNDEF LinkDynamically} + function OCIWideCharIsDigit(envhp:Pdvoid; wc:OCIWchar):boolean;cdecl;external ocilib name 'OCIWideCharIsDigit'; +{$ELSE} + OCIWideCharIsDigit : function (envhp:Pdvoid; wc:OCIWchar):boolean;cdecl; +{$ENDIF} + + { ----------------------- OCIWideCharIsGraph ------------------------------- } + { + NAME + OCIWideCharIsGraph - test whether wc is a graph character + REMARKS + It tests whether wc is a graph character. A graph character is character + with a visible representation and normally includes alphabetic letter, + decimal digit, and punctuation. + RETURNS + TRUE or FLASE. + envhp(IN/OUT) + OCI environment handle to determine the character set . + wc(IN) + Wchar for testing. + } +{$IFNDEF LinkDynamically} + function OCIWideCharIsGraph(envhp:Pdvoid; wc:OCIWchar):boolean;cdecl;external ocilib name 'OCIWideCharIsGraph'; +{$ELSE} + OCIWideCharIsGraph : function (envhp:Pdvoid; wc:OCIWchar):boolean;cdecl; +{$ENDIF} + + { ----------------------- OCIWideCharIsLower ------------------------------- } + { + NAME + OCIWideCharIsLower - test whether wc is a lowercase letter + REMARKS + It tests whether wc is a lowercase letter. + RETURNS + TRUE or FLASE. + envhp(IN/OUT) + OCI environment handle to determine the character set . + wc(IN) + Wchar for testing. + } +{$IFNDEF LinkDynamically} + function OCIWideCharIsLower(envhp:Pdvoid; wc:OCIWchar):boolean;cdecl;external ocilib name 'OCIWideCharIsLower'; +{$ELSE} + OCIWideCharIsLower : function (envhp:Pdvoid; wc:OCIWchar):boolean;cdecl; +{$ENDIF} + + { ----------------------- OCIWideCharIsPrint ------------------------------- } + { + NAME + OCIWideCharIsPrint - test whether wc is a printable character + REMARKS + It tests whether wc is a printable character. + RETURNS + TRUE or FLASE. + envhp(IN/OUT) + OCI environment handle to determine the character set . + wc(IN) + Wchar for testing. + } +{$IFNDEF LinkDynamically} + function OCIWideCharIsPrint(envhp:Pdvoid; wc:OCIWchar):boolean;cdecl;external ocilib name 'OCIWideCharIsPrint'; +{$ELSE} + OCIWideCharIsPrint : function (envhp:Pdvoid; wc:OCIWchar):boolean;cdecl; +{$ENDIF} + + { ----------------------- OCIWideCharIsPunct ------------------------------- } + { + NAME + OCIWideCharIsPunct - test whether wc is a punctuation character + REMARKS + It tests whether wc is a punctuation character. + RETURNS + TRUE or FLASE. + envhp(IN/OUT) + OCI environment handle to determine the character set . + wc(IN) + Wchar for testing. + } +{$IFNDEF LinkDynamically} + function OCIWideCharIsPunct(envhp:Pdvoid; wc:OCIWchar):boolean;cdecl;external ocilib name 'OCIWideCharIsPunct'; +{$ELSE} + OCIWideCharIsPunct : function (envhp:Pdvoid; wc:OCIWchar):boolean;cdecl; +{$ENDIF} + + { ----------------------- OCIWideCharIsSpace ------------------------------- } + { + NAME + OCIWideCharIsSpace - test whether wc is a space character + REMARKS + It tests whether wc is a space character. A space character only causes + white space in displayed text(for example, space, tab, carriage return, + newline, vertical tab or form feed). + RETURNS + TRUE or FLASE. + envhp(IN/OUT) + OCI environment handle to determine the character set . + wc(IN) + Wchar for testing. + } +{$IFNDEF LinkDynamically} + function OCIWideCharIsSpace(envhp:Pdvoid; wc:OCIWchar):boolean;cdecl;external ocilib name 'OCIWideCharIsSpace'; +{$ELSE} + OCIWideCharIsSpace : function (envhp:Pdvoid; wc:OCIWchar):boolean;cdecl; +{$ENDIF} + + { ----------------------- OCIWideCharIsUpper ------------------------------- } + { + NAME + OCIWideCharIsUpper - test whether wc is a uppercase letter + REMARKS + It tests whether wc is a uppercase letter. + RETURNS + TRUE or FLASE. + envhp(IN/OUT) + OCI environment handle to determine the character set . + wc(IN) + Wchar for testing. + } +{$IFNDEF LinkDynamically} + function OCIWideCharIsUpper(envhp:Pdvoid; wc:OCIWchar):boolean;cdecl;external ocilib name 'OCIWideCharIsUpper'; +{$ELSE} + OCIWideCharIsUpper : function (envhp:Pdvoid; wc:OCIWchar):boolean;cdecl; +{$ENDIF} + + {----------------------- OCIWideCharIsXdigit ------------------------------- } + { + NAME + OCIWideCharIsXdigit - test whether wc is a hexadecimal digit + REMARKS + It tests whether wc is a hexadecimal digit ( 0-9, A-F, a-f ). + RETURNS + TRUE or FLASE. + envhp(IN/OUT) + OCI environment handle to determine the character set . + wc(IN) + Wchar for testing. + } +{$IFNDEF LinkDynamically} + function OCIWideCharIsXdigit(envhp:Pdvoid; wc:OCIWchar):boolean;cdecl;external ocilib name 'OCIWideCharIsXdigit'; +{$ELSE} + OCIWideCharIsXdigit : function (envhp:Pdvoid; wc:OCIWchar):boolean;cdecl; +{$ENDIF} + + { --------------------- OCIWideCharIsSingleByte ---------------------------- } + { + NAME + OCIWideCharIsSingleByte - test whether wc is a single-byte character + REMARKS + It tests whether wc is a single-byte character when converted into + multi-byte. + RETURNS + TRUE or FLASE. + envhp(IN/OUT) + OCI environment handle to determine the character set . + wc(IN) + Wchar for testing. + } +{$IFNDEF LinkDynamically} + function OCIWideCharIsSingleByte(envhp:Pdvoid; wc:OCIWchar):boolean;cdecl;external ocilib name 'OCIWideCharIsSingleByte'; +{$ELSE} + OCIWideCharIsSingleByte : function (envhp:Pdvoid; wc:OCIWchar):boolean;cdecl; +{$ENDIF} + + { ----------------------- OCIWideCharToLower ------------------------------- } + { + NAME + OCIWideCharToLower - Convert a wchar into the lowercase + REMARKS + If there is a lower-case character mapping for wc in the specified locale, + it will return the lower-case in wchar, else return wc itself. + RETURNS + A wchar + envhp(IN/OUT) + OCI environment handle to determine the character set . + wc(IN) + Wchar for lowercase mapping. + } +{$IFNDEF LinkDynamically} + function OCIWideCharToLower(envhp:Pdvoid; wc:OCIWchar):OCIWchar;cdecl;external ocilib name 'OCIWideCharToLower'; +{$ELSE} + OCIWideCharToLower : function (envhp:Pdvoid; wc:OCIWchar):OCIWchar;cdecl; +{$ENDIF} + + { ----------------------- OCIWideCharToUpper ------------------------------- } + { + NAME + OCIWideCharToUpper - Convert a wchar into the uppercase + REMARKS + If there is a upper-case character mapping for wc in the specified locale, + it will return the upper-case in wchar, else return wc itself. + RETURNS + A wchar + envhp(IN/OUT) + OCI environment handle to determine the character set . + wc(IN) + Wchar for uppercase mapping. + } +{$IFNDEF LinkDynamically} + function OCIWideCharToUpper(envhp:Pdvoid; wc:OCIWchar):OCIWchar;cdecl;external ocilib name 'OCIWideCharToUpper'; +{$ELSE} + OCIWideCharToUpper : function (envhp:Pdvoid; wc:OCIWchar):OCIWchar;cdecl; +{$ENDIF} + + { ----------------------- OCIWideCharStrcmp -------------------------------- } + { + NAME + OCIWideCharStrcmp - compare two null terminated wchar string + REMARKS + It compares two wchar string in binary ( based on wchar encoding value ), + linguistic, or case-insensitive. + RETURNS + 0, if wstr1 == wstr2. + Positive, if wstr1 > wstr2. + Negative, if wstr1 < wstr2. + envhp(IN/OUT) + OCI environment handle to determine the character set. + wstr1(IN) + Pointer to a null-terminated wchar string. + wstr2(IN) + Pointer to a null-terminated wchar string. + flag(IN) + It is used to decide the comparison method. It can be taken one of the + following values: + OCI_NLS_BINARY : for the binary comparison, this is default value. + OCI_NLS_LINGUISTIC : for linguistic comparison specified in the locale. + This flag can be ORed with OCI_NLS_CASE_INSENSITIVE for case-insensitive + comparison. + } +{$IFNDEF LinkDynamically} + function OCIWideCharStrcmp(envhp:Pdvoid; wstr1:POCIWchar; wstr2:POCIWchar; flag:longint):longint;cdecl;external ocilib name 'OCIWideCharStrcmp'; +{$ELSE} + OCIWideCharStrcmp : function (envhp:Pdvoid; wstr1:POCIWchar; wstr2:POCIWchar; flag:longint):longint;cdecl; +{$ENDIF} + + { ----------------------- OCIWideCharStrncmp ------------------------------- } + { + NAME + OCIWideCharStrncmp - compare twe wchar string in length + REMARKS + This function is similar to OCIWideCharStrcmp(), except that at most len1 + characters from wstr1 and len2 characters from wstr1 are compared. The + null-terminator will be taken into the comparison. + RETURNS + 0, if wstr1 = wstr2 + Positive, if wstr1 > wstr2 + Negative, if wstr1 < wstr2 + envhp(IN/OUT) + OCI environment handle to determine the character set . + wstr1(IN) + Pointer to the first wchar string + len1(IN) + The length for the first string for comparison + wstr2(IN) + Pointer to the second wchar string + len2(IN) + The length for the second string for comparison. + flag(IN) + It is used to decide the comparison method. It can be taken one of the + following values: + OCI_NLS_BINARY : for the binary comparison, this is default value. + OCI_NLS_LINGUISTIC : for linguistic comparison specified in the locale. + This flag can be ORed with OCI_NLS_CASE_INSENSITIVE for case-insensitive + comparison. + } +{$IFNDEF LinkDynamically} + function OCIWideCharStrncmp(envhp:Pdvoid; wstr1:POCIWchar; len1:size_t; wstr2:POCIWchar; len2:size_t; + flag:longint):longint;cdecl;external ocilib name 'OCIWideCharStrncmp'; +{$ELSE} + OCIWideCharStrncmp : function (envhp:Pdvoid; wstr1:POCIWchar; len1:size_t; wstr2:POCIWchar; len2:size_t; + flag:longint):longint;cdecl; +{$ENDIF} + + { ----------------------- OCIWideCharStrcat -------------------------------- } + { + NAME + OCIWideCharStrcat - concatenate two wchar strings + REMARKS + This function appends a copy of the wchar string pointed to by wsrcstr, + including the null-terminator to the end of wchar string pointed to by + wdststr. It returns the number of character in the result string not + including the ending null-terminator. + RETURNS + number of characters in the result string not including the ending + null-terminator. + envhp(IN/OUT) + OCI environment handle to determine the character set . + wdststr(IN/OUT) + Pointer to the destination wchar string for appending. + wsrcstr(IN) + Pointer to the source wchar string to append. + } +{$IFNDEF LinkDynamically} + function OCIWideCharStrcat(envhp:Pdvoid; wdststr:POCIWchar; wsrcstr:POCIWchar):size_t;cdecl;external ocilib name 'OCIWideCharStrcat'; +{$ELSE} + OCIWideCharStrcat : function (envhp:Pdvoid; wdststr:POCIWchar; wsrcstr:POCIWchar):size_t;cdecl; +{$ENDIF} + + { ----------------------- OCIWideCharStrchr -------------------------------- } + { + NAME + OCIWideCharStrchr - Search the first occurrence of wchar in a wchar string + REMARKS + This function searchs for the first occurrence of wc in the wchar string + pointed to by wstr. It returns a pointer to the whcar if successful, or + a null pointer. + RETURNS + wchar pointer if successful, otherwise a null pointer. + envhp(IN/OUT) + OCI environment handle to determine the character set . + wstr(IN) + Pointer to the wchar string to search + wc(IN) + Wchar to search for. + } +{$IFNDEF LinkDynamically} + function OCIWideCharStrchr(envhp:Pdvoid; wstr:POCIWchar; wc:OCIWchar):POCIWchar;cdecl;external ocilib name 'OCIWideCharStrchr'; +{$ELSE} + OCIWideCharStrchr : function (envhp:Pdvoid; wstr:POCIWchar; wc:OCIWchar):POCIWchar;cdecl; +{$ENDIF} + + { ----------------------- OCIWideCharStrcpy -------------------------------- } + { + NAME + OCIWideCharStrcpy - copy a wchar string + REMARKS + This function copies the wchar string pointed to by wsrcstr, including the + null-terminator, into the array pointed to by wdststr. It returns the + number of character copied not including the ending null-terminator. + RETURNS + number of characters copied not including the ending null-terminator. + envhp(IN/OUT) + OCI environment handle to determine the character set . + wdststr(OUT) + Pointer to the destination wchar buffer. + wsrcstr(IN) + Pointer to the source wchar string. + } +{$IFNDEF LinkDynamically} + function OCIWideCharStrcpy(envhp:Pdvoid; wdststr:POCIWchar; wsrcstr:POCIWchar):size_t;cdecl;external ocilib name 'OCIWideCharStrcpy'; +{$ELSE} + OCIWideCharStrcpy : function (envhp:Pdvoid; wdststr:POCIWchar; wsrcstr:POCIWchar):size_t;cdecl; +{$ENDIF} + + { ----------------------- OCIWideCharStrlen -------------------------------- } + { + NAME + OCIWideCharStrlen - Return number of character in a wchar string + REMARKS + This function computes the number of characters in the wchar string + pointed to by wstr, not including the null-terminator, and returns + this number. + RETURNS + number of characters not including ending null-terminator. + envhp(IN/OUT) + OCI environment handle to determine the character set . + wstr(IN) + Pointer to the source wchar string. + } +{$IFNDEF LinkDynamically} + function OCIWideCharStrlen(envhp:Pdvoid; wstr:POCIWchar):size_t;cdecl;external ocilib name 'OCIWideCharStrlen'; +{$ELSE} + OCIWideCharStrlen : function (envhp:Pdvoid; wstr:POCIWchar):size_t;cdecl; +{$ENDIF} + + { ----------------------- OCIWideCharStrncat ------------------------------- } + { + NAME + OCIWideCharStrncat - Concatenate wchar string in length + REMARKS + This function is similar to OCIWideCharStrcat(), except that at most n + characters from wsrcstr are appended to wdststr. Note that the + null-terminator in wsrcstr will stop appending. wdststr will be + null-terminated.. + RETURNS + Number of characters in the result string not including the ending + null-terminator. + envhp(IN/OUT) + OCI environment handle to determine the character set . + wdststr(IN/OUT) + Pointer to the destination wchar string for appending. + wsrcstr(IN) + Pointer to the source wchar string to append. + n(IN) + Number of characters from wsrcstr to append. + } +{$IFNDEF LinkDynamically} + function OCIWideCharStrncat(envhp:Pdvoid; wdststr:POCIWchar; wsrcstr:POCIWchar; n:size_t):size_t;cdecl;external ocilib name 'OCIWideCharStrncat'; +{$ELSE} + OCIWideCharStrncat : function (envhp:Pdvoid; wdststr:POCIWchar; wsrcstr:POCIWchar; n:size_t):size_t;cdecl; +{$ENDIF} + + { ----------------------- OCIWideCharStrncpy ------------------------------- } + { + NAME + OCIWideCharStrncpy - Copy wchar string in length + REMARKS + This function is similar to OCIWideCharStrcpy(), except that at most n + characters are copied from the array pointed to by wsrcstr to the array + pointed to by wdststr. Note that the null-terminator in wdststr will + stop coping and result string will be null-terminated. + RETURNS + number of characters copied not including the ending null-terminator. + envhp(IN/OUT) + OCI environment handle to determine the character set . + wdststr(OUT) + Pointer to the destination wchar buffer. + wsrcstr(IN) + Pointer to the source wchar string. + n(IN) + Number of characters from wsrcstr to copy. + } +{$IFNDEF LinkDynamically} + function OCIWideCharStrncpy(envhp:Pdvoid; wdststr:POCIWchar; wsrcstr:POCIWchar; n:size_t):size_t;cdecl;external ocilib name 'OCIWideCharStrncpy'; +{$ELSE} + OCIWideCharStrncpy : function (envhp:Pdvoid; wdststr:POCIWchar; wsrcstr:POCIWchar; n:size_t):size_t;cdecl; +{$ENDIF} + + { ----------------------- OCIWideCharStrrchr ------------------------------- } + { + NAME + OCIWideCharStrrchr - search the last occurrence of a wchar in wchar string + REMARKS + This function searchs for the last occurrence of wc in the wchar string + pointed to by wstr. It returns a pointer to the whcar if successful, or + a null pointer. + RETURNS + wchar pointer if successful, otherwise a null pointer. + envhp(IN/OUT) + OCI environment handle to determine the character set . + wstr(IN) + Pointer to the wchar string to search + wc(IN) + Wchar to search for. + } +{$IFNDEF LinkDynamically} + function OCIWideCharStrrchr(envhp:Pdvoid; wstr:POCIWchar; wc:OCIWchar):POCIWchar;cdecl;external ocilib name 'OCIWideCharStrrchr'; +{$ELSE} + OCIWideCharStrrchr : function (envhp:Pdvoid; wstr:POCIWchar; wc:OCIWchar):POCIWchar;cdecl; +{$ENDIF} + + { --------------------- OCIWideCharStrCaseConversion ----------------------- } + { + NAME + OCIWideCharStrCaseConversion - convert a wchar string into lowercase or + uppercase + REMARKS + This function convert the wide char string pointed to by wsrcstr into the + uppercase or lowercase specified by flag and copies the result into the + array pointed to by wdststr. The result string will be null-terminated. + RETURNS + number of characters for result string not including null-terminator. + envhp(IN/OUT) + OCI environment handle. + wdststr(OUT) + Pointer to destination array. + wsrcstr(IN) + Pointer to source string. + flag(IN) + Specify the case to convert: + OCI_NLS_UPPERCASE : convert to uppercase. + OCI_NLS_LOWERCASE: convert to lowercase. + This flag can be ORed with OCI_NLS_LINGUISTIC to specify that the + linguistic setting in the locale will be used for case conversion. + } +{$IFNDEF LinkDynamically} + function OCIWideCharStrCaseConversion(envhp:Pdvoid; wdststr:POCIWchar; wsrcstr:POCIWchar; flag:ub4):size_t;cdecl;external ocilib name 'OCIWideCharStrCaseConversion'; +{$ELSE} + OCIWideCharStrCaseConversion : function (envhp:Pdvoid; wdststr:POCIWchar; wsrcstr:POCIWchar; flag:ub4):size_t;cdecl; +{$ENDIF} + + {---------------------- OCIWideCharDisplayLength --------------------------- } + { + NAME + OCIWideCharDisplayLength - Calculate the display length for a wchar + REMARKS + This function determines the number of column positions required for wc + in display. It returns number of column positions, or 0 if wc is + null-terminator. + RETURNS + Number of display positions. + envhp(IN/OUT) + OCI environment handle to determine the character set . + wc(IN) + Wchar character. + } +{$IFNDEF LinkDynamically} + function OCIWideCharDisplayLength(envhp:Pdvoid; wc:OCIWchar):size_t;cdecl;external ocilib name 'OCIWideCharDisplayLength'; +{$ELSE} + OCIWideCharDisplayLength : function (envhp:Pdvoid; wc:OCIWchar):size_t;cdecl; +{$ENDIF} + + {---------------------- OCIWideCharMultiByteLength ------------------------- } + { + NAME + OCIWideCharMultiByteLength - Determine byte size in multi-byte encoding + REMARKS + This function determines the number of byte required for wc in multi-byte + encoding. It returns number of bytes in multi-byte for wc. + RETURNS + Number of bytes. + envhp(IN/OUT) + OCI environment handle to determine the character set . + wc(IN) + Wchar character. + } +{$IFNDEF LinkDynamically} + function OCIWideCharMultiByteLength(envhp:Pdvoid; wc:OCIWchar):size_t;cdecl;external ocilib name 'OCIWideCharMultiByteLength'; +{$ELSE} + OCIWideCharMultiByteLength : function (envhp:Pdvoid; wc:OCIWchar):size_t;cdecl; +{$ENDIF} + + { ----------------------- OCIMultiByteStrcmp ------------------------------- } + { + NAME + OCIMultiByteStrcmp - Compare two multi-byte strings + REMARKS + It compares two multi-byte strings in binary ( based on encoding value ), + linguistic, or case-insensitive. + RETURNS + 0, if str1 == str2. + Positive, if str1 > str2. + Negative, if str1 < str2. + envhp(IN/OUT) + OCI environment handle to determine the character set. + str1(IN) + Pointer to a null-terminated string. + str2(IN) + Pointer to a null-terminated string. + flag(IN) + It is used to decide the comparison method. It can be taken one of the + following values: + OCI_NLS_BINARY: for the binary comparison, this is default value. + OCI_NLS_LINGUISTIC: for linguistic comparison specified in the locale. + This flag can be ORed with OCI_NLS_CASE_INSENSITIVE for case-insensitive + comparison. + } +{$IFNDEF LinkDynamically} + function OCIMultiByteStrcmp(envhp:Pdvoid; str1:POraText; str2:POraText; flag:longint):longint;cdecl;external ocilib name 'OCIMultiByteStrcmp'; +{$ELSE} + OCIMultiByteStrcmp : function (envhp:Pdvoid; str1:POraText; str2:POraText; flag:longint):longint;cdecl; +{$ENDIF} + + {----------------------- OCIMultiByteStrncmp ------------------------------- } + { + NAME + OCIMultiByteStrncmp - compare two strings in length + REMARKS + This function is similar to OCIMultiBytestrcmp(), except that at most + len1 bytes from str1 and len2 bytes from str2 are compared. The + null-terminator will be taken into the comparison. + RETURNS + 0, if str1 = str2 + Positive, if str1 > str2 + Negative, if str1 < str2 + envhp(IN/OUT) + OCI environment handle to determine the character set. + str1(IN) + Pointer to the first string + len1(IN) + The length for the first string for comparison + str2(IN) + Pointer to the second string + len2(IN) + The length for the second string for comparison. + flag(IN) + It is used to decide the comparison method. It can be taken one of the + following values: + OCI_NLS_BINARY: for the binary comparison, this is default value. + OCI_NLS_LINGUISTIC: for linguistic comparison specified in the locale. + This flag can be ORed with OCI_NLS_CASE_INSENSITIVE for case-insensitive + comparison. + } +{$IFNDEF LinkDynamically} + function OCIMultiByteStrncmp(envhp:Pdvoid; str1:POraText; len1:size_t; str2:POraText; len2:size_t; + flag:longint):longint;cdecl;external ocilib name 'OCIMultiByteStrncmp'; +{$ELSE} + OCIMultiByteStrncmp : function (envhp:Pdvoid; str1:POraText; len1:size_t; str2:POraText; len2:size_t; + flag:longint):longint;cdecl; +{$ENDIF} + + {----------------------- OCIMultiByteStrcat -------------------------------- } + { + NAME + OCIMultiByteStrcat - concatenate multibyte strings + REMARKS + This function appends a copy of the multi-byte string pointed to by + srcstr, including the null-terminator to the end of string pointed to by + dststr. It returns the number of bytes in the result string not including + the ending null-terminator. + RETURNS + number of bytes in the result string not including the ending + null-terminator. + envhp(IN/OUT) + Pointer to OCI environment handle + dststr(IN/OUT) + Pointer to the destination multi-byte string for appending. + srcstr(IN) + Pointer to the source string to append. + } +{$IFNDEF LinkDynamically} + function OCIMultiByteStrcat(envhp:Pdvoid; dststr:POraText; srcstr:POraText):size_t;cdecl;external ocilib name 'OCIMultiByteStrcat'; +{$ELSE} + OCIMultiByteStrcat : function (envhp:Pdvoid; dststr:POraText; srcstr:POraText):size_t;cdecl; +{$ENDIF} + + {------------------------- OCIMultiByteStrcpy ------------------------------ } + { + NAME + OCIMultiByteStrcpy - copy multibyte string + REMARKS + This function copies the multi-byte string pointed to by srcstr, + including the null-terminator, into the array pointed to by dststr. It + returns the number of bytes copied not including the ending + null-terminator. + RETURNS + number of bytes copied not including the ending null-terminator. + envhp(IN/OUT) + Pointer to the OCI environment handle. + srcstr(OUT) + Pointer to the destination buffer. + dststr(IN) + Pointer to the source multi-byte string. + } +{$IFNDEF LinkDynamically} + function OCIMultiByteStrcpy(envhp:Pdvoid; dststr:POraText; srcstr:POraText):size_t;cdecl;external ocilib name 'OCIMultiByteStrcpy'; +{$ELSE} + OCIMultiByteStrcpy : function (envhp:Pdvoid; dststr:POraText; srcstr:POraText):size_t;cdecl; +{$ENDIF} + + {----------------------- OCIMultiByteStrlen -------------------------------- } + { + NAME + OCIMultiByteStrlen - Calculate multibyte string length + REMARKS + This function computes the number of bytes in the multi-byte string + pointed to by str, not including the null-terminator, and returns this + number. + RETURNS + number of bytes not including ending null-terminator. + str(IN) + Pointer to the source multi-byte string. + } +{$IFNDEF LinkDynamically} + function OCIMultiByteStrlen(envhp:Pdvoid; str:POraText):size_t;cdecl;external ocilib name 'OCIMultiByteStrlen'; +{$ELSE} + OCIMultiByteStrlen : function (envhp:Pdvoid; str:POraText):size_t;cdecl; +{$ENDIF} + + + {----------------------- OCIMultiByteStrncat ------------------------------- } + { + NAME + OCIMultiByteStrncat - concatenate string in length + REMARKS + This function is similar to OCIMultiBytestrcat(), except that at most n + bytes from srcstr are appended to dststr. Note that the null-terminator in + srcstr will stop appending and the function will append as many character + as possible within n bytes. dststr will be null-terminated. + RETURNS + Number of bytes in the result string not including the ending + null-terminator. + envhp(IN/OUT) + Pointer to OCI environment handle. + srcstr(IN/OUT) + Pointer to the destination multi-byte string for appending. + dststr(IN) + Pointer to the source multi-byte string to append. + n(IN) + Number of bytes from srcstr to append. + } +{$IFNDEF LinkDynamically} + function OCIMultiByteStrncat(envhp:Pdvoid; dststr:POraText; srcstr:POraText; n:size_t):size_t;cdecl;external ocilib name 'OCIMultiByteStrncat'; +{$ELSE} + OCIMultiByteStrncat : function (envhp:Pdvoid; dststr:POraText; srcstr:POraText; n:size_t):size_t;cdecl; +{$ENDIF} + + {----------------------- OCIMultiByteStrncpy ------------------------------- } + { + NAME + OCIMultiByteStrncpy - copy multibyte string in length + REMARKS + This function is similar to OCIMultiBytestrcpy(), except that at most n + bytes are copied from the array pointed to by srcstr to the array pointed + to by dststr. Note that the null-terminator in srcstr will stop coping and + the function will copy as many character as possible within n bytes. The + result string will be null-terminated. + RETURNS + number of bytes copied not including the ending null-terminator. + envhp(IN/OUT) + Pointer to a OCI environment handle. + dststr(IN) + Pointer to the source multi-byte string. + srcstr(OUT) + Pointer to the destination buffer. + n(IN) + Number of bytes from srcstr to copy. + } +{$IFNDEF LinkDynamically} + function OCIMultiByteStrncpy(envhp:Pdvoid; dststr:POraText; srcstr:POraText; n:size_t):size_t;cdecl;external ocilib name 'OCIMultiByteStrncpy'; +{$ELSE} + OCIMultiByteStrncpy : function (envhp:Pdvoid; dststr:POraText; srcstr:POraText; n:size_t):size_t;cdecl; +{$ENDIF} + + {----------------------- OCIMultiByteStrnDisplayLength --------------------- } + { + NAME + OCIMultiByteStrnDisplayLength - calculate the display length for a + multibyt string + REMARKS + This function returns the number of display positions occupied by the + complete characters within the range of n bytes. + RETURNS + number of display positions. + envhp(IN/OUT) + OCI environment handle. + str(IN) + Pointer to a multi-byte string. + n(IN) + Number of bytes to examine. + } +{$IFNDEF LinkDynamically} + function OCIMultiByteStrnDisplayLength(envhp:Pdvoid; str1:POraText; n:size_t):size_t;cdecl;external ocilib name 'OCIMultiByteStrnDisplayLength'; +{$ELSE} + OCIMultiByteStrnDisplayLength : function (envhp:Pdvoid; str1:POraText; n:size_t):size_t;cdecl; +{$ENDIF} + + {---------------------- OCIMultiByteStrCaseConversion --------------------- } + { + NAME + OCIMultiByteStrCaseConversion + REMARKS + This function convert the multi-byte string pointed to by srcstr into the + uppercase or lowercase specified by flag and copies the result into the + array pointed to by dststr. The result string will be null-terminated. + RETURNS + number of bytes for result string not including null-terminator. + envhp(IN/OUT) + OCI environment handle. + dststr(OUT) + Pointer to destination array. + srcstr(IN) + Pointer to source string. + flag(IN) + Specify the case to convert: + OCI_NLS_UPPERCASE: convert to uppercase. + OCI_NLS_LOWERCASE: convert to lowercase. + This flag can be ORed with OCI_NLS_LINGUISTIC to specify that the + linguistic setting in the locale will be used for case conversion. + } +{$IFNDEF LinkDynamically} + function OCIMultiByteStrCaseConversion(envhp:Pdvoid; dststr:POraText; srcstr:POraText; flag:ub4):size_t;cdecl;external ocilib name 'OCIMultiByteStrCaseConversion'; +{$ELSE} + OCIMultiByteStrCaseConversion : function (envhp:Pdvoid; dststr:POraText; srcstr:POraText; flag:ub4):size_t;cdecl; +{$ENDIF} + + {------------------------- OCICharSetToUnicode ----------------------------- } + { + NAME + OCICharSetToUnicode - convert multibyte string into Unicode as UCS2 + REMARKS + This function converts a multi-byte string pointed to by src to Unicode + into the array pointed to by dst. The conversion will stop when it reach + to the source limitation or destination limitation. + The function will return number of characters converted into Unicode. + If dstlen is zero, it will just return the number of characters for the + result without real conversion. + RETURNS + OCI_SUCCESS, OCI_INVALID_HANDLE or OCI_ERROR + envhp(IN/OUT) + Pointer to an OCI environment handle + dst(OUT) + Pointer to a destination buffer + dstlen(IN) + Size of destination buffer in character + src(IN) + Pointer to multi-byte source string. + srclen(IN) + Size of source string in bytes. + rsize(OUT) + Number of characters converted. + If it is a NULL pointer, nothing to return. + } +{$IFNDEF LinkDynamically} + function OCICharSetToUnicode(envhp:Pdvoid; dst:Pub2; dstlen:size_t; src:POraText; srclen:size_t; + rsize:Psize_t):sword;cdecl;external ocilib name 'OCICharSetToUnicode'; +{$ELSE} + OCICharSetToUnicode : function (envhp:Pdvoid; dst:Pub2; dstlen:size_t; src:POraText; srclen:size_t; + rsize:Psize_t):sword;cdecl; +{$ENDIF} + + {------------------------- OCIUnicodeToCharSet ----------------------------- } + { + NAME + OCIUnicodeToCharSet - convert Unicode into multibyte + REMARKS + This function converts a Unicode string pointed to by src to multi-byte + into the array pointed to by dst. The conversion will stop when it reach + to the source limitation or destination limitation. The function will + return number of bytes converted into multi-byte. If dstlen is zero, it + will just return the number of bytes for the result without real + conversion. If a Unicode character is not convertible for the character + set specified in OCI environment handle, a replacement character will be + used for it. In this case, OCICharSetConversionIsReplacementUsed() will + return ture. + RETURNS + OCI_SUCCESS, OCI_INVALID_HANDLE or OCI_ERROR + envhp(IN/OUT) + Pointer to an OCI environment handle. + dst(OUT) + Pointer to a destination buffer. + dstlen(IN) + Size of destination buffer in byte. + src(IN) + Pointer to a Unicode string. + srclen(IN) + Size of source string in characters. + rsize(OUT) + Number of bytes converted. + If it is a NULL pointer, nothing to return. + } +{$IFNDEF LinkDynamically} + function OCIUnicodeToCharSet(envhp:Pdvoid; dst:POraText; dstlen:size_t; src:Pub2; srclen:size_t; + rsize:Psize_t):sword;cdecl;external ocilib name 'OCIUnicodeToCharSet'; +{$ELSE} + OCIUnicodeToCharSet : function (envhp:Pdvoid; dst:POraText; dstlen:size_t; src:Pub2; srclen:size_t; + rsize:Psize_t):sword;cdecl; +{$ENDIF} + + {----------------------- OCINlsCharSetConvert ------------------------------ } + { + NAME + OCINlsCharSetConvert - convert between any two character set. + REMARKS + This function converts a string pointed to by src in the character set + specified with srcid to the array pointed to by dst in the character set + specified with dstid. The conversion will stop when it reaches the source + limitation or destination limitation. The function will return the number + of bytes converted into the destination buffer. Even though either source + or destination character set id is OCI_UTF16ID, given and return data + length will be represented with the byte length as this function is + intended for generic purpose. Note the conversion will not stop at null + data. + To get character set id from name, OCINlsCharSetNameToId can be used. + To check if derived data in the destination buffer contains any + replacement character resulting from conversion failure, + OCICharSetConversionIsReplacementUsed can be used to get the status. + Data alignment should be guaranteed by a caller. For example, UTF-16 data + should be aligned to ub2 type. + + RETURNS + OCI_SUCCESS or OCI_ERROR. + errhp(IN/OUT) + OCI error handle. If there is an error, it is recorded in errhp and this + function returns a NULL pointer. Diagnostic information can be obtained + by calling OCIErrorGet(). + dstid(IN) + Character set id for the destination buffer. + dstp(OUT) + Pointer to the destination buffer. + dstlen(IN) + The maximum byte size of destination buffer. + srcid(IN) + Character set id for the source buffer. + srcp(IN) + Pointer to the source buffer. + srclen(IN) + The length byte size of source buffer. + rsize(OUT) + The number of characters converted. If it is a NULL pointer, nothing to + return. + } +{$IFNDEF LinkDynamically} + function OCINlsCharSetConvert(envhp:Pdvoid; errhp:POCIError; dstid:ub2; dstp:Pdvoid; dstlen:size_t; + srcid:ub2; srcp:Pdvoid; srclen:size_t; rsize:Psize_t):sword;cdecl;external ocilib name 'OCINlsCharSetConvert'; +{$ELSE} + OCINlsCharSetConvert : function (envhp:Pdvoid; errhp:POCIError; dstid:ub2; dstp:Pdvoid; dstlen:size_t; + srcid:ub2; srcp:Pdvoid; srclen:size_t; rsize:Psize_t):sword;cdecl; +{$ENDIF} + + { ------------------- OCICharsetConversionIsReplacementUsed ---------------- } + { + NAME + OCICharsetConversionIsReplacementUsed - chech if replacement is used in + conversion + REMARKS + This function indicates whether or not the replacement character was used + for nonconvertible characters in character set conversion in last invoke + of OCICharsetUcs2ToMb(). + RETURNS + TRUE is the replacement character was used in last OCICharsetUcs2ToMb() + invoking, else FALSE. + envhp(IN/OUT) + OCI environment handle. This should be the first handle passed to + OCICharsetUcs2ToMb(). + } +{$IFNDEF LinkDynamically} + function OCICharSetConversionIsReplacementUsed(envhp:Pdvoid):boolean;cdecl;external ocilib name 'OCICharSetConversionIsReplacementUsed'; +{$ELSE} + OCICharSetConversionIsReplacementUsed : function (envhp:Pdvoid):boolean;cdecl; +{$ENDIF} + + {------------------- OCINlsEnvironmentVariableGet ----------------- } + { + NAME + OCINlsEnvironmentVariableGet - get a value of NLS environment variable. + + DESCRIPTION + This function retrieves a value of NLS environment variable to the buffer + pointed to by val. Data type is determined by the parameter specified by + item. Either numeric data or string data can be retrieved. + + RETURNS + OCI_SUCCESS or OCI_ERROR. + + PARAMETERS + valp(OUT) - + Pointer to the buffer. + size(IN) - + Size of the buffer. This argument is only applicable to string data type, + but not to numerical data, in such case, it is ignored. + item(IN) - + NLS item value, which can be one of following values: + OCI_NLS_CHARSET_ID - NLS_LANG character set id in ub2 data type. + OCI_NLS_NCHARSET_ID - NLS_NCHAR character set id in ub2 data type. + charset(IN) - + Character set id for retrieved string data. If it is 0, NLS_LANG will be + used. OCI_UTF16ID is a valid id. In case of numeric data, this argument + is ignored. + rsize(OUT) - + Size of return value. + + NOTE + This functions is mainly used for retrieving character set id from either + NLS_LANG or NLS_NCHAR environment variables. If NLS_LANG is not set, + the default character set id is returned. + For future extension, the buffer is capable for storing other data types. + } +{$IFNDEF LinkDynamically} + function OCINlsEnvironmentVariableGet(valp:Pdvoid; size:size_t; item:ub2; charset:ub2; rsize:Psize_t):sword;cdecl;external ocilib name 'OCINlsEnvironmentVariableGet'; +{$ELSE} + OCINlsEnvironmentVariableGet : function (valp:Pdvoid; size:size_t; item:ub2; charset:ub2; rsize:Psize_t):sword;cdecl; +{$ENDIF} + + {------------------------- OCIMessageOpen ---------------------------------- } + { + NAME + OCIMessageOpen - open a locale message file + REMARKS + This function opens a message handle for facility of product in a language + pointed to by envhp. It first try to open the message file corresponding + to envhp for the facility. If it successes, it will use that file to + initialize a message handle, else it will use the default message file + which is for American language for the facility. The function return a + pointer pointed to a message handle into msghp parameter. + RETURNS + OCI_SUCCESS, OCI_INVALID_HANDLE or OCI_ERROR + envhp(IN/OUT) + A pointer to OCI environment handle for message language. + errhp(IN/OUT) + The OCI error handle. If there is an error, it is record in errhp and this + function returns a NULL pointer. Diagnostic information can be obtained by + calling OCIErrorGet(). + msghp(OUT) + a message handle for return + product(IN) + A pointer to a product name. Product name is used to locate the directory + for message in a system dependent way. For example, in Solaris, the + directory of message files for the product `rdbms' is + `$ORACLE_HOME/rdbms'. + facility(IN) + A pointer to a facility name in the product. It is used to construct a + message file name. A message file name follows the conversion with + facility as prefix. For example, the message file name for facility + `img' in American language will be `imgus.msb' where `us' is the + abbreviation of American language and `msb' as message binary file + extension. + dur(IN) + Duration for memory allocation for the return message handle. It can be + the following values: + OCI_DURATION_CALL + OCI_DURATION_STATEMENT + OCI_DURATION_SESSION + OCI_DURATION_TRANSACTION + For the detail description, please refer to Memory Related Service + Interfaces section. + } +{$IFNDEF LinkDynamically} + function OCIMessageOpen(envhp:Pdvoid; errhp:POCIError; var msghp:POCIMsg; product:POraText; facility:POraText; + dur:OCIDuration):sword;cdecl;external ocilib name 'OCIMessageOpen'; +{$ELSE} + OCIMessageOpen : function (envhp:Pdvoid; errhp:POCIError; var msghp:POCIMsg; product:POraText; facility:POraText; + dur:OCIDuration):sword;cdecl; +{$ENDIF} + + {------------------------- OCIMessageGet ----------------------------------- } + { + NAME + OCIMessageGet - get a locale message from a message handle + REMARKS + This function will get message with message number identified by msgno and + if buflen is not zero, the function will copy the message into the buffer + pointed to by msgbuf. If buflen is zero, the message will be copied into + a message buffer inside the message handle pointed to by msgh. For both + cases. it will return the pointer to the null-terminated message string. + If it cannot get the message required, it will return a NULL pointer. + RETURNS + A pointer to a null-terminated message string on success, otherwise a NULL + pointer. + msgh(IN/OUT) + Pointer to a message handle which was previously opened by + OCIMessageOpen(). + msgno(IN) + The message number for getting message. + msgbuf(OUT) + Pointer to a destination buffer to the message retrieved. If buflen is + zero, it can be NULL pointer. + buflen(IN) + The size of the above destination buffer. + } +{$IFNDEF LinkDynamically} + function OCIMessageGet(msgh:POCIMsg; msgno:ub4; msgbuf:POraText; buflen:size_t):POraText;cdecl;external ocilib name 'OCIMessageGet'; +{$ELSE} + OCIMessageGet : function (msgh:POCIMsg; msgno:ub4; msgbuf:POraText; buflen:size_t):POraText;cdecl; +{$ENDIF} + + {------------------------- OCIMessageClose --------------------------------- } + { + NAME + OCIMessageClose - close a message handle + REMARKS + This function closes a message handle pointed to by msgh and frees any + memory associated with this handle. + RETURNS + OCI_SUCCESS, OCI_INVALID_HANDLE or OCI_ERROR + envhp(IN/OUT) + A pointer to OCI environment handle for message language. + errhp(IN/OUT) + The OCI error handle. If there is an error, it is record in errhp and this + function returns a NULL pointer. Diagnostic information can be obtained by + calling OCIErrorGet(). + msghp(IN/OUT) + A pointer to a message handle which was previously opened by + OCIMessageOpen(). + } +{$IFNDEF LinkDynamically} + function OCIMessageClose(envhp:Pdvoid; errhp:POCIError; msghp:POCIMsg):sword;cdecl;external ocilib name 'OCIMessageClose'; +{$ELSE} + OCIMessageClose : function (envhp:Pdvoid; errhp:POCIError; msghp:POCIMsg):sword;cdecl; +{$ENDIF} + + {--------------- End of Extensions to NLS cartridge service ---------------- } + {----------------- Extensions to OCI Thread interface --------------------- } + {**************************************************************************** + DESCRIPTION + ****************************************************************************** + 1 Threads Interface + + The OCIThread package provides a number of commonly used threading + primitives for use by Oracle customers. It offers a portable interface to + threading capabilities native to various platforms. It does not implement + threading on platforms which do not have native threading capability. + + OCIThread does not provide a portable implementation of multithreaded + facilities. It only serves as a set of portable covers for native + multithreaded facilities. Therefore, platforms that do not have native + support for multi-threading will only be able to support a limited + implementation of OCIThread. As a result, products that rely on all of + OCIThread's functionality will not port to all platforms. Products that must + port to all platforms must use only a subset of OCIThread's functionality. + This issue is discussed further in later sections of this document. + + The OCIThread API is split into four main parts. Each part is described + briefly here. The following subsections describe each in greater detail. + + 1. Initialization and Termination Calls + + These calls deal with the initialization and termination of OCIThread. + Initialization of OCIThread initializes the OCIThread context which is + a member of the OCI environment or session handle. This context is + required for other OCIThread calls. + + 2. Passive Threading Primitives + + The passive threading primitives include primitives to manipulate mutual + exclusion (mutex) locks, thread ID's, and thread-specific data keys. + + The reason that these primitives are described as 'passive' is that while + their specifications allow for the existence of multiple threads, they do + not require it. This means that it is possible for these primitives to + be implemented according to specification in both single-threaded and + multi-threaded environments. + + As a result, OCIThread clients that use only these primitives will not + require the existence of multiple threads in order to work correctly, + i.e., they will be able to work in single-threaded environments without + branching code. + + 3. Active Threading Primitives + + Active threading primitives include primitives dealing with the creation, + termination, and other manipulation of threads. + + The reason that these primitives are described as 'active' is that they + can only be used in true multi-threaded environments. Their + specifications explicitly require that it be possible to have multiple + threads. If you need to determine at runtime whether or not you are in a + multi-threaded environment, call OCIThreadIsMulti() before calling an + OCIThread active primitive. + + + 1.1 Initialization & Termination + ================================== + + The types and functions described in this section are associated with the + initialization and termination of the OCIThread package. OCIThread must + be properly initialized before any of its functionality can be used. + OCIThread's process initialization function, 'OCIThreadProcessInit()', + must be called with care; see below. + + The observed behavior of the initialization and termination functions is the + same regardless of whether OCIThread is in single-threaded or multi-threaded + environment. It is OK to call the initialization functions from both generic + and operating system specific (OSD) code. + + 1.1.1 Types + + OCIThreadContext - OCIThread Context + ------------------------------------- + + Most calls to OCIThread functions take the OCI environment or session + handle as a parameter. The OCIThread context is part of the OCI + environment or session handle and it must be initialized by calling + 'OCIThreadInit()'. Termination of the OCIThread context occurs by calling + 'OCIThreadTerm()'. + + The OCIThread context is a private data structure. Clients must NEVER + attempt to examine the contents of the context. + + 1.1.2 OCIThreadProcessInit + + OCIThreadProcessInit - OCIThread Process INITialization + -------------------------------------------------------- + + Description + + This function should be called to perform OCIThread process + initialization. + + Prototype + + void OCIThreadProcessInit(); + + Returns + + Nothing. + + Notes + + Whether or not this function needs to be called depends on how OCI + Thread is going to be used. + + * In a single-threaded application, calling this function is optional. + If it is called at all, the first call to it must occur before calls + to any other OCIThread functions. Subsequent calls can be made + without restriction; they will not have any effect. + + * In a multi-threaded application, this function MUST be called. The + first call to it MUST occur 'strictly before' any other OCIThread + calls; i.e., no other calls to OCIThread functions (including other + calls to this one) can be concurrent with the first call. + Subsequent calls to this function can be made without restriction; + they will not have any effect. + + + 1.1.3 OCIThreadInit + + OCIThreadInit - OCIThread INITialize + ------------------------------------- + + Description + + This initializes OCIThread context. + + Prototype + + sword OCIThreadInit(dvoid *hndl, OCIError *err); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error and OCI_ERROR + is returned, the error is recorded in err and diagnostic + information can be obtained by calling OCIErrorGet(). + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + Notes + + It is illegal for OCIThread clients to try an examine the memory + pointed to by the returned pointer. + + It is safe to make concurrent calls to 'OCIThreadInit()'. Unlike + 'OCIThreadProcessInit()', there is no need to have a first call + that occurs before all the others. + + The first time 'OCIThreadInit()' is called, it initilaizes the OCI + Thread context. It also saves a pointer to the context in some system + dependent manner. Subsequent calls to 'OCIThreadInit()' will return + the same context. + + Each call to 'OCIThreadInit()' must eventually be matched by a call to + 'OCIThreadTerm()'. + + OCIThreadTerm - OCIThread TERMinate + ------------------------------------ + + Description + + This should be called to release the OCIThread context. It should be + called exactly once for each call made to 'OCIThreadInit()'. + + Prototype + + sword OCIThreadTerm(dvoid *hndl, OCIError *err); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error and OCI_ERROR + is returned, the error is recorded in err and diagnostic + information can be obtained by calling OCIErrorGet(). + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + Notes + + It is safe to make concurrent calls to 'OCIThreadTerm()'. + + 'OCIThreadTerm()' will not do anything until it has been called as + many times as 'OCIThreadInit()' has been called. When that happens, + it terminates the OCIThread layer and frees the memory allocated for + the context. Once this happens, the context should not be re-used. + It will be necessary to obtain a new one by calling 'OCIThreadInit()'. + + + OCIThreadIsMulti - OCIThread Is Multi-Threaded? + ------------------------------------------------ + + Description + + This tells the caller whether the application is running in a + multi-threaded environment or a single-threaded environment. + + Prototype + boolean OCIThreadIsMulti(void); + + Returns + + TRUE if the environment is multi-threaded; + FALSE if the environment is single-threaded. + + + 1.2 Passive Threading Primitives + ================================== + + 1.2.1 Types + + The passive threading primitives deal with the manipulation of mutex, + thread ID's, and thread-specific data. Since the specifications of these + primitives do not require the existence of multiple threads, they can be + used both on multithreaded and single-threaded platforms. + + 1.2.1.1 OCIThreadMutex - OCIThread Mutual Exclusion Lock + ----------------------------------------------------------- + + The type 'OCIThreadMutex' is used to represent a mutual exclusion lock + (mutex). A mutex is typically used for one of two purposes: (i) to + ensure that only one thread accesses a given set of data at a time, or + (ii) to ensure that only one thread executes a given critical section of + code at a time. + + Mutexes pointer can be declared as parts of client structures or as + stand-alone variables. Before they can be used, they must be initialized + using 'OCIThreadMutexInit()'. Once they are no longer needed, they must be + destroyed using 'OCIThreadMutexDestroy()'. A mutex pointer must NOT be + used after it is destroyed. + + A thread can acquire a mutex by using either 'OCIThreadMutexAcquire()' or + 'OCIThreadMutexTry()'. They both ensure that only one thread at a time is + allowed to hold a given mutex. A thread that holds a mutex can release it + by calling 'OCIThreadMutexRelease()'. + + + 1.2.1.2 OCIThreadKey - OCIThread Key for Thread-Specific Data + ---------------------------------------------------------------- + + A key can be thought of as a process-wide variable that has a + thread-specific value. What this means is that all the threads in a + process can use any given key. However, each thread can examine or modify + that key independently of the other threads. The value that a thread sees + when it examines the key will always be the same as the value that it last + set for the key. It will not see any values set for the key by the other + threads. + + The type of the value held by a key is a 'dvoid *' generic pointer. + + Keys can be created using 'OCIThreadKeyInit()'. When a key is created, its + value is initialized to 'NULL' for all threads. + + A thread can set a key's value using 'OCIThreadKeySet()'. A thread can + get a key's value using 'OCIThreadKeyGet()'. + + The OCIThread key functions will save and retrieve data SPECIFIC TO THE + THREAD. When clients maintain a pool of threads and assign the threads to + different tasks, it *may not* be appropriate for a task to use OCIThread + key functions to save data associated with it. Here is a scenario of how + things can fail: A thread is assigned to execute the initialization of a + task. During the initialization, the task stored some data related to it + in the thread using OCIThread key functions. After the initialization, + the thread is returned back to the threads pool. Later, the threads pool + manager assigned another thread to perform some operations on the task, + and the task needs to retrieve those data it stored earlier in + initialization. Since the task is running in another thread, it will not + be able to retrieve the same data back! Applications that use thread + pools should be aware of this and be cautious when using OCIThread key + functions. + + + 1.2.1.3 OCIThreadKeyDestFunc - OCIThread Key Destructor Function Type + ------------------------------------------------------------------------ + + This is the type of a pointer to a key's destructor routine. Keys can be + associated with a destructor routine when they are created (see + 'OCIThreadKeyInit()'). + + A key's destructor routine will be called whenever a thread that has a + non-NULL value for the key terminates. + + The destructor routine returns nothing and takes one parameter. The + parameter will be the value that was set for key when the thread + terminated. + + The destructor routine is guaranteed to be called on a thread's value + in the key after the termination of the thread and before process + termination. No more precise guarantee can be made about the timing + of the destructor routine call; thus no code in the process may assume + any post-condition of the destructor routine. In particular, the + destructor is not guaranteed to execute before a join call on the + terminated thread returns. + + + 1.2.1.4 OCIThreadId - OCIThread Thread ID + -------------------------------------------- + + Type 'OCIThreadId' is the type that will be used to identify a thread. + At any given time, no two threads will ever have the same 'OCIThreadId'. + However, 'OCIThreadId' values can be recycled; i.e., once a thread dies, + a new thread may be created that has the same 'OCIThreadId' as the one + that died. In particular, the thread ID must uniquely identify a thread + T within a process, and it must be consistent and valid in all threads U + of the process for which it can be guaranteed that T is running + concurrently with U. The thread ID for a thread T must be retrievable + within thread T. This will be done via OCIThreadIdGet(). + + The 'OCIThreadId' type supports the concept of a NULL thread ID: the NULL + thread ID will never be the same as the ID of an actual thread. + + + + 1.2.2 Function prototypes for passive primitives + -------------------------------------------------- + + 1.2.2.1 Mutex functions + ------------------------- + + OCIThreadMutexInit - OCIThread MuteX Initialize + ----------------------------------------------- + + Description + + This allocate and initializes a mutex. All mutexes must be + initialized prior to use. + + Prototype + + sword OCIThreadMutexInit(dvoid *hndl, OCIError *err, + OCIThreadMutex **mutex); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error and OCI_ERROR + is returned, the error is recorded in err and diagnostic + information can be obtained by calling OCIErrorGet(). + + mutex(OUT): The mutex to initialize. + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + Notes + + Multiple threads must not initialize the same mutex simultaneously. + Also, a mutex must not be reinitialized until it has been destroyed (see + 'OCIThreadMutexDestroy()'). + + OCIThreadMutexDestroy - OCIThread MuteX Destroy + ----------------------------------------------- + + Description + + This destroys and deallocate a mutex. Each mutex must be destroyed + once it is no longer needed. + + Prototype + + sword OCIThreadMutexDestroy(dvoid *hndl, OCIError *err, + OCIThreadMutex **mutex); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error and OCI_ERROR + is returned, the error is recorded in err and diagnostic + information can be obtained by calling OCIErrorGet(). + + mutex(IN/OUT): The mutex to destroy. + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + Notes + + It is not legal to destroy a mutex that is uninitialized or is currently + held by a thread. The destruction of a mutex must not occur concurrently + with any other operations on the mutex. A mutex must not be used after + it has been destroyed. + + + OCIThreadMutexAcquire - OCIThread MuteX Acquire + ----------------------------------------------- + + Description + + This acquires a mutex for the thread in which it is called. If the mutex + is held by another thread, the calling thread is blocked until it can + acquire the mutex. + + Prototype + + sword OCIThreadMutexAcquire(dvoid *hndl, OCIError *err, + OCIThreadMutex *mutex); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error, it is + recorded in err and this function returns OCI_ERROR. + Diagnostic information can be obtained by calling + OCIErrorGet(). + + mutex(IN/OUT): The mutex to acquire. + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + Notes + + It is illegal to attempt to acquire an uninitialized mutex. + + This function's behavior is undefined if it is used by a thread to + acquire a mutex that is already held by that thread. + + + + OCIThreadMutexRelease - OCIThread MuteX Release + ----------------------------------------------- + + Description + + This releases a mutex. If there are any threads blocked on the mutex, + one of them will acquire it and become unblocked. + + Prototype + + sword OCIThreadMutexRelease(dvoid *hndl, OCIError *err, + OCIThreadMutex *mutex); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error and OCI_ERROR + is returned, the error is recorded in err and diagnostic + information can be obtained by calling OCIErrorGet(). + + mutex(IN/OUT): The mutex to release. + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + Notes + + It is illegal to attempt to release an uninitialized mutex. It is also + illegal for a thread to release a mutex that it does not hold. + + + OCIThreadKeyInit - OCIThread KeY Initialize + ------------------------------------------- + + Description + + This creates a key. Each call to this routine allocate and generates + a new key that is distinct from all other keys. + + Prototype + + sword OCIThreadKeyInit(dvoid *hndl, OCIError *err, OCIThreadKey **key, + OCIThreadKeyDestFunc destFn); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error and OCI_ERROR + is returned, the error is recorded in err and diagnostic + information can be obtained by calling OCIErrorGet(). + + key(OUT): The 'OCIThreadKey' in which to create the new key. + + destFn(IN): The destructor for the key. NULL is permitted. + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + Notes + + Once this function executes successfully, a pointer to an allocated and + initialized key is return. That key can be used with 'OCIThreadKeyGet()' + and 'OCIThreadKeySet()'. The initial value of the key will be 'NULL' for + all threads. + + It is illegal for this function to be called more than once to create the + same key (i.e., to be called more than once with the same value for the + 'key' parameter). + + If the 'destFn' parameter is not NULL, the routine pointed to by 'destFn' + will be called whenever a thread that has a non-NULL value for the key + terminates. The routine will be called with one parameter. The + parameter will be the key's value for the thread at the time at which the + thread terminated. + If the key does not need a destructor function, pass NULL for 'destFn'. + + + OCIThreadKeyDestroy - OCIThread KeY DESTROY + ------------------------------------------- + + Description + + Destroy and deallocate the key pointed to by 'key'. + + Prototype + + sword OCIThreadKeyDestroy(dvoid *hndl, OCIError *err, + OCIThreadKey **key); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error and OCI_ERROR + is returned, the error is recorded in err and diagnostic + information can be obtained by calling OCIErrorGet(). + + key(IN/OUT): The 'OCIThreadKey' in which to destroy the key. + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + Notes + + This is different from the destructor function callback passed to the + key create routine. This new destroy function 'OCIThreadKeyDestroy' is + used to terminate any resources OCI THREAD acquired when it created + 'key'. [The 'OCIThreadKeyDestFunc' callback type is a key VALUE + destructor; it does in no way operate on the key itself.] + + This must be called once the user has finished using the key. Not + calling the key destroy function may result in memory leaks. + + + + + 1.2.2.2 Thread Key operations + ------------------------------- + + OCIThreadKeyGet - OCIThread KeY Get value + ----------------------------------------- + + Description + + This gets the calling thread's current value for a key. + + Prototype + + sword OCIThreadKeyGet(dvoid *hndl, OCIError *err, OCIThreadKey *key, + dvoid **pValue); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error and OCI_ERROR + is returned, the error is recorded in err and diagnostic + information can be obtained by calling OCIErrorGet(). + + key(IN): The key. + + pValue(IN/OUT): The location in which to place the thread-specific + key value. + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + Notes + + It is illegal to use this function on a key that has not been created + using 'OCIThreadKeyInit()'. + + If the calling thread has not yet assigned a value to the key, 'NULL' is + placed in the location pointed to by 'pValue'. + + + OCIThreadKeySet - OCIThread KeY Set value + ----------------------------------------- + + Description + + This sets the calling thread's value for a key. + + Prototype + + sword OCIThreadKeySet(dvoid *hndl, OCIError *err, OCIThreadKey *key, + dvoid *value); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error and OCI_ERROR + is returned, the error is recorded in err and diagnostic + information can be obtained by calling OCIErrorGet(). + + key(IN/OUT): The key. + + value(IN): The thread-specific value to set in the key. + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + Notes + + It is illegal to use this function on a key that has not been created + using 'OCIThreadKeyInit()'. + + 1.2.2.3 Thread Id + -------------------- + + OCIThreadIdInit - OCIThread Thread Id INITialize + -------------------------------------------------- + + Description + + Allocate and initialize the thread id 'tid'. + + Prototype + + sword OCIThreadIdInit(dvoid *hndl, OCIError *err, OCIThreadId **tid); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error and OCI_ERROR + is returned, the error is recorded in err and diagnostic + information can be obtained by calling OCIErrorGet(). + + tid (OUT): Pointer to the thread ID to initialize. + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + + OCIThreadIdDestroy - OCIThread Thread Id DESTROY + -------------------------------------------------- + + Description + + Destroy and deallocate the thread id 'tid'. + + Prototype + + sword OCIThreadIdDestroy(dvoid *hndl, OCIError *err, OCIThreadId **tid); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error and OCI_ERROR + is returned, the error is recorded in err and diagnostic + information can be obtained by calling OCIErrorGet(). + + tid(IN/OUT): Pointer to the thread ID to destroy. + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + Note + + 'tid' should be initialized by OCIThreadIdInit(). + + + OCIThreadIdSet - OCIThread Thread Id Set + ----------------------------------------- + + Description + + This sets one 'OCIThreadId' to another. + + Prototype + + sword OCIThreadIdSet(dvoid *hndl, OCIError *err, + OCIThreadId *tidDest, + OCIThreadId *tidSrc); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error and OCI_ERROR + is returned, the error is recorded in err and diagnostic + information can be obtained by calling OCIErrorGet(). + + tidDest(OUT): This should point to the location of the 'OCIThreadId' + to be set to. + + tidSrc(IN): This should point to the 'OCIThreadId' to set from. + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + Notes + + 'tid' should be initialized by OCIThreadIdInit(). + + + OCIThreadIdSetNull - OCIThread Thread Id Set Null + --------------------------------------------------------- + + Description + + This sets the NULL thread ID to a given 'OCIThreadId'. + + Prototype + + sword OCIThreadIdSetNull(dvoid *hndl, OCIError *err, + OCIThreadId *tid); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error, it is + recorded in err and this function returns OCI_ERROR. + Diagnostic information can be obtained by calling + OCIErrorGet(). + + tid(OUT): This should point to the 'OCIThreadId' in which to put + the NULL thread ID. + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + Notes + + 'tid' should be initialized by OCIThreadIdInit(). + + + OCIThreadIdGet - OCIThread Thread Id Get + ------------------------------------------ + + Description + + This retrieves the 'OCIThreadId' of the thread in which it is called. + + Prototype + + sword OCIThreadIdGet(dvoid *hndl, OCIError *err, + OCIThreadId *tid); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error and OCI_ERROR + is returned, the error is recorded in err and diagnostic + information can be obtained by calling OCIErrorGet(). + + tid(OUT): This should point to the location in which to place the + ID of the calling thread. + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + Notes + + 'tid' should be initialized by OCIThreadIdInit(). + + When OCIThread is used in a single-threaded environment, + OCIThreadIdGet() will always place the same value in the location + pointed to by 'tid'. The exact value itself is not important. The + important thing is that it is not the same as the NULL thread ID and + that it is always the same value. + + + OCIThreadIdSame - OCIThread Thread Ids Same? + ---------------------------------------------- + + Description + + This determines whether or not two 'OCIThreadId's represent the same + thread. + + Prototype + + sword OCIThreadIdSame(dvoid *hndl, OCIError *err, + OCIThreadId *tid1, OCIThreadId *tid2, + boolean *result); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error and OCI_ERROR + is returned, the error is recorded in err and diagnostic + information can be obtained by calling OCIErrorGet(). + + tid1(IN): Pointer to the first 'OCIThreadId'. + + tid2(IN): Pointer to the second 'OCIThreadId'. + + result(IN/OUT): Pointer to the result. + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + Notes + + If 'tid1' and 'tid2' represent the same thread, 'result' is set to TRUE. + Otherwise, 'result' is set to FALSE. + + 'result' is set to TRUE if both 'tid1' and 'tid2' are the NULL thread ID. + + 'ti1d' and 'tid2' should be initialized by OCIThreadIdInit(). + + + OCIThreadIdNull - OCIThread Thread Id NULL? + --------------------------------------------- + + Description + + This determines whether or not a given 'OCIThreadId' is the NULL thread + ID. + + Prototype + + sword OCIThreadIdNull(dvoid *hndl, OCIError *err, + OCIThreadId *tid, + boolean *result); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error and OCI_ERROR + is returned, the error is recorded in err and diagnostic + information can be obtained by calling OCIErrorGet(). + + tid(IN): Pointer to the 'OCIThreadId' to check. + + result(IN/OUT): Pointer to the result. + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + Notes + + If 'tid' is the NULL thread ID, 'result' is set to TRUE. Otherwise, + 'result' is set to FALSE. + + 'tid' should be initialized by OCIThreadIdInit(). + + + 1.3 Active Threading Primitives + ================================= + + The active threading primitives deal with the manipulation of actual + threads. Because the specifications of most of these primitives require + that it be possible to have multiple threads, they work correctly only in + the enabled OCIThread; In the disabled OCIThread, they always return + failure. The exception is OCIThreadHandleGet(); it may be called in a + single-threaded environment, in which case it will have no effect. + + Active primitives should only be called by code running in a multi-threaded + environment. You can call OCIThreadIsMulti() to determine whether the + environment is multi-threaded or single-threaded. + + + 1.3.1 Types + -------------- + + 1.3.1.1 OCIThreadHandle - OCIThread Thread Handle + ------------------------------------------------------ + + Type 'OCIThreadHandle' is used to manipulate a thread in the active + primitives: OCIThreadJoin()and OCIThreadClose(). A thread handle opened by + OCIThreadCreate() must be closed in a matching call to + OCIThreadClose(). A thread handle is invalid after the call to + OCIThreadClose(). + + The distinction between a thread ID and a thread handle in OCIThread usage + follows the distinction between the thread ID and the thread handle on + Windows NT. On many platforms, the underlying native types are the same. + + + 1.3.2 Functions + ------------------ + + OCIThreadHndInit - OCIThread HaNDle Initialize + ---------------------------------------------- + + Description + + Allocate and initialize the thread handle. + + Prototype + + sword OCIThreadHndInit(dvoid *hndl, OCIError *err, + OCIThreadHandle **thnd); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error and OCI_ERROR + is returned, the error is recorded in err and diagnostic + information can be obtained by calling OCIErrorGet(). + + thnd(OUT): The address of pointer to the thread handle to initialize. + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + + OCIThreadHndDestroy - OCIThread HaNDle Destroy + ---------------------------------------------- + + Description + + Destroy and deallocate the thread handle. + + Prototype + + sword OCIThreadHndDestroy(dvoid *hndl, OCIError *err, + OCIThreadHandle **thnd); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error and OCI_ERROR + is returned, the error is recorded in err and diagnostic + information can be obtained by calling OCIErrorGet(). + + thnd(IN/OUT): The address of pointer to the thread handle to destroy. + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + Notes + + 'thnd' should be initialized by OCIThreadHndInit(). + + + OCIThreadCreate - OCIThread Thread Create + ----------------------------------------- + + Description + + This creates a new thread. + + Prototype + + sword OCIThreadCreate(dvoid *hndl, OCIError *err, + void (*start)(dvoid *), dvoid *arg, + OCIThreadId *tid, OCIThreadHandle *tHnd); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error and OCI_ERROR + is returned, the error is recorded in err and diagnostic + information can be obtained by calling OCIErrorGet(). + + start(IN): The function in which the new thread should begin + execution. + + arg(IN): The argument to give the function pointed to by 'start'. + + tid(IN/OUT): If not NULL, gets the ID for the new thread. + + tHnd(IN/OUT): If not NULL, gets the handle for the new thread. + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + Notes + + The new thread will start by executing a call to the function pointed + to by 'start' with the argument given by 'arg'. When that function + returns, the new thread will terminate. The function should not + return a value and should accept one parameter, a 'dvoid *'. + + The call to OCIThreadCreate() must be matched by a call to + OCIThreadClose() if and only if tHnd is non-NULL. + + If tHnd is NULL, a thread ID placed in *tid will not be valid in the + calling thread because the timing of the spawned thread's termination + is unknown. + + 'tid' should be initialized by OCIThreadIdInit(). + + 'thnd' should be initialized by OCIThreadHndInit(). + + + + OCIThreadJoin - OCIThread Thread Join + ------------------------------------- + + Description + + This function allows the calling thread to 'join' with another thread. + It blocks the caller until the specified thread terminates. + + Prototype + + sword OCIThreadJoin(dvoid *hndl, OCIError *err, OCIThreadHandle *tHnd); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error and OCI_ERROR + is returned, the error is recorded in err and diagnostic + information can be obtained by calling OCIErrorGet(). + + tHnd(IN): The 'OCIThreadHandle' of the thread to join with. + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + Notes + + 'thnd' should be initialized by OCIThreadHndInit(). + + The result of multiple threads all trying to join with the same thread is + undefined. + + + OCIThreadClose - OCIThread Thread Close + --------------------------------------- + + Description + + This function should be called to close a thread handle. + + Prototype + + sword OCIThreadClose(dvoid *hndl, OCIError *err, OCIThreadHandle *tHnd); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error and OCI_ERROR + is returned, the error is recorded in err and diagnostic + information can be obtained by calling OCIErrorGet(). + + tHnd(IN/OUT): The OCIThread thread handle to close. + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + Notes + + 'thnd' should be initialized by OCIThreadHndInit(). + + Both thread handle and the thread ID that was returned by the same call + to OCIThreadCreate() are invalid after the call to OCIThreadClose(). + + + + OCIThreadHandleGet - OCIThread Thread Get Handle + ------------------------------------------------ + + Description + + Retrieve the 'OCIThreadHandle' of the thread in which it is called. + + Prototype + + sword OCIThreadHandleGet(dvoid *hndl, OCIError *err, + OCIThreadHandle *tHnd); + + hndl(IN/OUT): The OCI environment or session handle. + + err(IN/OUT): The OCI error handle. If there is an error and OCI_ERROR + is returned, the error is recorded in err and diagnostic + information can be obtained by calling OCIErrorGet(). + + tHnd(IN/OUT): If not NULL, the location to place the thread + handle for the thread. + + Returns + + OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE. + + Notes + + 'thnd' should be initialized by OCIThreadHndInit(). + + The thread handle 'tHnd' retrieved by this function must be closed + with OCIThreadClose() and destroyed by OCIThreadHndDestroy() after it + is used. + + + + + 1.4 Using OCIThread + ===================== + + This section summarizes some of the more important details relating to the use + of OCIThread. + + * Process initialization + + OCIThread only requires that the process initialization function + ('OCIThreadProcessInit()') be called when OCIThread is being used in a + multi-threaded application. Failing to call 'OCIThreadProcessInit()' in + a single-threaded application is not an error. + + * OCIThread initialization + + Separate calls to 'OCIThreadInit()' will all return the same OCIThread + context. + + Also, remember that each call to 'OCIThreadInit()' must eventually be + matched by a call to 'OCIThreadTerm()'. + + * Active vs. Passive Threading primitives + + OCIThread client code written without using any active primitives can be + compiled and used without change on both single-threaded and + multi-threaded platforms. + + OCIThread client code written using active primitives will only work + correctly on multi-threaded platforms. In order to write a version of the + same application to run on single-threaded platform, it is necessary to + branch the your code, whether by branching versions of the source file or + by branching at runtime with the OCIThreadIsMulti() call. + + ***************************************************************************** } + {**************************************************************************** + ACTUAL PROTOTYPE DECLARATIONS + ***************************************************************************** } +{$IFNDEF LinkDynamically} + procedure OCIThreadProcessInit;cdecl;external ocilib name 'OCIThreadProcessInit'; + + function OCIThreadInit(hndl:Pdvoid; err:POCIError):sword;cdecl;external ocilib name 'OCIThreadInit'; + + function OCIThreadTerm(hndl:Pdvoid; err:POCIError):sword;cdecl;external ocilib name 'OCIThreadTerm'; + + function OCIThreadIsMulti:boolean;cdecl;external ocilib name 'OCIThreadIsMulti'; + + function OCIThreadMutexInit(hndl:Pdvoid; err:POCIError; var mutex:POCIThreadMutex):sword;cdecl;external ocilib name 'OCIThreadMutexInit'; + + function OCIThreadMutexDestroy(hndl:Pdvoid; err:POCIError; var mutex:POCIThreadMutex):sword;cdecl;external ocilib name 'OCIThreadMutexDestroy'; + + function OCIThreadMutexAcquire(hndl:Pdvoid; err:POCIError; mutex:POCIThreadMutex):sword;cdecl;external ocilib name 'OCIThreadMutexAcquire'; + + function OCIThreadMutexRelease(hndl:Pdvoid; err:POCIError; mutex:POCIThreadMutex):sword;cdecl;external ocilib name 'OCIThreadMutexRelease'; + + function OCIThreadKeyInit(hndl:Pdvoid; err:POCIError; var key:POCIThreadKey; destFn:OCIThreadKeyDestFunc):sword;cdecl;external ocilib name 'OCIThreadKeyInit'; + + function OCIThreadKeyDestroy(hndl:Pdvoid; err:POCIError; var key:POCIThreadKey):sword;cdecl;external ocilib name 'OCIThreadKeyDestroy'; + + function OCIThreadKeyGet(hndl:Pdvoid; err:POCIError; key:POCIThreadKey; pValue:PPdvoid):sword;cdecl;external ocilib name 'OCIThreadKeyGet'; + + function OCIThreadKeySet(hndl:Pdvoid; err:POCIError; key:POCIThreadKey; value:Pdvoid):sword;cdecl;external ocilib name 'OCIThreadKeySet'; + + function OCIThreadIdInit(hndl:Pdvoid; err:POCIError; var tid:POCIThreadId):sword;cdecl;external ocilib name 'OCIThreadIdInit'; + + function OCIThreadIdDestroy(hndl:Pdvoid; err:POCIError; var tid:POCIThreadId):sword;cdecl;external ocilib name 'OCIThreadIdDestroy'; + + function OCIThreadIdSet(hndl:Pdvoid; err:POCIError; tidDest:POCIThreadId; tidSrc:POCIThreadId):sword;cdecl;external ocilib name 'OCIThreadIdSet'; + + function OCIThreadIdSetNull(hndl:Pdvoid; err:POCIError; tid:POCIThreadId):sword;cdecl;external ocilib name 'OCIThreadIdSetNull'; + + function OCIThreadIdGet(hndl:Pdvoid; err:POCIError; tid:POCIThreadId):sword;cdecl;external ocilib name 'OCIThreadIdGet'; + + function OCIThreadIdSame(hndl:Pdvoid; err:POCIError; tid1:POCIThreadId; tid2:POCIThreadId; result:Pboolean):sword;cdecl;external ocilib name 'OCIThreadIdSame'; + + function OCIThreadIdNull(hndl:Pdvoid; err:POCIError; tid:POCIThreadId; result:Pboolean):sword;cdecl;external ocilib name 'OCIThreadIdNull'; + + function OCIThreadHndInit(hndl:Pdvoid; err:POCIError; var thnd:POCIThreadHandle):sword;cdecl;external ocilib name 'OCIThreadHndInit'; + + function OCIThreadHndDestroy(hndl:Pdvoid; err:POCIError; var thnd:POCIThreadHandle):sword;cdecl;external ocilib name 'OCIThreadHndDestroy'; +{$ELSE} +var OCIThreadProcessInit : procedure;cdecl; + + OCIThreadInit : function (hndl:Pdvoid; err:POCIError):sword;cdecl; + + OCIThreadTerm : function (hndl:Pdvoid; err:POCIError):sword;cdecl; + + OCIThreadIsMulti: function : boolean;cdecl; + + OCIThreadMutexInit : function (hndl:Pdvoid; err:POCIError; var mutex:POCIThreadMutex):sword;cdecl; + + OCIThreadMutexDestroy : function (hndl:Pdvoid; err:POCIError; var mutex:POCIThreadMutex):sword;cdecl; + + OCIThreadMutexAcquire : function (hndl:Pdvoid; err:POCIError; mutex:POCIThreadMutex):sword;cdecl; + + OCIThreadMutexRelease : function (hndl:Pdvoid; err:POCIError; mutex:POCIThreadMutex):sword;cdecl; + + OCIThreadKeyInit : function (hndl:Pdvoid; err:POCIError; var key:POCIThreadKey; destFn:OCIThreadKeyDestFunc):sword;cdecl; + + OCIThreadKeyDestroy : function (hndl:Pdvoid; err:POCIError; var key:POCIThreadKey):sword;cdecl; + + OCIThreadKeyGet : function (hndl:Pdvoid; err:POCIError; key:POCIThreadKey; pValue:PPdvoid):sword;cdecl; + + OCIThreadKeySet : function (hndl:Pdvoid; err:POCIError; key:POCIThreadKey; value:Pdvoid):sword;cdecl; + + OCIThreadIdInit : function (hndl:Pdvoid; err:POCIError; var tid:POCIThreadId):sword;cdecl; + + OCIThreadIdDestroy : function (hndl:Pdvoid; err:POCIError; var tid:POCIThreadId):sword;cdecl; + + OCIThreadIdSet : function (hndl:Pdvoid; err:POCIError; tidDest:POCIThreadId; tidSrc:POCIThreadId):sword;cdecl; + + OCIThreadIdSetNull : function (hndl:Pdvoid; err:POCIError; tid:POCIThreadId):sword;cdecl; + + OCIThreadIdGet : function (hndl:Pdvoid; err:POCIError; tid:POCIThreadId):sword;cdecl; + + OCIThreadIdSame : function (hndl:Pdvoid; err:POCIError; tid1:POCIThreadId; tid2:POCIThreadId; result:Pboolean):sword;cdecl; + + OCIThreadIdNull : function (hndl:Pdvoid; err:POCIError; tid:POCIThreadId; result:Pboolean):sword;cdecl; + + OCIThreadHndInit : function (hndl:Pdvoid; err:POCIError; var thnd:POCIThreadHandle):sword;cdecl; + + OCIThreadHndDestroy : function (hndl:Pdvoid; err:POCIError; var thnd:POCIThreadHandle):sword;cdecl; +{$ENDIF} + + type + tstart = procedure (_para1:Pdvoid); + +{$IFNDEF LinkDynamically} + function OCIThreadCreate(hndl:Pdvoid; err:POCIError; start :tstart; arg:Pdvoid; tid:POCIThreadId; + tHnd:POCIThreadHandle):sword;cdecl;external ocilib name 'OCIThreadCreate'; + + function OCIThreadJoin(hndl:Pdvoid; err:POCIError; tHnd:POCIThreadHandle):sword;cdecl;external ocilib name 'OCIThreadJoin'; + + function OCIThreadClose(hndl:Pdvoid; err:POCIError; tHnd:POCIThreadHandle):sword;cdecl;external ocilib name 'OCIThreadClose'; + + function OCIThreadHandleGet(hndl:Pdvoid; err:POCIError; tHnd:POCIThreadHandle):sword;cdecl;external ocilib name 'OCIThreadHandleGet'; +{$ELSE} +var OCIThreadCreate : function (hndl:Pdvoid; err:POCIError; start :tstart; arg:Pdvoid; tid:POCIThreadId; + tHnd:POCIThreadHandle):sword;cdecl; + + OCIThreadJoin : function (hndl:Pdvoid; err:POCIError; tHnd:POCIThreadHandle):sword;cdecl; + + OCIThreadClose : function (hndl:Pdvoid; err:POCIError; tHnd:POCIThreadHandle):sword;cdecl; + + OCIThreadHandleGet : function (hndl:Pdvoid; err:POCIError; tHnd:POCIThreadHandle):sword;cdecl; +{$ENDIF} + + {----------------- End OCI Thread interface Extensions --------------------- } + {------------------ Begin OCI Row Callback Interfaces ---------------------- } + + type + + OCIBindRowCallback = function (ctx:Pdvoid):sword;cdecl; + + OCIFetchRowCallback = function (ctx:Pdvoid):sword;cdecl; + {------------------ Begin OCI Row Callback Interfaces ---------------------- } + {--------------- Begin OCI Client Notification Interfaces ------------------ } + + OCISubscriptionNotify = function (ctx:Pdvoid; subscrhp:POCISubscription; pay:Pdvoid; payl:ub4; desc:Pdvoid; + mode:ub4):ub4;cdecl; + +{$IFNDEF LinkDynamically} + function OCISubscriptionRegister(svchp:POCISvcCtx; var subscrhpp:POCISubscription; count:ub2; errhp:POCIError; mode:ub4):sword;cdecl;external ocilib name 'OCISubscriptionRegister'; + + function OCISubscriptionPost(svchp:POCISvcCtx; var subscrhpp:POCISubscription; count:ub2; errhp:POCIError; mode:ub4):sword;cdecl;external ocilib name 'OCISubscriptionPost'; + + function OCISubscriptionUnRegister(svchp:POCISvcCtx; subscrhp:POCISubscription; errhp:POCIError; mode:ub4):sword;cdecl;external ocilib name 'OCISubscriptionUnRegister'; + + function OCISubscriptionDisable(subscrhp:POCISubscription; errhp:POCIError; mode:ub4):sword;cdecl;external ocilib name 'OCISubscriptionDisable'; + + function OCISubscriptionEnable(subscrhp:POCISubscription; errhp:POCIError; mode:ub4):sword;cdecl;external ocilib name 'OCISubscriptionEnable'; + + {------------------- End OCI Publish/Subscribe Interfaces ------------------ } + {----------------- Extensions to Datetime interfaces ----------------------- } + {--------------------- Actual Prototypes ----------------------------------- } + function OCIDateTimeGetTime(hndl:Pdvoid; err:POCIError; datetime:POCIDateTime; hr:Pub1; mm:Pub1; + ss:Pub1; fsec:Pub4):sword;cdecl;external ocilib name 'OCIDateTimeGetTime'; + + function OCIDateTimeGetDate(hndl:Pdvoid; err:POCIError; date:POCIDateTime; yr:Psb2; mnth:Pub1; + dy:Pub1):sword;cdecl;external ocilib name 'OCIDateTimeGetDate'; + + function OCIDateTimeGetTimeZoneOffset(hndl:Pdvoid; err:POCIError; datetime:POCIDateTime; hr:Psb1; mm:Psb1):sword;cdecl;external ocilib name 'OCIDateTimeGetTimeZoneOffset'; + + function OCIDateTimeConstruct(hndl:Pdvoid; err:POCIError; datetime:POCIDateTime; yr:sb2; mnth:ub1; + dy:ub1; hr:ub1; mm:ub1; ss:ub1; fsec:ub4; + timezone:POraText; timezone_length:size_t):sword;cdecl;external ocilib name 'OCIDateTimeConstruct'; + + function OCIDateTimeSysTimeStamp(hndl:Pdvoid; err:POCIError; sys_date:POCIDateTime):sword;cdecl;external ocilib name 'OCIDateTimeSysTimeStamp'; + + function OCIDateTimeAssign(hndl:Pdvoid; err:POCIError; from:POCIDateTime; cto:POCIDateTime):sword;cdecl;external ocilib name 'OCIDateTimeAssign'; + + function OCIDateTimeToText(hndl:Pdvoid; err:POCIError; date:POCIDateTime; fmt:POraText; fmt_length:ub1; + fsprec:ub1; lang_name:POraText; lang_length:size_t; buf_size:Pub4; buf:POraText):sword;cdecl;external ocilib name 'OCIDateTimeToText'; + + function OCIDateTimeFromText(hndl:Pdvoid; err:POCIError; date_str:POraText; dstr_length:size_t; fmt:POraText; + fmt_length:ub1; lang_name:POraText; lang_length:size_t; date:POCIDateTime):sword;cdecl;external ocilib name 'OCIDateTimeFromText'; + + function OCIDateTimeCompare(hndl:Pdvoid; err:POCIError; date1:POCIDateTime; date2:POCIDateTime; result:Psword):sword;cdecl;external ocilib name 'OCIDateTimeCompare'; + + function OCIDateTimeCheck(hndl:Pdvoid; err:POCIError; date:POCIDateTime; valid:Pub4):sword;cdecl;external ocilib name 'OCIDateTimeCheck'; + + function OCIDateTimeConvert(hndl:Pdvoid; err:POCIError; indate:POCIDateTime; outdate:POCIDateTime):sword;cdecl;external ocilib name 'OCIDateTimeConvert'; + + function OCIDateTimeSubtract(hndl:Pdvoid; err:POCIError; indate1:POCIDateTime; indate2:POCIDateTime; inter:POCIInterval):sword;cdecl;external ocilib name 'OCIDateTimeSubtract'; + + function OCIDateTimeIntervalAdd(hndl:Pdvoid; err:POCIError; datetime:POCIDateTime; inter:POCIInterval; outdatetime:POCIDateTime):sword;cdecl;external ocilib name 'OCIDateTimeIntervalAdd'; + + function OCIDateTimeIntervalSub(hndl:Pdvoid; err:POCIError; datetime:POCIDateTime; inter:POCIInterval; outdatetime:POCIDateTime):sword;cdecl;external ocilib name 'OCIDateTimeIntervalSub'; + + function OCIIntervalSubtract(hndl:Pdvoid; err:POCIError; minuend:POCIInterval; subtrahend:POCIInterval; result:POCIInterval):sword;cdecl;external ocilib name 'OCIIntervalSubtract'; + + function OCIIntervalAdd(hndl:Pdvoid; err:POCIError; addend1:POCIInterval; addend2:POCIInterval; result:POCIInterval):sword;cdecl;external ocilib name 'OCIIntervalAdd'; + + function OCIIntervalMultiply(hndl:Pdvoid; err:POCIError; inter:POCIInterval; nfactor:POCINumber; result:POCIInterval):sword;cdecl;external ocilib name 'OCIIntervalMultiply'; + + function OCIIntervalDivide(hndl:Pdvoid; err:POCIError; dividend:POCIInterval; divisor:POCINumber; result:POCIInterval):sword;cdecl;external ocilib name 'OCIIntervalDivide'; + + function OCIIntervalCompare(hndl:Pdvoid; err:POCIError; inter1:POCIInterval; inter2:POCIInterval; result:Psword):sword;cdecl;external ocilib name 'OCIIntervalCompare'; + + function OCIIntervalFromNumber(hndl:Pdvoid; err:POCIError; inter:POCIInterval; number:POCINumber):sword;cdecl;external ocilib name 'OCIIntervalFromNumber'; + + function OCIIntervalFromText(hndl:Pdvoid; err:POCIError; inpstr:POraText; str_len:size_t; result:POCIInterval):sword;cdecl;external ocilib name 'OCIIntervalFromText'; + + function OCIIntervalToText(hndl:Pdvoid; err:POCIError; inter:POCIInterval; lfprec:ub1; fsprec:ub1; + buffer:POraText; buflen:size_t; resultlen:Psize_t):sword;cdecl;external ocilib name 'OCIIntervalToText'; + + function OCIIntervalToNumber(hndl:Pdvoid; err:POCIError; inter:POCIInterval; number:POCINumber):sword;cdecl;external ocilib name 'OCIIntervalToNumber'; + + function OCIIntervalCheck(hndl:Pdvoid; err:POCIError; interval:POCIInterval; valid:Pub4):sword;cdecl;external ocilib name 'OCIIntervalCheck'; + + function OCIIntervalAssign(hndl:Pdvoid; err:POCIError; ininter:POCIInterval; outinter:POCIInterval):sword;cdecl;external ocilib name 'OCIIntervalAssign'; + + function OCIIntervalSetYearMonth(hndl:Pdvoid; err:POCIError; yr:sb4; mnth:sb4; result:POCIInterval):sword;cdecl;external ocilib name 'OCIIntervalSetYearMonth'; + + function OCIIntervalGetYearMonth(hndl:Pdvoid; err:POCIError; yr:Psb4; mnth:Psb4; result:POCIInterval):sword;cdecl;external ocilib name 'OCIIntervalGetYearMonth'; + + function OCIIntervalSetDaySecond(hndl:Pdvoid; err:POCIError; dy:sb4; hr:sb4; mm:sb4; + ss:sb4; fsec:sb4; result:POCIInterval):sword;cdecl;external ocilib name 'OCIIntervalSetDaySecond'; + + function OCIIntervalGetDaySecond(hndl:Pdvoid; err:POCIError; dy:Psb4; hr:Psb4; mm:Psb4; + ss:Psb4; fsec:Psb4; result:POCIInterval):sword;cdecl;external ocilib name 'OCIIntervalGetDaySecond'; + + function OCIDateTimeToArray(hndl:Pdvoid; err:POCIError; datetime:POCIDateTime; reftz:POCIInterval; outarray:Pub1; + len:Pub4; fsprec:ub1):sword;cdecl;external ocilib name 'OCIDateTimeToArray'; + + function OCIDateTimeFromArray(hndl:Pdvoid; err:POCIError; inarray:Pub1; len:ub4; _type:ub1; + datetime:POCIDateTime; reftz:POCIInterval; fsprec:ub1):sword;cdecl;external ocilib name 'OCIDateTimeFromArray'; + + function OCIDateTimeGetTimeZoneName(hndl:Pdvoid; err:POCIError; datetime:POCIDateTime; buf:Pub1; buflen:Pub4):sword;cdecl;external ocilib name 'OCIDateTimeGetTimeZoneName'; + + function OCIIntervalFromTZ(hndl:Pdvoid; err:POCIError; inpstring:Poratext; str_len:size_t; result:POCIInterval):sword;cdecl;external ocilib name 'OCIIntervalFromTZ'; + + {----------------- End Datetime interface Extensions ----------------------- } + {----------------- Connection Pooling prototypes --------------------------- } + function OCIConnectionPoolCreate(envhp:POCIEnv; errhp:POCIError; poolhp:POCICPool; var poolName:POraText; poolNameLen:Psb4; + dblink:POraText; dblinkLen:sb4; connMin:ub4; connMax:ub4; connIncr:ub4; + poolUserName:POraText; poolUserLen:sb4; poolPassword:POraText; poolPassLen:sb4; mode:ub4):sword;cdecl;external ocilib name 'OCIConnectionPoolCreate'; + + function OCIConnectionPoolDestroy(poolhp:POCICPool; errhp:POCIError; mode:ub4):sword;cdecl;external ocilib name 'OCIConnectionPoolDestroy'; + + {----------------- End Connection Pooling prototypes ----------------------- } + {-------------------- Session Pooling prototypes --------------------------- } + function OCISessionPoolCreate(envhp:POCIEnv; errhp:POCIError; spoolhp:POCISPool; var poolName:POraText; poolNameLen:Pub4; + connStr:POraText; connStrLen:ub4; sessMin:ub4; sessMax:ub4; sessIncr:ub4; + userid:POraText; useridLen:ub4; password:POraText; passwordLen:ub4; mode:ub4):sword;cdecl;external ocilib name 'OCISessionPoolCreate'; + + function OCISessionPoolDestroy(spoolhp:POCISPool; errhp:POCIError; mode:ub4):sword;cdecl;external ocilib name 'OCISessionPoolDestroy'; + + function OCISessionGet(envhp:POCIEnv; errhp:POCIError; var svchp:POCISvcCtx; authhp:POCIAuthInfo; poolName:POraText; + poolName_len:ub4; tagInfo:POraText; tagInfo_len:ub4; var retTagInfo:POraText; retTagInfo_len:Pub4; + found:Pboolean; mode:ub4):sword;cdecl;external ocilib name 'OCISessionGet'; + + function OCISessionRelease(svchp:POCISvcCtx; errhp:POCIError; tag:POraText; tag_len:ub4; mode:ub4):sword;cdecl;external ocilib name 'OCISessionRelease'; + + {-------------------- End Session Pooling prototypes ----------------------- } + { --------------------- OCI Application Context -------------------------- } + function OCIAppCtxSet(sesshndl:pointer; nsptr:Pdvoid; nsptrlen:ub4; attrptr:Pdvoid; attrptrlen:ub4; + valueptr:Pdvoid; valueptrlen:ub4; errhp:POCIError; mode:ub4):sword;cdecl;external ocilib name 'OCIAppCtxSet'; + + function OCIAppCtxClearAll(sesshndl:pointer; nsptr:Pdvoid; nsptrlen:ub4; errhp:POCIError; mode:ub4):sword;cdecl;external ocilib name 'OCIAppCtxClearAll'; + + {-------------------------------- OCIPing ---------------------------------- } + function OCIPing(svchp:POCISvcCtx; errhp:POCIError; mode:ub4):sword;cdecl;external ocilib name 'OCIPing'; + + {----------------- Kerberos Authentication prototypes ---------------------- } + function OCIKerbAttrSet(trgthndlp:POCISession; cred_use:ub4; ftgt_ticket:Pub1; ticket_len:ub4; session_key:Pub1; + skey_len:ub4; ftgt_keytype:ub2; ftgt_ticket_flags:ub4; ftgt_auth_time:sb4; ftgt_start_time:sb4; + ftgt_end_time:sb4; ftgt_renew_time:sb4; ftgt_client_principal:Ptext; ftgt_client_principal_len:ub4; ftgt_client_realm:Ptext; + ftgt_client_realm_len:ub4; errhp:POCIError):sword;cdecl;external ocilib name 'OCIKerbAttrSet'; + + {------------------- End Kerberos Authentication prototypes ---------------- } + {------------------- Database Startup/Shutdown prototypes ------------------ } + function OCIDBStartup(svchp:POCISvcCtx; errhp:POCIError; admhp:POCIAdmin; mode:ub4; flags:ub4):sword;cdecl;external ocilib name 'OCIDBStartup'; + + function OCIDBShutdown(svchp:POCISvcCtx; errhp:POCIError; admhp:POCIAdmin; mode:ub4):sword;cdecl;external ocilib name 'OCIDBShutdown'; + + {------------------ End Database Startup/Shutdown prototypes --------------- } + {----------------------- OCIClientVersion ------------------------------ } + procedure OCIClientVersion(major_version:Psword; minor_version:Psword; update_num:Psword; patch_num:Psword; port_update_num:Psword);cdecl;external ocilib name 'OCIClientVersion'; + + {----------------------- End OCIClientVersion -------------------------- } + {----------------------- HA Event prototypes ------------------------------ } + function OCIInitEventHandle(errhp:POCIError; event:POCIEvent; str:Ptext; size:ub4):sword;cdecl;external ocilib name 'OCIInitEventHandle'; + + {----------------------- End HA Event prototypes -------------------------- } + +{$ELSE} + +var OCISubscriptionRegister : function (svchp:POCISvcCtx; var subscrhpp:POCISubscription; count:ub2; errhp:POCIError; mode:ub4):sword;cdecl; + + OCISubscriptionPost : function (svchp:POCISvcCtx; var subscrhpp:POCISubscription; count:ub2; errhp:POCIError; mode:ub4):sword;cdecl; + + OCISubscriptionUnRegister : function (svchp:POCISvcCtx; subscrhp:POCISubscription; errhp:POCIError; mode:ub4):sword;cdecl; + + OCISubscriptionDisable : function (subscrhp:POCISubscription; errhp:POCIError; mode:ub4):sword;cdecl; + + OCISubscriptionEnable : function (subscrhp:POCISubscription; errhp:POCIError; mode:ub4):sword;cdecl; + + {------------------- End OCI Publish/Subscribe Interfaces ------------------ } + {----------------- Extensions to Datetime interfaces ----------------------- } + {--------------------- Actual Prototypes ----------------------------------- } + OCIDateTimeGetTime : function (hndl:Pdvoid; err:POCIError; datetime:POCIDateTime; hr:Pub1; mm:Pub1; + ss:Pub1; fsec:Pub4):sword;cdecl; + + OCIDateTimeGetDate : function (hndl:Pdvoid; err:POCIError; date:POCIDateTime; yr:Psb2; mnth:Pub1; + dy:Pub1):sword;cdecl; + + OCIDateTimeGetTimeZoneOffset : function (hndl:Pdvoid; err:POCIError; datetime:POCIDateTime; hr:Psb1; mm:Psb1):sword;cdecl; + + OCIDateTimeConstruct : function (hndl:Pdvoid; err:POCIError; datetime:POCIDateTime; yr:sb2; mnth:ub1; + dy:ub1; hr:ub1; mm:ub1; ss:ub1; fsec:ub4; + timezone:POraText; timezone_length:size_t):sword;cdecl; + + OCIDateTimeSysTimeStamp : function (hndl:Pdvoid; err:POCIError; sys_date:POCIDateTime):sword;cdecl; + + OCIDateTimeAssign : function (hndl:Pdvoid; err:POCIError; from:POCIDateTime; cto:POCIDateTime):sword;cdecl; + + OCIDateTimeToText : function (hndl:Pdvoid; err:POCIError; date:POCIDateTime; fmt:POraText; fmt_length:ub1; + fsprec:ub1; lang_name:POraText; lang_length:size_t; buf_size:Pub4; buf:POraText):sword;cdecl; + + OCIDateTimeFromText : function (hndl:Pdvoid; err:POCIError; date_str:POraText; dstr_length:size_t; fmt:POraText; + fmt_length:ub1; lang_name:POraText; lang_length:size_t; date:POCIDateTime):sword;cdecl; + + OCIDateTimeCompare : function (hndl:Pdvoid; err:POCIError; date1:POCIDateTime; date2:POCIDateTime; result:Psword):sword;cdecl; + + OCIDateTimeCheck : function (hndl:Pdvoid; err:POCIError; date:POCIDateTime; valid:Pub4):sword;cdecl; + + OCIDateTimeConvert : function (hndl:Pdvoid; err:POCIError; indate:POCIDateTime; outdate:POCIDateTime):sword;cdecl; + + OCIDateTimeSubtract : function (hndl:Pdvoid; err:POCIError; indate1:POCIDateTime; indate2:POCIDateTime; inter:POCIInterval):sword;cdecl; + + OCIDateTimeIntervalAdd : function (hndl:Pdvoid; err:POCIError; datetime:POCIDateTime; inter:POCIInterval; outdatetime:POCIDateTime):sword;cdecl; + + OCIDateTimeIntervalSub : function (hndl:Pdvoid; err:POCIError; datetime:POCIDateTime; inter:POCIInterval; outdatetime:POCIDateTime):sword;cdecl; + + OCIIntervalSubtract : function (hndl:Pdvoid; err:POCIError; minuend:POCIInterval; subtrahend:POCIInterval; result:POCIInterval):sword;cdecl; + + OCIIntervalAdd : function (hndl:Pdvoid; err:POCIError; addend1:POCIInterval; addend2:POCIInterval; result:POCIInterval):sword;cdecl; + + OCIIntervalMultiply : function (hndl:Pdvoid; err:POCIError; inter:POCIInterval; nfactor:POCINumber; result:POCIInterval):sword;cdecl; + + OCIIntervalDivide : function (hndl:Pdvoid; err:POCIError; dividend:POCIInterval; divisor:POCINumber; result:POCIInterval):sword;cdecl; + + OCIIntervalCompare : function (hndl:Pdvoid; err:POCIError; inter1:POCIInterval; inter2:POCIInterval; result:Psword):sword;cdecl; + + OCIIntervalFromNumber : function (hndl:Pdvoid; err:POCIError; inter:POCIInterval; number:POCINumber):sword;cdecl; + + OCIIntervalFromText : function (hndl:Pdvoid; err:POCIError; inpstr:POraText; str_len:size_t; result:POCIInterval):sword;cdecl; + + OCIIntervalToText : function (hndl:Pdvoid; err:POCIError; inter:POCIInterval; lfprec:ub1; fsprec:ub1; + buffer:POraText; buflen:size_t; resultlen:Psize_t):sword;cdecl; + + OCIIntervalToNumber : function (hndl:Pdvoid; err:POCIError; inter:POCIInterval; number:POCINumber):sword;cdecl; + + OCIIntervalCheck : function (hndl:Pdvoid; err:POCIError; interval:POCIInterval; valid:Pub4):sword;cdecl; + + OCIIntervalAssign : function (hndl:Pdvoid; err:POCIError; ininter:POCIInterval; outinter:POCIInterval):sword;cdecl; + + OCIIntervalSetYearMonth : function (hndl:Pdvoid; err:POCIError; yr:sb4; mnth:sb4; result:POCIInterval):sword;cdecl; + + OCIIntervalGetYearMonth : function (hndl:Pdvoid; err:POCIError; yr:Psb4; mnth:Psb4; result:POCIInterval):sword;cdecl; + + OCIIntervalSetDaySecond : function (hndl:Pdvoid; err:POCIError; dy:sb4; hr:sb4; mm:sb4; + ss:sb4; fsec:sb4; result:POCIInterval):sword;cdecl; + + OCIIntervalGetDaySecond : function (hndl:Pdvoid; err:POCIError; dy:Psb4; hr:Psb4; mm:Psb4; + ss:Psb4; fsec:Psb4; result:POCIInterval):sword;cdecl; + + OCIDateTimeToArray : function (hndl:Pdvoid; err:POCIError; datetime:POCIDateTime; reftz:POCIInterval; outarray:Pub1; + len:Pub4; fsprec:ub1):sword;cdecl; + + OCIDateTimeFromArray : function (hndl:Pdvoid; err:POCIError; inarray:Pub1; len:ub4; _type:ub1; + datetime:POCIDateTime; reftz:POCIInterval; fsprec:ub1):sword;cdecl; + + OCIDateTimeGetTimeZoneName : function (hndl:Pdvoid; err:POCIError; datetime:POCIDateTime; buf:Pub1; buflen:Pub4):sword;cdecl; + + OCIIntervalFromTZ : function (hndl:Pdvoid; err:POCIError; inpstring:Poratext; str_len:size_t; result:POCIInterval):sword;cdecl; + + {----------------- End Datetime interface Extensions ----------------------- } + {----------------- Connection Pooling prototypes --------------------------- } + OCIConnectionPoolCreate : function (envhp:POCIEnv; errhp:POCIError; poolhp:POCICPool; var poolName:POraText; poolNameLen:Psb4; + dblink:POraText; dblinkLen:sb4; connMin:ub4; connMax:ub4; connIncr:ub4; + poolUserName:POraText; poolUserLen:sb4; poolPassword:POraText; poolPassLen:sb4; mode:ub4):sword;cdecl; + + OCIConnectionPoolDestroy : function (poolhp:POCICPool; errhp:POCIError; mode:ub4):sword;cdecl; + + {----------------- End Connection Pooling prototypes ----------------------- } + {-------------------- Session Pooling prototypes --------------------------- } + OCISessionPoolCreate : function (envhp:POCIEnv; errhp:POCIError; spoolhp:POCISPool; var poolName:POraText; poolNameLen:Pub4; + connStr:POraText; connStrLen:ub4; sessMin:ub4; sessMax:ub4; sessIncr:ub4; + userid:POraText; useridLen:ub4; password:POraText; passwordLen:ub4; mode:ub4):sword;cdecl; + + OCISessionPoolDestroy : function (spoolhp:POCISPool; errhp:POCIError; mode:ub4):sword;cdecl; + + OCISessionGet : function (envhp:POCIEnv; errhp:POCIError; var svchp:POCISvcCtx; authhp:POCIAuthInfo; poolName:POraText; + poolName_len:ub4; tagInfo:POraText; tagInfo_len:ub4; var retTagInfo:POraText; retTagInfo_len:Pub4; + found:Pboolean; mode:ub4):sword;cdecl; + + OCISessionRelease : function (svchp:POCISvcCtx; errhp:POCIError; tag:POraText; tag_len:ub4; mode:ub4):sword;cdecl; + + {-------------------- End Session Pooling prototypes ----------------------- } + { --------------------- OCI Application Context -------------------------- } + OCIAppCtxSet : function (sesshndl:pointer; nsptr:Pdvoid; nsptrlen:ub4; attrptr:Pdvoid; attrptrlen:ub4; + valueptr:Pdvoid; valueptrlen:ub4; errhp:POCIError; mode:ub4):sword;cdecl; + + OCIAppCtxClearAll : function (sesshndl:pointer; nsptr:Pdvoid; nsptrlen:ub4; errhp:POCIError; mode:ub4):sword;cdecl; + + {-------------------------------- OCIPing ---------------------------------- } + OCIPing : function (svchp:POCISvcCtx; errhp:POCIError; mode:ub4):sword;cdecl; + + {----------------- Kerberos Authentication prototypes ---------------------- } + OCIKerbAttrSet : function (trgthndlp:POCISession; cred_use:ub4; ftgt_ticket:Pub1; ticket_len:ub4; session_key:Pub1; + skey_len:ub4; ftgt_keytype:ub2; ftgt_ticket_flags:ub4; ftgt_auth_time:sb4; ftgt_start_time:sb4; + ftgt_end_time:sb4; ftgt_renew_time:sb4; ftgt_client_principal:Ptext; ftgt_client_principal_len:ub4; ftgt_client_realm:Ptext; + ftgt_client_realm_len:ub4; errhp:POCIError):sword;cdecl; + + {------------------- End Kerberos Authentication prototypes ---------------- } + {------------------- Database Startup/Shutdown prototypes ------------------ } + OCIDBStartup : function (svchp:POCISvcCtx; errhp:POCIError; admhp:POCIAdmin; mode:ub4; flags:ub4):sword;cdecl; + + OCIDBShutdown : function (svchp:POCISvcCtx; errhp:POCIError; admhp:POCIAdmin; mode:ub4):sword;cdecl; + + {------------------ End Database Startup/Shutdown prototypes --------------- } + {----------------------- OCIClientVersion ------------------------------ } + OCIClientVersion : procedure (major_version:Psword; minor_version:Psword; update_num:Psword; patch_num:Psword; port_update_num:Psword);cdecl; + + {----------------------- End OCIClientVersion -------------------------- } + {----------------------- HA Event prototypes ------------------------------ } + OCIInitEventHandle : function (errhp:POCIError; event:POCIEvent; str:Ptext; size:ub4):sword;cdecl; + + {----------------------- End HA Event prototypes -------------------------- } + + +{$ENDIF} + {--------------------------------------------------------------------------- + PRIVATE FUNCTIONS + --------------------------------------------------------------------------- } + { the following functions are depracated and should not be used } +{$ifdef NEVER} + + function OCIStmtBindByPos(stmtp:POCIStmt; bindp:POCIBind; errhp:POCIError; position:ub4; valuep:Pdvoid; + value_sz:sb4; dty:ub2; indp:Pdvoid; alenp:Pub2; rcodep:Pub2; + maxarr_len:ub4; curelep:Pub4; mode:ub4):sword;cdecl;external ocilib name 'OCIStmtBindByPos'; + +(* Const before type ignored *) + function OCIStmtBindByName(stmtp:POCIStmt; bindp:POCIBind; errhp:POCIError; placeholder:POraText; placeh_len:sb4; + valuep:Pdvoid; value_sz:sb4; dty:ub2; indp:Pdvoid; alenp:Pub2; + rcodep:Pub2; maxarr_len:ub4; curelep:Pub4; mode:ub4):sword;cdecl;external ocilib name 'OCIStmtBindByName'; + + function ocidefn(stmtp:POCIStmt; defnp:POCIDefine; errhp:POCIError; position:ub4; valuep:Pdvoid; + value_sz:sb4; dty:ub2; indp:Pdvoid; rlenp:Pub2; rcodep:Pub2; + mode:ub4):sword;cdecl;external ocilib name 'ocidefn'; + +{$endif} + { NEVER } +{$endif} + { OCIAP_ORACLE } + + diff --git a/packages/oracle/src/ocidfn.inc b/packages/oracle/src/ocidfn.inc new file mode 100644 index 0000000000..d324590385 --- /dev/null +++ b/packages/oracle/src/ocidfn.inc @@ -0,0 +1,336 @@ + +{ + Automatically converted by H2Pas 1.0.0 from ocidfn.h + The following command line parameters were used: + -p + -D + -l + jojo.so + ocidfn.h +} + +{$PACKRECORDS C} + + { + * $Header: ocidfn.h 25-nov-2002.11:03:03 srseshad Exp $ + } + { Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved. } + { Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved. } + { + NAME + ocidfn.h - OCI Definations + NOTES + Shipped to users. + MODIFIED (MM/DD/YY) + srseshad 11/25/02 - change binary float/double codes + srseshad 11/14/02 - Add SQLT_IBFLOAT, SQLT_IBDOUBLE + mxyang 09/17/02 - grabtrans 'mmorsi_obj_float' + srseshad 09/06/02 - Add binary float/double + aahluwal 06/04/02 - bug 2360115 + kmuthukk 05/02/00 - add SQLT_PNTY + amangal 07/30/99 - Merge into 8.1.6 : Bug 879031 + tnbui 07/28/99 - Remove SQLT_TIMESTAMP_ITZ + tnbui 07/21/99 - SQLT_TIMESTAMP_LTZ + tnbui 06/16/99 - TIMESTAMP WITH IMPLICIT TIME ZONE + whe 04/07/99 - bug#810075 + whe 03/19/99 - lrg 32079 etc.: move HDA def from ocidem.h to ocidfn. + skmishra 05/10/98 - + vyanaman 04/16/98 - update sql92 datatypes + khnguyen 01/16/98 - + khnguyen 12/23/97 - SQLT* for datetimes and intervals + tanguyen 08/19/97 - + dchatter 03/18/97 - porting exception 390897 + dchatter 05/02/97 - merge porting exception + dalpern 12/04/96 - SQLCS_LIT_NULL added + cxcheng 11/14/96 - add SQLT_BFILE/SQLT_CFILE to fix compile prob + cxcheng 11/12/96 - add SQLT_NCO for named collection + lchidamb 10/17/96 - add SQLT_VST and SQLT_ODT + sgollapu 10/14/96 - Mutual exclusion of ocidfn and sqldef + sgollapu 10/07/96 - OCI Simplification + aroy 09/09/96 - add SQLCS* definitions + slari 08/07/96 - add SQLT_RDD, rowid descriptor + slari 06/12/96 - remove SQLT_TTBL + dchatter 04/21/96 - prepare for merge into main + slari 08/24/95 - b299432, define CDA_SIZE + zwalcott 02/28/96 - add SQLT_BFILEE and SQLT_CFILEE. + lchidamb 02/22/96 - make dtys consistent with dtydef.h + lchidamb 02/16/96 - add SQLT_BFILEE and SQLT_CFILEE + lchidamb 01/30/96 - rename new datatypes for v8 + lchidamb 09/06/95 - add new datatypes + slari 05/11/95 - add OCI_EV_DEF and OCI_EV_TSF + dchatter 04/06/95 - add ifdef flags around OCI_flags + dchatter 03/08/95 - piece values + dchatter 03/06/95 - merge changes from branch 1.2.720.3 + jfbrown 02/17/95 - merge changes from branch 1.2.720.2 + dchatter 02/08/95 - olog call modes + jfbrown 02/03/95 - remove non-printable characters + lchidamb 12/06/94 - merge changes from branch 1.2.720.1 + lchidamb 10/04/94 - added field chk to cda_head, cda_def + dchatter 07/05/94 - SQLT_CUR added + rkooi2 11/27/92 - Changing e* datatypes to s* + rkooi2 10/26/92 - More portability mods + rkooi2 10/22/92 - Added #ifndef ORATYPES ... + rkooi2 10/18/92 - Changes to make it portable. + sjain 03/16/92 - Creation + } + { + * ocidfn.h + * + * Common header file for OCI C sample programs. + * This header declares the cursor and logon data area structure. + * The types used are defined in <oratypes.h>. + * + } + { The cda_head struct is strictly PRIVATE. It is used + internally only. Do not use this struct in OCI programs. } + type + Pdvoid = pointer; + Ppdvoid = ^Pdvoid; + PPpdvoid = ^PPdvoid; + + type + Pcda_head = ^cda_head; + cda_head = record + v2_rc : sb2; + ft : ub2; + rpc : ub4; + peo : ub2; + fc : ub1; + rcs1 : ub1; + rc : ub2; + wrn : ub1; + rcs2 : ub1; + rcs3 : sword; + rid : record + rd : record + rcs4 : ub4; + rcs5 : ub2; + rcs6 : ub1; + end; + rcs7 : ub4; + rcs8 : ub2; + end; + ose : sword; + chk : ub1; + rcsp : Pdvoid; + end; + + { + ** Size of HDA area: + ** 512 for 64 bit arquitectures + ** 256 for 32 bit arquitectures + } +{ $if defined(SS_64BIT_SERVER) || defined(__64BIT__)} + +// const +// HDA_SIZE = 512; +{ $else} + + const + HDA_SIZE = 256; +{ $endif} +{ $if defined(SS_64BIT_SERVER) || defined(__64BIT__)} + +// const +// CDA_SIZE = 88; +{ $else} + + const + CDA_SIZE = 64; +{ $endif} + { the real CDA, padded to CDA_SIZE bytes in size } + { V2 return code } + { SQL function type } + { rows processed count } + { parse error offset } + { OCI function code } + { filler area } + { V7 return code } + { warning flags } + { reserved } + { reserved } + { rowid structure } + { OSD dependent error } + { pointer to reserved area } + { ub1 rcs9[CDA_SIZE - sizeof (struct cda_head)]; filler } + + type + Pcda_def = ^cda_def; + cda_def = record + v2_rc : sb2; + ft : ub2; + rpc : ub4; + peo : ub2; + fc : ub1; + rcs1 : ub1; + rc : ub2; + wrn : ub1; + rcs2 : ub1; + rcs3 : sword; + rid : record + rd : record + rcs4 : ub4; + rcs5 : ub2; + rcs6 : ub1; + end; + rcs7 : ub4; + rcs8 : ub2; + end; + ose : sword; + chk : ub1; + rcsp : Pdvoid; + end; + + { the logon data area (LDA) + is the same shape as the CDA } + Lda_def = cda_Def; + PLda_def = ^Lda_def; + { OCI Environment Modes for opinit call } + { default single-threaded environment } + + const + OCI_EV_DEF = 0; + { thread-safe environment } + OCI_EV_TSF = 1; + { OCI Logon Modes for olog call } + { default login } + OCI_LM_DEF = 0; + { non-blocking logon } + OCI_LM_NBL = 1; + { + * since sqllib uses both ocidef and ocidfn the following defines + * need to be guarded + } + + { OCI_*_PIECE defines the piece types that are returned or set + } + { there or this is the only piece } + + const + OCI_ONE_PIECE = 0; + { the first of many pieces } + OCI_FIRST_PIECE = 1; + { the next of many pieces } + OCI_NEXT_PIECE = 2; + { the last piece of this column } + OCI_LAST_PIECE = 3; + + { input data types } + { (ORANET TYPE) character string } + + const + SQLT_CHR = 1; + { (ORANET TYPE) oracle numeric } + SQLT_NUM = 2; + { (ORANET TYPE) integer } + SQLT_INT = 3; + { (ORANET TYPE) Floating point number } + SQLT_FLT = 4; + { zero terminated string } + SQLT_STR = 5; + { NUM with preceding length byte } + SQLT_VNU = 6; + { (ORANET TYPE) Packed Decimal Numeric } + SQLT_PDN = 7; + { long } + SQLT_LNG = 8; + { Variable character string } + SQLT_VCS = 9; + { Null/empty PCC Descriptor entry } + SQLT_NON = 10; + { rowid } + SQLT_RID = 11; + { date in oracle format } + SQLT_DAT = 12; + { binary in VCS format } + SQLT_VBI = 15; + { Native Binary float } + SQLT_BFLOAT = 21; + { NAtive binary double } + SQLT_BDOUBLE = 22; + { binary data(DTYBIN) } + SQLT_BIN = 23; + { long binary } + SQLT_LBI = 24; + { unsigned integer } + SQLT_UIN = 68; + { Display sign leading separate } + SQLT_SLS = 91; + { Longer longs (char) } + SQLT_LVC = 94; + { Longer long binary } + SQLT_LVB = 95; + { Ansi fixed char } + SQLT_AFC = 96; + { Ansi Var char } + SQLT_AVC = 97; + { binary float canonical } + SQLT_IBFLOAT = 100; + { binary double canonical } + SQLT_IBDOUBLE = 101; + { cursor type } + SQLT_CUR = 102; + { rowid descriptor } + SQLT_RDD = 104; + { label type } + SQLT_LAB = 105; + { oslabel type } + SQLT_OSL = 106; + { named object type } + SQLT_NTY = 108; + { ref type } + SQLT_REF = 110; + { character lob } + SQLT_CLOB = 112; + { binary lob } + SQLT_BLOB = 113; + { binary file lob } + SQLT_BFILEE = 114; + { character file lob } + SQLT_CFILEE = 115; + { result set type } + SQLT_RSET = 116; + { named collection type (varray or nested table) } + SQLT_NCO = 122; + { OCIString type } + SQLT_VST = 155; + { OCIDate type } + SQLT_ODT = 156; + { datetimes and intervals } + { ANSI Date } + SQLT_DATE = 184; + { TIME } + SQLT_TIME = 185; + { TIME WITH TIME ZONE } + SQLT_TIME_TZ = 186; + { TIMESTAMP } + SQLT_TIMESTAMP = 187; + { TIMESTAMP WITH TIME ZONE } + SQLT_TIMESTAMP_TZ = 188; + { INTERVAL YEAR TO MONTH } + SQLT_INTERVAL_YM = 189; + { INTERVAL DAY TO SECOND } + SQLT_INTERVAL_DS = 190; + { TIMESTAMP WITH LOCAL TZ } + SQLT_TIMESTAMP_LTZ = 232; + { pl/sql representation of named types } + SQLT_PNTY = 241; + { cxcheng: this has been added for backward compatibility - + it needs to be here because ocidfn.h can get included ahead of sqldef.h } + { binary file lob } + SQLT_FILE = SQLT_BFILEE; + SQLT_CFILE = SQLT_CFILEE; + SQLT_BFILE = SQLT_BFILEE; + { CHAR/NCHAR/VARCHAR2/NVARCHAR2/CLOB/NCLOB char set "form" information } + { for CHAR, VARCHAR2, CLOB w/o a specified set } + SQLCS_IMPLICIT = 1; + { for NCHAR, NCHAR VARYING, NCLOB } + SQLCS_NCHAR = 2; + { for CHAR, etc, with "CHARACTER SET ..." syntax } + SQLCS_EXPLICIT = 3; + { for PL/SQL "flexible" parameters } + SQLCS_FLEXIBLE = 4; + { for typecheck of NULL and empty_clob() lits } + SQLCS_LIT_NULL = 5; + + diff --git a/packages/oracle/src/ocidyn.pp b/packages/oracle/src/ocidyn.pp new file mode 100644 index 0000000000..0aa4c4c667 --- /dev/null +++ b/packages/oracle/src/ocidyn.pp @@ -0,0 +1,8 @@ +unit OCIdyn; + +{$DEFINE LinkDynamically} + +{$i oci.inc} + +end. + diff --git a/packages/oracle/src/oraoci.pp b/packages/oracle/src/oraoci.pp new file mode 100644 index 0000000000..587fcf8337 --- /dev/null +++ b/packages/oracle/src/oraoci.pp @@ -0,0 +1,1436 @@ +{ + Copyright (c) 1999-2000 by Pavel Stingl <stingp1.eti@mail.cez.cz> + + + Oracle Call Interface Translation + + See the file COPYING.FPC, included in this distribution, + for details about the copyright. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + **********************************************************************} +unit OraOCI; + +{$MODE FPC} +{$linklib clntsh} +{$linklib common} +{$linklib core4} +{$linklib nlsrtl3} +{$ifndef BSD} +{$linklib dl} +{$ENDIF} +{$linklib c} + +interface + + type + sb1 = shortint; + ub1 = byte; + sb2 = integer; + ub2 = word; + sb4 = longint; + ub4 = cardinal; + eb1 = byte; + eb2 = word; + eb4 = cardinal; + sword = integer; + uword = integer; + eword = integer; + PDouble = ^double; + PLongint = ^longint; + PPointer = ^pointer; + PWord = ^word; + PBoolean = ^boolean; + PCardinal = ^cardinal; + PByte = ^byte; + + + POCITime = ^OCITime; + OCITime = packed record + OCITimeHH : ub1; + OCITimeMM : ub1; + OCITimeSS : ub1; + end; + + POCIDate = ^OCIDate; + OCIDate = packed record + OCIDateYYYY : sb2; + OCIDateMM : ub1; + OCIDateDD : ub1; + OCIDateTime : OCITime; + end; + + POCIDateTime = ^TOCIDate; + TOCIDate = packed record + Year : sb2; + Month : ub1; + Day : ub1; + Hour : ub1; + Min : ub1; + Sec : ub1; + end; + + PCDA_DEF = ^TCDA_DEF; + TCDA_DEF = packed record + v2_rc : sb2; + ft : ub2; + rpc : ub4; + peo : ub2; + fc : ub1; + rcs1 : ub1; + rc : ub2; + wrn : ub1; + rcs2 : ub1; + rcs3 : sword; + rid : record + rd : record + rcs4 : ub4; + rcs5 : ub2; + rcs6 : ub1; + end; + rcs7 : ub4; + rcs8 : ub2; + end; + ose : sword; + chk : ub1; + rcsp : pointer; + filler : array [39..64] of byte; + end; + + PLDA_DEF = ^TCDA_DEF; + TLDA_DEF = TCDA_DEF; + + + + const + EB4MAXVAL = 2147483647; + EB4MINVAL = 0; + UB4MAXVAL = $FFFFFFFF; + UB4MINVAL = 0; + SB4MAXVAL = 2147483647; + SB4MINVAL = -2147483647; + MINEB4MAXVAL = 2147483647; + MAXEB4MINVAL = 0; + MINUB4MAXVAL = $FFFFFFFF; + MAXUB4MINVAL = 0; + MINSB4MAXVAL = 2147483647; + MAXSB4MINVAL = -2147483647; + + const + VARCHAR2_TYPE = 1; + NUMBER_TYPE = 2; + INT_TYPE = 3; + FLOAT_TYPE = 4; + STRING_TYPE = 5; + ROWID_TYPE = 11; + DATE_TYPE = 12; + + { OCI Environment Modes for opinit call } + OCI_EV_DEF = 0; { default single-threaded environment } + OCI_EV_TSF = 1; { thread-safe environment } + + { OCI Logon Modes for olog call } + OCI_LM_DEF = 0; { default login } + OCI_LM_NBL = 1; { non-blocking logon } + + OCI_ONE_PIECE = 0; { there or this is the only piece } + OCI_FIRST_PIECE = 1; { the first of many pieces } + OCI_NEXT_PIECE = 2; { the next of many pieces } + OCI_LAST_PIECE = 3; { the last piece of this column } + + { input data types } + SQLT_CHR = 1; { (ORANET TYPE) character string } + SQLT_NUM = 2; { (ORANET TYPE) oracle numeric } + SQLT_INT = 3; { (ORANET TYPE) integer } + SQLT_FLT = 4; { (ORANET TYPE) Floating point number } + SQLT_STR = 5; { zero terminated string } + SQLT_VNU = 6; { NUM with preceding length byte } + SQLT_PDN = 7; { (ORANET TYPE) Packed Decimal Numeric } + SQLT_LNG = 8; { long } + SQLT_VCS = 9; { Variable character string } + SQLT_NON = 10; { Null/empty PCC Descriptor entry } + SQLT_RID = 11; { rowid } + SQLT_DAT = 12; { date in oracle format } + SQLT_VBI = 15; { binary in VCS format } + SQLT_BIN = 23; { binary data(DTYBIN) } + SQLT_LBI = 24; { long binary } + SQLT_UIN = 68; { unsigned integer } + SQLT_SLS = 91; { Display sign leading separate } + SQLT_LVC = 94; { Longer longs (char) } + SQLT_LVB = 95; { Longer long binary } + SQLT_AFC = 96; { Ansi fixed char } + SQLT_AVC = 97; { Ansi Var char } + SQLT_CUR = 102; { cursor type } + SQLT_RDD = 104; { rowid descriptor } + SQLT_LAB = 105; { label type } + SQLT_OSL = 106; { oslabel type } + SQLT_NTY = 108; { named object type } + SQLT_REF = 110; { ref type } + SQLT_CLOB = 112; { character lob } + SQLT_BLOB = 113; { binary lob } + SQLT_BFILEE = 114; { binary file lob } + SQLT_CFILEE = 115; { character file lob } + SQLT_RSET = 116; { result set type } + SQLT_NCO = 122; { named collection type (varray or nested table) } + SQLT_VST = 155; { OCIString type } + SQLT_ODT = 156; { OCIDate type } + + { binary file lob } + SQLT_FILE = SQLT_BFILEE; + SQLT_CFILE = SQLT_CFILEE; + SQLT_BFILE = SQLT_BFILEE; + + { CHAR/NCHAR/VARCHAR2/NVARCHAR2/CLOB/NCLOB char set "form" information } + SQLCS_IMPLICIT = 1; { for CHAR, VARCHAR2, CLOB w/o a specified set } + SQLCS_NCHAR = 2; { for NCHAR, NCHAR VARYING, NCLOB } + SQLCS_EXPLICIT = 3; { for CHAR, etc, with "CHARACTER SET ..." syntax } + SQLCS_FLEXIBLE = 4; { for PL/SQL "flexible" parameters } + SQLCS_LIT_NULL = 5; { for typecheck of NULL and empty_clob() lits } + + { OCI Modes } + OCI_DEFAULT = $00; { the default value for parameters and attributes } + OCI_THREADED = $01; { the application is in threaded environment } + OCI_OBJECT = $02; { the application is in object environment } + OCI_NON_BLOCKING = $04; { non blocking mode of operation } + OCI_ENV_NO_MUTEX = $08; { the environment handle will not be protected + by a mutex internally } + + { OCI Handle Types } + { handle types range from 1 - 49 } + OCI_HTYPE_FIRST = 1; { start value of handle type } + OCI_HTYPE_ENV = 1; { environment handle } + OCI_HTYPE_ERROR = 2; { error handle } + OCI_HTYPE_SVCCTX = 3; { service handle } + OCI_HTYPE_STMT = 4; { statement handle } + OCI_HTYPE_BIND = 5; { bind handle } + OCI_HTYPE_DEFINE = 6; { define handle } + OCI_HTYPE_DESCRIBE = 7; { describe handle } + OCI_HTYPE_SERVER = 8; { server handle } + OCI_HTYPE_SESSION = 9; { authentication handle } + OCI_HTYPE_TRANS = 10; { transaction handle } + OCI_HTYPE_COMPLEXOBJECT = 11; { complex object retrieval handle } + OCI_HTYPE_SECURITY = 12; { security handle } + OCI_HTYPE_LAST = 12; { last value of a handle type } + + { Descriptor Types } + { descriptor values range from 50 - 255 } + OCI_DTYPE_FIRST = 50; { start value of descriptor type } + OCI_DTYPE_LOB = 50; { lob locator } + OCI_DTYPE_SNAP = 51; { snapshot descriptor } + OCI_DTYPE_RSET = 52; { result set descriptor } + OCI_DTYPE_PARAM = 53; { a parameter descriptor obtained from ocigparm } + OCI_DTYPE_ROWID = 54; { rowid descriptor } + OCI_DTYPE_COMPLEXOBJECTCOMP = 55; { complex object retrieval descriptor } + OCI_DTYPE_FILE = 56; { File Lob locator } + OCI_DTYPE_AQENQ_OPTIONS = 57; { enqueue options } + OCI_DTYPE_AQDEQ_OPTIONS = 58; { dequeue options } + OCI_DTYPE_AQMSG_PROPERTIES = 59; { message properties } + OCI_DTYPE_AQAGENT = 60; { aq agent } + OCI_DTYPE_LAST = 60; { last value of a descriptor type } + + { Object Ptr Types } + OCI_OTYPE_NAME = 1; { object name } + OCI_OTYPE_REF = 2; { REF to TDO } + OCI_OTYPE_PTR = 3; { PTR to TDO } + + { Attribute Types } + { the OCI function code } + OCI_ATTR_FNCODE = 1; { the OCI function code } + OCI_ATTR_OBJECT = 2; { is the environment initialized in object mode } + OCI_ATTR_NONBLOCKING_MODE = 3; { non blocking mode } + OCI_ATTR_SQLCODE = 4; { the SQL verb } + OCI_ATTR_ENV = 5; { the environment handle } + OCI_ATTR_SERVER = 6; { the server handle } + OCI_ATTR_SESSION = 7; { the user session handle } + OCI_ATTR_TRANS = 8; { the transaction handle } + OCI_ATTR_ROW_COUNT = 9; { the rows processed so far } + OCI_ATTR_SQLFNCODE = 10; { the SQL verb of the statement } + OCI_ATTR_PREFETCH_ROWS = 11; { sets the number of rows to prefetch } + OCI_ATTR_NESTED_PREFETCH_ROWS = 12; { the prefetch rows of nested table } + OCI_ATTR_PREFETCH_MEMORY = 13; { memory limit for rows fetched } + OCI_ATTR_NESTED_PREFETCH_MEMORY = 14; { memory limit for nested rows } + OCI_ATTR_CHAR_COUNT = 15; { this specifies the bind and define size in characters } + OCI_ATTR_PDSCL = 16; { packed decimal scale } + OCI_ATTR_PDFMT = 17; { packed decimal format } + OCI_ATTR_PARAM_COUNT = 18; { number of column in the select list } + OCI_ATTR_ROWID = 19; { the rowid } + OCI_ATTR_CHARSET = 20; { the character set value } + OCI_ATTR_NCHAR = 21; { NCHAR type } + OCI_ATTR_USERNAME = 22; { username attribute } + OCI_ATTR_PASSWORD = 23; { password attribute } + OCI_ATTR_STMT_TYPE = 24; { statement type } + OCI_ATTR_INTERNAL_NAME = 25; { user friendly global name } + OCI_ATTR_EXTERNAL_NAME = 26; { the internal name for global txn } + OCI_ATTR_XID = 27; { XOPEN defined global transaction id } + OCI_ATTR_TRANS_LOCK = 28; { transaction lock } + OCI_ATTR_TRANS_NAME = 29; { string to identify a global transaction } + OCI_ATTR_HEAPALLOC = 30; { memory allocated on the heap } + OCI_ATTR_CHARSET_ID = 31; { Character Set ID } + OCI_ATTR_CHARSET_FORM = 32; { Character Set Form } + OCI_ATTR_MAXDATA_SIZE = 33; { Maximumsize of data on the server } + OCI_ATTR_CACHE_OPT_SIZE = 34; { object cache optimal size } + OCI_ATTR_CACHE_MAX_SIZE = 35; { object cache maximum size percentage } + OCI_ATTR_PINOPTION = 36; { object cache default pin option } + OCI_ATTR_ALLOC_DURATION = 37; { object cache default allocation duration } + OCI_ATTR_PIN_DURATION = 38; { object cache default pin duration } + OCI_ATTR_FDO = 39; { Format Descriptor object attribute } + OCI_ATTR_POSTPROCESSING_CALLBACK = 40; { Callback to process outbind data } + OCI_ATTR_POSTPROCESSING_CONTEXT = 41; { Callback context to process outbind data } + OCI_ATTR_ROWS_RETURNED = 42; { Number of rows returned in current iter - for Bind handles } + OCI_ATTR_FOCBK = 43; { Failover Callback attribute } + OCI_ATTR_IN_V8_MODE = 44; { is the server/service context in V8 mode } + OCI_ATTR_LOBEMPTY = 45; { empty lob ? } + OCI_ATTR_SESSLANG = 46; { session language handle } + + { Enqueue Options } + OCI_ATTR_VISIBILITY = 47; { visibility } + OCI_ATTR_RELATIVE_MSGID = 48; { relative message id } + OCI_ATTR_SEQUENCE_DEVIATION = 49; { sequence deviation } + + { Dequeue Options } + OCI_ATTR_CONSUMER_NAME = 50; { consumer name } + OCI_ATTR_DEQ_MODE = 51; { dequeue mode } + OCI_ATTR_NAVIGATION = 52; { navigation } + OCI_ATTR_WAIT = 53; { wait } + OCI_ATTR_DEQ_MSGID = 54; { dequeue message id } + + { Message Properties } + OCI_ATTR_PRIORITY = 55; { priority } + OCI_ATTR_DELAY = 56; { delay } + OCI_ATTR_EXPIRATION = 57; { expiration } + OCI_ATTR_CORRELATION = 58; { correlation id } + OCI_ATTR_ATTEMPTS = 59; { # of attempts } + OCI_ATTR_RECIPIENT_LIST = 60; { recipient list } + OCI_ATTR_EXCEPTION_QUEUE = 61; { exception queue name } + OCI_ATTR_ENQ_TIME = 62; { enqueue time (only OCIAttrGet) } + OCI_ATTR_MSG_STATE = 63; { message state (only OCIAttrGet) } + + { AQ Agent } + OCI_ATTR_AGENT_NAME = 64; { agent name } + OCI_ATTR_AGENT_ADDRESS = 65; { agent address } + OCI_ATTR_AGENT_PROTOCOL = 66; { agent protocol } + + { Parameter Attribute Types } + OCI_ATTR_UNK = 101; { unknown attribute } + OCI_ATTR_NUM_COLS = 102; { number of columns } + OCI_ATTR_LIST_COLUMNS = 103; { parameter of the column list } + OCI_ATTR_RDBA = 104; { DBA of the segment header } + OCI_ATTR_CLUSTERED = 105; { whether the table is clustered } + OCI_ATTR_PARTITIONED = 106; { whether the table is partitioned } + OCI_ATTR_INDEX_ONLY = 107; { whether the table is index only } + OCI_ATTR_LIST_ARGUMENTS = 108; { parameter of the argument list } + OCI_ATTR_LIST_SUBPROGRAMS = 109; { parameter of the subprogram list } + OCI_ATTR_REF_TDO = 110; { REF to the type descriptor } + OCI_ATTR_LINK = 111; { the database link name } + OCI_ATTR_MIN = 112; { minimum value } + OCI_ATTR_MAX = 113; { maximum value } + OCI_ATTR_INCR = 114; { increment value } + OCI_ATTR_CACHE = 115; { number of sequence numbers cached } + OCI_ATTR_ORDER = 116; { whether the sequence is ordered } + OCI_ATTR_HW_MARK = 117; { high-water mark } + OCI_ATTR_TYPE_SCHEMA = 118; { type's schema name } + OCI_ATTR_TIMESTAMP = 119; { timestamp of the object } + OCI_ATTR_NUM_ATTRS = 120; { number of attributes } + OCI_ATTR_NUM_PARAMS = 121; { number of parameters } + OCI_ATTR_OBJID = 122; { object id for a table or view } + OCI_ATTR_PTYPE = 123; { type of info described by } + OCI_ATTR_PARAM = 124; { parameter descriptor } + OCI_ATTR_OVERLOAD_ID = 125; { overload ID for funcs and procs } + OCI_ATTR_TABLESPACE = 126; { table name space } + OCI_ATTR_TDO = 127; { TDO of a type } + OCI_ATTR_PARSE_ERROR_OFFSET = 128; { Parse Error offset } + + { Credential Types } + OCI_CRED_RDBMS = 1; { database username/password } + OCI_CRED_EXT = 2; { externally provided credentials } + + { Error Return Values } + OCI_SUCCESS = 0; { maps to SQL_SUCCESS of SAG CLI } + OCI_SUCCESS_WITH_INFO = 1; { maps to SQL_SUCCESS_WITH_INFO } + OCI_NO_DATA = 100; { maps to SQL_NO_DATA } + OCI_ERROR = -(1); { maps to SQL_ERROR } + OCI_INVALID_HANDLE = -(2); { maps to SQL_INVALID_HANDLE } + OCI_NEED_DATA = 99; { maps to SQL_NEED_DATA } + OCI_STILL_EXECUTING = -(3123); { OCI would block error } + OCI_CONTINUE = -(24200); { Continue with the body of the OCI function } + + { Parsing Syntax Types } + OCI_V7_SYNTAX = 2; { V7 language } + OCI_V8_SYNTAX = 3; { V8 language } + OCI_NTV_SYNTAX = 1; + { Use what so ever is the native lang of server } + { these values must match the values defined in kpul.h } + + { Scrollable Cursor Options } + OCI_FETCH_NEXT = $02; { next row } + OCI_FETCH_FIRST = $04; { first row of the result set } + OCI_FETCH_LAST = $08; { the last row of the result set } + OCI_FETCH_PRIOR = $10; { the previous row relative to current } + OCI_FETCH_ABSOLUTE = $20; { absolute offset from first } + OCI_FETCH_RELATIVE = $40; { offset relative to current } + + { Bind and Define Options } + OCI_SB2_IND_PTR = $01; { unused } + OCI_DATA_AT_EXEC = $02; { data at execute time } + OCI_DYNAMIC_FETCH = $02; { fetch dynamically } + OCI_PIECEWISE = $04; { piecewise DMLs or fetch } + + { Execution Modes } + OCI_BATCH_MODE = $01; { batch the oci statement for execution } + OCI_EXACT_FETCH = $02; { fetch the exact rows specified } + OCI_KEEP_FETCH_STATE = $04; { unused } + OCI_SCROLLABLE_CURSOR = $08; { cursor scrollable } + OCI_DESCRIBE_ONLY = $10; { only describe the statement } + OCI_COMMIT_ON_SUCCESS = $20; { commit, if successful execution } + + { Authentication Modes } + OCI_MIGRATE = $0001; { migratable auth context } + OCI_SYSDBA = $0002; { for SYSDBA authorization } + OCI_SYSOPER = $0004; { for SYSOPER authorization } + OCI_PRELIM_AUTH = $0008; { for preliminary authorization } + + { Piece Information } + OCI_PARAM_IN = $01; { in parameter } + OCI_PARAM_OUT = $02; { out parameter } + + { Transaction Start Flags } + { NOTE: OCI_TRANS_JOIN and OCI_TRANS_NOMIGRATE not supported in 8.0.X } + { starts a new transaction branch } + OCI_TRANS_NEW = $00000001; { starts a new transaction branch } + OCI_TRANS_JOIN = $00000002; { join an existing transaction } + OCI_TRANS_RESUME = $00000004; { resume this transaction } + OCI_TRANS_STARTMASK = $000000ff; + OCI_TRANS_READONLY = $00000100; { starts a readonly transaction } + OCI_TRANS_READWRITE = $00000200; { starts a read-write transaction } + OCI_TRANS_SERIALIZABLE = $00000400; { starts a serializable transaction } + OCI_TRANS_ISOLMASK = $0000ff00; + OCI_TRANS_LOOSE = $00010000; { a loosely coupled branch } + OCI_TRANS_TIGHT = $00020000; { a tightly coupled branch } + OCI_TRANS_TYPEMASK = $000f0000; + OCI_TRANS_NOMIGRATE = $00100000; { non migratable transaction } + + { Transaction End Flags } + OCI_TRANS_TWOPHASE = $01000000; { use two phase commit } + + { AQ Constants + NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE + The following constants must match the PL/SQL dbms_aq constants + NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE + } + { Visibility flags } + OCI_ENQ_IMMEDIATE = 1; { enqueue is an independent transaction } + OCI_ENQ_ON_COMMIT = 2; { enqueue is part of current transaction } + + OCI_DEQ_BROWSE = 1; { read message without acquiring a lock } + OCI_DEQ_LOCKED = 2; { read and obtain write lock on message } + OCI_DEQ_REMOVE = 3; { read the message and delete it } + + { Dequeue navigation flags } + OCI_DEQ_FIRST_MSG = 1; { get first message at head of queue } + OCI_DEQ_NEXT_MSG = 3; { next message that is available } + OCI_DEQ_NEXT_TRANSACTION = 2; { get first message of next txn group } + + { Message states } + OCI_MSG_WAITING = 1; { the message delay has not yet completed } + OCI_MSG_READY = 0; { the message is ready to be processed } + OCI_MSG_PROCESSED = 2; { the message has been processed } + OCI_MSG_EXPIRED = 3; { message has moved to exception queue } + + { Sequence deviation } + OCI_ENQ_BEFORE = 2; { enqueue message before another message } + OCI_ENQ_TOP = 3; { enqueue message before all messages } + + { Visibility flags } + OCI_DEQ_IMMEDIATE = 1; { dequeue is an independent transaction } + OCI_DEQ_ON_COMMIT = 2; { dequeue is part of current transaction } + + { Wait } + OCI_DEQ_WAIT_FOREVER = -(1); { wait forever if no message available } + OCI_DEQ_NO_WAIT = 0; { do not wait if no message is available } + + { Delay } + OCI_MSG_NO_DELAY = 0; { message is available immediately } + + { Expiration } + OCI_MSG_NO_EXPIRATION = -(1); { message will never expire } + + { -------------------------- END AQ Constants ----------------------------- } + {-----------Object Types Not to be Used -------------------------- } + { Deprecated } + OCI_OTYPE_UNK = 0; + OCI_OTYPE_TABLE = 1; + OCI_OTYPE_VIEW = 2; + OCI_OTYPE_SYN = 3; + OCI_OTYPE_PROC = 4; + OCI_OTYPE_FUNC = 5; + OCI_OTYPE_PKG = 6; + OCI_OTYPE_STMT = 7; + + { Describe Handle Parameter Attributes } + { Attributes common to Columns and Stored Procs } + OCI_ATTR_DATA_SIZE = 1; { maximum size of the data } + OCI_ATTR_DATA_TYPE = 2; { the SQL type of the column/argument } + OCI_ATTR_DISP_SIZE = 3; { the display size } + OCI_ATTR_NAME = 4; { the name of the column/argument } + OCI_ATTR_PRECISION = 5; { precision if number type } + OCI_ATTR_SCALE = 6; { scale if number type } + OCI_ATTR_IS_NULL = 7; { is it null ? } + OCI_ATTR_TYPE_NAME = 8; { name of the named data type or a package name for package private types } + OCI_ATTR_SCHEMA_NAME = 9; { the schema name } + OCI_ATTR_SUB_NAME = 10; { type name if package private type } + OCI_ATTR_POSITION = 11; { relative position of col/arg in the list of cols/args } + OCI_ATTR_COMPLEXOBJECTCOMP_TYPE = 50; { complex object retrieval parameter attributes } + OCI_ATTR_COMPLEXOBJECTCOMP_TYPE_LEVEL = 51; + OCI_ATTR_COMPLEXOBJECT_LEVEL = 52; + OCI_ATTR_COMPLEXOBJECT_COLL_OUTOFLINE = 53; + + { Only Columns } + OCI_ATTR_DISP_NAME = 100; { the display name } + + {Only Stored Procs } + OCI_ATTR_OVERLOAD = 210; { is this position overloaded } + OCI_ATTR_LEVEL = 211; { level for structured types } + OCI_ATTR_HAS_DEFAULT = 212; { has a default value } + OCI_ATTR_IOMODE = 213; { in, out inout } + OCI_ATTR_RADIX = 214; { returns a radix } + OCI_ATTR_NUM_ARGS = 215; { total number of arguments } + + { only named type attributes } + OCI_ATTR_TYPECODE = 216; { object or collection } + OCI_ATTR_COLLECTION_TYPECODE = 217; { varray or nested table } + OCI_ATTR_VERSION = 218; { user assigned version } + OCI_ATTR_IS_INCOMPLETE_TYPE = 219; { is this an incomplete type } + OCI_ATTR_IS_SYSTEM_TYPE = 220; { a system type } + OCI_ATTR_IS_PREDEFINED_TYPE = 221; { a predefined type } + OCI_ATTR_IS_TRANSIENT_TYPE = 222; { a transient type } + OCI_ATTR_IS_SYSTEM_GENERATED_TYPE = 223; { system generated type } + OCI_ATTR_HAS_NESTED_TABLE = 224; { contains nested table attr } + OCI_ATTR_HAS_LOB = 225; { has a lob attribute } + OCI_ATTR_HAS_FILE = 226; { has a file attribute } + OCI_ATTR_COLLECTION_ELEMENT = 227; { has a collection attribute } + OCI_ATTR_NUM_TYPE_ATTRS = 228; { number of attribute types } + OCI_ATTR_LIST_TYPE_ATTRS = 229; { list of type attributes } + OCI_ATTR_NUM_TYPE_METHODS = 230; { number of type methods } + OCI_ATTR_LIST_TYPE_METHODS = 231; { list of type methods } + OCI_ATTR_MAP_METHOD = 232; { map method of type } + OCI_ATTR_ORDER_METHOD = 233; { order method of type } + + { only collection element } + OCI_ATTR_NUM_ELEMS = 234; { number of elements } + + { only type methods } + OCI_ATTR_ENCAPSULATION = 235; { encapsulation level } + OCI_ATTR_IS_SELFISH = 236; { method selfish } + OCI_ATTR_IS_VIRTUAL = 237; { virtual } + OCI_ATTR_IS_INLINE = 238; { inline } + OCI_ATTR_IS_CONSTANT = 239; { constant } + OCI_ATTR_HAS_RESULT = 240; { has result } + OCI_ATTR_IS_CONSTRUCTOR = 241; { constructor } + OCI_ATTR_IS_DESTRUCTOR = 242; { destructor } + OCI_ATTR_IS_OPERATOR = 243; { operator } + OCI_ATTR_IS_MAP = 244; { a map method } + OCI_ATTR_IS_ORDER = 245; { order method } + OCI_ATTR_IS_RNDS = 246; { read no data state method } + OCI_ATTR_IS_RNPS = 247; { read no process state } + OCI_ATTR_IS_WNDS = 248; { write no data state method } + OCI_ATTR_IS_WNPS = 249; { write no process state } + + { describing public objects } + OCI_ATTR_DESC_PUBLIC = 250; { public object } + + {---------------------------OCIPasswordChange------------------------------- } + OCI_AUTH = $08; { Change the password but do not login } + + {------------------------Other Constants------------------------------------ } + OCI_MAX_FNS = 100; { max number of OCI Functions } + OCI_SQLSTATE_SIZE = 5; + OCI_ERROR_MAXMSG_SIZE = 1024; { max size of an error message } + OCI_LOBMAXSIZE = MINUB4MAXVAL; { maximum lob data size } + OCI_ROWID_LEN = 23; + {------------------------ Fail Over Events --------------------------------- } + OCI_FO_END = $00000001; + OCI_FO_ABORT = $00000002; + OCI_FO_REAUTH = $00000004; + OCI_FO_BEGIN = $00000008; + OCI_FO_ERROR = $00000010; + {------------------------- Fail Over Types --------------------------------- } + OCI_FO_NONE = $00000001; + OCI_FO_SESSION = $00000002; + OCI_FO_SELECT = $00000004; + OCI_FO_TXNAL = $00000008; + {-----------------------Function Codes-------------------------------------- } + { OCIInitialize } + OCI_FNCODE_INITIALIZE = 1; + { OCIHandleAlloc } + OCI_FNCODE_HANDLEALLOC = 2; + { OCIHandleFree } + OCI_FNCODE_HANDLEFREE = 3; + { OCIDescriptorAlloc } + OCI_FNCODE_DESCRIPTORALLOC = 4; + { OCIDescriptorFree } + OCI_FNCODE_DESCRIPTORFREE = 5; + { OCIEnvInit } + OCI_FNCODE_ENVINIT = 6; + { OCIServerAttach } + OCI_FNCODE_SERVERATTACH = 7; + { OCIServerDetach } + OCI_FNCODE_SERVERDETACH = 8; + { unused 9 } + { OCISessionBegin } + OCI_FNCODE_SESSIONBEGIN = 10; + { OCISessionEnd } + OCI_FNCODE_SESSIONEND = 11; + { OCIPasswordChange } + OCI_FNCODE_PASSWORDCHANGE = 12; + { OCIStmtPrepare } + OCI_FNCODE_STMTPREPARE = 13; + { unused 14- 16 } + { OCIBindDynamic } + OCI_FNCODE_BINDDYNAMIC = 17; + { OCIBindObject } + OCI_FNCODE_BINDOBJECT = 18; + { 19 unused } + { OCIBindArrayOfStruct } + OCI_FNCODE_BINDARRAYOFSTRUCT = 20; + { OCIStmtExecute } + OCI_FNCODE_STMTEXECUTE = 21; + { unused 22-24 } + { OCIDefineObject } + OCI_FNCODE_DEFINEOBJECT = 25; + { OCIDefineDynamic } + OCI_FNCODE_DEFINEDYNAMIC = 26; + { OCIDefineArrayOfStruct } + OCI_FNCODE_DEFINEARRAYOFSTRUCT = 27; + { OCIStmtFetch } + OCI_FNCODE_STMTFETCH = 28; + { OCIStmtGetBindInfo } + OCI_FNCODE_STMTGETBIND = 29; + { 30, 31 unused } + { OCIDescribeAny } + OCI_FNCODE_DESCRIBEANY = 32; + { OCITransStart } + OCI_FNCODE_TRANSSTART = 33; + { OCITransDetach } + OCI_FNCODE_TRANSDETACH = 34; + { OCITransCommit } + OCI_FNCODE_TRANSCOMMIT = 35; + { 36 unused } + { OCIErrorGet } + OCI_FNCODE_ERRORGET = 37; + { OCILobFileOpen } + OCI_FNCODE_LOBOPENFILE = 38; + { OCILobFileClose } + OCI_FNCODE_LOBCLOSEFILE = 39; + { 40 was LOBCREATEFILE, unused } + { 41 was OCILobFileDelete, unused } + { OCILobCopy } + OCI_FNCODE_LOBCOPY = 42; + { OCILobAppend } + OCI_FNCODE_LOBAPPEND = 43; + { OCILobErase } + OCI_FNCODE_LOBERASE = 44; + { OCILobGetLength } + OCI_FNCODE_LOBLENGTH = 45; + { OCILobTrim } + OCI_FNCODE_LOBTRIM = 46; + { OCILobRead } + OCI_FNCODE_LOBREAD = 47; + { OCILobWrite } + OCI_FNCODE_LOBWRITE = 48; + { 49 unused } + { OCIBreak } + OCI_FNCODE_SVCCTXBREAK = 50; + { OCIServerVersion } + OCI_FNCODE_SERVERVERSION = 51; + { unused 52, 53 } + { OCIAttrGet } + OCI_FNCODE_ATTRGET = 54; + { OCIAttrSet } + OCI_FNCODE_ATTRSET = 55; + { OCIParamSet } + OCI_FNCODE_PARAMSET = 56; + { OCIParamGet } + OCI_FNCODE_PARAMGET = 57; + { OCIStmtGetPieceInfo } + OCI_FNCODE_STMTGETPIECEINFO = 58; + { OCILdaToSvcCtx } + OCI_FNCODE_LDATOSVCCTX = 59; + { 60 unused } + { OCIStmtSetPieceInfo } + OCI_FNCODE_STMTSETPIECEINFO = 61; + { OCITransForget } + OCI_FNCODE_TRANSFORGET = 62; + { OCITransPrepare } + OCI_FNCODE_TRANSPREPARE = 63; + { OCITransRollback } + OCI_FNCODE_TRANSROLLBACK = 64; + { OCIDefineByPos } + OCI_FNCODE_DEFINEBYPOS = 65; + { OCIBindByPos } + OCI_FNCODE_BINDBYPOS = 66; + { OCIBindByName } + OCI_FNCODE_BINDBYNAME = 67; + { OCILobAssign } + OCI_FNCODE_LOBASSIGN = 68; + { OCILobIsEqual } + OCI_FNCODE_LOBISEQUAL = 69; + { OCILobLocatorIsInit } + OCI_FNCODE_LOBISINIT = 70; + { 71 was lob locator size in beta2 } + { OCILobEnableBuffering } + OCI_FNCODE_LOBENABLEBUFFERING = 71; + { OCILobCharSetID } + OCI_FNCODE_LOBCHARSETID = 72; + { OCILobCharSetForm } + OCI_FNCODE_LOBCHARSETFORM = 73; + { OCILobFileSetName } + OCI_FNCODE_LOBFILESETNAME = 74; + { OCILobFileGetName } + OCI_FNCODE_LOBFILEGETNAME = 75; + { OCILogon } + OCI_FNCODE_LOGON = 76; + { OCILogoff } + OCI_FNCODE_LOGOFF = 77; + { OCILobDisableBuffering } + OCI_FNCODE_LOBDISABLEBUFFERING = 78; + { OCILobFlushBuffer } + OCI_FNCODE_LOBFLUSHBUFFER = 79; + { OCILobLoadFromFile } + OCI_FNCODE_LOBLOADFROMFILE = 80; + + {--------------------------- FILE open modes ------------------------------- } + OCI_FILE_READONLY = 1; { readonly mode open for FILE types } + + {----------------------- LOB Buffering Flush Flags ------------------------- } + OCI_LOB_BUFFER_FREE = 1; + OCI_LOB_BUFFER_NOFREE = 2; + + {--------------------------- OCI Statement Types --------------------------- } + OCI_STMT_SELECT = 1; { select statement } + OCI_STMT_UPDATE = 2; { update statement } + OCI_STMT_DELETE = 3; { delete statement } + OCI_STMT_INSERT = 4; { Insert Statement } + OCI_STMT_CREATE = 5; { create statement } + OCI_STMT_DROP = 6; { drop statement } + OCI_STMT_ALTER = 7; { alter statement } + OCI_STMT_BEGIN = 8; { begin ... (pl/sql statement) } + OCI_STMT_DECLARE = 9; { declare .. (pl/sql statement ) } + + {--------------------------- OCI Parameter Types --------------------------- } + OCI_PTYPE_UNK = 0; { unknown } + OCI_PTYPE_TABLE = 1; { table } + OCI_PTYPE_VIEW = 2; { view } + OCI_PTYPE_PROC = 3; { procedure } + OCI_PTYPE_FUNC = 4; { function } + OCI_PTYPE_PKG = 5; { package } + OCI_PTYPE_TYPE = 6; { user-defined type } + OCI_PTYPE_SYN = 7; { synonym } + OCI_PTYPE_SEQ = 8; { sequence } + OCI_PTYPE_COL = 9; { column } + OCI_PTYPE_ARG = 10; { argument } + OCI_PTYPE_LIST = 11; { list } + OCI_PTYPE_TYPE_ATTR = 12; { user-defined type's attribute } + OCI_PTYPE_TYPE_COLL = 13; { collection type's element } + OCI_PTYPE_TYPE_METHOD = 14; { collection type's element } + OCI_PTYPE_TYPE_ARG = 15; { user-defined type method's argument } + OCI_PTYPE_TYPE_RESULT = 16; { user-defined type method's result } + + {----------------------------- OCI List Types ------------------------------ } + OCI_LTYPE_UNK = 0; { unknown } + OCI_LTYPE_COLUMN = 1; { column list } + OCI_LTYPE_ARG_PROC = 2; { procedure argument list } + OCI_LTYPE_ARG_FUNC = 3; { function argument list } + OCI_LTYPE_SUBPRG = 4; { subprogram list } + OCI_LTYPE_TYPE_ATTR = 5; { type attribute } + OCI_LTYPE_TYPE_METHOD = 6; { type method } + OCI_LTYPE_TYPE_ARG_PROC = 7; { type method w/o result argument list } + OCI_LTYPE_TYPE_ARG_FUNC = 8; { type method w/result argument list } + +type { Handle Definitions + } + OCIEnv = pointer; { OCI environment handle + } + OCIError = pointer; { OCI error handle + } + OCISvcCtx = pointer; { OCI service handle } + OCIStmt = pointer; { OCI statement handle } + OCIBind = pointer; { OCI bind handle + } + OCIDefine = pointer; { OCI Define handle + } + OCIDescribe = pointer; { OCI Describe handle + } + OCIServer = pointer; { OCI Server handle + } + OCISession = pointer; { OCI Authentication handle + } + OCIComplexObject = pointer; { OCI COR handle + } + OCITrans = pointer; { OCI Transaction handle + } + OCISecurity = pointer; { OCI Security handle + } + OCIDirPathCtx = pointer; { OCI Direct Path handle + } + +type + OCILobLocator = pointer; { OCI LOB Locator } + OCIType = pointer; + OCICallbackInBind = pointer; + OCICallbackOutBind = pointer; + OCISnapshot = pointer; + OCIResult = pointer; + OCICallbackDefine = pointer; + OCIParam = pointer; + + + function OCIInitialize( + mode:cardinal; + ctxp:pointer; + malocfp:pointer; + ralocfp:pointer; + mfreefp:pointer):sword;cdecl;external; + + function OCIHandleAlloc( + parenth:pointer; + var hndlpp:pointer; + AType:cardinal; + xtramem_sz:cardinal; + usrmempp:pointer):sword;cdecl;external; + + function OCIHandleFree( + hndlp:pointer; + AType:cardinal):sword;cdecl;external; + + function OCIEnvInit( + var envp: OCIEnv; + + mode: ub4; + xtramemsz: Integer; + usrmempp: pointer): sword; cdecl;external; + + function OCIDescriptorAlloc( + parenth:pointer; + descpp:pointer; + AType:cardinal; + xtramem_sz:cardinal; + usrmempp:pointer):sword;cdecl;external; + + function OCIDescriptorFree( + descp:pointer; + AType:cardinal):sword;cdecl;external; + + function OCIServerAttach( + srvhp:OCIServer; + errhp:OCIError; + dblink:PChar; + dblink_len:longint; + mode:cardinal):sword;cdecl;external; + + function OCIServerDetach( + srvhp:OCIServer; + errhp:OCIError; + mode:cardinal):sword;cdecl;external; + + function OCISessionBegin( + svchp:OCISvcCtx; + errhp:OCIError; + usrhp:OCISession; + credt:cardinal; + mode:cardinal):sword;cdecl;external; + + function OCISessionEnd( + svchp:OCISvcCtx; + errhp:OCIError; + usrhp:OCISession; + mode:cardinal):sword;cdecl;external; + + function OCILogon( + envhp:OCIEnv; + errhp:OCIError; + var svchp:OCISvcCtx; + username:PChar; + uname_len:cardinal; + password:PChar; + passwd_len:cardinal; + dbname:PChar; + dbname_len:cardinal):sword;cdecl;external; + + function OCILogoff( + svchp:OCISvcCtx; + errhp:OCIError):sword;cdecl;external; + + function OCIErrorGet( + hndlp:pointer; + recordno:cardinal; + sqlstate:PChar; + var errcodep:PLongint; + bufp:PChar; + bufsiz:cardinal; + AType:cardinal):sword;cdecl;external; + + function OCIPasswordChange( + svchp:OCISvcCtx; + errhp:OCIError; + user_name:PChar; + usernm_len:cardinal; + opasswd:PChar; + opasswd_len:cardinal; + npasswd:PChar; + npasswd_len:cardinal; + mode:cardinal):sword;cdecl;external; + + function OCIStmtPrepare( + stmtp:OCIStmt; + errhp:OCIError; + stmt:PChar; + stmt_len:cardinal; + language:cardinal; + mode:cardinal):sword;cdecl;external; + + function OCIBindByPos( + stmtp:OCIStmt; + bindp:OCIBind; + errhp:OCIError; + position:cardinal; + valuep:pointer; + value_sz:longint; + dty:word; + indp:pointer; + alenp:pword; rcodep:pword; + maxarr_len:cardinal; + curelep:pcardinal; + mode:cardinal):sword;cdecl;external; + + function OCIBindByName( + stmtp:OCIStmt; + bindp:OCIBind; + errhp:OCIError; + placeholder:PChar; + placeh_len:longint; + valuep:pointer; + value_sz:longint; + dty:word; + indp:pointer; + alenp:pword; + rcodep:pword; + maxarr_len:cardinal; + curelep:pcardinal; + mode:cardinal):sword;cdecl;external; + + function OCIBindObject( + bindp:OCIBind; + errhp:OCIError; + AType:OCIType; + pgvpp:pointer; + pvszsp:pcardinal; + indpp:pointer; + indszp:pcardinal):sword;cdecl;external; + + function OCIBindDynamic( + bindp:OCIBind; + errhp:OCIError; + ictxp:pointer; + icbfp:OCICallbackInBind; + octxp:pointer; + ocbfp:OCICallbackOutBind):sword;cdecl;external; + + function OCIBindArrayOfStruct( + bindp:OCIBind; + errhp:OCIError; + pvskip:cardinal; + indskip:cardinal; + alskip:cardinal; + rcskip:cardinal):sword;cdecl;external; + + function OCIStmtGetPieceInfo( + stmtp:OCIStmt; + errhp:OCIError; + hndlpp:pointer; + typep:pcardinal; + in_outp:pbyte; + iterp:pcardinal; + idxp:pcardinal; + piecep:pbyte):sword;cdecl;external; + + function OCIStmtSetPieceInfo( + hndlp:pointer; + AType:cardinal; + errhp:OCIError; + bufp:pointer; + alenp:pcardinal; + piece:byte; + indp:pointer; + rcodep:pword):sword;cdecl;external; + + function OCIStmtExecute( + svchp:OCISvcCtx; + stmtp:OCIStmt; + errhp:OCIError; + iters:cardinal; + rowoff:cardinal; + snap_in:OCISnapshot; + snap_out:OCISnapshot; + mode:cardinal):sword;cdecl;external; + + function OCIDefineByPos( + stmtp:OCIStmt; + defnp:OCIDefine; + errhp:OCIError; + position:cardinal; + valuep:pointer; + value_sz:longint; + dty:word; + indp:pointer; + rlenp:pword; + rcodep:pword; + mode:cardinal):sword;cdecl;external; + + function OCIDefineObject( + defnp:OCIDefine; + errhp:OCIError; + AType:OCIType; + pgvpp:pointer; + pvszsp:pcardinal; + indpp:pointer; + indszp:pcardinal):sword;cdecl;external; + + function OCIDefineDynamic( + defnp:OCIDefine; + errhp:OCIError; + octxp:pointer; + ocbfp:OCICallbackDefine):sword;cdecl;external; + + function OCIDefineArrayOfStruct( + defnp:OCIDefine; + errhp:OCIError; + pvskip:cardinal; + indskip:cardinal; + rlskip:cardinal; + rcskip:cardinal):sword;cdecl;external; + + function OCIStmtFetch( + stmtp:OCIStmt; + errhp:OCIError; + nrows:cardinal; + orientation:word; + mode:cardinal):sword;cdecl;external; + + function OCIStmtGetBindInfo( + stmtp:OCIStmt; + errhp:OCIError; + size:cardinal; + startloc:cardinal; + found:plongint; + bvnp:PChar; + bvnl:byte; + invp:PChar; + inpl:byte; + dupl:byte; + hndl:OCIBind):sword;cdecl;external; + + function OCIDescribeAny( + svchp:OCISvcCtx; + errhp:OCIError; + objptr:pointer; + objnm_len:cardinal; + objptr_typ:byte; + info_level:byte; + objtyp:byte; + dschp:OCIDescribe):sword;cdecl;external; + + function OCIParamGet( + hndlp:pointer; + htype:cardinal; + errhp:OCIError; + parmdpp:pointer; + pos:cardinal):sword;cdecl;external; + + function OCIParamSet( + hdlp:pointer; + htyp:cardinal; + errhp:OCIError; + dscp:pointer; + dtyp:cardinal; + pos:cardinal):sword;cdecl;external; + + function OCITransStart( + svchp:OCISvcCtx; + errhp:OCIError; + timeout:uword; + flags:cardinal):sword;cdecl;external; + + function OCITransDetach( + svchp:OCISvcCtx; + errhp:OCIError; + flags:cardinal):sword;cdecl;external; + + function OCITransCommit( + svchp:OCISvcCtx; + errhp:OCIError; + flags:cardinal):sword;cdecl;external; + + function OCITransRollback( + svchp:OCISvcCtx; + errhp:OCIError; + flags:cardinal):sword;cdecl;external; + + function OCITransPrepare( + svchp:OCISvcCtx; + errhp:OCIError; + flags:cardinal):sword;cdecl;external; + + function OCITransForget( + svchp:OCISvcCtx; + errhp:OCIError; + flags:cardinal):sword;cdecl;external; + + function OCILobAppend( + svchp:OCISvcCtx; + errhp:OCIError; + dst_locp:OCILobLocator; + src_locp:OCILobLocator):sword;cdecl;external; + + function OCILobAssign( + envhp:OCIEnv; + errhp:OCIError; + src_locp:OCILobLocator; + dst_locpp:OCILobLocator):sword;cdecl;external; + + function OCILobCharSetForm( + envhp:OCIEnv; + errhp:OCIError; + locp:OCILobLocator; + csfrm:pbyte):sword;cdecl;external; + + function OCILobCharSetId( + envhp:OCIEnv; + errhp:OCIError; + locp:OCILobLocator; + csid:pword):sword;cdecl;external; + + function OCILobCopy( + svchp:OCISvcCtx; + errhp:OCIError; + dst_locp:OCILobLocator; + src_locp:OCILobLocator; + amount:cardinal; + dst_offset:cardinal; + src_offset:cardinal):sword;cdecl;external; + + function OCILobDisableBuffering( + svchp:OCISvcCtx; + errhp:OCIError; + locp:OCILobLocator):sword;cdecl;external; + + function OCILobEnableBuffering( + svchp:OCISvcCtx; + errhp:OCIError; + locp:OCILobLocator):sword;cdecl;external; + + function OCILobErase( + svchp:OCISvcCtx; + errhp:OCIError; + locp:OCILobLocator; + amount:pcardinal; + offset:cardinal):sword;cdecl;external; + + function OCILobFileClose( + svchp:OCISvcCtx; + errhp:OCIError; + filep:OCILobLocator):sword;cdecl;external; + + function OCILobFileCloseAll( + svchp:OCISvcCtx; + errhp:OCIError):sword;cdecl;external; + + function OCILobFileExists( + svchp:OCISvcCtx; + errhp:OCIError; + filep:OCILobLocator; + flag:pboolean):sword;cdecl;external; + + function OCILobFileGetName( + envhp:OCIEnv; + errhp:OCIError; + filep:OCILobLocator; + dir_alias:PChar; + d_length:pword; + filename:PChar; + f_length:pword):sword;cdecl;external; + + function OCILobFileIsOpen( + svchp:OCISvcCtx; + errhp:OCIError; + filep:OCILobLocator; + flag:pboolean):sword;cdecl;external; + + function OCILobFileOpen( + svchp:OCISvcCtx; + errhp:OCIError; + filep:OCILobLocator; + mode:byte):sword;cdecl;external; + + function OCILobFileSetName( + envhp:OCIEnv; + errhp:OCIError; + filepp:OCILobLocator; + dir_alias:PChar; + d_length:word; + filename:PChar; + f_length:word):sword;cdecl;external; + + function OCILobFlushBuffer( + svchp:OCISvcCtx; + errhp:OCIError; + locp:OCILobLocator; + flag:cardinal):sword;cdecl;external; + + function OCILobGetLength( + svchp:OCISvcCtx; + errhp:OCIError; + locp:OCILobLocator; + lenp:pcardinal):sword;cdecl;external; + + function OCILobIsEqual( + envhp:OCIEnv; + x:OCILobLocator; + y:OCILobLocator; + is_equal:pboolean):sword;cdecl;external; + + function OCILobLoadFromFile( + svchp:OCISvcCtx; + errhp:OCIError; + dst_locp:OCILobLocator; + src_filep:OCILobLocator; + amount:cardinal; + dst_offset:cardinal; + src_offset:cardinal):sword;cdecl;external; + + function OCILobLocatorIsInit( + envhp:OCIEnv; + errhp:OCIError; + locp:OCILobLocator; + is_initialized:pboolean):sword;cdecl;external; + + function OCILobRead( + svchp:OCISvcCtx; + errhp:OCIError; + locp:OCILobLocator; + amtp:pcardinal; + offset:cardinal; + bufp:pointer; + bufl:cardinal; + ctxp:pointer; + cbfp:pointer; + csid:word; + csfrm:byte):sword;cdecl;external; + + function OCILobTrim( + svchp:OCISvcCtx; + errhp:OCIError; + locp:OCILobLocator; + newlen:cardinal):sword;cdecl;external; + + function OCILobWrite( + svchp:OCISvcCtx; + errhp:OCIError; + locp:OCILobLocator; + amtp:pcardinal; + offset:cardinal; + bufp:pointer; + buflen:cardinal; + piece:byte; + ctxp:pointer; + cbfp:pointer; + csid:word; + csfrm:byte):sword;cdecl;external; + + function OCIBreak( + hndlp:pointer; + errhp:OCIError):sword;cdecl;external; + + function OCIReset( + hndlp:pointer; + errhp:OCIError):sword;cdecl;external; + + function OCIServerVersion( + hndlp:pointer; + errhp:OCIError; + bufp:PChar; + bufsz:cardinal; + hndltype:byte):sword;cdecl;external; + + function OCIAttrGet( + trgthndlp:pointer; + trghndltyp:cardinal; + attributep:pointer; + sizep:pcardinal; + attrtype:cardinal; + errhp:OCIError):sword;cdecl;external; + + function OCIAttrSet( + trgthndlp:pointer; + trghndltyp:cardinal; + attributep:pointer; + size:cardinal; + attrtype:cardinal; + errhp:OCIError):sword;cdecl;external; + + function OCISvcCtxToLda( + svchp:OCISvcCtx; + errhp:OCIError; + ldap:pLda_Def):sword;cdecl;external; + + function OCILdaToSvcCtx( + svchpp:OCISvcCtx; + errhp:OCIError; + ldap:pLda_Def):sword;cdecl;external; + + function OCIResultSetToStmt( + rsetdp:OCIResult; + errhp:OCIError):sword;cdecl;external; + + function OCIDateToText( + err:OCIError; + date:POCIDate; + fmt:PChar; + fmt_length:ub1; + lang_name:PChar; + lang_length:ub4; + buf_size:PCardinal; + buf:PChar):sword;cdecl;external; + + {-------------------------------------------------------------------------------------------} + { Security Package } + {-------------------------------------------------------------------------------------------} + { + function OCISecurityInitialize(sechandle:pOCISecurity; error_handle:OCIError):sword;cdecl; + + function OCISecurityTerminate(sechandle:pOCISecurity; error_handle:OCIError):sword;cdecl; + + function OCISecurityOpenWallet(osshandle:pOCISecurity; error_handle:OCIError; wrllen:size_t; wallet_resource_locator:PChar; pwdlen:size_t; + password:PChar; wallet:pnzttWallet):sword;cdecl; + + function OCISecurityCloseWallet(osshandle:pOCISecurity; error_handle:OCIError; wallet:pnzttWallet):sword;cdecl; + + function OCISecurityCreateWallet(osshandle:pOCISecurity; error_handle:OCIError; wrllen:size_t; wallet_resource_locator:PChar; pwdlen:size_t; + password:PChar; wallet:pnzttWallet):sword;cdecl; + + function OCISecurityDestroyWallet(osshandle:pOCISecurity; error_handle:OCIError; wrllen:size_t; wallet_resource_locator:PChar; pwdlen:size_t; + password:PChar):sword;cdecl; + + function OCISecurityStorePersona(osshandle:pOCISecurity; error_handle:OCIError; persona:ppnzttPersona; wallet:pnzttWallet):sword;cdecl; + + function OCISecurityOpenPersona(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona):sword;cdecl; + + function OCISecurityClosePersona(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona):sword;cdecl; + + function OCISecurityRemovePersona(osshandle:pOCISecurity; error_handle:OCIError; persona:ppnzttPersona):sword;cdecl; + + function OCISecurityCreatePersona(osshandle:pOCISecurity; error_handle:OCIError; identity_type:nzttIdentType; cipher_type:nzttCipherType; desc:pnzttPersonaDesc; + persona:ppnzttPersona):sword;cdecl; + + function OCISecuritySetProtection(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; crypto_engine_function:nzttcef; data_unit_format:nztttdufmt; + protection_info:pnzttProtInfo):sword;cdecl; + + function OCISecurityGetProtection(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; crypto_engine_function:nzttcef; data_unit_format_ptr:pnztttdufmt; + protection_info:pnzttProtInfo):sword;cdecl; + + function OCISecurityRemoveIdentity(osshandle:pOCISecurity; error_handle:OCIError; identity_ptr:ppnzttIdentity):sword;cdecl; + + function OCISecurityCreateIdentity(osshandle:pOCISecurity; error_handle:OCIError; AType:nzttIdentType; desc:pnzttIdentityDesc; identity_ptr:ppnzttIdentity):sword;cdecl; + + function OCISecurityAbortIdentity(osshandle:pOCISecurity; error_handle:OCIError; identity_ptr:ppnzttIdentity):sword;cdecl; + + function OCISecurityFreeIdentity(osshandle:pOCISecurity; error_handle:OCIError; identity_ptr:ppnzttIdentity):sword;cdecl; + + function OCISecurityStoreTrustedIdentity(osshandle:pOCISecurity; error_handle:OCIError; identity_ptr:ppnzttIdentity; persona:pnzttPersona):sword;cdecl; + + function OCISecuritySign(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; signature_state:nzttces; input_length:size_t; + input:pbyte; buffer_block:pnzttBufferBlock):sword;cdecl; + + function OCISecuritySignExpansion(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; inputlen:size_t; signature_length:psize_t):sword;cdecl; + + function OCISecurityVerify(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; signature_state:nzttces; siglen:size_t; + signature:pbyte; extracted_message:pnzttBufferBlock; verified:pboolean; validated:pboolean; signing_party_identity:ppnzttIdentity):sword;cdecl; + + function OCISecurityValidate(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; identity:pnzttIdentity; validated:pboolean):sword;cdecl; + + function OCISecuritySignDetached(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; signature_state:nzttces; input_length:size_t; + input:pbyte; signature:pnzttBufferBlock):sword;cdecl; + + function OCISecuritySignDetExpansion(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; input_length:size_t; required_buffer_length:psize_t):sword;cdecl; + + function OCISecurityVerifyDetached(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; signature_state:nzttces; data_length:size_t; + data:pbyte; siglen:size_t; signature:pbyte; verified:pboolean; validated:pboolean; + signing_party_identity:ppnzttIdentity):sword;cdecl; + + function OCISecurity_PKEncrypt(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; number_of_recipients:size_t; recipient_list:pnzttIdentity; + encryption_state:nzttces; input_length:size_t; input:pbyte; encrypted_data:pnzttBufferBlock):sword;cdecl; + + function OCISecurityPKEncryptExpansion(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; number_recipients:size_t; input_length:size_t; + buffer_length_required:psize_t):sword;cdecl; + + function OCISecurityPKDecrypt(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; encryption_state:nzttces; input_length:size_t; + input:pbyte; encrypted_data:pnzttBufferBlock):sword;cdecl; + + function OCISecurityEncrypt(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; encryption_state:nzttces; input_length:size_t; + input:pbyte; encrypted_data:pnzttBufferBlock):sword;cdecl; + + function OCISecurityEncryptExpansion(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; input_length:size_t; encrypted_data_length:psize_t):sword;cdecl; + + function OCISecurityDecrypt(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; decryption_state:nzttces; input_length:size_t; + input:pbyte; decrypted_data:pnzttBufferBlock):sword;cdecl; + + function OCISecurityEnvelope(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; number_of_recipients:size_t; identity:pnzttIdentity; + encryption_state:nzttces; input_length:size_t; input:pbyte; enveloped_data:pnzttBufferBlock):sword;cdecl; + + function OCISecurityDeEnvelope(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; decryption_state:nzttces; input_length:size_t; + input:pbyte; output_message:pnzttBufferBlock; verified:pboolean; validated:pboolean; sender_identity:ppnzttIdentity):sword;cdecl; + + function OCISecurityKeyedHash(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; hash_state:nzttces; input_length:size_t; + input:pbyte; keyed_hash:pnzttBufferBlock):sword;cdecl; + + function OCISecurityKeyedHashExpansion(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; input_length:size_t; required_buffer_length:psize_t):sword;cdecl; + + function OCISecurityHash(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; hash_state:nzttces; input:size_t; + input_length:pbyte; hash:pnzttBufferBlock):sword;cdecl; + + function OCISecurityHashExpansion(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; input_length:size_t; required_buffer_length:psize_t):sword;cdecl; + + function OCISecuritySeedRandom(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; seed_length:size_t; seed:pbyte):sword;cdecl; + + function OCISecurityRandomBytes(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; number_of_bytes_desired:size_t; random_bytes:pnzttBufferBlock):sword;cdecl; + + function OCISecurityRandomNumber(osshandle:pOCISecurity; error_handle:OCIError; persona:pnzttPersona; random_number_ptr:puword):sword;cdecl; + + function OCISecurityInitBlock(osshandle:pOCISecurity; error_handle:OCIError; buffer_block:pnzttBufferBlock):sword;cdecl; + + function OCISecurityReuseBlock(osshandle:pOCISecurity; error_handle:OCIError; buffer_block:pnzttBufferBlock):sword;cdecl; + + function OCISecurityPurgeBlock(osshandle:pOCISecurity; error_handle:OCIError; buffer_block:pnzttBufferBlock):sword;cdecl; + + function OCISecuritySetBlock(osshandle:pOCISecurity; error_handle:OCIError; flags_to_set:uword; buffer_length:size_t; used_buffer_length:size_t; + buffer:pbyte; buffer_block:pnzttBufferBlock):sword;cdecl; + + function OCISecurityGetIdentity(osshandle:pOCISecurity; error_handle:OCIError; namelen:size_t; distinguished_name:PChar; identity:ppnzttIdentity):sword;cdecl; + + function OCIAQEnq(svchp:OCISvcCtx; errhp:OCIError; queue_name:PChar; enqopt:pOCIAQEnqOptions; msgprop:pOCIAQMsgProperties; + payload_tdo:pOCIType; payload:ppointer; payload_ind:ppointer; msgid:ppOCIRaw; flags:cardinal):sword;cdecl; + + function OCIAQDeq(svchp:OCISvcCtx; errhp:OCIError; queue_name:PChar; deqopt:pOCIAQDeqOptions; msgprop:pOCIAQMsgProperties; + payload_tdo:pOCIType; payload:ppointer; payload_ind:ppointer; msgid:ppOCIRaw; flags:cardinal):sword;cdecl; +} + + {-------------------------------------------------------------------------------------------} + { Datatype Mapping } + {-------------------------------------------------------------------------------------------} + +implementation + + +end. diff --git a/packages/oracle/src/oratypes.pp b/packages/oracle/src/oratypes.pp new file mode 100644 index 0000000000..92ffcf5270 --- /dev/null +++ b/packages/oracle/src/oratypes.pp @@ -0,0 +1,308 @@ + +unit oratypes; +interface + +{ + Automatically converted by H2Pas 1.0.0 from oratypes.h + The following command line parameters were used: + -p + -D + -l + jojo + oratypes.h +} + + { Pointers to basic pascal types, inserted by h2pas conversion program.} + Type + PLongint = ^Longint; + PSmallInt = ^SmallInt; + PByte = ^Byte; + PWord = ^Word; + PDWord = ^DWord; + PDouble = ^Double; + + +{$PACKRECORDS C} + + + { $RCSfile: oratypes.h $ $Date: 20-jul-00.13:44:19 + ---------------------------------------------------------------------- + Copyright (c) 1982, 2003, Oracle. All rights reserved. + ---------------------------------------------------------------------- } +{$define ORATYPES} +{$define SX_ORACLE} +{$define SX3_ORACLE} + +{$ifndef ORASTDDEF} +{ $include <stddef.h>} +{ $define ORASTDDEF} +{$endif} + +{$ifndef ORALIMITS} +{ $include <limits.h>} +{ $define ORALIMITS} +{$endif} + + +// Not needed for pascal +{ const + TRUE = 1; + FALSE = 0; } + + { --- Signed/Unsigned one-byte scalar (sb1/ub1) --- } + + type + + Pub1 = ^ub1; + ub1 = byte; + + Psb1 = ^sb1; + sb1 = shortint; + + Peb1 = ^eb1; + eb1 = char; + + const + UB1MAXVAL:ub1 = 255; + UB1MINVAL:ub1 = 0; + SB1MAXVAL:sb1 = 127; + SB1MINVAL:sb1 = -128; + MINUB1MAXVAL:ub1 = 255; + MAXUB1MINVAL:ub1 = 0; + MINSB1MAXVAL:sb1 = 127; + MAXSB1MINVAL:sb1 = -127; + EB1MAXVAL:eb1 = #255; + EB1MINVAL:eb1 = #0; + MINEB1MAXVAL:eb1 =#127; + MAXEB1MINVAL:eb1 =#0; + + const + UB1BITS = 8; + + { was #define dname def_expr } + function UB1MASK : longint; + { return type might be wrong } + + { backwards compatibility } + type + + Pb1 = ^b1; + b1 = sb1; + + const + B1MAXVAL:b1 = 127; // was SB1MAXVAL + B1MINVAL:b1 = -128; // was SB1MINVAL + { --- Signed/Unsigned two-byte scalar (sb2/ub2) --- } + + type + + Pub2 = ^ub2; + ub2 = word; + + Psb2 = ^sb2; + sb2 = smallint; + + Peb2 = ^eb2; + eb2 = smallint; + + const + UB2MAXVAL:ub2 = 65535; + UB2MINVAL:ub2 = 0; + SB2MAXVAL:sb2 = 32767; + SB2MINVAL:sb2 = -32768; + MINUB2MAXVAL:ub2 = 65535; + MAXUB2MINVAL:ub2 = 0; + MINSB2MAXVAL:sb2 = 32767; + MAXSB2MINVAL:sb2 = -32767; + EB2MAXVAL:eb2 = 32767; + EB2MINVAL:eb2 = 0; + MINEB2MAXVAL:eb2 = 32767; + MAXEB2MINVAL:eb2 = 0; + + { backwards compatibility } + type + + Pb2 = ^b2; + b2 = sb2; + + const + B2MAXVAL = 32767; // was SB2MAXVAL + B2MINVAL = -32768; // was SB2MINVAL; + { --- Signed/Unsigned four-byte scalar (sb4/ub4) --- } + + type + + Pub4 = ^ub4; + ub4 = dword; + + Psb4 = ^sb4; + sb4 = longint; + + Peb4 = ^eb4; + eb4 = longint; + + + const + UB4MAXVAL:ub4 = 4294967295; + UB4MINVAL:ub4 = 0; + SB4MAXVAL:sb4 = 2147483647; + SB4MINVAL:sb4 = -2147483648; + MINUB4MAXVAL:ub4 = 4294967295; + MAXUB4MINVAL:ub4 = 0; + MINSB4MAXVAL:sb4 = 2147483647; + MAXSB4MINVAL:sb4 = -2147483647; + EB4MAXVAL:eb4 = 2147483647; + EB4MINVAL:eb4 =0; + MINEB4MAXVAL:eb4 = 2147483647; + MAXEB4MINVAL:eb4 = 0; + + { --- Signed/Unsigned eight-byte scalar (orasb8/oraub8) --- } + type + + Poraub8 = ^oraub8; + oraub8 = qword; + + Porasb8 = ^orasb8; + orasb8 = int64; + + type + + Pub8 = ^ub8; + ub8 = oraub8; + + Psb8 = ^sb8; + sb8 = orasb8; + + const + ORAUB8MINVAL:oraub8=0; + ORAUB8MAXVAL:oraub8=18446744073709551615; + ORASB8MINVAL:orasb8=-9223372036854775808; + ORASB8MAXVAL:orasb8= 9223372036854775807; + MAXORAUB8MINVAL:oraub8=0; + MINORAUB8MAXVAL:oraub8=18446744073709551615; + MAXORASB8MINVAL:orasb8=-9223372036854775807; + MINORASB8MAXVAL:orasb8=9223372036854775807; + + { backwards compatibility } + + type + + Pb4 = ^b4; + b4 = sb4; + + const + B4MAXVAL = 2147483647; // was SB4MAXVAL + B4MINVAL = -2147483648; // was SB4MINVAL + { --- Character pointer --- } + + type + Poratext = ^oratext; + oratext = char; + + + type + + Ptext = ^text; + text = oratext; + + type + Putext = ^utext; + utext = word; + + { --- Other data types --- } + type + + Peword = ^eword; + eword = longint; + + Puword = ^uword; + uword = dword; + + Psword = ^sword; + sword = longint; + + + const + EWORDMAXVAL:eword = 2147483647; + EWORDMINVAL:eword = 0; + UWORDMAXVAL:uword = 4294967295; + UWORDMINVAL:uword = 0; + SWORDMAXVAL:sword = 2147483647; + SWORDMINVAL:sword = -2147483648; + MINEWORDMAXVAL:eword = 2147483647; + MAXEWORDMINVAL:eword = 0; + MINUWORDMAXVAL:uword = 4294967295; + MAXUWORDMINVAL:uword = 0; + MINSWORDMAXVAL:sword = 2147483647; + MAXSWORDMINVAL:sword = -2147483647; + + + type + + Pubig_ora = ^ubig_ora; + ubig_ora = dword; + + Psbig_ora = ^sbig_ora; + sbig_ora = longint; + + const + UBIG_ORAMAXVAL:ubig_ora = 2147483647; + UBIG_ORAMINVAL:ubig_ora = 0; + SBIG_ORAMAXVAL:sbig_ora = 2147483647; + SBIG_ORAMINVAL:sbig_ora = -2147483648; + MINUBIG_ORAMAXVAL:ubig_ora = 4294967295; + MAXUBIG_ORAMINVAL:ubig_ora = 0; + MINSBIG_ORAMAXVAL:sbig_ora = 2147483647; + MAXSBIG_ORAMINVAL:sbig_ora = -2147483647; + +(* error +#define UBIGORABITS (UB1BITS * sizeof(ubig_ora)) +in define line 272 *) + + type + + lgenfp_t = procedure (_para1:pointer);cdecl; + + const + SIZE_TMAXVAL = 2147483647; // was UBIG_ORAMAXVAL; + +// const +// MINSIZE_TMAXVAL:size_t = 4294967295; + +type + POCITime = ^OCITime; + OCITime = packed record + OCITimeHH : ub1; + OCITimeMM : ub1; + OCITimeSS : ub1; + end; + + POCIDate = ^OCIDate; + OCIDate = packed record + OCIDateYYYY : sb2; + OCIDateMM : ub1; + OCIDateDD : ub1; + OCIDateTime : OCITime; + end; + + POCIDateTime = ^TOCIDate; + TOCIDate = packed record + Year : sb2; + Month : ub1; + Day : ub1; + Hour : ub1; + Min : ub1; + Sec : ub1; + end; + +implementation + + function UB1MASK : longint; + { return type might be wrong } + begin +// UB1MASK:=(1 shl (uword(CHAR_BIT)))-1; + end; + + + +end. diff --git a/packages/oracle/src/orl.inc b/packages/oracle/src/orl.inc new file mode 100644 index 0000000000..1ccfd1d463 --- /dev/null +++ b/packages/oracle/src/orl.inc @@ -0,0 +1,3911 @@ + +{ + Automatically converted by H2Pas 1.0.0 from orl.h + The following command line parameters were used: + -p + -D + -l + jojo.so + orl.h +} + +{$PACKRECORDS C} + + { Copyright (c) 1993, 2003, Oracle Corporation. All rights reserved. } + { + Author: Srinath Krishnaswamy + Date: 11/24/93 + Source documents: "Functional Specification for C Language Mapping of + OTS Types, Object Management Subsystem", "Oracle C + Coding Standards version 2.2", and the header file + template + Rule sets: the generic and .h file rule sets + Quality status: not exited + Identification tag: [ one or more letters to identify the .h file ] + Revision code: 11/24/93 + + NAME + + ORL - ORacle's external C Language interface to primitive OTS types + + DESCRIPTION + + This header file contains C langauge interface to the OTS primitive + types. The interface includes C mapping of OTS primitive types and + the prototype of the pre-defined operations on the primitive types. + + *********************************************************************** + *** NOTE: The OCI functions for objects requires the *** + *** application to be running in OBJECT mode. That is, during *** + *** process initialization OCIInitialize(), the mode *** + *** specified should be OBJECT mode. *** + ** OCIInitialize(OCI_OBJECT, ..); *** + *********************************************************************** + + RELATED DOCUMENTS + + [1] Krishnaswamy, Srinath and Nguyen, Tin A., "Functional Specification + for C Language Mapping of OTS Types, Object Management Subsystem", + March 1994. + [2] Nguyen, Tin A., "The Open Type System", Oracle Corporation, + February 1994. + [3] Klein, Jonathan D., "Large Field Management", Oracle Corporation, + October 1993. + + PUBLIC FUNCTIONS + + OCI - OCI functions to manipulate Oracle Number, float and decimal + ARITHMETIC + OCINumberInc - OCINumber INCrement (optimized) + OCINumberDec - OCINumber DECrement (optimized) + OCINumberAdd - OCINumber ADD numbers + OCINumberSub - OCINumber SUBtract numbers + OCINumberMul - OCINumber MULtiply numbers + OCINumberDiv - OCINumber DIVide numbers + OCINumberMod - OCINumber MODulo division + OCINumberIntPower - OCINumber integer PoWeR + OCINumberShift - OCINumber decimal ShiFT number + OCINumberNeg - OCINumber NEGate number + OCINumberAbs - OCINumber ABSolute value + OCINumberCeil - OCINumber CEiling of number + OCINumberFloor - OCINumber FLooR of number + OCINumberSqrt - OCINumber SQuare Root of number + OCINumberSign - OCINumber get SIGN of number + NATIVE TYPE CONVERSION + OCINumberToInt - OCINumber convert number TO machine-format Integer + OCINumberFromInt - OCINumber convert machine-format Integer TO Number + OCINumberToReal - OCINumber convert number TO machine-format Real + OCINumberToRealArray - OCINumber convert array of numbers TO + machine-format Real + OCINumberFromReal - OCINumber convert machine-format Real TO Number + TEXT STRING CONVERSION + OCINumberToText - OCINumber convert number TO String + OCINumberFromText - OCINumber convert String TO Number + COMPARISON + OCINumberCmp - OCINumber CoMPare numbers + OCINumberIsZero - OCINumber comparison with ZERo + OCINumberIsInt - OCINumber Is an Integer + ASSIGNMENT + OCINumberAssign - OCINumber ASsiGn number + OCINumberSetZero - OCINumber Set number to Zero value + OCINumberSetPi - OCINumber Set number to Pi + ROUNDING + OCINumberTrunc - OCINumber TRUncate an Oracle number + OCINumberRound - OCINumber ROUnd number + OCINumberPrec - OCINumber round to Precision digits + TRANSCENDENTAL + OCINumberSin - OCINumber SINe + OCINumberArcSin - OCINumber Arc SINe + OCINumberHypSin - OCINumber SiNe Hyperbolic + OCINumberCos - OCINumber COSine + OCINumberArcCos - OCINumber Arc COSine + OCINumberHypCos - OCINumber CoSine Hyperbolic + OCINumberTan - OCINumber TANgent + OCINumberArcTan - OCINumber Arc TANgent + OCINumberArcTan2 - OCINumber Arc TaNgent 2 + OCINumberHypTan - OCINumber TaNgent Hyperbolic + OCINumberPower - OCINumber arbitrary Base EXponentiation + OCINumberExp - OCINumber EXPonentiation to base e + OCINumberLn - OCINumber Logarithm Natural + OCINumberLog - OCINumber LOGarithm to arbitrary base + + OCIDate - OCI functions to manipulate OCI Date + OCIDateToExternal - OCIDate convert date to external form + OCIDateFromExternal - OCIDate convert external form of date into OCIDate + OCIDateAssign - OCIDate Assignment + OCIDateToText - OCIDate convert date TO String + OCIDateFromText - OCIDate convert String TO Date + OCIDateZoneToZone - OCIDate convert date from one time + Zone TO another Zone + OCIDateCompare - OCIDate CoMPare dates + OCIDateAddMonths - OCIDate ADd or subtract Months + OCIDateAddDays - OCIDate ADd or subtract Days + OCIDateLastDay - OCIDate get date of LaST day of month + OCIDateDaysBetween - OCIDate get number of days BeTWeen two dates + OCIDateNextDay - OCIDate get date of Next DaY + OCIDateCheck - OCIDate CHecK if the given date is valid + OCIDateSysDate - OCIDate get current SYStem date and time + + OCIString - OCI String functions to manipulate Variable-length string + OCIStringAssign - OCIString Assign string to string + OCIStringAssignText - OCIString Assign Text string to string + OCIStringResize - OCIString ReSiZe string + OCIStringSize - OCIString get String Size + OCIStringPtr - OCIString get String PoinTeR + OCIStringAllocSize - OCIString get Allocated SiZe + + OCIRaw - OCI Raw functions to manipulate variable-length raW + OCIRawAssignRaw - OCIRaw Assign Raw (of type OCIRaw*) to raw + (of type OCIRaw*) + OCIRawResize - OCIRaw Resize raw + OCIRawSize - OCIRaw get Raw Size + OCIRawPtr - OCIRaw get Raw data Pointer + OCIRawAllocSize - OCIRaw get Allocated Size + + OCIColl - OCI Collection generic functions. These functions can be + used to manipulate both variable-length array (varray) and + nested table. + OCICollSize - OCIColl return current SIZe of the given collection + (in number of elements) + OCICollMax - OCIColl return the MAXimum number of elements in the + collection (i.e. upper-bound) + OCICollGetElem - OCIColl GET pointer to the element at the given + position + OCICollAssignElem - OCIColl assign to element at given index + OCICollAssign - OCIColl ASsiGn collection; perform deep-copy of source + collection to target collection + OCICollAppend - OCIColl aPPend the given element to the end of the + collection + OCICollTrim - OCIColl trim (delete) the given number of elements + from the end of the collection + OCICollIsLocator - OCIColl indicates whether a collection is locator + based or not. + OCIIterCreate - OCIColl Create an ITerator to scan the collection + elements + OCIIterDelete - OCIColl Delete ITerator + OCIIterInit - OCIColl Initialize ITerator to scan the given collection + OCIIterGetCurrent - OCIColl Iterator based, get CURrent + collection element + OCIIterNext - OCIColl Iterator based, get NeXT collection element + OCIIterPrev - OCIColl Iterator based, get PReVious collection element + + OCITable - OCI functions to manipulate nested Table. The OCIColl*() and + OCITable*() functions can be used to manipulate nested table + OCITableDelete(i) - OCITable if element(i) exists then the element is + marked as deleted else the function returns false. So + delete's create "holes". + OCITableExists(i) - OCITable return true iff an element at + position i EXIsts + OCITableFirst - OCITable return the smallest value of i for which + exists(i) is true. + OCITableLast - OCITable return the largest value of i for which + exists(i) is true. + OCITableNext(i) - OCITable return pointer to the smallest position j, + greater than i, such that OCITableExists(j) is true + OCITablePrev(i) - OCITable return pointer to the largest position j, + less than i, such that OCITableExists(j) is true + OCITableSize - OCITable return current SIZe of the given nested table not + including deleted elements + + OCIRef - OCI functions to manipulate object Reference + OCIRefClear - OCIRef CLeaR or nullify a ref + OCIRefAssign - OCIRef ASsiGn a ref to another + OCIRefIsEqual - OCIRef compare two refs for EQUality + OCIRefIsNull - OCIRef test if a ref is NULl + OCIRefFromHex - OCIRef convert a Hexadecimal string TO a Ref + OCIRefToHex - OCIRef convert a ref to a Hexadecimal string + OCIRefHexSize - OCIRef get size of buffer in bytes to store hexadecimal + string + + OBSOLETE: to be replaced by functions from oci.h: + + ORLL - ORL functions to manipulate lob Locators + orllasg - ORLL AsiGn one locator to another + orllequ - ORLL compare two locators for EQUality + orlliini - ORLL Is the locator INItialized? + orllgsz - ORLL Get locator SiZe + orllgcid - ORLL Get Character set ID + + NOTE: The following are specific to FILE lobs: + + orllsnm - ORLL Set directory alias and file NaMe in the locator + orllgnm - ORLL Get directory alias and file NaMe from the locator + + EXAMPLES + + Examples are given in the description of each function where + relevant. + + NOTES + + This file has been subsetted to contain ONLY the routines that will + be in the first release. + + QUESTIONS + + MODIFIED + srseshad 03/12/03 - convert oci public api to ansi + rpingte 11/21/02 - Add OCICollGetElemArray and OCINumberToRealArray + aahluwal 06/03/02 - bug 2360115 + gayyappa 02/01/02 - fix 2210776 : change Dom to DOM + whe 09/25/01 - add OCIXMLType & OCIDomDocument opaque types + bpalaval 02/09/01 - Change text to oratext. + rkasamse 09/20/99 - lint changes + whe 09/01/99 - 976457:check __cplusplus for C++ code + hsbedi 08/11/99 - Add macro + rxgovind 10/14/98 - make non exposed calls (OCIRowType etc) private + rxgovind 06/09/98 - update OCIRowTypeCreate + nmantrav 05/11/98 - add OCIRowTypeGetCount + rxgovind 03/29/98 - add OCIRowType and OCIRowData interfaces + jwijaya 05/06/98 - add OCICollIsLocator + rxgovind 03/18/98 - opaque types: move to kolo.h + etucker 02/02/98 - add comments for Dec and Inc + etucker 01/29/98 - Finish core5 integration + rxgovind 11/11/97 - opaque types + etucker 10/28/97 - add ORLN functions for SDK + cxcheng 07/28/97 - remove OCILobLocator #define + skmishra 05/13/97 - stdcc compatibility changes + skrishna 04/25/97 - rename OCINumber*(): Exp Power TanHyp Zero Init + TanToArc Sqr Truncate and Compare + skotsovo 03/31/97 - remove OCILobLocatorSize + skrishna 03/25/97 - remove orld2i and orldi2d + skrishna 03/18/97 - fix ifdef for supporting ansi and k&r proto-types + cxcheng 02/06/97 - take out short name support except with SLSHORTNAME + skrishna 01/06/97 - update OCITableSize() comments + skrishna 12/27/96 - fix OCIDateGet/OCIDateSet + skrishna 12/12/96 - update OCICollGelElem comments + skrishna 11/07/96 - OCICollGetElem: interface change + skrishna 11/05/96 - add OCIDate Get/Set and OCIDateAssign + cxcheng 10/31/96 - change OCINumberTanHyp to OCINumberHypTan + cxcheng 10/30/96 - #define orll short names to long names + dchatter 10/26/96 - fix some OCI file long names + cxcheng 10/24/96 - remove unnecessary comment in front + cxcheng 10/14/96 - disable long name mapping for LOB functions + skrishna 10/13/96 - continue beautification + skotsovo 10/16/96 - update ocilob names + cxcheng 10/09/96 - add structure members in #define for date/time + cxcheng 10/09/96 - more lint fixes + skrishna 10/09/96 - continue beautification + cxcheng 10/09/96 - more fixes + skrishna 10/09/96 - change fixed-char rep. to orlvstr* + jwijaya 10/08/96 - continue beautification + jwijaya 10/07/96 - beautify + cxcheng 10/07/96 - more changes + cxcheng 10/04/96 - replace short names with long names + skrishna 10/01/96 - orlcsiz, orltsiz: change prototype to take errhdl + skrishna 09/23/96 - fix lint errors + skotsovo 09/23/96 - remove orllmkcur(). + jwijaya 09/17/96 - comments on null ref + skrishna 09/19/96 - change orlraw format + skotsovo 09/19/96 - add orlliini and remove orllnul + skrishna 08/14/96 - orlvstr: change format to ub4 followed by text + jboonleu 08/06/96 - update comment + skotsovo 08/08/96 - revert to locators instead of descriptors as input t + jboonleu 07/23/96 - remove orlrcur + skrishna 07/06/96 - add orltsiz + skrishna 07/05/96 - add orld2i and orldi2d + jwijaya 07/03/96 - add ANSI prototypes + skrishna 06/27/96 - document default string format in orlds2d & orld2s + skrishna 06/25/96 - change max date value + skrishna 06/18/96 - modify orld2s() comments + skotsovo 06/13/96 - orll functions take lob descriptors instead of locat + rxgovind 06/05/96 - change prototype of orlrcur to take ocienvh + skrishna 05/30/96 - support collection trimming + skrishna 05/30/96 - remove orlralo/fre and orllalo/fre instead use + orionew/fre + skrishna 05/28/96 - add orlt*() and modify orla*() + skotsovo 05/23/96 - add orlbl typedefs for pro*c + jboonleu 05/14/96 - add orlrcur + rxgovind 05/08/96 - changes for 3gl callbacks + skotsovo 05/01/96 - in orllasg, no need to alloc orlbl* + skrishna 04/21/96 - merge changes from 960418 object branch into big + skrishna 04/17/96 - rename orlrcpy to orlrasg + skrishna 04/12/96 - add orlr2h and orlrh2r functions + skotsovo 04/15/96 - add fnt to make the lob locator current + skrishna 04/08/96 - change orl*() to take ocienvh* and ocierrh* instead + of oroenv* + skotsovo 03/22/96 - add locator functions + skotsovo 03/22/96 - add locator functions + skrishna 02/27/96 - remove mlslabel interface + skotsovo 02/20/96 - remove orlbty and use dty type instead. + skotsovo 02/14/96 - add text file lobs. + skrishna 01/31/96 - update comments of orln2r, orldchk, orlds2d & orld2s + skrishna 01/31/96 - change orld2s() and orln2s() to return string length + skrishna 01/21/96 - remove old raw interface + skrishna 12/14/95 - add raw interface + skotsovo 01/03/96 - change LOB offsets and lengths from ub4 to ubig_ora + to support 64 bit machines. + skotsovo 10/30/95 - add orlblsiz() to get lob locator size + skrishna 10/24/95 - move ref functions from ori and update the ref + functions to support variable-length ref + cxcheng 10/20/95 - add more comments on number versions + cxcheng 10/13/95 - add more number functions + cxcheng 08/29/95 - Support for segmented varrays + cxcheng 08/18/95 - modifiy orlmls structure + skrishna 06/06/95 - rename orln, orld, orlvs and orlva to orlnum, + orldat, orlvstr and orlvary respectively + skrishna 11/15/94 - remove orlnget() function + skrishna 09/20/94 - modify orldbtw() to return number of days only + skrishna 08/24/94 - change format string length type from ub4 to ub1 + skrishna 07/19/94 - Rename orln2c & orlnc2n to orln2s & orlns2n + skrishna 06/29/94 - Add blob interface; add examples + skrishna 06/23/94 - Update comments and format + skrishna 05/19/94 - update varray append comments + skrishna 05/05/94 - Subsetting + skrishna 11/24/93 - Creation + } + {--------------------------------------------------------------------------- } + { SHORT NAMES SUPPORT SECTION } + {--------------------------------------------------------------------------- } +{$ifdef SLSHORTNAME} + { the following are short names that are only supported on IBM mainframes + with the SLSHORTNAME defined. + With this all subsequent long names will actually be substituted with + the short names here } + + const + OCIArray = orlvary; + OCIColl = orlcol; + OCICollAppend = orlcapp; + OCICollAssign = orlcasg; + OCICollAssignElem = orlcase; + OCICollGetElem = orlcget; + OCICollGetElemArray = orlcgeta; + OCICollMax = orlcmax; + OCICollSize = orlcsiz; + OCICollTrim = orlctrm; + OCICollIsLocator = orlcilc; + OCIDate = orldat; + OCIDateAddDays = orldadd; + OCIDateAddMonths = orldadm; + OCIDateCheck = orldchk; + OCIDateCompare = orldcmp; + OCIDateDD = day_orldat; + OCIDateDaysBetween = orldbtw; + OCIDateFromText = orlds2d; + OCIDateLastDay = orldlst; + OCIDateMM = mon_orldat; + OCIDateNextDay = orldndy; + OCIDateSysDate = orldsys; + OCIDateTime = time_orldat; + OCIDateYYYY = gye_orldat; + OCIDateZoneToZone = orldz2z; + OCIIter = orlcitr; + OCIIterCreate = orlccit; + OCIIterDelete = orlcdit; + OCIIterGetCurrent = orlcicur; + OCIIterInit = orlciit; + OCIIterNext = orlcinxt; + OCIIterPrev = orlciprv; + OCINumber = orlnum; + OCINumberAbs = orlnabs; + OCINumberAdd = orlnadd; + OCINumberArcCos = orlnacos; + OCINumberArcSin = orlnasin; + OCINumberArcTan = orlnatan; + OCINumberAssign = orlnasg; + OCINumberCeil = orlncel; + OCINumberCos = orlncos; + OCINumberDiv = orlndiv; + OCINumberPower = orlnbex; + OCINumberFloor = orlnflr; + OCINumberFromInt = orlni2n; + OCINumberFromReal = orlnr2n; + OCINumberFromText = orlns2n; + OCINumberHypCos = orlncsh; + OCINumberHypSin = orlnsnh; + OCINumberSetZero = orlnini; + OCINumberSetPi = orlnspi; + OCINumberInc = orlninc; + OCINumberDec = orlndec; + OCINumberIntPower = orlnpwr; + OCINumberLn = orlnln; + OCINumberLog = orlnlog; + OCINumberMod = orlnmod; + OCINumberMul = orlnmul; + OCINumberNeg = orlnneg; + OCINumberPart = orlnpart; + OCINumberExp = orlnexp; + OCINumberRound = orlnrou; + OCINumberPrec = orlnpre; + OCINumberShift = orlnsft; + OCINumberSign = orlnsgn; + OCINumberSin = orlnsin; + OCINumberSqrt = orlnsqr; + OCINumberSub = orlnsub; + OCINumberTan = orlntan; + OCINumberHypTan = orlntnh; + OCINumberArcTan2 = orlnatn2; + OCINumberToInt = orln2i; + OCINumberToReal = orln2r; + OCINumberToRealArray = orln2ra; + OCINumberToText = orln2s; + OCINumberTrunc = orlntru; + OCINumberCmp = orlncmp; + OCINumberIsZero = orlnzer; + OCINumberIsInt = orlnint; + OCIRaw = orlraw; + OCIRawAllocSize = orlwasz; + OCIRawAssignBytes = orlwabr; + OCIRawAssignRaw = orlwarr; + OCIRawPtr = orlwgrp; + OCIRawResize = orlwrsz; + OCIRawSize = orlwgsz; + OCIRefAssign = orlrasg; + OCIRefClear = orlrclr; + OCIRefFromHex = orlrh2r; + OCIRefHexSize = orlrhsz; + OCIRefIsEqual = orlrequ; + OCIRefIsNull = orlrnul; + OCIRefToHex = orlr2h; + OCIString = orlvstr; + OCIStringAllocSize = orlvasz; + OCIStringAssign = orlvass; + OCIStringAssignText = orlvats; + OCIStringPtr = orlvgsp; + OCIStringResize = orlvrsz; + OCIStringSize = orlvgsz; + OCITable = orltbl; + OCITableDelete = orltdel; + OCITableExists = orltexi; + OCITableFirst = orltfst; + OCITableLast = orltlst; + OCITableNext = orltnxt; + OCITablePrev = orltprv; + OCITableSize = orltsiz; + OCITime = orldtm; + OCITimeHH = orldtmhh; + OCITimeMI = orldtmmm; + OCITimeSS = orldtmss; + OCI_LOBMODE_READONLY = ORLBMORO; + OCI_LOBMODE_READWRITE = ORLBMORW; +{$endif} + { SLSHORTNAME } + {*************************************************************************** } + { NUMBER/FLOAT/DECIMAL TYPE } + {*************************************************************************** } + + const + OCI_NUMBER_SIZE = 22; + + type + POCINumber = ^OCINumber; + OCINumber = record + OCINumberPart : array[0..(OCI_NUMBER_SIZE)-1] of ub1; + end; + + { + * OCINumber - OCI Number mapping in c + * + * The OTS types: NUMBER, NUMERIC, INT, SHORTINT, REAL, DOUBLE PRECISION, + * FLOAT and DECIMAL are represented by OCINumber. + * The contents of OCINumber is opaque to clients. + * + * For binding variables of type OCINumber in OCI calls (OCIBindByName(), + * OCIBindByPos(), and OCIDefineByPos()) use the type code SQLT_VNU. + } + { + EXAMPLE + + The following example shows how to manipulate an attribute of type + oracle number. + + struct person + + OCINumber sal; + ; + typedef struct person person; + + OCIError *err; + person* joe; + person* tom; + person* debbie; + OCINumber *joesal; + OCINumber *tomsal; + OCINumber *debsal; + sword status; + int inum; + double dnum; + OCINumber ornum; + char buffer[21]; + ub4 buflen; + sword result; + + /o See oci.h for an example of how to initialize OCIError. + o For this example, assume the OCIEnv and OCIError has been + o initialized. + o/ + + /o Pin joe, tom and debbie person objects in the object cache. See ori.h + o for an example on pinning objects. For this example, assume that + o joe, tom and debbie are pointing to pinned objects. + o/ + joesal = &joe->sal; + tomsal = &tom->sal; + debsal = &debbie->sal; + + /o initialize joe's salary to be $12,000 o/ + inum = 12000; + status = OCINumberFromInt(err, &inum, sizeof(inum), OCI_NUMBER_SIGNED, + joesal); + if (status != OCI_SUCCESS) + /o goto to handle error from OCINumberFromInt o/; + + /o initialize tom's salary to be same as joe o/ + OCINumberAssign(err, joesal, tomsal); + + /o initialize debbie's salary to be 20% more than joe's o/ + dnum = 1.2; + status = OCINumberFromReal(err, &dnum, sizeof(double), &ornum); + if (status != OCI_SUCCESS) + /o goto to handle error from OCINumberFromReal o/; + status = OCINumberMul(err, joesal, &ornum, debsal); + if (status != OCI_SUCCESS) /o goto to handle error from OCINumberMul o/; + + /o give tom a 50% raise o/ + dnum = 1.5; + status = OCINumberFromReal(err, &dnum, sizeof(double), &ornum); + if (status != OCI_SUCCESS) + /o goto to handle error from OCINumberFromReal o/; + status = OCINumberMul(err, tomsal, &ornum, tomsal); + if (status != OCI_SUCCESS) /o goto to handle error from OCINumberMul o/; + + /o double joe's salary o/ + status = OCINumberAdd(err, joesal, joesal, joesal); + if (status != OCI_SUCCESS) /o goto to handle error from OCINumberAdd o/; + + /o get joe's salary in integer o/ + status = OCINumberToInt(err, joesal, sizeof(inum), OCI_NUMBER_SIGNED, + &inum); + if (status != OCI_SUCCESS)/o goto to handle error from OCINumberToInt o/; + /o inum is set to 24000 o/ + + /o get debbie's salary in double o/ + status = OCINumberToReal(err, debsal, sizeof(dnum), &dnum); + if (status != OCI_SUCCESS)/o goto to handle error from OCINumberToReal o/; + /o dnum is set to 14400 o/ + + /o print tom's salary as DEM0001`8000.00 o/ + buflen = sizeof(buffer); + status = OCINumberToText(err, tomsal, "C0999G9999D99", 13, + "NLS_NUMERIC_CHARACTERS='.`' NLS_ISO_CURRENCY='Germany'", 54, + &buflen, buffer); + if (status != OCI_SUCCESS)/o goto to handle error from OCINumberToText o/; + printf("tom's salary = %s\n", buffer); + + /o compare joe and tom's salary o/ + status = OCINumberCmp(err, joesal, tomsal, &result); + if (status != OCI_SUCCESS) /o goto to handle error from OCINumberCmp o/; + /o result is positive o/ + + /o read debbie's new salary from string o/ + status = OCINumberFromText(err, "48`000.00", 9, "99G999D99", 9, + "NLS_NUMERIC_CHARACTERS='.`'", 27, debsal); + if (status != OCI_SUCCESS) + /o goto to handle error from OCINumberFromText o/; + /o debbie's salary is now 48000.00 o/ + + } + {----------------------------- OCINumberInc -------------------------------- } + +{$IFNDEF LinkDynamically} + function OCINumberInc(err:POCIError; number:POCINumber):sword;cdecl;external ocilib name 'OCINumberInc'; +{$ELSE} +var OCINumberInc : function (err:POCIError; number:POCINumber):sword;cdecl; +{$ENDIF} + { + NAME: OCINumberInc - OCINumber INCrement numbers + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN/OUT) a positive Oracle number to be incremented + DESCRIPTION: + Increment Oracle number in place. It is assumed that the input is + an integer between 0 and 100^21-2. If the is input too large, it will + be treated as 0 - the result will be an Oracle number 1. If the input + is not a positive integer, the result will be unpredictable. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + } + {----------------------------- OCINumberDec -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberDec(err:POCIError; number:POCINumber):sword;cdecl;external ocilib name 'OCINumberDec'; +{$ELSE} + OCINumberDec : function (err:POCIError; number:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberDec - OCINumber DECrement numbers + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN/OUT) - a positive Oracle number to be decremented + DESCRIPTION: + Decrement Oracle number in place. It is assumed that the input is an + integer between 1 and 100^21-2. If the input is too large, it will be + treated as 1 - the result will be an Oracle number 0. If the input is + not a positive integer, the result will be unpredictable. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + } + {-------------------------- OCINumberSetZero ------------------------------- } +{$IFNDEF LinkDynamically} + procedure OCINumberSetZero(err:POCIError; num:POCINumber);cdecl;external ocilib name 'OCINumberSetZero'; +{$ELSE} + OCINumberSetZero : procedure (err:POCIError; num:POCINumber);cdecl; +{$ENDIF} + + { + NAME: OCINumberSetZero - OCINumber Set number to Zero value + PARAMETERS: + err (IN/OUT) - pointer to OCI error handle + num (OUT) - set to zero value + DESCRIPTION: + Initialize the given number to value 0. + } + {--------------------------- OCINumberSetPi -------------------------------- } +{$IFNDEF LinkDynamically} + procedure OCINumberSetPi(err:POCIError; num:POCINumber);cdecl;external ocilib name 'OCINumberSetPi'; +{$ELSE} + OCINumberSetPi : procedure (err:POCIError; num:POCINumber);cdecl; +{$ENDIF} + { + NAME: OCINumberSetPi - OCINumber Set number to Pi + err (IN/OUT) - pointer to OCI error handle + num (OUT) - set to zero value + DESCRIPTION: + Initialize the given number to value Pi. + } + {----------------------------- OCINumberAdd -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberAdd(err:POCIError; number1:POCINumber; number2:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberAdd'; +{$ELSE} + OCINumberAdd : function (err:POCIError; number1:POCINumber; number2:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberAdd - OCINumber ADD numbers + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number1, number2 (IN) - numbers to be added + result (OUT) - result of adding 'number1' with 'number2' + DESCRIPTION: + Add 'number1' with 'number2' and return result in 'result'. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + } + {----------------------------- OCINumberSub -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberSub(err:POCIError; number1:POCINumber; number2:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberSub'; +{$ELSE} + OCINumberSub : function (err:POCIError; number1:POCINumber; number2:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberSub - OCINumber SUBtract numbers + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number1, number2 (IN) - 'number2' subtracted from 'number1' + result (OUT) - subtraction result + DESCRIPTION: + Subtract 'number2' from 'number1' and return result in 'result'. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + } + {----------------------------- OCINumberMul -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberMul(err:POCIError; number1:POCINumber; number2:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberMul'; +{$ELSE} + OCINumberMul : function (err:POCIError; number1:POCINumber; number2:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberMul - OCINumber MULtiply numbers + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number1, number2 (IN) - numbers to be multiplied + result (OUT) - multiplication result + DESCRIPTION: + Multiply 'number1' with 'number2' and return result in 'result'. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + } + {----------------------------- OCINumberDiv -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberDiv(err:POCIError; number1:POCINumber; number2:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberDiv'; +{$ELSE} + OCINumberDiv : function (err:POCIError; number1:POCINumber; number2:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberDiv - OCINumber DIVide numbers + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number1 (IN) - pointer to the numerator + number2 (IN) - pointer to the denominator + result (OUT) - division result + DESCRIPTION: + Divide 'number1' by 'number2' and return result in 'result'. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + underflow errorr + overflow errorr + divide by zero errorr + } + {----------------------------- OCINumberMod -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberMod(err:POCIError; number1:POCINumber; number2:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberMod'; +{$ELSE} + OCINumberMod : function (err:POCIError; number1:POCINumber; number2:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberMod - OCINumber MODulous + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number1 (IN) - pointer to the numerator + number2 (IN) - pointer to the denominator + result (OUT) - remainder of the result + DESCRIPTION: + Finds the remainder of the division of two Oracle numbers. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + divide by zero errorr + } + {------------------------ OCINumberIntPower -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberIntPower(err:POCIError; base:POCINumber; exp:sword; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberIntPower'; +{$ELSE} + OCINumberIntPower : function (err:POCIError; base:POCINumber; exp:sword; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberIntPower - OCINumber takes an arbitary base to an arbitary + integer PoWeR + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + base (IN) - base of the exponentiation + exp (IN) - exponent to which the base is to be raised + result (OUT) - output of exponentiation + DESCRIPTION: + Takes an arbitary base to an arbitary integer power. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + } + {-------------------------- OCINumberShift --------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberShift(err:POCIError; number:POCINumber; nDig:sword; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberShift'; +{$ELSE} + OCINumberShift : function (err:POCIError; number:POCINumber; nDig:sword; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberShift - OCINumber multiplies by a power of 10. + + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - Oracle Number to be shifted. + nDig (IN) - number of decimal places to shift. + result (OUT) - shift result. + DESCRIPTION: + Multiplies number by 10^NDig and sets product to the result. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + } + {----------------------------- OCINumberNeg -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberNeg(err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberNeg'; +{$ELSE} + OCINumberNeg : function (err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberNeg - OCINumber NEGate number + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - number to be negated + result (OUT) - will contain negated value of 'number' + DESCRIPTION: + Negates an Oracle number. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + } + {------------------------- OCINumberToText --------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberToText(err:POCIError; number:POCINumber; fmt:Poratext; fmt_length:ub4; nls_params:Poratext; + nls_p_length:ub4; buf_size:Pub4; buf:Poratext):sword;cdecl;external ocilib name 'OCINumberToText'; +{$ELSE} + OCINumberToText : function (err:POCIError; number:POCINumber; fmt:Poratext; fmt_length:ub4; nls_params:Poratext; + nls_p_length:ub4; buf_size:Pub4; buf:Poratext):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberToText - OCINumber convert number TO String + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - Oracle number to be converted + fmt (IN) - conversion format + fmt_length (IN) - length of the 'fmt' parameter + nls_params (IN) - nls format specification, if null string + i.e. (oratext *)0, then the default parameters for the + session is used + nls_p_length (IN) - length of the 'nls_params' parameter + buf_size (IN/OUT) - size of the buffer must be passed as input by + the caller, this function will return the length of the + resulting string in bytes via this parameter. The length + does not include the terminating null ('\0'). + buf (OUT) - buffer into which the converted string is placed. The + resulting string is null terminated. + DESCRIPTION: + Converts the given number to a character string + according to the specified format. Refer to "TO_NUMBER" conversion + function described in "Oracle SQL Language Reference Manual" for a + description of format and NLS parameters. + The converted number string is stored in the buffer 'buf', up to + a max of '*buf_size' bytes. Length of the resulting string is + returned via 'buf_size'. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + 'number' or 'buf' is null + buffer too small + invalid format + invalid nls format + number to text translation for the given format causes overflow + } + {-------------------------- OCINumberFromText ------------------------------ } +{$IFNDEF LinkDynamically} + function OCINumberFromText(err:POCIError; str:Poratext; str_length:ub4; fmt:Poratext; fmt_length:ub4; + nls_params:Poratext; nls_p_length:ub4; number:POCINumber):sword;cdecl;external ocilib name 'OCINumberFromText'; +{$ELSE} + OCINumberFromText : function (err:POCIError; str:Poratext; str_length:ub4; fmt:Poratext; fmt_length:ub4; + nls_params:Poratext; nls_p_length:ub4; number:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberFromText - OCINumber convert String TO Number + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + str (IN) - input string to be converted to Oracle number + str_length (IN) - size of the input string + fmt (IN) - conversion format + fmt_length (IN) - length of the 'fmt' parameter + nls_params (IN) - nls format specification, if null string + i.e. (oratext *)0, then the default parameters for the + session is used + nls_p_length (IN) - length of the 'nls_params' parameter + number (OUT) - given string converted to number + DESCRIPTION: + Converts the given string to a number + according to the specified format. Refer to "TO_NUMBER" conversion + function described in "Oracle SQL Language Reference Manual" for a + description of format and NLS parameters. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + 'number' or 'str' is null + 'str_length' is 0 + invalid format + invalid nls format + invalid input string + } + {-------------------------- OCINumberToInt --------------------------------- } + { Unsigned type -- ubX } + + const + OCI_NUMBER_UNSIGNED = 0; + { Signed type -- sbX } + OCI_NUMBER_SIGNED = 2; + +{$IFNDEF LinkDynamically} + function OCINumberToInt(err:POCIError; number:POCINumber; rsl_length:uword; rsl_flag:uword; rsl:Pdvoid):sword;cdecl;external ocilib name 'OCINumberToInt'; +{$ELSE} +var OCINumberToInt : function (err:POCIError; number:POCINumber; rsl_length:uword; rsl_flag:uword; rsl:Pdvoid):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberToInt - OCINumber convert number TO Integer + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - number to be converted + rsl_length (IN) - size of the desired result + rsl_s_flag (IN) - flag denoting the desired sign of the output; valid + values are OCI_NUMBER_UNSIGNED, OCI_NUMBER_SIGNED + rsl (OUT) - pointer to space for the result + DESCRIPTION: + Native type conversion function. + Converts the given Oracle number into an xbx (e.g. ub2, ub4, sb2 etc.) + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + 'number' or 'rsl' is null + integer value of 'number' is too big -- overflow + integer value of 'number' is too small -- underflow + invalid sign flag value ('rsl_s_flag') + } + {--------------------------- OCINumberFromInt ------------------------------ } +{$IFNDEF LinkDynamically} + function OCINumberFromInt(err:POCIError; inum:Pdvoid; inum_length:uword; inum_s_flag:uword; number:POCINumber):sword;cdecl;external ocilib name 'OCINumberFromInt'; +{$ELSE} + OCINumberFromInt : function (err:POCIError; inum:Pdvoid; inum_length:uword; inum_s_flag:uword; number:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberFromInt - OCINumber convert Integer TO Number + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + inum (IN) - pointer to the integer to be converted + inum_length (IN) - size of the integer + inum_s_flag (IN) - flag that designates the sign of the integer; valid + values are OCI_NUMBER_UNSIGNED, OCI_NUMBER_SIGNED + number (OUT) - given integer converted to Oracle number + DESCRIPTION: + Native type conversion function. Converts any Oracle standard + machine-native integer type (xbx) to an Oracle number. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + 'number' or 'inum' is null + integer too BIG -- the number is too large to fit into an Oracle + number + invalid sign flag value ('inum_s_flag') + } + {------------------------- OCINumberToReal --------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberToReal(err:POCIError; number:POCINumber; rsl_length:uword; rsl:Pdvoid):sword;cdecl;external ocilib name 'OCINumberToReal'; +{$ELSE} + OCINumberToReal : function (err:POCIError; number:POCINumber; rsl_length:uword; rsl:Pdvoid):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberToReal - OCINumber convert number TO Real + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - number to be converted + rsl_length (IN) - is the size of the desired result, + sizeof( float | double | long double) + rsl (OUT) - pointer to space for storing the result + DESCRIPTION: + Native type conversion function. Converts an Oracle number into a + machine-native real type. This function only converts numbers up to + LDBL_DIG, DBL_DIG, or FLT_DIG digits of precision and removes + trailing zeroes. The above constants are defined in float.h + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + 'number' or 'rsl' is null + 'rsl_length' is 0 + } + {------------------------- OCINumberToRealArray ---------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberToRealArray(err:POCIError; var number:POCINumber; elems:uword; rsl_length:uword; rsl:Pdvoid):sword;cdecl;external ocilib name 'OCINumberToRealArray'; +{$ELSE} + OCINumberToRealArray : function (err:POCIError; var number:POCINumber; elems:uword; rsl_length:uword; rsl:Pdvoid):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberToRealArray - OCINumber convert array of numbers TO Real + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - Pointer to array of number to be converted + elems (IN) - Upper bound of number array + rsl_length (IN) - is the size of the desired result, + sizeof( float | double | long double) + rsl (OUT) - pointer to array of space for storing the result + DESCRIPTION: + Native type conversion function. Converts an Oracle number into a + machine-native real type. This function only converts numbers up to + LDBL_DIG, DBL_DIG, or FLT_DIG digits of precision and removes + trailing zeroes. The above constants are defined in float.h + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + 'number' or 'rsl' is null + 'rsl_length' is 0 + } + {-------------------------- OCINumberFromReal ------------------------------ } +{$IFNDEF LinkDynamically} + function OCINumberFromReal(err:POCIError; rnum:Pdvoid; rnum_length:uword; number:POCINumber):sword;cdecl;external ocilib name 'OCINumberFromReal'; +{$ELSE} + OCINumberFromReal : function (err:POCIError; rnum:Pdvoid; rnum_length:uword; number:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberFromReal - OCINumber convert Real TO Number + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + rnum (IN) - pointer to the floating point number to be converted + rnum_length (IN) - size of the desired result, i.e. + sizeof(float | double | long double) + number (OUT) - given float converted to Oracle number + DESCRIPTION: + Native type conversion function. Converts a machine-native floating + point type to an Oracle number. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + 'number' or 'rnum' is null + 'rnum_length' is 0 + } + {----------------------------- OCINumberCmp -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberCmp(err:POCIError; number1:POCINumber; number2:POCINumber; result:Psword):sword;cdecl;external ocilib name 'OCINumberCmp'; +{$ELSE} + OCINumberCmp : function (err:POCIError; number1:POCINumber; number2:POCINumber; result:Psword):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberCmp - OCINumber CoMPare numbers + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number1, number2 (IN) - numbers to be compared + result (OUT) - 0 if equal, negative if number1 < number2, + positive if number1 > number2 + DESCRIPTION: + The function OCINumberCmp compares two numbers. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + 'number1' or 'number2' or 'result' is null + } + {---------------------------- OCINumberSign -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberSign(err:POCIError; number:POCINumber; result:Psword):sword;cdecl;external ocilib name 'OCINumberSign'; +{$ELSE} + OCINumberSign : function (err:POCIError; number:POCINumber; result:Psword):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberSign - OCINumber obtains SiGN of an Oracle number + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - number whose sign is returned + result (OUT) - 0 if number == 0, -1 if number < 0, + 1 if number > 0 + DESCRIPTION: + Obtains sign of an Oracle number + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + 'number' or 'result' is null + } + {---------------------------- OCINumberIsZero ------------------------------ } +{$IFNDEF LinkDynamically} + function OCINumberIsZero(err:POCIError; number:POCINumber; result:Pboolean):sword;cdecl;external ocilib name 'OCINumberIsZero'; +{$ELSE} + OCINumberIsZero : function (err:POCIError; number:POCINumber; result:Pboolean):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberIsZero - OCINumber comparison with ZERo + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - numbers to be compared + result (OUT) - set to TRUE if equal to zero else FALSE + DESCRIPTION: + Test if the given number is equal to zero. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + 'number' or 'result' is null + } + {---------------------------- OCINumberIsInt ------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberIsInt(err:POCIError; number:POCINumber; result:Pboolean):sword;cdecl;external ocilib name 'OCINumberIsInt'; +{$ELSE} + OCINumberIsInt : function (err:POCIError; number:POCINumber; result:Pboolean):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberIsInt - OCINumber Is Integer value. + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - number to be tested + result (OUT) - set to TRUE if integer value else FALSE + DESCRIPTION: + Test if the given number is an integer value. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + 'number' or 'result' is null + } + {-------------------------- OCINumberAssign -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberAssign(err:POCIError; from:POCINumber; cto:POCINumber):sword;cdecl;external ocilib name 'OCINumberAssign'; +{$ELSE} + OCINumberAssign : function (err:POCIError; from:POCINumber; cto:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberAssign - OCINumber ASsiGn number + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + from (IN) - number to be assigned + to (OUT) - number copied into + DESCRIPTION: + Assign number 'from' to 'to'. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + 'from' or 'to' is null + } + {----------------------------- OCINumberAbs -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberAbs(err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberAbs'; +{$ELSE} + OCINumberAbs : function (err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberAbs - OCINumber compute ABSolute value + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - input number + result (OUT) - output which will contain the absolue value of the + input number + DESCRIPTION: + Computes the absolute value of an Oracle number. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + } + {---------------------------- OCINumberCeil -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberCeil(err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberCeil'; +{$ELSE} + OCINumberCeil : function (err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberCeil - OCINumber compute the CEiL value of an Oracle number + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - input number + result (OUT) - output which will contain the ceil value of the + input number + DESCRIPTION: + Computes the ceil value of an Oracle number. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + } + {--------------------------- OCINumberFloor -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberFloor(err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberFloor'; +{$ELSE} + OCINumberFloor : function (err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberFloor - OCINumber compute the FLooR value of an Oracle number + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - input number + result (OUT) - output which will contain the floor value of the + input number + DESCRIPTION: + Computes the floor value of an Oracle number. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + } + {----------------------------- OCINumberSqrt ------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberSqrt(err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberSqrt'; +{$ELSE} + OCINumberSqrt : function (err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberSqrt - OCINumber compute the SQuare Root of an Oracle number + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - input number + result (OUT) - output which will contain the square root of the + input number + DESCRIPTION: + Computes the square root of an Oracle number. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + 'number' is negative + } + {--------------------------- OCINumberTrunc -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberTrunc(err:POCIError; number:POCINumber; decplace:sword; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberTrunc'; +{$ELSE} + OCINumberTrunc : function (err:POCIError; number:POCINumber; decplace:sword; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberTrunc - OCINumber TRUncate an Oracle number at a + specified decimal place + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - input number + decplace (IN) - number of decimal digits to the right of the + decimal point to truncate at. Negative values are allowed. + result (OUT) - output of truncation + DESCRIPTION: + Truncate an Oracle number at a specified decimal place + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + } + {----------------------------- OCINumberPower ------------------------------ } +{$IFNDEF LinkDynamically} + function OCINumberPower(err:POCIError; base:POCINumber; number:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberPower'; +{$ELSE} + OCINumberPower : function (err:POCIError; base:POCINumber; number:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberPower - OCINumber takes an arbitary Base to an + arbitary Power + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + base (IN) - base of the exponentiation + number (IN) - exponent to which the base is to be raised + result (OUT) - output of exponentiation + DESCRIPTION: + Takes an arbitary base to an arbitary power. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + } + {--------------------------- OCINumberRound -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberRound(err:POCIError; number:POCINumber; decplace:sword; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberRound'; +{$ELSE} + OCINumberRound : function (err:POCIError; number:POCINumber; decplace:sword; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberRound - OCINumber ROUnds an Oracle number to a specified + decimal place + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - round this number and return result in 'result' + decplace (IN) - number of decimal digits to the right of the + decimal point to round to. Negative values are allowed. + result (OUT) - output of rounding + DESCRIPTION: + Rounds an Oracle number to a specified decimal place + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + } + {--------------------------- OCINumberPrec --------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberPrec(err:POCIError; number:POCINumber; nDigs:eword; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberPrec'; +{$ELSE} + OCINumberPrec : function (err:POCIError; number:POCINumber; nDigs:eword; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberPrec - Rounds an Oracle number to a specified number of + decimal digits. + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - number for which to set precision. + nDig (IN) - number of decimal digits desired in the result. + result (OUT) - result. + DESCRIPTION: + Performs a floating point round with respect to the number + of digits. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + } + {----------------------------- OCINumberSin -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberSin(err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberSin'; +{$ELSE} + OCINumberSin : function (err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberSin - OCINumber takes the SINe of an Oracle number + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - argument of the sine in radians + result (OUT) - result of the sine + DESCRIPTION: + Takes the sine in radians of an Oracle number. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + } + {-------------------------- OCINumberArcSin -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberArcSin(err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberArcSin'; +{$ELSE} + OCINumberArcSin : function (err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberArcSin - OCINumber takes the Arc SINe of an Oracle number + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - argument of the arc sine + result (OUT) - result of the arc sine in radians + DESCRIPTION: + Takes the arc sine in radians of an Oracle number. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + 'number' is < -1 or 'number' is > 1. + } + {-------------------------- OCINumberHypSin -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberHypSin(err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberHypSin'; +{$ELSE} + OCINumberHypSin : function (err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberHypSin - OCINumber takes the SiNe Hyperbolic of an + Oracle number + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - argument of the sine hyperbolic + result (OUT) - result of the sine hyperbolic + DESCRIPTION: + Takes the hyperbolic sine of an Oracle number. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + NOTES: + An Oracle number overflow causes an unpredictable result value. + } + {----------------------------- OCINumberCos -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberCos(err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberCos'; +{$ELSE} + OCINumberCos : function (err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberCos - OCINumber takes the COSine of an Oracle number + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - argument of the cosine in radians + result (OUT) - result of the cosine + DESCRIPTION: + Takes the cosine in radians of an Oracle number. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + } + {-------------------------- OCINumberArcCos -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberArcCos(err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberArcCos'; +{$ELSE} + OCINumberArcCos : function (err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberArcCos - OCINumber takes the Arc COSine of an Oracle number + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - argument of the arc cosine + result (OUT) - result of the arc cosine in radians + DESCRIPTION: + Takes the arc cosine in radians of an Oracle number. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + 'number' is < -1 or 'number' is > 1. + } + {-------------------------- OCINumberHypCos -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberHypCos(err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberHypCos'; +{$ELSE} + OCINumberHypCos : function (err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberHypCos - OCINumber takes the CoSine Hyperbolic of an + Oracle number + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - argument of the cosine hyperbolic + result (OUT) - result of the cosine hyperbolic + DESCRIPTION: + Takes the hyperbolic cosine of an Oracle number. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + NOTES: + An Oracle number overflow causes an unpredictable result value. + } + {----------------------------- OCINumberTan -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberTan(err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberTan'; +{$ELSE} + OCINumberTan : function (err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberTan - OCINumber takes the TANgent of an Oracle number + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - argument of the tangent in radians + result (OUT) - result of the tangent + DESCRIPTION: + Takes the tangent in radians of an Oracle number. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + } + {-------------------------- OCINumberArcTan -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberArcTan(err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberArcTan'; +{$ELSE} + OCINumberArcTan : function (err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberArcTan - OCINumber takes the Arc TANgent of an Oracle number + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - argument of the arc tangent + result (OUT) - result of the arc tangent in radians + DESCRIPTION: + Takes the arc tangent in radians of an Oracle number. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + } + {------------------------ OCINumberArcTan2 --------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberArcTan2(err:POCIError; number1:POCINumber; number2:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberArcTan2'; +{$ELSE} + OCINumberArcTan2 : function (err:POCIError; number1:POCINumber; number2:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberArcTan2 - OCINumber takes the ATan2 of 2 Oracle numbers + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number1 (IN) - first argument of atan2(y,x) function which + corresponds to 'y' parameter in the function + number2 (IN) - second argument of atan2(y,x) function which + corresponds to 'x' parameter in the function + result (OUT) - result of the atan2() in radians + DESCRIPTION: + Takes the atan2(number1, number2). + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + 'number2' is 0 + } + {----------------------------- OCINumberHypTan ----------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberHypTan(err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberHypTan'; +{$ELSE} + OCINumberHypTan : function (err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberHypTan - OCINumber takes the TaNgent Hyperbolic of an Oracle + number + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - argument of the tangent hyperbolic + result (OUT) - result of the tangent hyperbolic + DESCRIPTION: + Takes the hyperbolic tangent of an Oracle number. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + NOTES: + An Oracle number overflow causes an unpredictable result value. + } + {--------------------------- OCINumberExp ---------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberExp(err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberExp'; +{$ELSE} + OCINumberExp : function (err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberExp - OCINumber EXPonential + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - e raised to this Oracle number power + result (OUT) - output of exponentiation + DESCRIPTION: + Raises e to the specified Oracle number power + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + } + {----------------------------- OCINumberLn --------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberLn(err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberLn'; +{$ELSE} + OCINumberLn : function(err:POCIError; number:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberLn - OCINumber Logarithm Natural + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + number (IN) - logarithm of this number is computed + result (OUT) - logarithm result + DESCRIPTION: + Takes the logarithm of the given Oracle number with respect + to the given base. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + 'number' is <= 0 + } + {----------------------------- OCINumberLog -------------------------------- } +{$IFNDEF LinkDynamically} + function OCINumberLog(err:POCIError; base:POCINumber; number:POCINumber; result:POCINumber):sword;cdecl;external ocilib name 'OCINumberLog'; +{$ELSE} + OCINumberLog : function (err:POCIError; base:POCINumber; number:POCINumber; result:POCINumber):sword;cdecl; +{$ENDIF} + + { + NAME: OCINumberLog - OCINumber LOGarithm any base + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + base (IN) - base of the logarithm + number (IN) - opearnd + result (OUT) - logarithm result + DESCRIPTION: + Takes the logarithm with the specified base of an Oracle number. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + any of the number arguments is null + 'number' is <= 0 + 'base' is <= 0 + } + {*************************************************************************** } + { ORACLE DATE TYPE } + {*************************************************************************** } + { hours; range is 0 <= hours <=23 } + { minutes; range is 0 <= minutes <= 59 } + { seconds; range is 0 <= seconds <= 59 } + + type + POCITime = ^OCITime; + OCITime = record + OCITimeHH : ub1; + OCITimeMI : ub1; + OCITimeSS : ub1; + end; + + { + * OCITime - OCI TiMe portion of date + * + * This structure should be treated as an opaque structure as the format + * of this structure may change. Use OCIDateGetTime/OCIDateSetTime + * to manipulate time portion of OCIDate. + } + { gregorian year; range is -4712 <= year <= 9999 } + { month; range is 1 <= month < 12 } + { day; range is 1 <= day <= 31 } + { time } + POCIDate = ^OCIDate; + OCIDate = record + OCIDateYYYY : sb2; + OCIDateMM : ub1; + OCIDateDD : ub1; + OCIDateTime : OCITime; + end; + + { + * OCIDate - OCI oracle Date representation in C + * + * OCIDate represents the C mapping of Oracle date. + * + * This structure should be treated as an opaque structure as the format + * of this structure may change. Use OCIDateGetDate/OCIDateSetDate + * to access/initialize OCIDate. + * + * For binding variables of type OCIDate in OCI calls (OCIBindByName(), + * OCIBindByPos(), and OCIDefineByPos()) use the type code SQLT_ODT. + } + { + EXAMPLE + + The following example shows how to manipulate an attribute of type + oracle date. + + #define FMT "Month dd, YYYY, HH:MI A.M." + #define LANG "American" + + struct person + + OCIDate start_date; + ; + typedef struct person person; + + OCIError *err; + person *joe; + sword status; /o error status o/ + + /o See oci.h for an example of how to initialize OCIError. + o For this example, assume the OCIEnv and OCIError has been + o initialized. + o/ + + /o Pin joe person object in the object cache. See ori.h + o for an example on pinning objects. For this example, assume that + o joe is pointing to the pinned object. + o/ + + /o set the start date of joe o/ + OCIDateSetTime(&joe->start_date, 8, 0, 0); + OCIDateSetDate(&joe->start_date, 1990, 10, 5); + + /o check if the date is valid o/ + uword invalid; + if (OCIDateCheck(err, &joe->start_date, &invalid) != OCI_SUCCESS) + /o error handling code o/ + if (invalid) + /o error handling code o/ + + /o convert date for display purposes o/ + char str[100]; + ub4 strlen = sizeof(str); + if (OCIDateToText(err, &joe->start_date, FMT, sizeof(FMT)-1, LANG, + sizeof(LANG)-1, &strlen, str) != OCI_SUCCESS) + /o error handling code o/ + + } + {--------------------------- OCIDateGetTime -------------------------------- } + { void OCIDateGetTime(/o_ CONST OCIDate *date, ub1 *hour, ub1 *min, + ub1 *sec _o/); } +(* error + { \ +in declaration at line 1787 *) + +(* error + *hour = (date)->OCIDateTime.OCITimeHH; \ + error + *min = (date)->OCIDateTime.OCITimeMI; \ +in declaration at line 1788 + error + *min = (date)->OCIDateTime.OCITimeMI; \ + error + *sec = (date)->OCIDateTime.OCITimeSS; \ +in declaration at line 1789 + error + *sec = (date)->OCIDateTime.OCITimeSS; \ + error + } *) + { + NAME: OCIDateGetTime - OCIDate Get Time portion of date + PARAMETERS: + date (IN) - Oracle date whose time data is retrieved + hour (OUT) - hour value returned + min (OUT) - minute value returned + sec (OUT) - second value returned + DESCRIPTION: + Return time inforamtion stored in the given date. The time + information returned is: hour, minute and seconds. + RETURNS: + NONE + } + {--------------------------- OCIDateGetDate -------------------------------- } + { void OCIDateGetDate(/o_ CONST OCIDate *date, sb2 *year, ub1 *month, + ub1 *day _o/); } +(*in declaration at line 1810 *) +(* error + *year = (date)->OCIDateYYYY; \ + error + *month = (date)->OCIDateMM; \ +in declaration at line 1811 + error + *month = (date)->OCIDateMM; \ + error + *day = (date)->OCIDateDD; \ +in declaration at line 1812 *) +(* error + *day = (date)->OCIDateDD; \ + error + } + { + NAME: OCIDateGetDate - OCIDate Get Date (year, month, day) portion of date + PARAMETERS: + date (IN) - Oracle date whose year, month, day data is retrieved + year (OUT) - year value returned + month (OUT) - month value returned + day (OUT) - day value returned + DESCRIPTION: + Return year, month, day inforamtion stored in the given date. + RETURNS: + NONE + } + {--------------------------- OCIDateSetTime -------------------------------- } + { void OCIDateSetTime(/o_ OCIDate *date, ub1 hour, ub1 min, + ub1 sec _o/); } +in declaration at line 1832 + error + (date)->OCIDateTime.OCITimeHH = hour; \ + error + (date)->OCIDateTime.OCITimeMI = min; \ +in declaration at line 1833 + error + (date)->OCIDateTime.OCITimeMI = min; \ + error + (date)->OCIDateTime.OCITimeSS = sec; \ +in declaration at line 1834 + error + (date)->OCIDateTime.OCITimeSS = sec; \ + error + } + { + NAME: OCIDateSetTime - OCIDate Set Time portion of date + PARAMETERS: + date (OUT) - Oracle date whose time data is set + hour (IN) - hour value to be set + min (IN) - minute value to be set + sec (IN) - second value to be set + DESCRIPTION: + Set the date with the given time inforamtion. + RETURNS: + NONE + } + {--------------------------- OCIDateSetDate -------------------------------- } + { void OCIDateSetDate(/o_ OCIDate *date, sb2 year, ub1 month, ub1 day _o/); } +in declaration at line 1853 *) +(* error + (date)->OCIDateYYYY = year; \ + error + (date)->OCIDateMM = month; \ +in declaration at line 1854 + error + (date)->OCIDateMM = month; \ + error + (date)->OCIDateDD = day; \ +in declaration at line 1855 + error + (date)->OCIDateDD = day; \ + error + } *) + { + NAME: OCIDateSetDate - OCIDate Set Date (year, month, day) portion of date + PARAMETERS: + date (IN) - Oracle date whose year, month, day data is set + year (OUT) - year value to be set + month (OUT) - month value to be set + day (OUT) - day value to be set + DESCRIPTION: + Set the date with the given year, month, day inforamtion. + RETURNS: + NONE + } + {--------------------------- OCIDateAssign --------------------------------- } +(*in declaration at line 1873 *) + { + NAME: OCIDateAssign - OCIDate Assignment + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + from (IN) - date to be assigned + to (OUT) - lhs of assignment + DESCRIPTION: + Performs date assignment. + RETURNS: + OCI_SUCCESS + } + {--------------------------- OCIDateToText --------------------------------- } + +{$IFNDEF LinkDynamically} + function OCIDateToText(err:POCIError; date:POCIDate; fmt:Poratext; fmt_length:ub1; lang_name:Poratext; + lang_length:ub4; buf_size:Pub4; buf:Poratext):sword;cdecl;external ocilib name 'OCIDateToText'; +{$ELSE} +var OCIDateToText : function (err:POCIError; date:POCIDate; fmt:Poratext; fmt_length:ub1; lang_name:Poratext; + lang_length:ub4; buf_size:Pub4; buf:Poratext):sword;cdecl; +{$ENDIF} + + + { + NAME: OCIDateToText - OCIDate convert date TO String + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + date (IN) - Oracle date to be converted + fmt (IN) - conversion format, if null string pointer (oratext*)0, then + the date is converted to a character string in the + date format "DD-MON-YY". + fmt_length (IN) - length of the 'fmt' parameter + lang_name (IN) - specifies the language in which the names and + abbreviations of months and days are returned; + default language of session is used if 'lang_name' + is null i.e. (oratext *)0 + lang_length (IN) - length of the 'nls_params' parameter + buf_size (IN/OUT) - size of the buffer; size of the resulting string + is returned via this parameter + buf (OUT) - buffer into which the converted string is placed + DESCRIPTION: + Converts the given date to a string according to the specified format. + Refer to "TO_DATE" conversion function described in + "Oracle SQL Language Reference Manual" for a description of format + and NLS arguments. The converted null-terminated date string is + stored in the buffer 'buf'. + + An error is reported upon overflow, e.g. trying to convert a number + of value 10 using format '9' causes an overflow. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + buffer too small + invalid format + unknown language + overflow error + } + {---------------------------- OCIDateFromText ------------------------------ } +{$IFNDEF LinkDynamically} + function OCIDateFromText(err:POCIError; date_str:Poratext; d_str_length:ub4; fmt:Poratext; fmt_length:ub1; + lang_name:Poratext; lang_length:ub4; date:POCIDate):sword;cdecl;external ocilib name 'OCIDateFromText'; +{$ELSE} + OCIDateFromText : function (err:POCIError; date_str:Poratext; d_str_length:ub4; fmt:Poratext; fmt_length:ub1; + lang_name:Poratext; lang_length:ub4; date:POCIDate):sword;cdecl; +{$ENDIF} + + { + NAME: OCIDateFromText - OCIDate convert String TO Date + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + date_str (IN) - input string to be converted to Oracle date + d_str_length (IN) - size of the input string, if the length is -1 + then 'date_str' is treated as a null terminated string + fmt (IN) - conversion format; if 'fmt' is a null pointer, then + the string is expected to be in 'DD-MON-YY' format. + fmt_length (IN) - length of the 'fmt' parameter + lang_name (IN) - language in which the names and abbreviations of + days and months are specified, if null i.e. (oratext *)0, + the default language of session is used, + lang_length (IN) - length of the 'lang_name' parameter + date (OUT) - given string converted to date + DESCRIPTION: + Converts the given string to Oracle date + according to the specified format. Refer to "TO_DATE" conversion + function described in "Oracle SQL Language Reference Manual" for a + description of format. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + invalid format + unknown language + invalid input string + <to be discovered> + } + {----------------------------- OCIDateCompare ------------------------------ } +{$IFNDEF LinkDynamically} + function OCIDateCompare(err:POCIError; date1:POCIDate; date2:POCIDate; result:Psword):sword;cdecl;external ocilib name 'OCIDateCompare'; +{$ELSE} + OCIDateCompare : function (err:POCIError; date1:POCIDate; date2:POCIDate; result:Psword):sword;cdecl; +{$ENDIF} + + { + NAME: OCIDateCompare - OCIDate CoMPare dates + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + date1, date2 (IN) - dates to be compared + result (OUT) - comparison result, 0 if equal, -1 if date1 < date2, + 1 if date1 > date2 + DESCRIPTION: + The function OCIDateCompare compares two dates. It returns -1 if date1 + is smaller than date2, 0 if they are equal, and 1 if date1 is greater + than date2. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + invalid date + <to be discovered> + } + {------------------------- OCIDateAddMonths -------------------------------- } +{$IFNDEF LinkDynamically} + function OCIDateAddMonths(err:POCIError; date:POCIDate; num_months:sb4; result:POCIDate):sword;cdecl;external ocilib name 'OCIDateAddMonths'; +{$ELSE} + OCIDateAddMonths : function (err:POCIError; date:POCIDate; num_months:sb4; result:POCIDate):sword;cdecl; +{$ENDIF} + + { + NAME: OCIDateAddMonths - OCIDate ADd or subtract Months + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + date (IN) - 'num_months' added or subtracted from 'date' + num_months (IN) - number of months to be added or subtracted + (a negative value will be subtracted) + result (IN/OUT) - result of adding or subtracting to 'date' + DESCRIPTION: + The function OCIDateAddDays adds or subtracts num_months from the + date 'date'. + If the input 'date' is the last day of a month, then + appropriate adjustments are made to ensure that the output date is + also the last day of the month. For example, Feb. 28 + 1 month = + March 31, and November 30 - 3 months = August 31. Otherwise the + 'result' date has the same day component as 'date'. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + invalid date + <to be discovered> + } + {--------------------------- OCIDateAddDays -------------------------------- } +{$IFNDEF LinkDynamically} + function OCIDateAddDays(err:POCIError; date:POCIDate; num_days:sb4; result:POCIDate):sword;cdecl;external ocilib name 'OCIDateAddDays'; +{$ELSE} + OCIDateAddDays : function (err:POCIError; date:POCIDate; num_days:sb4; result:POCIDate):sword;cdecl; +{$ENDIF} + + { + NAME: OCIDateAddDays - OCIDate ADd or subtract Days + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + date (IN) - 'num_days' added or subtracted from 'date' + num_days (IN) - number of days to be added or subtracted + (a negative value will be subtracted) + result (IN/OUT) - result of adding or subtracting to 'date' + DESCRIPTION: + The function OCIDateAddDays adds or subtracts num_days from the + date 'date'. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + invalid date + <to be discovered> + } + {--------------------------- OCIDateLastDay -------------------------------- } +{$IFNDEF LinkDynamically} + function OCIDateLastDay(err:POCIError; date:POCIDate; last_day:POCIDate):sword;cdecl;external ocilib name 'OCIDateLastDay'; +{$ELSE} + OCIDateLastDay : function (err:POCIError; date:POCIDate; last_day:POCIDate):sword;cdecl; +{$ENDIF} + + { + NAME: OCIDateLastDay - OCIDate get date of the LaST day of the month + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + date (IN) - input date + last_day (OUT) - last day of the month in date 'date' + DESCRIPTION: + The function OCIDateLastDay returns the date of the last day of the + month in date 'date'. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + invalid date + <to be discovered> + } + {----------------------- OCIDateDaysBetween -------------------------------- } +{$IFNDEF LinkDynamically} + function OCIDateDaysBetween(err:POCIError; date1:POCIDate; date2:POCIDate; num_days:Psb4):sword;cdecl;external ocilib name 'OCIDateDaysBetween'; +{$ELSE} + OCIDateDaysBetween : function (err:POCIError; date1:POCIDate; date2:POCIDate; num_days:Psb4):sword;cdecl; +{$ENDIF} + + { + NAME: OCIDateDaysBetween - OCIDate get number of days BeTWeen two dates + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + date1, date2 (IN) - input dates + num_days (OUT) - number of days between date1 and date2 + DESCRIPTION: + The function OCIDateDaysBetween returns the number of days between + date1 and date2. The time is ignored in this computation. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + invalid date + <to be discovered> + } + {------------------------ OCIDateZoneToZone -------------------------------- } +{$IFNDEF LinkDynamically} + function OCIDateZoneToZone(err:POCIError; date1:POCIDate; zon1:Poratext; zon1_length:ub4; zon2:Poratext; + zon2_length:ub4; date2:POCIDate):sword;cdecl;external ocilib name 'OCIDateZoneToZone'; +{$ELSE} + OCIDateZoneToZone : function (err:POCIError; date1:POCIDate; zon1:Poratext; zon1_length:ub4; zon2:Poratext; + zon2_length:ub4; date2:POCIDate):sword;cdecl; +{$ENDIF} + + { + NAME: OCIDateZoneToZone - OCIDate convert date from one Zone TO another Zone + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + date1 (IN) - date to be converted + zon1 (IN) - zone of input date + zon1_length (IN) - length in bytes of string 'zon1' + zon2 (IN) - zone to be converted to + zon2_length (IN) - length in bytes of string 'zon2' + date2 (OUT) - converted date (in 'zon2') + DESCRIPTION: + Converts date from one time zone to another. Given date 'date1' + in time zone 'zon1' returns date 'date2' in time zone 'zon2'. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + invlid date + invald input time zone + invald output time zone + <to be discovered> + } + {--------------------------- OCIDateNextDay -------------------------------- } +{$IFNDEF LinkDynamically} + function OCIDateNextDay(err:POCIError; date:POCIDate; day_p:Poratext; day_length:ub4; next_day:POCIDate):sword;cdecl;external ocilib name 'OCIDateNextDay'; +{$ELSE} + OCIDateNextDay : function (err:POCIError; date:POCIDate; day_p:Poratext; day_length:ub4; next_day:POCIDate):sword;cdecl; +{$ENDIF} + + { + NAME: OCIDateNextDay - OCIDate get date of Next DaY + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + date (IN) - returned date should be later than this date + day (IN) - first day of week named by this is returned + day_length (IN) - length in bytes of string 'day' + next_day (OUT) - first day of the week named by 'day' later than 'date' + DESCRIPTION: + Returns the date of the first day of the + week named by 'day' that is later than date 'date'. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + invalid date + invalid day + <to be discovered> + } + {----------------------------- OCIDateCheck -------------------------------- } + { Listing of error bits used by OCIDateCheck() } + { Bad DAy } + + const + OCI_DATE_INVALID_DAY = $1; + { Bad DAy Low/high bit (1=low) } + OCI_DATE_DAY_BELOW_VALID = $2; + { Bad MOnth } + OCI_DATE_INVALID_MONTH = $4; + { Bad MOnth Low/high bit (1=low) } + OCI_DATE_MONTH_BELOW_VALID = $8; + { Bad YeaR } + OCI_DATE_INVALID_YEAR = $10; + { Bad YeaR Low/high bit (1=low) } + OCI_DATE_YEAR_BELOW_VALID = $20; + { Bad HouR } + OCI_DATE_INVALID_HOUR = $40; + { Bad HouR Low/high bit (1=low) } + OCI_DATE_HOUR_BELOW_VALID = $80; + { Bad MiNute } + OCI_DATE_INVALID_MINUTE = $100; + OCI_DATE_MINUTE_BELOW_VALID = $200; + { Bad MiNute Low/high bit (1=low) } + { Bad SeCond } + OCI_DATE_INVALID_SECOND = $400; + OCI_DATE_SECOND_BELOW_VALID = $800; + { bad second Low/high bit (1=low) } + OCI_DATE_DAY_MISSING_FROM_1582 = $1000; + { Day is one of those "missing" from 1582 } + { Year may not equal zero } + OCI_DATE_YEAR_ZERO = $2000; + { Bad date format input } + OCI_DATE_INVALID_FORMAT = $8000; +{$IFNDEF LinkDynamically} + function OCIDateCheck(err:POCIError; date:POCIDate; valid:Puword):sword;cdecl;external ocilib name 'OCIDateCheck'; +{$ELSE} +var OCIDateCheck : function(err:POCIError; date:POCIDate; valid:Puword):sword;cdecl; +{$ENDIF} + + + { + NAME: OCIDateCheck - OCIDate CHecK if the given date is valid + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + date (IN) - date to be checked + valid (OUT) - returns zero for a valid date, otherwise + the ORed combination of all error bits specified below: + + Macro name Bit number Error + ---------- ---------- ----- + OCI_DATE_INVALID_DAY 0x1 Bad day + OCI_DATE_DAY_BELOW_VALID 0x2 Bad DAy Low/high bit (1=low) + OCI_DATE_INVALID_MONTH 0x4 Bad MOnth + OCI_DATE_MONTH_BELOW_VALID 0x8 Bad MOnth Low/high bit (1=low) + OCI_DATE_INVALID_YEAR 0x10 Bad YeaR + OCI_DATE_YEAR_BELOW_VALID 0x20 Bad YeaR Low/high bit (1=low) + OCI_DATE_INVALID_HOUR 0x40 Bad HouR + OCI_DATE_HOUR_BELOW_VALID 0x80 Bad HouR Low/high bit (1=low) + OCI_DATE_INVALID_MINUTE 0x100 Bad MiNute + OCI_DATE_MINUTE_BELOW_VALID 0x200 Bad MiNute Low/high bit (1=low) + OCI_DATE_INVALID_SECOND 0x400 Bad SeCond + OCI_DATE_SECOND_BELOW_VALID 0x800 bad second Low/high bit (1=low) + OCI_DATE_DAY_MISSING_FROM_1582 0x1000 Day is one of those "missing" + from 1582 + OCI_DATE_YEAR_ZERO 0x2000 Year may not equal zero + OCI_DATE_INVALID_FORMAT 0x8000 Bad date format input + + So, for example, if the date passed in was 2/0/1990 25:61:10 in + (month/day/year hours:minutes:seconds format), the erroor returned + would be OCI_DATE_INVALID_DAY | OCI_DATE_DAY_BELOW_VALID | + OCI_DATE_INVALID_HOUR | OCI_DATE_INVALID_MINUTE + + DESCRIPTION: + Check if the given date is valid. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + 'date' and 'valid' pointers are NULL pointers + } + {--------------------------- OCIDateSysDate -------------------------------- } +{$IFNDEF LinkDynamically} + function OCIDateSysDate(err:POCIError; sys_date:POCIDate):sword;cdecl;external ocilib name 'OCIDateSysDate'; +{$ELSE} + OCIDateSysDate : function (err:POCIError; sys_date:POCIDate):sword;cdecl; +{$ENDIF} + + { + NAME: OCIDateSysDate - OCIDate get current SYStem date and time + PARAMETERS: + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + sys_date (OUT) - current system date and time + DESCRIPTION: + Returns the current system date and time. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'err' is NULL. + OCI_ERROR if + <to be discovered> + } + {*************************************************************************** } + { FIXED-LENGTH STRING - CHAR (N) } + {*************************************************************************** } + { + * An ADT attribute declared as "x CHAR(n)" is mapped to "OCIString *x;". + * The representation of OCIString * is shown below. + } + {*************************************************************************** } + { VARIABLE-LENGTH STRING } + {*************************************************************************** } + { + * The variable-length string is represented in C as a pointer to OCIString + * structure. The OCIString structure is opaque to the user. Functions are + * provided to allow the user to manipulate a variable-length string. + * + * A variable-length string can be declared as: + * + * OCIString *vstr; + * + * For binding variables of type OCIString* in OCI calls (OCIBindByName(), + * OCIBindByPos() and OCIDefineByPos()) use the external type code SQLT_VST. + } + + type + POCIString = pointer; + + {-------------------------- OCIStringAssign -------------------------------- } +{$IFNDEF LinkDynamically} + function OCIStringAssign(env:POCIEnv; err:POCIError; rhs:POCIString; var lhs:POCIString):sword;cdecl;external ocilib name 'OCIStringAssign'; +{$ELSE} +var OCIStringAssign : function (env:POCIEnv; err:POCIError; rhs:POCIString; var lhs:POCIString):sword;cdecl; +{$ENDIF} + + + { + NAME: OCIStringAssign - OCIString Assign String to String + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + rhs (IN) - RHS of the assignment, the type of rhs is also OCIString + lhs (IN/OUT) - LHS of the assignment + DESCRIPTION: + Assign 'rhs' string to 'lhs' string. The 'lhs' string may be + resized depending upon the size of the 'rhs'. The assigned string is + null-terminated. The 'length' field will not include the extra byte + needed for null termination. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + out of space error + } + {---------------------- OCIStringAssignText -------------------------------- } +{$IFNDEF LinkDynamically} + function OCIStringAssignText(env:POCIEnv; err:POCIError; rhs:Poratext; rhs_len:ub4; var lhs:POCIString):sword;cdecl;external ocilib name 'OCIStringAssignText'; +{$ELSE} + OCIStringAssignText : function (env:POCIEnv; err:POCIError; rhs:Poratext; rhs_len:ub4; var lhs:POCIString):sword;cdecl; +{$ENDIF} + + { + NAME: OCIStringAssignText - OCIString Assign Text string to String + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + rhs (IN) - RHS of the assignment, the type of rhs is a text string + rhs_len (IN) - length of the 'rhs' string + lhs (IN/OUT) - LHS of the assignment + DESCRIPTION: + Assign 'rhs' string to 'lhs' string. The 'lhs' string may be + resized depending upon the size of the 'rhs'. The assigned string is + null-terminated. The 'length' field will not include the extra byte + needed for null termination. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + out of space error + } + {-------------------------- OCIStringResize -------------------------------- } +{$IFNDEF LinkDynamically} + function OCIStringResize(env:POCIEnv; err:POCIError; new_size:ub4; var str:POCIString):sword;cdecl;external ocilib name 'OCIStringResize'; +{$ELSE} + OCIStringResize : function (env:POCIEnv; err:POCIError; new_size:ub4; var str:POCIString):sword;cdecl; +{$ENDIF} + + { + NAME: OCIStringResize - OCIString ReSiZe string memory + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + new_size (IN) - new memory size of the string in bytes + str (IN/OUT) - allocated memory for the string is freed from the + OOCI heap + DESCRIPTION: + This function resizes the memory of the given variable-length string in + the object cache. The contents of the string are NOT preserved. + This function may allocate the string in a new memory region in + which case the original memory occupied by the given string will + be freed. If the input string is null (str == NULL), then this + function will allocate memory for the string. + + If the new_size is 0, then this function frees the memory occupied + by 'str' and a null pointer value is returned. + + NOTE: The caller must compute 'new_size' taking into account space + for the null character ('\0'). + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + out of space error + } + {---------------------------- OCIStringSize -------------------------------- } +{$IFNDEF LinkDynamically} + function OCIStringSize(env:POCIEnv; vs:POCIString):ub4;cdecl;external ocilib name 'OCIStringSize'; +{$ELSE} + OCIStringSize : function (env:POCIEnv; vs:POCIString):ub4;cdecl; +{$ENDIF} + + { + NAME: OCIStringSize - OCIString Get String siZe + PARAMETERS: + env(IN) - pointer to OCI environment handle + vs (IN) - string whose size is returned + DESCRIPTION: + Return the size of the given string. + RETURNS: + size of the string in bytes is returned + } + {----------------------------- OCIStringPtr -------------------------------- } +{$IFNDEF LinkDynamically} + function OCIStringPtr(env:POCIEnv; vs:POCIString):Poratext;cdecl;external ocilib name 'OCIStringPtr'; +{$ELSE} + OCIStringPtr : function (env:POCIEnv; vs:POCIString):Poratext;cdecl; +{$ENDIF} + + { + NAME: OCIStringPtr - OCIString Get String Pointer + PARAMETERS: + env(IN) - pointer to OCI environment handle + vs (IN) - pointer to the text of this string is returned + DESCRIPTION: + Return the pointer to the text of the given string. + RETURNS: + pointer to the text of the string is returned + } + {----------------------- OCIStringAllocSize -------------------------------- } +{$IFNDEF LinkDynamically} + function OCIStringAllocSize(env:POCIEnv; err:POCIError; vs:POCIString; allocsize:Pub4):sword;cdecl;external ocilib name 'OCIStringAllocSize'; +{$ELSE} + OCIStringAllocSize : function (env:POCIEnv; err:POCIError; vs:POCIString; allocsize:Pub4):sword;cdecl; +{$ENDIF} + + { + NAME: OCIStringAllocSize - OCIString get Allocated SiZe of string memory + in bytes + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + vs (IN) - string whose allocated size in bytes is returned + allocsize (OUT) - allocated size of string memory in bytes is returned + DESCRIPTION: + Return the allocated size of the string memory in bytes. The + allocated size is >= actual string size. + REQUIRES: + vs is a non-null pointer + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR on error + } + {*************************************************************************** } + { VARIABLE-LENGTH RAW } + {*************************************************************************** } + { + * The variable-length raw is represented in C as a pointer to OCIRaw + * structure. The OCIRaw structure is opaque to the user. Functions are + * provided to allow the user to manipulate a variable-length raw. + * + * A variable-length raw can be declared as: + * + * OCIRaw *raw; + * + * For binding variables of type OCIRaw* in OCI calls (OCIBindByName(), + * OCIBindByPos() and OCIDefineByPos()) use the external type code SQLT_LVB. + } + + type + POCIRaw = pointer; + + {-------------------------- OCIRawAssignRaw -------------------------------- } +{$IFNDEF LinkDynamically} + function OCIRawAssignRaw(env:POCIEnv; err:POCIError; rhs:POCIRaw; var lhs:POCIRaw):sword;cdecl;external ocilib name 'OCIRawAssignRaw'; +{$ELSE} +var OCIRawAssignRaw : function (env:POCIEnv; err:POCIError; rhs:POCIRaw; var lhs:POCIRaw):sword;cdecl; +{$ENDIF} + + + { + NAME: OCIRawAssignRaw - OCIRaw Assign Raw (of type OCIRaw*) to + Raw (of type OCIRaw*) + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + rhs (IN) - RHS of the assignment, the type of rhs is also OCIRaw + lhs (IN/OUT) - LHS of the assignment + DESCRIPTION: + Assign 'rhs' raw to 'lhs' raw. The 'lhs' raw may be + resized depending upon the size of the 'rhs'. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + out of space error + } + {------------------------ OCIRawAssignBytes -------------------------------- } +{$IFNDEF LinkDynamically} + function OCIRawAssignBytes(env:POCIEnv; err:POCIError; rhs:Pub1; rhs_len:ub4; var lhs:POCIRaw):sword;cdecl;external ocilib name 'OCIRawAssignBytes'; +{$ELSE} + OCIRawAssignBytes : function (env:POCIEnv; err:POCIError; rhs:Pub1; rhs_len:ub4; var lhs:POCIRaw):sword;cdecl; +{$ENDIF} + + { + NAME: OCIRawAssignBytes - OCIRaw Assign raw Bytes (of type ub1*) to Raw + (of type OCIRaw*) + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + rhs (IN) - RHS of the assignment, the type of rhs is ub1 * + rhs_len (IN) - length of the 'rhs' raw + lhs (IN/OUT) - LHS of the assignment + DESCRIPTION: + Assign 'rhs' raw to 'lhs' raw. The 'lhs' raw may be + resized depending upon the size of the 'rhs'. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + out of space error + } + {---------------------------- OCIRawResize --------------------------------- } +{$IFNDEF LinkDynamically} + function OCIRawResize(env:POCIEnv; err:POCIError; new_size:ub4; var raw:POCIRaw):sword;cdecl;external ocilib name 'OCIRawResize'; +{$ELSE} + OCIRawResize : function (env:POCIEnv; err:POCIError; new_size:ub4; var raw:POCIRaw):sword;cdecl; +{$ENDIF} + + { + NAME: OCIRawResize - OCIRaw ReSiZe memory of variable-length raw + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + new_size (IN) - new size of the raw data in bytes + raw (IN) - variable-length raw pointer; the raw is + resized to 'new_size' + DESCRIPTION: + This function resizes the memory of the given variable-length raw in + the object cache. + The previous contents of the raw are NOT preserved. + This function may allocate the raw in a new memory region in + which case the original memory occupied by the given raw will + be freed. If the input raw is null (raw == NULL), then this + function will allocate memory for the raw data. + + If the new_size is 0, then this function frees the memory occupied + by 'raw' and a null pointer value is returned. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + out of space error + } + {------------------------------- OCIRawSize -------------------------------- } +{$IFNDEF LinkDynamically} + function OCIRawSize(env:POCIEnv; raw:POCIRaw):ub4;cdecl;external ocilib name 'OCIRawSize'; +{$ELSE} + OCIRawSize : function (env:POCIEnv; raw:POCIRaw):ub4;cdecl; +{$ENDIF} + + { + NAME: OCIRawSize - OCIRaw Get Raw siZe + PARAMETERS: + env (IN) - pointer to OCI environment handle + raw (INT) - raw whose size is returned + DESCRIPTION: + Return the size of the given raw. + RETURNS: + size of the raw in bytes is returned + } + {--------------------------------- OCIRawPtr ------------------------------- } +{$IFNDEF LinkDynamically} + function OCIRawPtr(env:POCIEnv; raw:POCIRaw):Pub1;cdecl;external ocilib name 'OCIRawPtr'; +{$ELSE} + OCIRawPtr : function(env:POCIEnv; raw:POCIRaw):Pub1;cdecl; +{$ENDIF} + + { + NAME: OCIRawPtr - OCIRaw Get Raw data Pointer + PARAMETERS: + env (IN) - pointer to OCI environment handle + raw (IN) - pointer to the data of this raw is returned + DESCRIPTION: + Return the pointer to the data of the given raw. + RETURNS: + pointer to the data of the raw is returned + } + {------------------------------ OCIRawAllocSize ---------------------------- } +{$IFNDEF LinkDynamically} + function OCIRawAllocSize(env:POCIEnv; err:POCIError; raw:POCIRaw; allocsize:Pub4):sword;cdecl;external ocilib name 'OCIRawAllocSize'; +{$ELSE} + OCIRawAllocSize : function (env:POCIEnv; err:POCIError; raw:POCIRaw; allocsize:Pub4):sword;cdecl; +{$ENDIF} + + { + NAME: OCIRawAllocSize - OCIRaw get Allocated SiZe of raw memory in bytes + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + raw (IN) - raw whose allocated size in bytes is returned + allocsize (OUT) - allocated size of raw memory in bytes is returned + DESCRIPTION: + Return the allocated size of the raw memory in bytes. The + allocated size is >= actual raw size. + REQUIRES: + raw is a non-null pointer + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR upon error + } + {*************************************************************************** } + { OBJECT REFERENCE OPERATIONS } + {*************************************************************************** } + { + * See the definition of OCIRef in oro.h. + * + * For binding variables of type OCIRef* in OCI calls (OCIBindByName(), + * OCIBindByPos() and OCIDefineByPos()) use the code SQLT_REF. + * + } + {---------------------------- OCIRefClear ---------------------------------- } +{$IFNDEF LinkDynamically} + procedure OCIRefClear(env:POCIEnv; ref:POCIRef);cdecl;external ocilib name 'OCIRefClear'; +{$ELSE} + OCIRefClear : procedure (env:POCIEnv; ref:POCIRef);cdecl; +{$ENDIF} + + { + NAME: OCIRefClear - OCIRef CLeaR or nullify a ref + PARAMETERS: + env (IN) - pointer to OCI environment handle + ref (IN/OUT) - ref to clear + DESCRIPTION: + Clear or nullify the given ref. A ref is considered to be a null ref + if it does not contain a valid OID (and thus doesn't point to an + object). Logically, a null ref is a dangling ref. + + Note that a null ref is still a valid SQL value and is not SQL-ly null. + It can be used as a valid non-null constant ref value for NOT NULL + column or attribute of a row in a table. + + If a null pointer value is passed as a ref, + then this function is a no-op. + } + {--------------------------- OCIRefAssign ---------------------------------- } +{$IFNDEF LinkDynamically} + function OCIRefAssign(env:POCIEnv; err:POCIError; source:POCIRef; var target:POCIRef):sword;cdecl;external ocilib name 'OCIRefAssign'; +{$ELSE} + OCIRefAssign : function (env:POCIEnv; err:POCIError; source:POCIRef; var target:POCIRef):sword;cdecl; +{$ENDIF} + + { + NAME: OCIRefAssign - OCIRef CoPY a ref to another + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + source (IN) - ref to copy from + target (IN/OUT) - ref to copy to + DESCRIPTION: + Copy 'source' ref to 'target' ref; both then reference the same + object. If the target ref pointer is null (i.e. *target == NULL) + then the copy function will allocate memory for the target ref + in OOCI heap prior to the copy. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + 1) out of memory + } + {-------------------------- OCIRefIsEqual ---------------------------------- } +{$IFNDEF LinkDynamically} + function OCIRefIsEqual(env:POCIEnv; x:POCIRef; y:POCIRef):boolean;cdecl;external ocilib name 'OCIRefIsEqual'; +{$ELSE} + OCIRefIsEqual : function (env:POCIEnv; x:POCIRef; y:POCIRef):boolean;cdecl; +{$ENDIF} + + { + NAME: OCIRefIsEqual - OCIRef compare two refs for EQUality + PARAMETERS: + env (IN) - pointer to OCI environment handle + x (IN) - ref to compare + y (IN) - ref to compare + DESCRIPTION: + Compare the given refs for equality. + Two refs are equal if and only if: + - they are both referencing the same persistent object, or + - they are both referencing the same transient object. + + NOTE THAT TWO NULL REFS ARE CONSIDERED NOT EQUAL BY THIS FUNCTION. + RETURNS: + TRUE if the two refs are equal + FALSE if the two refs are not equal, or X is NULL, or Y is NULL + } + {--------------------------- OCIRefIsNull ---------------------------------- } +{$IFNDEF LinkDynamically} + function OCIRefIsNull(env:POCIEnv; ref:POCIRef):boolean;cdecl;external ocilib name 'OCIRefIsNull'; +{$ELSE} + OCIRefIsNull : function (env:POCIEnv; ref:POCIRef):boolean;cdecl; +{$ENDIF} + + { + NAME: OCIRefIsNull - OCIRef test if a ref is NULl + PARAMETERS: + env (IN) - pointer to OCI environment handle + ref (IN) - ref to test for null + DESCRIPTION: + Return TRUE if the given ref is null; otherwise, return FALSE. + A ref is null if and only if: + - it is supposed to be referencing a persistent object, but + its OID is null, or + - it is supposed to be referencing a transient object, but it is + currently not pointing to an object. + A ref is a dangling ref if the object that it points to does not + exist. + RETURNS: + TRUE if the given ref is NULL + FALSE if the given ref is not NULL + } + {-------------------------- OCIRefHexSize ---------------------------------- } +{$IFNDEF LinkDynamically} + function OCIRefHexSize(env:POCIEnv; ref:POCIRef):ub4;cdecl;external ocilib name 'OCIRefHexSize'; +{$ELSE} + OCIRefHexSize : function (env:POCIEnv; ref:POCIRef):ub4;cdecl; +{$ENDIF} + + { + NAME: OCIRefHexSize - OCIRef Hexadecimal buffer SiZe in bytes + PARAMETERS: + env (IN) - pointer to OCI environment handle + ref (IN) - ref whose size in hexadecimal representation in bytes is + returned + DESCRIPTION: + Return the size of the buffer in bytes required for the hexadecimal + representation of the ref. A buffer of at-least this size must be + passed to ref-to-hex (OCIRefToHex) conversion function. + RETURNS: + size of hexadecimal representation of ref + } + {-------------------------- OCIRefFromHex --------------------------------- } +{$IFNDEF LinkDynamically} + function OCIRefFromHex(env:POCIEnv; err:POCIError; svc:POCISvcCtx; hex:Poratext; length:ub4; + var ref:POCIRef):sword;cdecl;external ocilib name 'OCIRefFromHex'; +{$ELSE} + OCIRefFromHex : function (env:POCIEnv; err:POCIError; svc:POCISvcCtx; hex:Poratext; length:ub4; + var ref:POCIRef):sword;cdecl; +{$ENDIF} + + { + NAME: + OCIRefFromHex - OCIRef convert a Hexadecimal string TO a Ref + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by + calling OCIErrorGet(). + svc (IN) - OCI service context handle; if the resulting ref is + initialized with this service context + hex (IN) - hexadecimal string (that was produced by 'OCIRefToHex()" + previously) to be convert into a ref + length (IN) - length of the hexadecimal string + ref (IN/OUT) - ref is initialized with the given value ('hex'). + If *ref is null, then space for the ref is allocated in the + object cache, otherwise the memory occupied by the given ref + is re-used. + DESCRIPTION: + Convert the given hexadecimal string into a ref. This function + ensures that the resulting ref is well formed. It does NOT ensure + that the object pointed to by the resulting ref exists or not. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + } + {--------------------------- OCIRefToHex ----------------------------------- } +{$IFNDEF LinkDynamically} + function OCIRefToHex(env:POCIEnv; err:POCIError; ref:POCIRef; hex:Poratext; hex_length:Pub4):sword;cdecl;external ocilib name 'OCIRefToHex'; +{$ELSE} + OCIRefToHex : function (env:POCIEnv; err:POCIError; ref:POCIRef; hex:Poratext; hex_length:Pub4):sword;cdecl; +{$ENDIF} + + { + NAME: + OCIRefToHex - OCIRef convert ref to a Hexadecimal string + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by + calling OCIErrorGet(). + ref (IN) - ref to be converted into a hexadecimal string; if the + ref is a null ref (i.e. OCIRefIsNull(ref) == TRUE) then + a zero hex_length value is returned + hex (OUT) - buffer that is large enough to contain the resulting + hexadecimal string; the contents of the string is opaque + to the caller + hex_length (IN/OUT) - on input specifies the size of the 'hex' buffer, + on output specifies the actual size of the hexadecimal + string being returned in 'hex' + DESCRIPTION: + Convert the given ref into a hexadecimal string, and return the length + of the string. The resulting string is opaque to the caller. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + the given buffer is not big enough to hold the resulting string + } + {*************************************************************************** } + { COLLECTION FUNCTIONS } + {*************************************************************************** } + { + The generic collection is represented by the type 'OCIColl'. The following + operations OCIColl*() are provided on a generic collection: + - get current size of collection + - get upper bound of collection + - get pointer to an element given its index + - set element at given index (assign element) + - append an element + - trim the given number of elements from the end of the collection + - collection assignment + + The following iterator based scanning functions are also provided on a + generic collection. These functions make use of an iterator which is + defined to be of type OCIIter. + + - create an iterator for scanning collection + - destroy iterator + - reset iterator to the beginning of collection + - get pointer to current element pointed by iterator + - get pointer to next element + - get pointer to previous element + + The collections variable-length array (varray) and nested table + are sub-types of generic collection. This means that the OCIColl*() + functions can also be used to manipulate varray and nested table. + + The varray is represented by OCIArray type and nested table by OCITable. + Besides OCIColl*() functions no additional functions are provided for + manipulating varrays. The OCIColl*() functions are a complete set of + functions to manipulate varrays. + + Besides OCIColl*() functions, the following functions OCITable*() can be + used to manipulate nested table. The OCITable*() functions operate on + nested tables only and should not be used on a varray. + + - delete an element at index i. Note that the position + ordinals of the remaining elements of the table is not changed by the + delete operation. So delete creates "holes" in the table. + - check if an element exists at the given index i + - return the smallest value of i for which exists(i) is true + - return the largest value of i for which exists(i) is true + - return pointer to the smallest position j, greater than i, such that + OCITableExists(j) is true + - return pointer to the largest position j, less than i, such that + OCITableExists(j) is true + + For binding variables of type OCIColl* or OCITable* in OCI calls + (OCIBindByName(), OCIBindByPos() and OCIDefineByPos()) use the external + type code SQLT_NTY. + } + { OCIColl - generic collection type } + type + POCIColl = pointer; + + { OCIArray - varray collection type } + + POCIArray = pointer; +// POCIArray = ^OCIArray; +// OCIArray = OCIColl; + { OCITable - nested table collection type } + + POCITable = pointer; +// POCITable = ^OCITable; +// OCITable = OCIColl; + { OCIIter - collection iterator } + POCIIter = pointer; + + {----------------------------- OCICollSize --------------------------------- } +{$IFNDEF LinkDynamically} + function OCICollSize(env:POCIEnv; err:POCIError; coll:POCIColl; size:Psb4):sword;cdecl;external ocilib name 'OCICollSize'; +{$ELSE} +var OCICollSize : function (env:POCIEnv; err:POCIError; coll:POCIColl; size:Psb4):sword;cdecl; +{$ENDIF} + + + { + NAME: OCICollSize - OCIColl return current SIZe of the given collection + PARAMETERS: + env(IN) - pointer to OCI environment handle + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + coll (IN) - collection whose number of elements is returned + size (OUT) - current number of elements in the collection + DESCRIPTION: + Returns the current number of elements in the given collection. + + For collections of type nested table wherein 'delete element' + operation is allowed, the count returned by OCICollSize() will + NOT be decremented upon deleting elements. For example: + + OCICollSize(...); + // assume 'size' returned is equal to 5 + OCITableDelete(...); // delete one element + OCICollSize(...); + // 'size' returned will still be 5 + + To get the count minus the deleted elements use OCITableSize(). + Continuing the above example, + + OCITableSize(...) + // 'size' returned will be equal to 4 + + Note, a trim operation (OCICollTrim) will decrement the count + by the number of trimmed elements. Continuing the above example, + + OCICollTrim(..,1..); // trim one element + OCICollSize(...); + // 'size' returned will be equal to 4 + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + error during loading of collection into object cache + any of the input parameters is null + } + {------------------------------ OCICollMax --------------------------------- } +{$IFNDEF LinkDynamically} + function OCICollMax(env:POCIEnv; coll:POCIColl):sb4;cdecl;external ocilib name 'OCICollMax'; +{$ELSE} + OCICollMax : function (env:POCIEnv; coll:POCIColl):sb4;cdecl; +{$ENDIF} + + { + NAME: OCICollMax - OCIColl return MAXimum size (upper-bound) of the + given collection (in number of elements) + PARAMETERS: + env(IN) - pointer to OCI environment handle + coll (IN) - collection whose upper-bound in number of elements + is returned + DESCRIPTION: + Returns the max number of elements that the given collection can hold. + A value 0 indicates that the collection has no upper-bound. + REQUIRES: + coll must point to a valid collection descriptor + RETURNS: + upper-bound of the given collection + } + {-------------------------- OCICollGetElem --------------------------------- } +{$IFNDEF LinkDynamically} + function OCICollGetElem(env:POCIEnv; err:POCIError; coll:POCIColl; index:sb4; exists:Pboolean; + elem:PPdvoid; elemind:PPdvoid):sword;cdecl;external ocilib name 'OCICollGetElem'; +{$ELSE} + OCICollGetElem : function (env:POCIEnv; err:POCIError; coll:POCIColl; index:sb4; exists:Pboolean; + elem:PPdvoid; elemind:PPdvoid):sword;cdecl; +{$ENDIF} + + { + NAME: OCICollGetElem - OCIColl GET pointer to the element at the given index + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + coll (IN) - pointer to the element in this collection is returned + index (IN) - index of the element whose pointer is returned + exists (OUT) - set to FALSE if element at the specified index does + not exist else TRUE + elem (OUT) - address of the desired element is returned + elemind (OUT) [optional] - address of the null indicator information + is returned; if (elemind == NULL) then the null indicator + information will NOT be returned + DESCRIPTION: + Get the address of the element at the given position. Optionally + this function also returns the address of the element's null indicator + information. + + The following table describes for each collection element type + what the corresponding element pointer type is. The element pointer + is returned via the 'elem' parameter of OCICollGetElem(). + + Element Type *elem is set to + ----------------------- --------------- + Oracle Number (OCINumber) OCINumber* + Date (OCIDate) OCIDate* + Variable-length string (OCIString*) OCIString** + Variable-length raw (OCIRaw*) OCIRaw** + object reference (OCIRef*) OCIRef** + lob locator (OCILobLocator*) OCILobLocator** + object type (e.g. person) person* + + The element pointer returned by OCICollGetElem() is in a form + such that it can not only be used to access the + element data but also is in a form that can be used as the target + (i.e left-hand-side) of an assignment statement. + + For example, assume the user is iterating over the elements of + a collection whose element type is object reference (OCIRef*). A call + to OCICollGetElem() returns pointer to a reference handle + (i.e. OCIRef**). After getting, the pointer to the collection + element, the user may wish to modify it by assigning a new reference. + This can be accomplished via the ref assignment function shown below: + + sword OCIRefAssign( OCIEnv *env, OCIError *err, CONST OCIRef *source, + OCIRef **target ); + + Note that the 'target' parameter of OCIRefAssign() is of type + 'OCIRef**'. Hence OCICollGetElem() returns 'OCIRef**'. + If '*target == NULL' a new ref will be allocated by OCIRefAssign() + and returned via the 'target' parameter. + + Similarly, if the collection element was of type string (OCIString*), + OCICollGetElem() returns pointer to string handle + (i.e. OCIString**). If a new string is assigned, via + OCIStringAssign() or OCIStringAssignText() the type of the target + must be 'OCIString **'. + + If the collection element is of type Oracle number, OCICollGetElem() + returns OCINumber*. The prototype of OCINumberAssign() is shown below: + + sword OCINumberAssign(OCIError *err, CONST OCINumber *from, + OCINumber *to); + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + any of the input parameters is null + } + {------------------------- OCICollGetElemArray ----------------------------- } +{$IFNDEF LinkDynamically} + function OCICollGetElemArray(env:POCIEnv; err:POCIError; coll:POCIColl; index:sb4; exists:Pboolean; + elem:PPdvoid; elemind:PPdvoid; nelems:Puword):sword;cdecl;external ocilib name 'OCICollGetElemArray'; +{$ELSE} + OCICollGetElemArray : function (env:POCIEnv; err:POCIError; coll:POCIColl; index:sb4; exists:Pboolean; + elem:PPdvoid; elemind:PPdvoid; nelems:Puword):sword;cdecl; +{$ENDIF} + + { + NAME: OCICollGetElemArray - OCIColl GET pointers to elements from given index + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + coll (IN) - pointers to the elements in this collection is returned + index (IN) - starting index of the element + exists (OUT) - set to FALSE if element at the specified index does + not exist else TRUE + elem (OUT) - address of the desired elements is returned + elemind (OUT) [optional] - address of the null indicators information + is returned; if (elemind == NULL) then the null indicator + information will NOT be returned + nelems(IN/OUT) - Upper bound of elem and/or elemind array + DESCRIPTION: + Get the address of the elements from the given position. Optionally + this function also returns the address of the element's null indicator + information. + + The following table describes for each collection element type + what the corresponding element pointer type is. The element pointer + is returned via the 'elem' parameter of OCICollGetElem(). + + Element Type *elem is set to + ----------------------- --------------- + Oracle Number (OCINumber) OCINumber* + Date (OCIDate) OCIDate* + Variable-length string (OCIString*) OCIString** + Variable-length raw (OCIRaw*) OCIRaw** + object reference (OCIRef*) OCIRef** + lob locator (OCILobLocator*) OCILobLocator** + object type (e.g. person) person* + + The element pointer returned by OCICollGetElem() is in a form + such that it can not only be used to access the + element data but also is in a form that can be used as the target + (i.e left-hand-side) of an assignment statement. + + For example, assume the user is iterating over the elements of + a collection whose element type is object reference (OCIRef*). A call + to OCICollGetElem() returns pointer to a reference handle + (i.e. OCIRef**). After getting, the pointer to the collection + element, the user may wish to modify it by assigning a new reference. + This can be accomplished via the ref assignment function shown below: + + sword OCIRefAssign( OCIEnv *env, OCIError *err, CONST OCIRef *source, + OCIRef **target ); + + Note that the 'target' parameter of OCIRefAssign() is of type + 'OCIRef**'. Hence OCICollGetElem() returns 'OCIRef**'. + If '*target == NULL' a new ref will be allocated by OCIRefAssign() + and returned via the 'target' parameter. + + Similarly, if the collection element was of type string (OCIString*), + OCICollGetElem() returns pointer to string handle + (i.e. OCIString**). If a new string is assigned, via + OCIStringAssign() or OCIStringAssignText() the type of the target + must be 'OCIString **'. + + If the collection element is of type Oracle number, OCICollGetElem() + returns OCINumber*. The prototype of OCINumberAssign() is shown below: + + sword OCINumberAssign(OCIError *err, CONST OCINumber *from, + OCINumber *to); + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + any of the input parameters is null + } + {----------------------- OCICollAssignElem --------------------------------- } +{$IFNDEF LinkDynamically} + function OCICollAssignElem(env:POCIEnv; err:POCIError; index:sb4; elem:Pdvoid; elemind:Pdvoid; + coll:POCIColl):sword;cdecl;external ocilib name 'OCICollAssignElem'; +{$ELSE} + OCICollAssignElem : function (env:POCIEnv; err:POCIError; index:sb4; elem:Pdvoid; elemind:Pdvoid; + coll:POCIColl):sword;cdecl; +{$ENDIF} + + { + NAME: OCICollAssignElem - OCIColl ASsign Element + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + index (IN) - index of the element whose is assigned to + elem (IN) - element which is assigned from (source element) + elemind (IN) [optional] - pointer to the element's null indicator + information; if (elemind == NULL) then the null indicator + information of the assigned element will be set to non-null. + coll (IN/OUT) - collection to be updated + DESCRIPTION: + Assign the given element value 'elem' to the element at coll[index]. + If the collection is of type nested table, the element at the given + index may not exist (i.e. may have been deleted). In this case, the + given element is inserted at index 'index'. + Otherwise, the element at index 'index' is updated with the value + of 'elem'. + + Note that the given element is deep-copied and + 'elem' is strictly an input parameter. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + any of the input parameters is null + out of memory error + given index is out of bounds of the given collection + } + {--------------------------- OCICollAssign --------------------------------- } +{$IFNDEF LinkDynamically} + function OCICollAssign(env:POCIEnv; err:POCIError; rhs:POCIColl; lhs:POCIColl):sword;cdecl;external ocilib name 'OCICollAssign'; +{$ELSE} + OCICollAssign : function (env:POCIEnv; err:POCIError; rhs:POCIColl; lhs:POCIColl):sword;cdecl; +{$ENDIF} + + { + NAME: OCICollAssign - OCIColl ASsiGn collection + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + rhs (IN) - collection to be assigned from + lhs (OUT) - collection to be assigned to + DESCRIPTION: + Assign 'rhs' to 'lhs'. The 'lhs' collection may be decreased or + increased depending upon the size of 'rhs'. If the 'lhs' contains + any elements then the elements will be deleted prior to the + assignment. This function performs a deep-copy. The memory for the + elements comes from the object cache. + + An error is returned if the element types of the lhs and rhs + collections do not match. Also, an error is returned if the + upper-bound of the lhs collection is less than the current number of + elements in the rhs collection. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + any of the input parameters is null + out of memory error + type mis-match of lhs and rhs collections + upper-bound of lhs collection is less than the current number of + elements in the rhs collection + } + {--------------------------- OCICollAppend --------------------------------- } +{$IFNDEF LinkDynamically} + function OCICollAppend(env:POCIEnv; err:POCIError; elem:Pdvoid; elemind:Pdvoid; coll:POCIColl):sword;cdecl;external ocilib name 'OCICollAppend'; +{$ELSE} + OCICollAppend : function (env:POCIEnv; err:POCIError; elem:Pdvoid; elemind:Pdvoid; coll:POCIColl):sword;cdecl; +{$ENDIF} + + { + NAME: OCICollAppend - OCIColl APPend collection + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + elem (IN) - pointer to the element which is appended to the end + of the given collection + elemind (IN) [optional] - pointer to the element's null indicator + information; if (elemind == NULL) then the null indicator + information of the appended element will be set to non-null. + coll (IN/OUT) - updated collection + DESCRIPTION: + Append the given element to the end of the given collection. + Appending an element is equivalent to: + - increasing the size of the collection by 1 element + - updating (deep-copying) the last element's data with the given + element's data + + Note that the pointer to the given element 'elem' will not be saved + by this function. So 'elem' is strictly an input parameter. + An error is returned if the current size of the collection + is equal to the max size (upper-bound) of the collection prior to + appending the element. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + any of the input parameters is null + out of memory error + current size of collection == max size of the collection + } + {----------------------------- OCICollTrim --------------------------------- } +{$IFNDEF LinkDynamically} + function OCICollTrim(env:POCIEnv; err:POCIError; trim_num:sb4; coll:POCIColl):sword;cdecl;external ocilib name 'OCICollTrim'; +{$ELSE} + OCICollTrim : function (env:POCIEnv; err:POCIError; trim_num:sb4; coll:POCIColl):sword;cdecl; +{$ENDIF} + + { + NAME: OCICollTrim - OCIColl Trim elements from the end of the collection + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + trim_num (IN) - number of elements to trim + coll (IN/OUT) - 'trim_num' of elements are removed (freed) from the + end of the collection + DESCRIPTION: + Trim the collection by the given number of elements. The elements are + removed from the end of the collection. + + An error is returned if the 'trim_num' is greater than the current + size of the collection. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + any of the input parameters is null + 'trim_num' is greater than the current size of the collection. + } + {--------------------------- OCICollIsLocator ------------------------------ } +{$IFNDEF LinkDynamically} + function OCICollIsLocator(env:POCIEnv; err:POCIError; coll:POCIColl; result:Pboolean):sword;cdecl;external ocilib name 'OCICollIsLocator'; +{$ELSE} + OCICollIsLocator : function (env:POCIEnv; err:POCIError; coll:POCIColl; result:Pboolean):sword;cdecl; +{$ENDIF} + + { + Name: OCICollIsLocator - OCIColl indicates whether a collection is locator + based or not. + Parameters: + env(IN) - pointer to OCI environment handle + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + coll (IN) - collection item. + result (OUT) - TRUE if the collection item is a locator, FALSE + otherwise + Description: + Returns TRUE in the result OUT parameter if the collection item is a + locator, otherwise returns FALSE. + Returns: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + } + {---------------------------- OCIIterCreate -------------------------------- } +{$IFNDEF LinkDynamically} + function OCIIterCreate(env:POCIEnv; err:POCIError; coll:POCIColl; var itr:POCIIter):sword;cdecl;external ocilib name 'OCIIterCreate'; +{$ELSE} + OCIIterCreate : function (env:POCIEnv; err:POCIError; coll:POCIColl; var itr:POCIIter):sword;cdecl; +{$ENDIF} + + { + NAME: OCIIterCreate - OCIColl Create an ITerator to scan the collection + elements + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + coll (IN) - collection which will be scanned; the different + collection types are varray and nested table + itr (OUT) - address to the allocated collection iterator is + returned by this function + DESCRIPTION: + Create an iterator to scan the elements of the collection. The + iterator is created in the object cache. The iterator is initialized + to point to the beginning of the collection. + + If the next function (OCIIterNext) is called immediately + after creating the iterator then the first element of the collection + is returned. + If the previous function (OCIIterPrev) is called immediately after + creating the iterator then "at beginning of collection" error is + returned. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + any of the input parameters is null + out of memory error + } + {----------------------------- OCIIterDelete ------------------------------ } +{$IFNDEF LinkDynamically} + function OCIIterDelete(env:POCIEnv; err:POCIError; var itr:POCIIter):sword;cdecl;external ocilib name 'OCIIterDelete'; +{$ELSE} + OCIIterDelete : function (env:POCIEnv; err:POCIError; var itr:POCIIter):sword;cdecl; +{$ENDIF} + + { + NAME: OCIIterDelete - OCIColl Delete ITerator + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + itr (IN/OUT) - the allocated collection iterator is destroyed and + the 'itr' is set to NULL prior to returning + DESCRIPTION: + Delete the iterator which was previously created by a call to + OCIIterCreate. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + any of the input parameters is null + to be discovered + } + {----------------------------- OCIIterInit --------------------------------- } +{$IFNDEF LinkDynamically} + function OCIIterInit(env:POCIEnv; err:POCIError; coll:POCIColl; itr:POCIIter):sword;cdecl;external ocilib name 'OCIIterInit'; +{$ELSE} + OCIIterInit : function (env:POCIEnv; err:POCIError; coll:POCIColl; itr:POCIIter):sword;cdecl; +{$ENDIF} + + { + NAME: OCIIterInit - OCIColl Initialize ITerator to scan the given + collection + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + coll (IN) - collection which will be scanned; the different + collection types are varray and nested table + itr (IN/OUT) - pointer to an allocated collection iterator + DESCRIPTION: + Initializes the given iterator to point to the beginning of the + given collection. This function can be used to: + + a. reset an iterator to point back to the beginning of the collection + b. reuse an allocated iterator to scan a different collection + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + any of the input parameters is null + } + {------------------------ OCIIterGetCurrent -------------------------------- } +{$IFNDEF LinkDynamically} + function OCIIterGetCurrent(env:POCIEnv; err:POCIError; itr:POCIIter; elem:PPdvoid; elemind:PPdvoid):sword;cdecl;external ocilib name 'OCIIterGetCurrent'; +{$ELSE} + OCIIterGetCurrent : function (env:POCIEnv; err:POCIError; itr:POCIIter; elem:PPdvoid; elemind:PPdvoid):sword;cdecl; +{$ENDIF} + + { + NAME: OCIIterGetCurrent - OCIColl Iterator based, get CURrent collection + element + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + itr (IN) - iterator which points to the current element + elem (OUT) - address of the element pointed by the iterator is returned + elemind (OUT) [optional] - address of the element's null indicator + information is returned; if (elemind == NULL) then the null + indicator information will NOT be returned + DESCRIPTION: + Returns pointer to the current element and its corresponding null + information. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + any of the input parameters is null + } + {------------------------------ OCIIterNext -------------------------------- } +{$IFNDEF LinkDynamically} + function OCIIterNext(env:POCIEnv; err:POCIError; itr:POCIIter; elem:PPdvoid; elemind:PPdvoid; + eoc:Pboolean):sword;cdecl;external ocilib name 'OCIIterNext'; +{$ELSE} + OCIIterNext : function (env:POCIEnv; err:POCIError; itr:POCIIter; elem:PPdvoid; elemind:PPdvoid; + eoc:Pboolean):sword;cdecl; +{$ENDIF} + + { + NAME: OCIIterNext - OCIColl Iterator based, get NeXT collection element + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + itr (IN/OUT) - iterator is updated to point to the next element + elem (OUT) - after updating the iterator to point to the next element, + address of the element is returned + elemind (OUT) [optional] - address of the element's null indicator + information is returned; if (elemind == NULL) then the null + indicator information will NOT be returned + eoc (OUT) - TRUE if iterator is at End Of Collection (i.e. next + element does not exist) else FALSE + DESCRIPTION: + Returns pointer to the next element and its corresponding null + information. The iterator is updated to point to the next element. + + If the iterator is pointing to the last element of the collection + prior to executing this function, then calling this function will + set eoc flag to TRUE. The iterator will be left unchanged in this + situation. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + any of the input parameters is null + } + {------------------------------ OCIIterPrev -------------------------------- } +{$IFNDEF LinkDynamically} + function OCIIterPrev(env:POCIEnv; err:POCIError; itr:POCIIter; elem:PPdvoid; elemind:PPdvoid; + boc:Pboolean):sword;cdecl;external ocilib name 'OCIIterPrev'; +{$ELSE} + OCIIterPrev : function (env:POCIEnv; err:POCIError; itr:POCIIter; elem:PPdvoid; elemind:PPdvoid; + boc:Pboolean):sword;cdecl; +{$ENDIF} + + { + NAME: OCIIterPrev - OCIColl Iterator based, get PReVious collection element + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + itr (IN/OUT) - iterator is updated to point to the previous + element + elem (OUT) - after updating the iterator to point to the previous + element, address of the element is returned + elemind (OUT) [optional] - address of the element's null indicator + information is returned; if (elemind == NULL) then the null + indicator information will NOT be returned + boc (OUT) - TRUE if iterator is at Beginning Of Collection (i.e. + previous element does not exist) else FALSE. + DESCRIPTION: + Returns pointer to the previous element and its corresponding null + information. The iterator is updated to point to the previous element. + + If the iterator is pointing to the first element of the collection + prior to executing this function, then calling this function will + set 'boc' to TRUE. The iterator will be left unchanged in this + situation. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + any of the input parameters is null + } + {*************************************************************************** } + { FUNCTIONS WHICH OPERATE ONLY ON NESTED TABLE OCITable*() } + {*************************************************************************** } + {---------------------------- OCITableSize --------------------------------- } +{$IFNDEF LinkDynamically} + function OCITableSize(env:POCIEnv; err:POCIError; tbl:POCITable; size:Psb4):sword;cdecl;external ocilib name 'OCITableSize'; +{$ELSE} + OCITableSize : function (env:POCIEnv; err:POCIError; tbl:POCITable; size:Psb4):sword;cdecl; +{$ENDIF} + + { + NAME: OCITableSize - OCITable return current SIZe of the given + nested table (not including deleted elements) + PARAMETERS: + env(IN) - pointer to OCI environment handle + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + tbl (IN) - nested table whose number of elements is returned + size (OUT) - current number of elements in the nested table. The count + does not include deleted elements. + DESCRIPTION: + Returns the count of elements in the given nested table. + + The count returned by OCITableSize() will be decremented upon + deleting elements from the nested table. So, this count DOES NOT + includes any "holes" created by deleting elements. + For example: + + OCITableSize(...); + // assume 'size' returned is equal to 5 + OCITableDelete(...); // delete one element + OCITableSize(...); + // 'size' returned will be equal to 4 + + To get the count plus the count of deleted elements use + OCICollSize(). Continuing the above example, + + OCICollSize(...) + // 'size' returned will still be equal to 5 + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + error during loading of nested table into object cache + any of the input parameters is null + } + {---------------------- OCITableExists --------------------------------- } +{$IFNDEF LinkDynamically} + function OCITableExists(env:POCIEnv; err:POCIError; tbl:POCITable; index:sb4; exists:Pboolean):sword;cdecl;external ocilib name 'OCITableExists'; +{$ELSE} + OCITableExists : function (env:POCIEnv; err:POCIError; tbl:POCITable; index:sb4; exists:Pboolean):sword;cdecl; +{$ENDIF} + + { + NAME: OCITableExists - OCITable test whether element at the given index + EXIsts + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + tbl (IN) - table in which the given index is checked + index (IN) - index of the element which is checked for existence + exists (OUT) - set to TRUE if element at given 'index' exists + else set to FALSE + DESCRIPTION: + Test whether an element exists at the given 'index'. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + any of the input parameters is null + } + {--------------------------- OCITableDelete ------------------------------- } +{$IFNDEF LinkDynamically} + function OCITableDelete(env:POCIEnv; err:POCIError; index:sb4; tbl:POCITable):sword;cdecl;external ocilib name 'OCITableDelete'; +{$ELSE} + OCITableDelete : function (env:POCIEnv; err:POCIError; index:sb4; tbl:POCITable):sword;cdecl; +{$ENDIF} + + { + NAME: OCITableDelete - OCITable DELete element at the specified index + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + index (IN) - index of the element which must be deleted + tbl (IN) - table whose element is deleted + DESCRIPTION: + Delete the element at the given 'index'. Note that the position + ordinals of the remaining elements of the table is not changed by the + delete operation. So delete creates "holes" in the table. + + An error is returned if the element at the specified 'index' has + been previously deleted. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + any of the input parameters is null + given index is not valid + } + {--------------------------- OCITableFirst --------------------------------- } +{$IFNDEF LinkDynamically} + function OCITableFirst(env:POCIEnv; err:POCIError; tbl:POCITable; index:Psb4):sword;cdecl;external ocilib name 'OCITableFirst'; +{$ELSE} + OCITableFirst : function (env:POCIEnv; err:POCIError; tbl:POCITable; index:Psb4):sword;cdecl; +{$ENDIF} + + { + NAME: OCITableFirst - OCITable return FirST index of table + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + tbl (IN) - table which is scanned + index (OUT) - first index of the element which exists in the given + table is returned + DESCRIPTION: + Return the first index of the element which exists in the given + table. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + table is empty + } + {---------------------------- OCITableLast --------------------------------- } +{$IFNDEF LinkDynamically} + function OCITableLast(env:POCIEnv; err:POCIError; tbl:POCITable; index:Psb4):sword;cdecl;external ocilib name 'OCITableLast'; +{$ELSE} + OCITableLast : function (env:POCIEnv; err:POCIError; tbl:POCITable; index:Psb4):sword;cdecl; +{$ENDIF} + + { + NAME: OCITableFirst - OCITable return LaST index of table + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + tbl (IN) - table which is scanned + index (OUT) - last index of the element which exists in the given + table is returned + DESCRIPTION: + Return the last index of the element which exists in the given + table. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + table is empty + } + {---------------------------- OCITableNext --------------------------------- } +{$IFNDEF LinkDynamically} + function OCITableNext(env:POCIEnv; err:POCIError; index:sb4; tbl:POCITable; next_index:Psb4; + exists:Pboolean):sword;cdecl;external ocilib name 'OCITableNext'; +{$ELSE} + OCITableNext : function (env:POCIEnv; err:POCIError; index:sb4; tbl:POCITable; next_index:Psb4; + exists:Pboolean):sword;cdecl; +{$ENDIF} + + { + NAME: OCITableNext - OCITable return NeXT available index of table + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + index (IN) - starting at 'index' the index of the next element + which exists is returned + tbl (IN) - table which is scanned + next_index (OUT) - index of the next element which exists + is returned + exists (OUT) - FALSE if no next index available else TRUE + DESCRIPTION: + Return the smallest position j, greater than 'index', such that + exists(j) is TRUE. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + no next index available + } + {---------------------------- OCITablePrev --------------------------------- } +{$IFNDEF LinkDynamically} + function OCITablePrev(env:POCIEnv; err:POCIError; index:sb4; tbl:POCITable; prev_index:Psb4; + exists:Pboolean):sword;cdecl;external ocilib name 'OCITablePrev'; +{$ELSE} + OCITablePrev : function (env:POCIEnv; err:POCIError; index:sb4; tbl:POCITable; prev_index:Psb4; + exists:Pboolean):sword;cdecl; +{$ENDIF} + + { + NAME: OCITablePrev - OCITable return PReVious available index of table + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode. + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + index (IN) - starting at 'index' the index of the previous element + which exists is returned + tbl (IN) - table which is scanned + prev_index (OUT) - index of the previous element which exists + is returned + exists (OUT) - FALSE if no next index available else TRUE + DESCRIPTION: + Return the largest position j, less than 'index', such that + exists(j) is TRUE. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is NULL. + OCI_ERROR if + no previous index available + } + {------------------------ OCINumberToLnx ----------------------------------- } + { void OCINumberToLnx(/o_ OCINumber *num _o/); } + { was #define dname(params) para_def_expr } + { argument types are unknown } +// function OCINumberToLnx(num : longint) : Plnxnum_t; + + { + NAME: OCINumberToLnx + PARAMETERS: + num (IN) - OCINumber to convert ; + DESCRIPTION: + Converts OCINumber to its internal lnx format + This is not to be used in Public interfaces , but + has been provided due to special requirements from + SQLPLUS development group as they require to call + Core funtions directly . + } + type + { OCI representation of XMLType } + POCIXMLType = pointer; + + { OCI representation of OCIDomDocument } + POCIDOMDocument = pointer; + +{implementation + + function OCINumberToLnx(num : longint) : Plnxnum_t; + begin + OCINumberToLnx:=Plnxnum_t(num); + end; + + +end.} diff --git a/packages/oracle/src/oro_implementation.inc b/packages/oracle/src/oro_implementation.inc new file mode 100644 index 0000000000..a92bea612c --- /dev/null +++ b/packages/oracle/src/oro_implementation.inc @@ -0,0 +1,644 @@ + +//implementation + + { was #define dname def_expr } + function OCI_IND_NOTNULL : OCIInd; + begin + OCI_IND_NOTNULL:=OCIInd(0); + end; + + { was #define dname def_expr } + function OCI_IND_NULL : OCIInd; + begin + OCI_IND_NULL:=OCIInd(-(1)); + end; + + { was #define dname def_expr } + function OCI_IND_BADNULL : OCIInd; + begin + OCI_IND_BADNULL:=OCIInd(-(2)); + end; + + { was #define dname def_expr } + function OCI_IND_NOTNULLABLE : OCIInd; + begin + OCI_IND_NOTNULLABLE:=OCIInd(-(3)); + end; + + { was #define dname def_expr } + function OCI_DURATION_BEGIN : OCIDuration; + begin + OCI_DURATION_BEGIN:=OCIDuration(10); + end; + + { was #define dname def_expr } + function OCI_DURATION_NULL : OCIDuration; + begin + OCI_DURATION_NULL:=OCIDuration(OCI_DURATION_BEGIN-1); + end; + + { was #define dname def_expr } + function OCI_DURATION_DEFAULT : OCIDuration; + begin + OCI_DURATION_DEFAULT:=OCIDuration(OCI_DURATION_BEGIN-2); + end; + + { was #define dname def_expr } + function OCI_DURATION_USER_CALLBACK : OCIDuration; + begin + OCI_DURATION_USER_CALLBACK:=OCIDuration(OCI_DURATION_BEGIN-3); + end; + + { was #define dname def_expr } + function OCI_DURATION_NEXT : OCIDuration; + begin + OCI_DURATION_NEXT:=OCIDuration(OCI_DURATION_BEGIN-4); + end; + + { was #define dname def_expr } + function OCI_DURATION_SESSION : OCIDuration; + begin + OCI_DURATION_SESSION:=OCIDuration(OCI_DURATION_BEGIN); + end; + + { was #define dname def_expr } + function OCI_DURATION_TRANS : OCIDuration; + begin + OCI_DURATION_TRANS:=OCIDuration(OCI_DURATION_BEGIN+1); + end; + + { was #define dname def_expr } + function OCI_DURATION_CALL : OCIDuration; + begin + OCI_DURATION_CALL:=OCIDuration(OCI_DURATION_BEGIN+2); + end; + + { was #define dname def_expr } + function OCI_DURATION_STATEMENT : OCIDuration; + begin + OCI_DURATION_STATEMENT:=OCIDuration(OCI_DURATION_BEGIN+3); + end; + + { was #define dname def_expr } + function OCI_DURATION_CALLOUT : OCIDuration; + begin + OCI_DURATION_CALLOUT:=OCIDuration(OCI_DURATION_BEGIN+4); + end; + + { was #define dname def_expr } + function OCI_DURATION_PROCESS : OCIDuration; + begin + OCI_DURATION_PROCESS:=OCIDuration(OCI_DURATION_BEGIN-5); + end; + + { was #define dname def_expr } + function OCI_OBJECTCOPY_NOREF : ub1; + begin + OCI_OBJECTCOPY_NOREF:=ub1($01); + end; + + { was #define dname def_expr } + function OCI_OBJECTFREE_FORCE : ub2; + begin + OCI_OBJECTFREE_FORCE:=ub2($0001); + end; + + { was #define dname def_expr } + function OCI_OBJECTFREE_NONULL : ub2; + begin + OCI_OBJECTFREE_NONULL:=ub2($0002); + end; + + { was #define dname def_expr } + function OCI_OBJECTFREE_HEADER : ub2; + begin + OCI_OBJECTFREE_HEADER:=ub2($0004); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_OBJECT_IS_UPDATED(flag : longint) : longint; + begin +// OCI_OBJECT_IS_UPDATED:=bit(flag,OCI_OBJECT_UPDATED); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_OBJECT_IS_DELETED(flag : longint) : longint; + begin +// OCI_OBJECT_IS_DELETED:=bit(flag,OCI_OBJECT_DELETED); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_OBJECT_IS_NEW(flag : longint) : longint; + begin +// OCI_OBJECT_IS_NEW:=bit(flag,OCI_OBJECT_NEW); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_OBJECT_IS_DIRTY(flag : longint) : longint; + begin +// OCI_OBJECT_IS_DIRTY:=bit(flag,(OCI_OBJECT_UPDATED or OCI_OBJECT_NEW) or OCI_OBJECT_DELETED); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_INLINE(flag : longint) : longint; + begin +// OCI_METHOD_IS_INLINE:=bit(flag,OCI_TYPEMETHOD_INLINE); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_CONSTANT(flag : longint) : longint; + begin +// OCI_METHOD_IS_CONSTANT:=bit(flag,OCI_TYPEMETHOD_CONSTANT); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_VIRTUAL(flag : longint) : longint; + begin +// OCI_METHOD_IS_VIRTUAL:=bit(flag,OCI_TYPEMETHOD_VIRTUAL); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_CONSTRUCTOR(flag : longint) : longint; + begin +// OCI_METHOD_IS_CONSTRUCTOR:=bit(flag,OCI_TYPEMETHOD_CONSTRUCTOR); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_DESTRUCTOR(flag : longint) : longint; + begin +// OCI_METHOD_IS_DESTRUCTOR:=bit(flag,OCI_TYPEMETHOD_DESTRUCTOR); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_OPERATOR(flag : longint) : longint; + begin +// OCI_METHOD_IS_OPERATOR:=bit(flag,OCI_TYPEMETHOD_OPERATOR); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_SELFISH(flag : longint) : longint; + begin +// OCI_METHOD_IS_SELFISH:=bit(flag,OCI_TYPEMETHOD_SELFISH); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_MAP(flag : longint) : longint; + begin +// OCI_METHOD_IS_MAP:=bit(flag,OCI_TYPEMETHOD_MAP); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_ORDER(flag : longint) : longint; + begin +// OCI_METHOD_IS_ORDER:=bit(flag,OCI_TYPEMETHOD_ORDER); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_RNDS(flag : longint) : longint; + begin +// OCI_METHOD_IS_RNDS:=bit(flag,OCI_TYPEMETHOD_RNDS); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_WNDS(flag : longint) : longint; + begin +// OCI_METHOD_IS_WNDS:=bit(flag,OCI_TYPEMETHOD_WNDS); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_RNPS(flag : longint) : longint; + begin +// OCI_METHOD_IS_RNPS:=bit(flag,OCI_TYPEMETHOD_RNPS); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_WNPS(flag : longint) : longint; + begin +// OCI_METHOD_IS_WNPS:=bit(flag,OCI_TYPEMETHOD_WNPS); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_ABSTRACT(flag : longint) : longint; + begin +// OCI_METHOD_IS_ABSTRACT:=bit(flag,OCI_TYPEMETHOD_ABSTRACT); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_OVERRIDING(flag : longint) : longint; + begin +// OCI_METHOD_IS_OVERRIDING:=bit(flag,OCI_TYPEMETHOD_OVERRIDING); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_PIPELINED(flag : longint) : longint; + begin +// OCI_METHOD_IS_PIPELINED:=bit(flag,OCI_TYPEMETHOD_PIPELINED); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_INLINE(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_IS_INLINE:=bit(flag,OCI_TYPEMETHOD_INLINE); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_CONSTANT(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_IS_CONSTANT:=bit(flag,OCI_TYPEMETHOD_CONSTANT); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_VIRTUAL(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_IS_VIRTUAL:=bit(flag,OCI_TYPEMETHOD_VIRTUAL); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_CONSTRUCTOR(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_IS_CONSTRUCTOR:=bit(flag,OCI_TYPEMETHOD_CONSTRUCTOR); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_DESTRUCTOR(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_IS_DESTRUCTOR:=bit(flag,OCI_TYPEMETHOD_DESTRUCTOR); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_OPERATOR(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_IS_OPERATOR:=bit(flag,OCI_TYPEMETHOD_OPERATOR); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_SELFISH(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_IS_SELFISH:=bit(flag,OCI_TYPEMETHOD_SELFISH); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_MAP(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_IS_MAP:=bit(flag,OCI_TYPEMETHOD_MAP); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_ORDER(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_IS_ORDER:=bit(flag,OCI_TYPEMETHOD_ORDER); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_RNDS(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_IS_RNDS:=bit(flag,OCI_TYPEMETHOD_RNDS); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_WNDS(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_IS_WNDS:=bit(flag,OCI_TYPEMETHOD_WNDS); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_RNPS(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_IS_RNPS:=bit(flag,OCI_TYPEMETHOD_RNPS); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_WNPS(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_IS_WNPS:=bit(flag,OCI_TYPEMETHOD_WNPS); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_ABSTRACT(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_IS_ABSTRACT:=bit(flag,OCI_TYPEMETHOD_ABSTRACT); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_OVERRIDING(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_IS_OVERRIDING:=bit(flag,OCI_TYPEMETHOD_OVERRIDING); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_PIPELINED(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_IS_PIPELINED:=bit(flag,OCI_TYPEMETHOD_PIPELINED); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_INLINE(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_SET_INLINE:=bis(flag,OCI_TYPEMETHOD_INLINE); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_CONSTANT(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_SET_CONSTANT:=bis(flag,OCI_TYPEMETHOD_CONSTANT); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_VIRTUAL(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_SET_VIRTUAL:=bis(flag,OCI_TYPEMETHOD_VIRTUAL); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_CONSTRUCTOR(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_SET_CONSTRUCTOR:=bis(flag,OCI_TYPEMETHOD_CONSTRUCTOR); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_DESTRUCTOR(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_SET_DESTRUCTOR:=bis(flag,OCI_TYPEMETHOD_DESTRUCTOR); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_OPERATOR(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_SET_OPERATOR:=bis(flag,OCI_TYPEMETHOD_OPERATOR); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_SELFISH(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_SET_SELFISH:=bis(flag,OCI_TYPEMETHOD_SELFISH); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_MAP(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_SET_MAP:=bis(flag,OCI_TYPEMETHOD_MAP); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_ORDER(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_SET_ORDER:=bis(flag,OCI_TYPEMETHOD_ORDER); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_RNDS(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_SET_RNDS:=bis(flag,OCI_TYPEMETHOD_RNDS); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_WNDS(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_SET_WNDS:=bis(flag,OCI_TYPEMETHOD_WNDS); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_RNPS(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_SET_RNPS:=bis(flag,OCI_TYPEMETHOD_RNPS); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_WNPS(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_SET_WNPS:=bis(flag,OCI_TYPEMETHOD_WNPS); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_INLINE(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_CLEAR_INLINE:=bic(flag,OCI_TYPEMETHOD_INLINE); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_CONSTANT(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_CLEAR_CONSTANT:=bic(flag,OCI_TYPEMETHOD_CONSTANT); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_VIRTUAL(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_CLEAR_VIRTUAL:=bic(flag,OCI_TYPEMETHOD_VIRTUAL); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_CONSTRUCTOR(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_CLEAR_CONSTRUCTOR:=bic(flag,OCI_TYPEMETHOD_CONSTRUCTOR); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_DESTRUCTOR(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_CLEAR_DESTRUCTOR:=bic(flag,OCI_TYPEMETHOD_DESTRUCTOR); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_OPERATOR(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_CLEAR_OPERATOR:=bic(flag,OCI_TYPEMETHOD_OPERATOR); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_SELFISH(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_CLEAR_SELFISH:=bic(flag,OCI_TYPEMETHOD_SELFISH); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_MAP(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_CLEAR_MAP:=bic(flag,OCI_TYPEMETHOD_MAP); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_ORDER(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_CLEAR_ORDER:=bic(flag,OCI_TYPEMETHOD_ORDER); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_RNDS(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_CLEAR_RNDS:=bic(flag,OCI_TYPEMETHOD_RNDS); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_WNDS(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_CLEAR_WNDS:=bic(flag,OCI_TYPEMETHOD_WNDS); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_RNPS(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_CLEAR_RNPS:=bic(flag,OCI_TYPEMETHOD_RNPS); + end; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_WNPS(flag : longint) : longint; + begin +// OCI_TYPEMETHOD_CLEAR_WNPS:=bic(flag,OCI_TYPEMETHOD_WNPS); + end; + + { was #define dname def_expr } + function OCI_NUMBER_DEFAULTPREC : ub1; + begin + OCI_NUMBER_DEFAULTPREC:=ub1(0); + end; + + { was #define dname def_expr } + function OCI_NUMBER_DEFAULTSCALE : sb1; + begin + OCI_NUMBER_DEFAULTSCALE:=sb1(MAXSB1MINVAL); + end; + + { was #define dname def_expr } + function OCI_COHERENCY_NONE : OCIRefreshOpt; + begin + OCI_COHERENCY_NONE:=OCIRefreshOpt(2); + end; + + { was #define dname def_expr } + function OCI_COHERENCY_NULL : OCIRefreshOpt; + begin + OCI_COHERENCY_NULL:=OCIRefreshOpt(4); + end; + + { was #define dname def_expr } + function OCI_COHERENCY_ALWAYS : OCIRefreshOpt; + begin + OCI_COHERENCY_ALWAYS:=OCIRefreshOpt(5); + end; + + diff --git a/packages/oracle/src/oro_interface.inc b/packages/oracle/src/oro_interface.inc new file mode 100644 index 0000000000..6625bb8434 --- /dev/null +++ b/packages/oracle/src/oro_interface.inc @@ -0,0 +1,1201 @@ + +{ + Automatically converted by H2Pas 1.0.0 from oro.h + The following command line parameters were used: + -p + -D + -l + jojo.so + oro.h +} + +{$PACKRECORDS C} + + { Copyright (c) 1994, 2003, Oracle Corporation. All rights reserved. } + { + NAME + OCI - Oracle Object Interface for External/Internal/Kernel Clients + + DESCRIPTION + This header file contains Oracle object interface definitions which + can be included by external user applications, tools, as well as + the kernel. It defines types and constants that are common to all + object interface which is being defined in several other header files + (e.g., ori.h, ort.h, and orl.h). + + RELATED DOCUMENTS + TBD + + INSPECTION STATUS [[ deletable if no inspection ]] + Inspection date: [[ date of the last logging meeting ]] + Inspection status: [[ exited, not exited, or N/A if exit is not a goal ]] + Estimated increasing cost defects per page: + Rule sets: [[ rule sets inspected against or planned to be + inspected against ]] + + ACCEPTANCE REVIEW STATUS [[ deletable if no approval review ]] + Review date: [[ date of the meeting where issues were logged and the + approval status was decided ]] + Review status: [[ current status: accepted, conditionally accepted, + major revision required, rejected ]] + Reviewers: [[ names of the members on the review team ]] + + PUBLIC FUNCTIONS + + EXAMPLES + Examples are given in the description of each function or macro where + relevant. + + MODIFIED + mnanal 06/09/03 - backout of fix 2836388 + mnanal 05/14/03 - bug-2836388 + srseshad 11/27/02 - Change OCI_TYPECODE_BFLOAT/BDOUBLE codes + rxgovind 10/09/02 - add OCI_TYPECODE_UROWID + mxyang 09/17/02 - grabtrans 'mmorsi_obj_float' + srseshad 09/11/02 - + srseshad 09/01/02 - + aahluwal 06/03/02 - bug 2360115 + celsbern 10/19/01 - merge LOG to MAIN + rxgovind 10/16/01 - update typecodes + rxgovind 09/19/01 - add typecodes + rkasamse 08/15/01 - add OCI_DURATION_USER_CALLBACK + jchai 09/24/01 - add type code for PLS_INTEGER + porangas 08/22/01 - Fix bug#1776434 + schatter 04/09/01 - merge 1456235: define OCI_DURATION_INVALID + rdani 10/12/00 - 1449943 NOCOPY and PIPELINE + ciyer 05/26/00 - short names for abstract, overriding + rkasamse 05/25/00 - OCCI enhancements + smuralid 05/11/00 - OCITypeMethodFlags - add NOT INSTANTIABLE, OVERRIDING + rxgovind 05/09/00 - add OCI_TYPECODE_NONE + tnbui 07/28/99 - Remove OCI_TYPECODE_TIMESTAMP_ITZ + tnbui 07/21/99 - TS LOCAL TZ + thoang 06/21/99 - Add OCI_TYPECODE_TIMESTAMP_ITZ + thoang 03/04/99 - Add datetime datatypes + rkasamse 10/20/98 - add OCI_ATTR_CACHE_ARRAYFLUSH + rkasamse 10/29/98 - add OCI_DURATION_CALLOUT + rkasamse 04/28/98 - OCI_OBJECT_DETECTCHANGE -> OCI_ATTR_OBJECT_DETECTCHAN + rkasamse 04/28/98 - OCI_OBJECT_NEWNOTNULL -> OCI_ATTR_OBJECT_NEWNOTNULL + rkasamse 04/23/98 - add OCI_OBJECT_DETECTCHANGE + rkasamse 04/03/98 - add OCI_OBJECT_NEWNOTNULL + pmitra 04/01/98 - OCI_LOCK_X_NOWAIT added + rxgovind 02/18/98 - add OCI_TYPECODE_OPAQUE + rkasamse 02/13/98 - Add OCI_DURATION_PROCESS + cxcheng 07/28/97 - fix compile with SLSHORTNAME + skrishna 07/14/97 - add OCIObjectGetProperty + cxcheng 04/30/97 - make OCITypeParamMode values consistent with PL/SQL + skrishna 04/28/97 - undocument OCIObjectProperty & OCIObjectEvent + cxcheng 03/29/97 - remove all remaining short names + sthakur 03/20/97 - add casts to constants + cxcheng 02/21/97 - temporarily put SLSHORTNAME for PL/SQL + cxcheng 02/06/97 - take out short name support except with SLSHORTNAME + lchidamb 01/20/97 - update OCIRef comments + sgollapu 11/19/96 - Add OCI type codes for BOOL,REC,and TAB + cxcheng 11/19/96 - more typecode changes + cxcheng 11/13/96 - add #include for ocidfn.h + cxcheng 11/13/96 - add OCI_TYPECODE_ADT for compatibility + cxcheng 11/12/96 - add SQLT_NCO for named collection + cxcheng 11/11/96 - more changes to typecodes + cxcheng 11/07/96 - #define OCI_TYPECODE_MLSLABEL to SQLT_LAB + cxcheng 11/06/96 - fix #define omission for OROTCNAT + cxcheng 10/30/96 - move OCI_TYPECODE_* to ocidfn.h as SQLT_* + cxcheng 10/28/96 - more beautification changes + jboonleu 10/29/96 - add flags for freeing object + dchatter 10/26/96 - delete redef of OCISvcCtx, OCIError, OCIEnv + cxcheng 10/15/96 - more changes + cxcheng 10/14/96 - more final fixes to constants + mluong 10/11/96 - + mluong 10/11/96 - KOCON and KONSP are in lowercase + mluong 10/11/96 - add some define per Calvin + cxcheng 10/09/96 - add #define for OROOCOSFN to OCI_COPY_NOREF + jboonleu 10/08/96 - change OROOCOSFN to OCICopyFlag + jboonleu 10/07/96 - use new OCI names for cache options + cxcheng 10/07/96 - add OROTCS02 for KOTTCBRI and OROTCS03 as spare + cxcheng 10/07/96 - more lint fixes + cxcheng 10/02/96 - move oronsp to ko.h as konsp + cxcheng 10/01/96 - add long names for readability + cxcheng 10/01/96 - remove orotty and orotal + rjenkins 09/28/96 - 2k char 4k varchar2 + jboonleu 09/27/96 - add macro used only in beta2 + cxcheng 09/27/96 - move oroenv to oroenv.h + cxcheng 09/24/96 - remove unnecessary orotyp + cxcheng 09/25/96 - add typecode OROTCS01 as placeholder for lob pointer + cxcheng 09/20/96 - add TDO load option orotgo + jboonleu 09/18/96 - add OROOPOREC + jboonleu 09/10/96 - add OROOPODFL + jweisz 08/27/96 - add SQL internal typecode OROTCS00 + cxcheng 08/02/96 - add PLSQL internal typecodes OROTCP.. + cxcheng 08/01/96 - add OROTCFAR to fill up space left by OROTCCAR + jboonleu 07/16/96 - new pin option + cxcheng 06/18/96 - add casts to OROTNOPRE and OROTNOSCL + cxcheng 05/29/96 - change OROTCNPT back to OROTCDOM + vkrishna 05/27/96 - add OROTCCAR + cxcheng 05/17/96 - replace OROTCFAR with OROTCCAR + cxcheng 05/08/96 - change orotmf from ub1 to ub2 + cxcheng 05/07/96 - fix public defines for method types + cxcheng 04/30/96 - change OROTCDOM to OROTCNPT + cxcheng 04/15/96 - remove obsolete OROTTYICT + jboonleu 04/12/96 - add new pin option + sthakur 04/12/96 - add indicator type and indicator status + cxcheng 04/10/96 - add function parameter codes for ORT/KOT + cxcheng 04/03/96 - replace OROTCFAR as OROTCCAR + jwijaya 03/29/96 - add OROTTCCAR + jwijaya 03/27/96 - better comments for orotc + cxcheng 02/23/96 - add typecodes for SMALLINT and VARCHAR2 + skrishna 02/22/96 - add oroind - null indicator type + cxcheng 02/21/96 - change lob character codes to OROTCCLB, OROTCBLB... + jboonleu 02/06/96 - new value for predefined duration + cxcheng 01/12/96 - add OROTCCLO, OROTCBLO, OROTCFIL to orotc + cxcheng 12/05/95 - add OROTCDOM and OROTCAAT to orotc + skotsovo 10/30/95 - reserve space for internal 'oid' type + jwijaya 10/20/95 - support variable-length ref + cxcheng 10/03/95 - add OROTMFOR for ordering function to orotmf + cxcheng 10/03/95 - Adding the ordering function type to orotmf + jboonleu 09/28/95 - set OROODTPRE + jboonleu 09/25/95 - add oroodt + skotsovo 03/10/95 - update to only include release 1 + jboonleu 02/15/95 - add OROOPOREC, remove orocro, oroolo + skotsovo 01/30/95 - add default max lengths for varrays and vstrings + skotsovo 01/24/95 - categorize sint32, double, and real as number types + (with precision and scale) instead of scalar types. + skotsovo 12/20/94 - add release 1 types + skotsovo 12/12/94 - update according to new ots doc + skotsovo 12/01/94 - add default precision and scale + jwijaya 11/15/94 - rename ORONSPTAB to ORONSPEXT + jwijaya 10/25/94 - tint + jwijaya 10/06/94 - add namespace + jwijaya 10/02/94 - connection handle -> connection number + skotsovo 09/12/94 - keep 0 as uninitialized value for ORT consts + skotsovo 08/24/94 - fix orotec + skotsovo 08/17/94 - modify type code names + skotsovo 08/12/94 - fix 141 lint errors + skotsovo 07/25/94 - modify categorization of complex types (orotc) + skotsovo 07/07/94 - change typecode enum values & add decimal type + skotsovo 07/01/94 - change order of typecodes + jwijaya 06/15/94 - review + jboonleu 06/13/94 - add comments for the object cache options + jwijaya 06/13/94 - adhere to the header file template + skotsovo 06/09/94 - make ots scalar type names consistent with the ots + document + jwijaya 06/07/94 - include oratypes.h instead of s.h + skotsovo 05/24/94 - change typecodes + jwijaya 05/23/94 - fix comments of ororef + skotsovo 05/19/94 - remove type composition + skotsovo 05/09/94 - modified orotc according to new OTS document + jwijaya 05/03/94 - oroid and ororef + jwijaya 01/26/94 - Creation + } + + {--------------------------------------------------------------------------- } + { SHORT NAMES SUPPORT SECTION } + {--------------------------------------------------------------------------- } +{$ifdef SLSHORTNAME} + { the following are short names that are only supported on IBM mainframes + with the SLSHORTNAME defined. + With this all subsequent long names will actually be substituted with + the short names here } + + const + OCIDuration = oroodt; + OCIInd = oroind; + OCILockOpt = oroolm; + OCIMarkOpt = oroomo; + OCIObjectEvent = orocev; + OCIObjectProperty = oroopr; + OCIPinOpt = oroopo; + OCIRef = ororef; + OCIRefreshOpt = orooro; + OCITypeCode = orotc; + OCITypeEncap = orotec; + OCITypeGetOpt = orotgo; + OCITypeMethodFlag = orotmf; + OCITypeParamMode = orotpm; + OCIObjectPropId = oroopi; + OCIObjectLifetime = oroolft; + OCIObjectMarkstatus = oroomst; + OCI_LOCK_NONE = OROOLMNUL; + OCI_LOCK_X = OROOLMX; + OCI_LOCK_X_NOWAIT = OROOLMXNW; + OCI_MARK_DEFAULT = OROOMODFL; + OCI_MARK_NONE = OROOMONON; + OCI_MARK_UPDATE = OROOMOUPD; + OCI_OBJECTEVENT_AFTER_FLUSH = OROCEVAFL; + OCI_OBJECTEVENT_AFTER_REFRESH = OROCEVARF; + OCI_OBJECTEVENT_BEFORE_FLUSH = OROCEVBFL; + OCI_OBJECTEVENT_BEFORE_REFRESH = OROCEVBRF; + OCI_OBJECTEVENT_WHEN_LOCK = OROCEVWLK; + OCI_OBJECTEVENT_WHEN_MARK_DELETED = OROCEVWDL; + OCI_OBJECTEVENT_WHEN_MARK_UPDATED = OROCEVWUP; + OCI_OBJECTEVENT_WHEN_UNMARK = OROCEVWUM; + OCI_OBJECTPROP_DIRTIED = OROOPRDRT; + OCI_OBJECTPROP_LOADED = OROOPRLOD; + OCI_OBJECTPROP_LOCKED = OROOPRLCK; + OCI_PIN_ANY = OROOPOANY; + OCI_PIN_DEFAULT = OROOPODFL; + OCI_PIN_LATEST = OROOPOLST; + OCI_PIN_RECENT = OROOPOREC; + OCI_REFRESH_LOADED = OROOROLOD; + OCI_TYPEENCAP_PRIVATE = OROTECPVT; + OCI_TYPEENCAP_PUBLIC = OROTECPUB; + OCI_TYPEGET_ALL = OROTGOALL; + OCI_TYPEGET_HEADER = OROTGOHDR; + OCI_TYPEMETHOD_CONSTANT = OROTMCON; + OCI_TYPEMETHOD_CONSTRUCTOR = OROTMCSTR; + OCI_TYPEMETHOD_DESTRUCTOR = OROTMDSTR; + OCI_TYPEMETHOD_INLINE = OROTMINL; + OCI_TYPEMETHOD_MAP = OROTMMAP; + OCI_TYPEMETHOD_OPERATOR = OROTMOP; + OCI_TYPEMETHOD_ORDER = OROTMOR; + OCI_TYPEMETHOD_RNDS = OROTMRDS; + OCI_TYPEMETHOD_RNPS = OROTMRPS; + OCI_TYPEMETHOD_SELFISH = OROTMSLF; + OCI_TYPEMETHOD_VIRTUAL = OROTMVRT; + OCI_TYPEMETHOD_WNDS = OROTMWDS; + OCI_TYPEMETHOD_WNPS = OROTMWPS; + OCI_TYPEMETHOD_ABSTRACT = OROTMABSTRACT; + OCI_TYPEMETHOD_OVERRIDING = OROTMOVERRIDING; + OCI_TYPEMETHOD_PIPELINED = OROTMPIPELINED; + OCI_TYPEPARAM_BYREF = OROTPMREF; + OCI_TYPEPARAM_IN = OROTPMIN; + OCI_TYPEPARAM_INOUT = OROTPMIO; + OCI_TYPEPARAM_OUT = OROTPMOUT; + OCI_TYPEPARAM_OUTNCPY = OROTPMOUTNCPY; + OCI_TYPEPARAM_INOUTNCPY = OROTPMIONCPY; +{$endif} + { SLSHORTNAME } + {--------------------------------------------------------------------------- } + { PUBLIC TYPES, CONSTANTS AND MACROS } + {--------------------------------------------------------------------------- } + {--------------------------------------------------------------------------- } + { GENERAL OBJECT TYPES, CONSTANTS, MACROS } + {--------------------------------------------------------------------------- } + {------------------------- OBJECT REFERENCE (REF) -------------------------- } + + type + POCIRef = pointer; + { + * OCIRef - OCI object REFerence + * + * In the Oracle object runtime environment, an object is identified by an + * object reference (ref) which contains the object identifier plus other + * runtime information. The contents of a ref is opaque to clients. Use + * OCIObjectNew() to construct a ref. + } + {--------------------------- OBJECT INDICATOR ------------------------------ } + + POCIInd = ^OCIInd; + OCIInd = sb2; + { + * OCIInd -- a variable of this type contains (null) indicator information + } + { not NULL } + { was #define dname def_expr } + function OCI_IND_NOTNULL : OCIInd; + + { NULL } + { was #define dname def_expr } + function OCI_IND_NULL : OCIInd; + + { BAD NULL } + { was #define dname def_expr } + function OCI_IND_BADNULL : OCIInd; + + { not NULLable } + { was #define dname def_expr } + function OCI_IND_NOTNULLABLE : OCIInd; + + {--------------------------------------------------------------------------- } + { OBJECT CACHE } + {--------------------------------------------------------------------------- } + { To enable object change detection mode, set this to TRUE } + + const + OCI_ATTR_OBJECT_DETECTCHANGE = $00000020; + { To enable object creation with non-NULL attributes by default, set the + following to TRUE. + By default, object is created with NULL attributes + } + OCI_ATTR_OBJECT_NEWNOTNULL = $00000010; + { To enable sorting of the objects that belong to the same table + before being flushed through OCICacheFlush. + Please note that by enabling this object cache will not be flushing + the objects in the same order they were dirtied } + OCI_ATTR_CACHE_ARRAYFLUSH = $00000040; + {--------------------------- OBJECT PIN OPTION ----------------------------- } + { 0 = uninitialized } + { default pin option } + { pin any copy of the object } + { pin recent copy of the object } + { pin latest copy of the object } + + type + OCIPinOpt = (OCI_PIN_DEFAULT := 1,OCI_PIN_ANY := 3, + OCI_PIN_RECENT := 4,OCI_PIN_LATEST := 5 + ); + + + POCIPinOpt = ^OCIPinOpt; + { + * OCIPinOpt - OCI object Pin Option + * + * In the Oracle object runtime environment, the program has the option to + * specify which copy of the object to pin. + * + * OCI_PINOPT_DEFAULT pins an object using the default pin option. The default + * pin option can be set as an attribute of the OCI environment handle + * (OCI_ATTR_PINTOPTION). The value of the default pin option can be + * OCI_PINOPT_ANY, OCI_PINOPT_RECENT, or OCI_PIN_LATEST. The default option + * is initialized to OCI_PINOPT_ANY. + * + * OCI_PIN_ANY pins any copy of the object. The object is pinned + * using the following criteria: + * If the object copy is not loaded, load it from the persistent store. + * Otherwise, the loaded object copy is returned to the program. + * + * OCI_PIN_RECENT pins the latest copy of an object. The object is + * pinned using the following criteria: + * If the object is not loaded, load the object from the persistent store + * from the latest version. + * If the object is not loaded in the current transaction and it is not + * dirtied, the object is refreshed from the latest version. + * Otherwise, the loaded object copy is returned to the program. + * + * OCI_PINOPT_LATEST pins the latest copy of an object. The object copy is + * pinned using the following criteria: + * If the object copy is not loaded, load it from the persistent store. + * If the object copy is loaded and dirtied, it is returned to the program. + * Otherwise, the loaded object copy is refreshed from the persistent store. + } + {--------------------------- OBJECT LOCK OPTION ---------------------------- } + { 0 = uninitialized } + { null (same as no lock) } + { exclusive lock } + { exclusive lock, do not wait } + OCILockOpt = (OCI_LOCK_NONE := 1,OCI_LOCK_X := 2, + OCI_LOCK_X_NOWAIT := 3); + + + POCILockOpt = ^OCILockOpt; + { + * OCILockOpt - OCI object LOCK Option + * + * This option is used to specify the locking preferences when an object is + * loaded from the server. + } + {------------------------- OBJECT MODIFYING OPTION ------------------------- } + { 0 = uninitialized } + { default (the same as OCI_MARK_NONE) } + { object has not been modified } + { object is to be updated } +{ OCIMarkOpt = (OCI_MARK_DEFAULT := 1,OCI_MARK_NONE := OCI_MARK_DEFAULT, + OCI_MARK_UPDATE); + + + POCIMarkOpt = ^OCIMarkOpt;} + { + * OCIMarkOpt - OCI object Mark option + * + * When the object is marked updated, the client has to specify how the + * object is intended to be changed. + } + {-------------------------- OBJECT Duration -------------------------------- } + + POCIDuration = ^OCIDuration; + OCIDuration = ub2; + { Invalid duration } + + const + OCI_DURATION_INVALID = $FFFF; + { was #define dname def_expr } + function OCI_DURATION_BEGIN : OCIDuration; + + { beginning sequence of duration } + { was #define dname def_expr } + function OCI_DURATION_NULL : OCIDuration; + + { null duration } + { default } + { was #define dname def_expr } + function OCI_DURATION_DEFAULT : OCIDuration; + + { was #define dname def_expr } + function OCI_DURATION_USER_CALLBACK : OCIDuration; + + { was #define dname def_expr } + function OCI_DURATION_NEXT : OCIDuration; + + { next special duration } + { was #define dname def_expr } + function OCI_DURATION_SESSION : OCIDuration; + + { the end of user session } + { was #define dname def_expr } + function OCI_DURATION_TRANS : OCIDuration; + + { the end of user transaction } + {***************************************************************************** + ** DO NOT USE OCI_DURATION_CALL. IT IS UNSUPPORTED ** + ** WILL BE REMOVED/CHANGED IN A FUTURE RELEASE ** + ***************************************************************************** } + { was #define dname def_expr } + function OCI_DURATION_CALL : OCIDuration; + + { the end of user client/server call } + { was #define dname def_expr } + function OCI_DURATION_STATEMENT : OCIDuration; + + { This is to be used only during callouts. It is similar to that + of OCI_DURATION_CALL, but lasts only for the duration of a callout. + Its heap is from PGA } + { was #define dname def_expr } + function OCI_DURATION_CALLOUT : OCIDuration; + + +{ const + OCI_DURATION_LAST = OCI_DURATION_CALLOUT; } + { last of predefined durations } + { This is not being treated as other predefined durations such as + SESSION, CALL etc, because this would not have an entry in the duration + table and its functionality is primitive such that only allocate, free, + resize memory are allowed, but one cannot create subduration out of this + } { was #define dname def_expr } + function OCI_DURATION_PROCESS : OCIDuration; + + { + * OCIDuration - OCI object duration + * + * A client can specify the duration of which an object is pinned (pin + * duration) and the duration of which the object is in memory (allocation + * duration). If the objects are still pinned at the end of the pin duration, + * the object cache manager will automatically unpin the objects for the + * client. If the objects still exist at the end of the allocation duration, + * the object cache manager will automatically free the objects for the client. + * + * Objects that are pinned with the option OCI_DURATION_TRANS will get unpinned + * automatically at the end of the current transaction. + * + * Objects that are pinned with the option OCI_DURATION_SESSION will get + * unpinned automatically at the end of the current session (connection). + * + * The option OCI_DURATION_NULL is used when the client does not want to set + * the pin duration. If the object is already loaded into the cache, then the + * pin duration will remain the same. If the object is not yet loaded, the + * pin duration of the object will be set to OCI_DURATION_DEFAULT. + } + {----------------------------- OBJECT PROPERTY ----------------------------- } + {***************************************************************************** + ** DO NOT USE OCIObjectProperty. IT IS UNSUPPORTED ** + ** WILL BE REMOVED/CHANGED IN A FUTURE RELEASE ** + ***************************************************************************** } + { 0 = uninitialized } + { dirty objects } + { objects loaded in the transaction } + { locked objects } + + type + OCIObjectProperty = (OCI_OBJECTPROP_DIRTIED := 1,OCI_OBJECTPROP_LOADED, + OCI_OBJECTPROP_LOCKED); + + + POCIObjectProperty = ^OCIObjectProperty; + { + * OCIObjectProperty -- OCI Object Property + * This specifies the properties of objects in the object cache. + } + {------------------------- CACHE REFRESH OPTION --------------------------- } + { 0 = uninitialized } + { refresh objects loaded in the transaction } + OCIRefreshOpt = (OCI_REFRESH_LOADED := 1); + + + POCIRefreshOpt = ^OCIRefreshOpt; + { + * OCIRefreshOpt - OCI cache Refresh Option + * This option is used to specify the set of objects to be refreshed. + * + * OCI_REFRESH_LOAD refreshes the objects that are loaded in the current + * transaction. + } + {-------------------------------- OBJECT EVENT ----------------------------- } + {***************************************************************************** + ** DO NOT USE OCIObjectEvent. IT IS UNSUPPORTED ** + ** WILL BE REMOVED/CHANGED IN A FUTURE RELEASE ** + ***************************************************************************** } + { 0 = uninitialized } + { before flushing the cache } + { after flushing the cache } + { before refreshing the cache } + { after refreshing the cache } + { when an object is marked updated } + { when an object is marked deleted } + { when an object is being unmarked } + { when an object is being locked } + OCIObjectEvent = (OCI_OBJECTEVENT_BEFORE_FLUSH := 1, + OCI_OBJECTEVENT_AFTER_FLUSH,OCI_OBJECTEVENT_BEFORE_REFRESH, + OCI_OBJECTEVENT_AFTER_REFRESH,OCI_OBJECTEVENT_WHEN_MARK_UPDATED, + OCI_OBJECTEVENT_WHEN_MARK_DELETED,OCI_OBJECTEVENT_WHEN_UNMARK, + OCI_OBJECTEVENT_WHEN_LOCK); + + + POCIObjectEvent = ^OCIObjectEvent; + { + * OCIObjectEvent -- OCI Object Event + * This specifies the kind of event that is supported by the object + * cache. The program can register a callback that is invoked when the + * specified event occurs. + } + {----------------------------- OBJECT COPY OPTION -------------------------- } + { was #define dname def_expr } + function OCI_OBJECTCOPY_NOREF : ub1; + + { + * OCIObjectCopyFlag - Object copy flag + * + * If OCI_OBJECTCOPY_NOREF is specified when copying an instance, the + * reference and lob will not be copied to the target instance. + } + {----------------------------- OBJECT FREE OPTION -------------------------- } + { was #define dname def_expr } + function OCI_OBJECTFREE_FORCE : ub2; + + { was #define dname def_expr } + function OCI_OBJECTFREE_NONULL : ub2; + + { was #define dname def_expr } + function OCI_OBJECTFREE_HEADER : ub2; + + { + * OCIObjectFreeFlag - Object free flag + * + * If OCI_OBJECTCOPY_FORCE is specified when freeing an instance, the instance + * is freed regardless it is pinned or diritied. + * If OCI_OBJECTCOPY_NONULL is specified when freeing an instance, the null + * structure is not freed. + } + {----------------------- OBJECT PROPERTY ID ------------------------------- } + + type + + POCIObjectPropId = ^OCIObjectPropId; + OCIObjectPropId = ub1; + { persistent or transient or value } + + const + OCI_OBJECTPROP_LIFETIME = 1; + { schema name of table containing object } + OCI_OBJECTPROP_SCHEMA = 2; + { table name of table containing object } + OCI_OBJECTPROP_TABLE = 3; + { pin duartion of object } + OCI_OBJECTPROP_PIN_DURATION = 4; + { alloc duartion of object } + OCI_OBJECTPROP_ALLOC_DURATION = 5; + { lock status of object } + OCI_OBJECTPROP_LOCK = 6; + { mark status of object } + OCI_OBJECTPROP_MARKSTATUS = 7; + { is object a view object or not? } + OCI_OBJECTPROP_VIEW = 8; + { + * OCIObjectPropId - OCI Object Property Id + * Identifies the different properties of objects. + } + {----------------------- OBJECT LIFETIME ---------------------------------- } + { 0 = uninitialized } + { persistent object } + { transient object } + { value object } + + type + OCIObjectLifetime = (OCI_OBJECT_PERSISTENT := 1,OCI_OBJECT_TRANSIENT, + OCI_OBJECT_VALUE); + + + POCIObjectLifetime = ^OCIObjectLifetime; + { + * OCIObjectLifetime - OCI Object Lifetime + * Classifies objects depending upon the lifetime and referenceability + * of the object. + } + {----------------------- OBJECT MARK STATUS ------------------------------- } + + POCIObjectMarkStatus = ^OCIObjectMarkStatus; + OCIObjectMarkStatus = uword; + { new object } + + const + OCI_OBJECT_NEW = $0001; + { object marked deleted } + OCI_OBJECT_DELETED = $0002; + { object marked updated } + OCI_OBJECT_UPDATED = $0004; + { + * OCIObjectMarkStatus - OCI Object Mark Status + * Status of the object - new or updated or deleted + } + { macros to test the object mark status } { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_OBJECT_IS_UPDATED(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_OBJECT_IS_DELETED(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_OBJECT_IS_NEW(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_OBJECT_IS_DIRTY(flag : longint) : longint; + + {--------------------------------------------------------------------------- } + { TYPE MANAGER } + {--------------------------------------------------------------------------- } + {------------------------------ TYPE CODE ---------------------------------- } + { + * Type manager typecodes + * + * These are typecodes designed to be used with the type manager; + * they also include longer, more readable versions of existing SQLT names. + * Those types that are directly related to existing SQLT types are #define'd + * to their SQLT equivalents. + * + * The type manager typecodes are designed to be useable for all OCI calls. + * They are in the range from 192 to 320 for typecodes, so as not to conflict + * with existing OCI SQLT typecodes (see ocidfn.h). + } + { SQL/OTS OBJECT REFERENCE } + + const + OCI_TYPECODE_REF = SQLT_REF; + { SQL DATE OTS DATE } + OCI_TYPECODE_DATE = SQLT_DAT; + { SQL SIGNED INTEGER(8) OTS SINT8 } + OCI_TYPECODE_SIGNED8 = 27; + { SQL SIGNED INTEGER(16) OTS SINT16 } + OCI_TYPECODE_SIGNED16 = 28; + { SQL SIGNED INTEGER(32) OTS SINT32 } + OCI_TYPECODE_SIGNED32 = 29; + { SQL REAL OTS SQL_REAL } + OCI_TYPECODE_REAL = 21; + { SQL DOUBLE PRECISION OTS SQL_DOUBLE } + OCI_TYPECODE_DOUBLE = 22; + { Binary float } + OCI_TYPECODE_BFLOAT = SQLT_IBFLOAT; + { Binary double } + OCI_TYPECODE_BDOUBLE = SQLT_IBDOUBLE; + { SQL FLOAT(P) OTS FLOAT(P) } + OCI_TYPECODE_FLOAT = SQLT_FLT; + { SQL NUMBER(P S) OTS NUMBER(P S) } + OCI_TYPECODE_NUMBER = SQLT_NUM; + OCI_TYPECODE_DECIMAL = SQLT_PDN; + { SQL DECIMAL(P S) OTS DECIMAL(P S) } + OCI_TYPECODE_UNSIGNED8 = SQLT_BIN; + { SQL UNSIGNED INTEGER(8) OTS UINT8 } + { SQL UNSIGNED INTEGER(16) OTS UINT16 } + OCI_TYPECODE_UNSIGNED16 = 25; + { SQL UNSIGNED INTEGER(32) OTS UINT32 } + OCI_TYPECODE_UNSIGNED32 = 26; + { SQL ??? OTS OCTET } +// OCI_TYPECODE_OCTET = 245; + { SQL SMALLINT OTS SMALLINT } + OCI_TYPECODE_SMALLINT = 246; + { SQL INTEGER OTS INTEGER } + OCI_TYPECODE_INTEGER = SQLT_INT; + { SQL RAW(N) OTS RAW(N) } + OCI_TYPECODE_RAW = SQLT_LVB; + { SQL POINTER OTS POINTER } + OCI_TYPECODE_PTR = 32; + OCI_TYPECODE_VARCHAR2 = SQLT_VCS; + { SQL VARCHAR2(N) OTS SQL_VARCHAR2(N) } + { SQL CHAR(N) OTS SQL_CHAR(N) } + OCI_TYPECODE_CHAR = SQLT_AFC; + OCI_TYPECODE_VARCHAR = SQLT_CHR; + { SQL VARCHAR(N) OTS SQL_VARCHAR(N) } + { OTS MLSLABEL } +// OCI_TYPECODE_MLSLABEL = SQLT_LAB; + { SQL VARRAY OTS PAGED VARRAY } +// OCI_TYPECODE_VARRAY = 247; + { SQL TABLE OTS MULTISET } +// OCI_TYPECODE_TABLE = 248; + { SQL/OTS NAMED OBJECT TYPE } +// OCI_TYPECODE_OBJECT = SQLT_NTY; + { SQL/OTS Opaque Types } +// OCI_TYPECODE_OPAQUE = 58; +// OCI_TYPECODE_NAMEDCOLLECTION = SQLT_NCO; + { SQL/OTS NAMED COLLECTION TYPE } + { SQL/OTS BINARY LARGE OBJECT } +// OCI_TYPECODE_BLOB = SQLT_BLOB; + { SQL/OTS BINARY FILE OBJECT } +// OCI_TYPECODE_BFILE = SQLT_BFILE; + { SQL/OTS CHARACTER LARGE OBJECT } +// OCI_TYPECODE_CLOB = SQLT_CLOB; + { SQL/OTS CHARACTER FILE OBJECT } +// OCI_TYPECODE_CFILE = SQLT_CFILE; + { the following are ANSI datetime datatypes added in 8.1 } + { SQL/OTS TIME } + OCI_TYPECODE_TIME = SQLT_TIME; + { SQL/OTS TIME_TZ } + OCI_TYPECODE_TIME_TZ = SQLT_TIME_TZ; + { SQL/OTS TIMESTAMP } + OCI_TYPECODE_TIMESTAMP = SQLT_TIMESTAMP; + { SQL/OTS TIMESTAMP_TZ } + OCI_TYPECODE_TIMESTAMP_TZ = SQLT_TIMESTAMP_TZ; + { TIMESTAMP_LTZ } + OCI_TYPECODE_TIMESTAMP_LTZ = SQLT_TIMESTAMP_LTZ; + { SQL/OTS INTRVL YR-MON } + OCI_TYPECODE_INTERVAL_YM = SQLT_INTERVAL_YM; + { SQL/OTS INTRVL DAY-SEC } + OCI_TYPECODE_INTERVAL_DS = SQLT_INTERVAL_DS; + { Urowid type } +// OCI_TYPECODE_UROWID = SQLT_RDD; + { first Open Type Manager typecode } +// OCI_TYPECODE_OTMFIRST = 228; + { last OTM typecode } +// OCI_TYPECODE_OTMLAST = 320; + { first OTM system type (internal) } +// OCI_TYPECODE_SYSFIRST = 228; + { last OTM system type (internal) } +// OCI_TYPECODE_SYSLAST = 235; + { type code for PLS_INTEGER } +// OCI_TYPECODE_PLS_INTEGER = 266; + { the following are PL/SQL-only internal. They should not be used } + { PLSQL indexed table } +// OCI_TYPECODE_ITABLE = SQLT_TAB; + { PLSQL record } +// OCI_TYPECODE_RECORD = SQLT_REC; + { PLSQL boolean } +// OCI_TYPECODE_BOOLEAN = SQLT_BOL; + { NOTE : The following NCHAR related codes are just short forms for saying + OCI_TYPECODE_VARCHAR2 with a charset form of SQLCS_NCHAR. These codes are + intended for use in the OCIAnyData API only and nowhere else. } + OCI_TYPECODE_NCHAR = 286; + OCI_TYPECODE_NVARCHAR2 = 287; + OCI_TYPECODE_NCLOB = 288; + { To indicate absence of typecode being specified } + OCI_TYPECODE_NONE = 0; + { To indicate error has to be taken from error handle - reserved for + sqlplus use } + OCI_TYPECODE_ERRHP = 283; + { The OCITypeCode type is interchangeable with the existing SQLT type + which is a ub2 } + + type + + POCITypeCode = ^OCITypeCode; + OCITypeCode = ub2; + {----------------------- GET OPTIONS FOR TDO ------------------------------ } + { load only the header portion of the TDO when getting type } + { load all attribute and method descriptors as well } + OCITypeGetOpt = (OCI_TYPEGET_HEADER,OCI_TYPEGET_ALL); + + + POCITypeGetOpt = ^OCITypeGetOpt; + { + * OCITypeGetOpt + * + * This is the flag passed to OCIGetTypeArray() to indicate how the TDO is + * going to be loaded into the object cache. + * OCI_TYPEGET_HEADER implies that only the header portion is to be loaded + * initially, with the rest loaded in on a 'lazy' basis. Only the header is + * needed for PL/SQL and OCI operations. OCI_TYPEGET_ALL implies that ALL + * the attributes and methods belonging to a TDO will be loaded into the + * object cache in one round trip. Hence it will take much longer to execute, + * but will ensure that no more loading needs to be done when pinning ADOs + * etc. This is only needed if your code needs to examine and manipulate + * attribute and method information. + * + * The default is OCI_TYPEGET_HEADER. + } + {------------------------ TYPE ENCAPSULTATION LEVEL ------------------------ } + { 0 = uninitialized } + { private: only internally visible } + { public: visible to both internally and externally } + OCITypeEncap = (OCI_TYPEENCAP_PRIVATE,OCI_TYPEENCAP_PUBLIC + ); + + + POCITypeEncap = ^OCITypeEncap; + { + * OCITypeEncap - OCI Encapsulation Level + } + {---------------------------- TYPE METHOD FLAGS ---------------------------- } + { inline } + { constant } + { virtual } + { constructor } + { destructor } + { operator } + { selfish method (generic otherwise) } + { map (relative ordering) } + { order (relative ordering) } + { OCI_TYPEMETHOD_MAP and OCI_TYPEMETHOD_ORDER are mutually exclusive } + { Read no Data State (default) } + { Write no Data State } + { Read no Process State } + { Write no Process State } + { abstract (not instantiable) method } + { overriding method } + { method is pipelined } + OCITypeMethodFlag = (OCI_TYPEMETHOD_INLINE := $0001,OCI_TYPEMETHOD_CONSTANT := $0002, + OCI_TYPEMETHOD_VIRTUAL := $0004,OCI_TYPEMETHOD_CONSTRUCTOR := $0008, + OCI_TYPEMETHOD_DESTRUCTOR := $0010,OCI_TYPEMETHOD_OPERATOR := $0020, + OCI_TYPEMETHOD_SELFISH := $0040,OCI_TYPEMETHOD_MAP := $0080, + OCI_TYPEMETHOD_ORDER := $0100,OCI_TYPEMETHOD_RNDS := $0200, + OCI_TYPEMETHOD_WNDS := $0400,OCI_TYPEMETHOD_RNPS := $0800, + OCI_TYPEMETHOD_WNPS := $1000,OCI_TYPEMETHOD_ABSTRACT := $2000, + OCI_TYPEMETHOD_OVERRIDING := $4000,OCI_TYPEMETHOD_PIPELINED := $8000 + ); + + + POCITypeMethodFlag = ^OCITypeMethodFlag; + { macros to test the type method flags } + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_INLINE(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_CONSTANT(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_VIRTUAL(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_CONSTRUCTOR(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_DESTRUCTOR(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_OPERATOR(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_SELFISH(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_MAP(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_ORDER(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_RNDS(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_WNDS(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_RNPS(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_WNPS(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_ABSTRACT(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_OVERRIDING(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_METHOD_IS_PIPELINED(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_INLINE(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_CONSTANT(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_VIRTUAL(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_CONSTRUCTOR(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_DESTRUCTOR(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_OPERATOR(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_SELFISH(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_MAP(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_ORDER(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_RNDS(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_WNDS(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_RNPS(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_WNPS(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_ABSTRACT(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_OVERRIDING(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_IS_PIPELINED(flag : longint) : longint; + + { macros to set the type method flags } + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_INLINE(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_CONSTANT(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_VIRTUAL(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_CONSTRUCTOR(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_DESTRUCTOR(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_OPERATOR(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_SELFISH(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_MAP(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_ORDER(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_RNDS(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_WNDS(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_RNPS(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_SET_WNPS(flag : longint) : longint; + + { macros to clear the type method flags } + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_INLINE(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_CONSTANT(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_VIRTUAL(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_CONSTRUCTOR(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_DESTRUCTOR(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_OPERATOR(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_SELFISH(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_MAP(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_ORDER(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_RNDS(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_WNDS(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_RNPS(flag : longint) : longint; + + { was #define dname(params) para_def_expr } + { argument types are unknown } + { return type might be wrong } + function OCI_TYPEMETHOD_CLEAR_WNPS(flag : longint) : longint; + + {--------------------------- TYPE PARAMETER MODE --------------------------- } + { PL/SQL starts this from 0 } + { in } + { out } + { in-out } + { call by reference (implicitly in-out) } + { OUT with NOCOPY modifier } + { IN OUT with NOCOPY modifier } + + type + OCITypeParamMode = (OCI_TYPEPARAM_IN := 0,OCI_TYPEPARAM_OUT, + OCI_TYPEPARAM_INOUT,OCI_TYPEPARAM_BYREF, + OCI_TYPEPARAM_OUTNCPY,OCI_TYPEPARAM_INOUTNCPY + ); + + + POCITypeParamMode = ^OCITypeParamMode; + {-------------------------------- DEFAULTS --------------------------------- } + { default binary and decimal precision and scale } + { no precision specified } + { was #define dname def_expr } + function OCI_NUMBER_DEFAULTPREC : ub1; + + { was #define dname def_expr } + function OCI_NUMBER_DEFAULTSCALE : sb1; + + { no binary/decimal scale specified } + { default maximum length for varrays and vstrings (used in sql.bsq) } + + const + OCI_VARRAY_MAXSIZE = 4000; + { default maximum number of elements for a varray } + { default maximum length of a vstring } + OCI_STRING_MAXLEN = 4000; + {--------------------------------------------------------------------------- } + { This set of macro is used only in beta2. They should be removed as soon as + * PLSQL has made the changes of not using these macros. + } + { Special duration for allocating memory only. No instance can be allocated + * given these durations. + } +// OCICoherency = OCIRefreshOpt; + { was #define dname def_expr } + function OCI_COHERENCY_NONE : OCIRefreshOpt; + + { was #define dname def_expr } + function OCI_COHERENCY_NULL : OCIRefreshOpt; + + { was #define dname def_expr } + function OCI_COHERENCY_ALWAYS : OCIRefreshOpt; + +//implementation + diff --git a/packages/oracle/src/ort.inc b/packages/oracle/src/ort.inc new file mode 100644 index 0000000000..ac21bc146e --- /dev/null +++ b/packages/oracle/src/ort.inc @@ -0,0 +1,2676 @@ +{ + Automatically converted by H2Pas 1.0.0 from ort.h + The following command line parameters were used: + -p + -D + -l + jojo.so + ort.h +} + + { @(#)ort.h 1.44 95/07/07 } + { Copyright (c) 1994, 2003, Oracle Corporation. All rights reserved. } + { + NAME + + ORT - ORacle's external open Type interface to the open type manager (OTM) + + DESCRIPTION + + The open type manager interface includes dynamic type operations to + create, delete, update, and access types. See the "Functional + Specification for Oracle Object Call Interface (Objects Project), + Version 1.0" for a user level description of the OTM. For a more + detailed description, see the "Component Document for the Open Type + Manager, Version 1.0". + + NOTE: MOST Of the functions in this header file are being desupported. + Please use the OCIDescribeAny interface as described in oci.h + instead. + The OCIType, OCITypeElem, OCITypeMethod abstract types continue + to be supported. The only two functions that remain to be documented + are OCITypeArrayByName and OCITypeArrayByRef. + All obsolete types/functions are marked accordingly below. + + RELATED DOCUMENTS + + For the functional specification for the OTM, see: + [1] Kotsovolos, Susan, "Functional Specification for Oracle Object + Call Interface (Objects Project), Version 1.0", Oracle + Corporation, February 1995. + For the internal design of the OTM, see the following: + [2] Kotsovolos, Susan, "Component Document for the Open Type Manager", + Oracle Corporation, November 1994. + [3] Kotsovolos, Susan, "Design for The Open Type Manager, Oracle + Object Management Subsystem Version 1.0", Oracle Corporation, + March 1994. + [4] Kotsovolos, Susan and Tin A. Nguyen, "The Open Type Manager", + Oracle Corporation, March 1994. + [5] Kotsovolos, Susan and Tin A. Nguyen, "Schema Evolution", + Oracle Corporation, March 1994. + For a description of the types the OTM must support, see: + [6] Nguyen, Tin A., "The Open Type System", Oracle Corporation, + February 1994. + + INSPECTION STATUS + + Inspection date: + Inspection status: + Estimated increasing cost defects per page: + Rule sets: + + ACCEPTANCE REVIEW STATUS + + Review date: + Review status: + Reviewers: + + + **** ALL OBSOLETE FUNCTIONS/TYPES ARE MARKED ACCORDINGLY *** + + EXPORT FUNCTIONS + + None + + PUBLIC DATA STRUCTURES + + OCIType - type descriptor in the object cache + OCITypeElem - type element descriptor in the object cache + (used for attributes and paramters) + OCITypeCode - Open Type System type code. + OCITypeMethod - method descriptor in the object cache + OCITypeParamMode - parameter modes (ie. IN, IN-OUT etc) + + PUBLIC FUNCTIONS + + ITERATOR (for OCITypeAttrNext and OCITypeMethodNext) + + OCITypeIterNew - ** OBSOLETE ** Create new instance of an iteraton. + OCITypeIterSet - ** OBSOLETE ** Initialize iterator. + OCITypeIterFree - ** OBSOLETE ** Free instance of iterator. + + TYPE GET + + OCITypeByName - ** OBSOLETE ** Get a type by name. + OCITypeArrayByName - Get an array of types by their names. + OCITypeByRef - ** OBSOLETE ** Get a type by its CREF. + OCITypeArrayByRef - Get an array of types by their CREFs. + + TYPE ACCESSORS + + OCITypeName - ** OBSOLETE ** OCI Get a type's name. + OCITypeSchema - ** OBSOLETE ** OCI Get a type's schema name. + OCITypeTypeCode - ** OBSOLETE ** OCI Get a type's type code. + OCITypeVersion - ** OBSOLETE ** OCI Get a Type's user-readable Version. + OCITypeAttrs - ** OBSOLETE ** OCI Get a Type's Number of Attributes. + OCITypeMethods - ** OBSOLETE ** OCI Get a Type's Number of Methods. + + TYPE ELEMENT ACCESSORS (they represent attributes/parameters/results) + + OCITypeElemName - ** OBSOLETE ** Get a type element's (only for + attributes) name. + OCITypeElemType - ** OBSOLETE ** Get a type element's type + descriptor. + OCITypeElemTypeCode - ** OBSOLETE ** Get a type element's typecode. + OCITypeElemParameterizedType - ** OBSOLETE ** Get a type element's + parameterized type's type descriptor. + OCITypeElemNumPrec - ** OBSOLETE ** Get a number's precision. + OCITypeElemNumScale - ** OBSOLETE ** Get a decimal or oracle Number's + Scale + OCITypeElemCharSetID - ** OBSOLETE ** Get a fixed or variable length + string's character set ID. + OCITypeElemCharSetForm - ** OBSOLETE ** Get a fixed or variable length + string's character set form (how + character set information has + been specified). + OCITypeElemLength - ** OBSOLETE ** Get a raw, fixed or variable + length string's length. + OCITypeElemParamMode - ** OBSOLETE ** Get element's parameter's mode + (only valid for parameter). + OCITypeElemDefaultValue - ** OBSOLETE ** Get element's Default Value. + + ATTRIBUTE ACCESSORS + + OCITypeAttrByName - ** OBSOLETE ** Get an Attribute by Name. + OCITypeAttrNext - ** OBSOLETE ** Get an Attribute by Iteration. + + COLLECTION ACCESSORS + + OCITypeCollTypeCode - ** OBSOLETE ** Get a named collection's typecode. + OCITypeCollElem - ** OBSOLETE ** Get a named collection's element's + type element information. + OCITypeCollSize - ** OBSOLETE ** Get a named collection's size in + number of elements. + + METHOD ACCESSORS + + OCITypeMethodOverload - ** OBSOLETE ** Get number of overloaded methods + with the given method name. + (no direct equivalent for + OCIDescribe interface) + OCITypeMethodByName - ** OBSOLETE ** Get one or more methods by name. + OCITypeMethodNext - ** OBSOLETE ** Iterate to the next method to + retrieve. + OCITypeMethodName - ** OBSOLETE ** Get method's name. + OCITypeMethodEncap - ** OBSOLETE ** Get method's encapsulation level. + OCITypeMethodFlags - ** OBSOLETE ** et method's flags. + OCITypeMethodMap - ** OBSOLETE ** Get type's map function. + OCITypeMethodOrder - ** OBSOLETE ** Get type's order function. + OCITypeMethodParams - ** OBSOLETE ** Get a method's number of + parameters. + + RESULT ACCESSORS + + OCITypeResult - ** OBSOLETE ** OCI Get a method's Result. + + See also ATTRIBUTE/PARAMETER/RESULT TYPE ACCESSORS. + + PARAMETER ACCESSORS + + OCITypeParamByPos - ** OBSOLETE ** Get a Parameter in a method By + Position. + OCITypeParamByName - ** OBSOLETE ** Get a Parameter in a method By Name. + OCITypeParamPos - ** OBSOLETE ** Get a Parameter's PoSition in a + method. + + CALL GRAPHS: + + Only type accessors are supported for 8.0. + ** OBSOLETE ** please use OCIDescribe interface + + TYPE ACCESSOR EXAMPLE + + CREATE TYPE CAR + ( + name vstring, + age number, + number car_age; /o Oracle number o/ + weight car_weight; /o abstract type o/ + + PUBLIC: + + /o methods o/ + car(orlvs a_name, number an_age, WEIGHT a_weight); + ~car(); + inline number get_age() const; + + /o relative ordering (map) functions o/ + number car_map + ); + + /o the following code accesses the type created above o/ + + ub1 meth_flags; + ub4 i, j; + ub4 text_len, position; + ub4 count; + ub4 length; + OCITypeCode typecode; + OCIRef *attr_ref; + OCIRef *param_ref; + OCIType *tdo, new_tdo, final_tdo; + OCITypeElem *elem; + OCITypeIter *iterator_ort; + oratext (*names)[]; + ub4 lengths[]; + ub4 *positions; + oratext *name; + oratext name_buffer[M_IDEN]; + + /o initialize the references o/ + DISCARD orlrini(env, err, (dvoid *)&attr_ref); + DISCARD orlrini(env, err, (dvoid *)¶m_ref); + + /o ----------------- GET INFORMATION ABOUT A TYPE ----------------- o/ + + /o start a transaction o/ + + /o Pin the type until the end of the transaction. Pinning the type is + o required before using any type accessors. + o/ + if (OCITypeByName(env, err, svc, (oratext *)0, 0, "CAR", strlen("CAR"), + OCI_DURATION_TRANS, &car_ref, &car_tdo) != OCI_SUCCESS) + /o error o/ ; + + /o get the type's name o/ + if (!memcmp(OCITypeName(env, err, car_tdo, &text_len), "person", + text_len)) + /o do something o/ ; + + /o get the type's schema name o/ + if (!memcmp(OCITypeSchema(env, err, car_tdo, &text_len), "john", + text_len)) + /o do something o/ ; + + /o get the type code of the type o/ + if (OCITypeTypeCode(env, err, car_tdo) == OCI_TYPECODE_ADT) + /o do something o/ ; + + /o get the type version o/ + if (!memcmp(OCITypeVersion(env, err, car_tdo, &text_len), "1", text_len)) + /o do something o/ ; + + /o ------- GET FLATTENED POSITION OF AN ATTRIBUTES IN A TYPE ------- o/ + + names = malloc(sizeof(oratext *) * 2); + names[0] = malloc(strlen("car_weight")); + names[1] = malloc(strlen("ounces")); + memcpy(names[0], "car_weight", strlen("car_weight")); + memcpy(names[1], "ounces", strlen("ounces")); + + lengths = malloc(sizeof(ub4) * 2); + lengths[0] = strlen("car_weight"); + lengths[1] = strlen("ounces"); + + /o ---------- GET IMMEDIATE ATTRIBUTES IN A TYPE ---------- o/ + + /o loop through all attributes in the type with iterator o/ + if (OCITypeIterNew(env, err, car_tdo, &iterator_ort) != OCI_SUCCESS) + /o do something o/ + + while (OCITypeAttrNext(env, err, iterator_ort, &ado) != OCI_NO_DATA) + + /o get the attribute's name o/ + if (!memcmp(OCITypeElemName(env, err, ado, &text_len), + "tiger", text_len)) + /o do something o/ ; + + /o get the attribute's type descriptor o/ + if (OCITypeElemType(env, err, ado, &tdo) != OCI_SUCCESS) + /o error o/ ; + + /o get the attribute's type code o/ + typecode = OCITypeElemTypeCode(env, err, ado); + + switch (typecode) + + /o scalar types o/ + case OCI_TYPECODE_DATE: /o date o/ + case OCI_TYPECODE_SIGNED8: /o byte o/ + case OCI_TYPECODE_SIGNED16: /o short o/ + case OCI_TYPECODE_UNSIGNED8: /o unsigned byte o/ + case OCI_TYPECODE_UNSIGNED16: /o unsigned short o/ + case OCI_TYPECODE_OCTET: /o octet o/ + case OCI_TYPECODE_TABLE: /o nested table o/ + case OCI_TYPECODE_CLOB: /o character lob o/ + case OCI_TYPECODE_BLOB: /o binary lob o/ + case OCI_TYPECODE_CFILE: /o character file object o/ + case OCI_TYPECODE_BFILE: /o binary file object o/ + + /o do something o/ + break; + + /o number types o/ + case OCI_TYPECODE_NUMBER: /o oracle number o/ + case OCI_TYPECODE_DECIMAL: /o decimal o/ + + /o get the scale of the number o/ + if (OCITypeElemNumScale(env, err, ado) == 3) + /o do something o/ ; + + /o fall through to get the precision o/ + + case OCI_TYPECODE_FLOAT: /o float o/ + case OCI_TYPECODE_SIGNED32: /o long o/ + case OCI_TYPECODE_UNSIGNED32: /o unsigned long o/ + case OCI_TYPECODE_REAL: /o real o/ + case OCI_TYPECODE_DOUBLE: /o double o/ + + /o get the precision of the number o/ + if (OCITypeElemNumPrec(env, err, ado) == 2) + /o do something o/ ; + + break; + + /o string types o/ + case OCI_TYPECODE_CHAR: /o fixed length string o/ + case OCI_TYPECODE_VARCHAR2: /o variable length string o/ + case OCI_TYPECODE_RAW: /o raw o/ + + /o get the length of the fixed or variable length string o/ + if (OCITypeElemLength(env, err, ado) < 100) + /o do something o/ + + break; + + /o parameterized types o/ + case OCI_TYPECODE_REF: /o reference o/ + case OCI_TYPECODE_PTR: /o pointer o/ + + /o get the type stored in the parameterized type o/ + if (OCITypeElemParameterizedType(env, err, ado, &tdo) + != OCI_SUCCESS) + /o error o/ ; + + /o do something o/ + if (OCI_TYPEELEM_IS_REF(OCITypeElemFlags(env, err, ado)))... + + break; + + /o domain type o/ + case OCI_TYPECODE_NAMEDCOLLECTION: + switch (OCITypeCollTypeCode(env, err, tdo)) + + case OCI_TYPECODE_VARRAY: /o variable array o/ + ub4 num_elems; + OCIType *element_type; + + /o get the number of elements in the farray or the maximum number + o of elements in the varray. + o/ + OCITypeCollSize(env, err, tdo, &num_elems); + + /o get the type of the array o/ + OCITypeElemType(env, err, tdo, &element_type); + + break; + + case OCI_TYPECODE_TABLE: /o multiset o/ + + OCIType *table_type; + + /o get the type of the multiset o/ + OCITypeElemType(env, err, tdo, &table_type); + + /o do something o/ + + + + /o abstract type o/ + case OCI_TYPECODE_ADT: /o abstract data type o/ + + /o get the adt information o/ + if (OCITypeElemType(env, err, ado, &tdo) != OCI_SUCCESS) + /o error o/ ; + + /o do something o/ + + break; + + default: + DISCARD printf("Error: invalid type code\n"); + + /o end of typecode switch o/ + + /o end of loop through all attributes in a type o/ + + + /o ------------ GET THE IMMEDIATE METHODS OF A TYPE ------------ o/ + + /o loop through all methods in the type by reusing iterator o/ + if (OCITypeIterSet(env, err, car_tdo, iterator_ort) != OCI_SUCCESS) + /o do something o/ + + while (OCITypeMethodNext(env, err, iterator_ort) != OCI_NO_DATA) + + /o get the method's name o/ + if (!memcmp(OCITypeMethodName(env, err, mdo, &text_len), "car", + text_len)) + /o do something o/ ; + + /o get the method's encapsulation o/ + if (OCITypeMethodEncap(env, err, mdo) == OCI_TYPEENCAP_PUBLIC) + /o do something o/ ; + + /o get the method's flags o/ + meth_flags = OCITypeMethodFlags(env, err, mdo); + if (meth_flags & OCI_TYPEMETHOD_VIRTUAL) + /o do something o/ ; + + + /o ------------ GET THE PARAMETERS IN A METHOD ------------ o/ + + /o loop through all parameters in the method o/ + count = OCITypeMethodParams(env, err, mdo); + for (j = 1; j <= count; j++) + + /o get the parameter information by position o/ + if (OCITypeParamByPos(env, err, mdo, i, &elem) != OCI_SUCCESS) + /o error o/ ; + + /o get the parameter's name o/ + if (!memcmp(OCITypeElemName(env, err, elem, &text_len), "an_age", + text_len)) + /o do something o/ ; + + /o get the parameter's mode o/ + if (OCITypeElemMode(env, err, elem) == OCI_PARAM_OUT) + /o do something o/ ; + + /o get the parameter's required flag o/ + if (ortgprq(env, err, elem)) + /o do something o/ ; + + + + /o get a method by name o/ + if (OCITypeMethodByName(env, err, car_tdo, "car_constructor", + strlen("car_constructor"), NULLP(OCIRef), &mdo) + != OCI_SUCCESS) + /o error o/ ; + + /o get a parameter in a method by name o/ + if (OCITypeParamByName(env, err, mdo, "an_age", strlen("an_age"), &elem) + != OCI_SUCCESS) + /o error o/ ; + + /o get a parameter's typecode o/ + typecode = OCITypeElemTypeCode(env, err, elem); + + /o get a parameter's type object o/ + if (OCITypeElemType(env, err, elem, &tdo)) != OCI_SUCCESS) + /o error o/ ; + + /o get a parameter's position in a method o/ + if (ortgpps(env, err, mdo, "an_age", strlen("an_age"), + &position, NULLP(OCIRef), NULLP(OCITypeElem)) != OCI_SUCCESS) + /o error o/ ; + + /o ------------ GET THE METHOD's RESULT ------------ o/ + + /o get a method by name o/ + if (OCITypeMethodByName(env, err, car_tdo, "get_age", strlen("get_age"), + &mdo) != OCI_SUCCESS) + /o error o/ ; + + /o get the typecode of the method's result o/ + typecode = OCITypeElemTypeCode(env, err, mdo); + + + /o ----------------- END ---------------- o/ + + /o free the references implicitly allocated o/ + DISCARD orlrfre(env, err, (dvoid *)&attr_ref); + DISCARD orlrfre(env, err, (dvoid *)¶m_ref); + + NOTES + + MODIFIED + srseshad 03/12/03 - convert oci public api to ansi + aahluwal 06/03/02 - bug 2360115 + skabraha 04/16/02 - fix compiler warnings + rkasamse 03/02/01 - do not use iterator : keyword in MSVB + bpalaval 02/09/01 - Change text to oratext. + rxgovind 01/31/00 - add OCIType interfaces for transient types + whe 09/01/99 - 976457:check __cplusplus for C++ code + cxcheng 05/06/97 - make OCI_TYPE?? test macros return either 1 or 0 + cxcheng 04/22/97 - add comment on desupporting OCIType functions + skrishna 03/18/97 - fix ifdef for supporting ansi and k&r proto-types + cxcheng 02/26/97 - fix lint problem with oro names + cxcheng 02/06/97 - take out short name support except with SLSHORTNAME + cxcheng 01/15/97 - change prototype of OCITypeElemParameterizedType() + cxcheng 01/03/97 - replace bit in OCI_TYPEPARAM_IS_REQUIRED with bitwis + cxcheng 12/31/96 - replace OCI_PARAM_IS_REQUIRED with OCI_TYPEPARAM_IS_ + cxcheng 12/09/96 - add prototype for OCITypeElemExtTypeCode and OCIType + cxcheng 11/25/96 - add schema name parameter to OCITypeVTInsert() + cxcheng 11/20/96 - fix prototype for OCITypeByName() + cxcheng 11/11/96 - fix prototype for OCITypeByName() + cxcheng 11/05/96 - remove OCITypeElemExtTypeCode and OCITypeCollExtType + dchatter 10/28/96 - change ortgatyp to be OCITypeArrayByName + cxcheng 10/25/96 - fix problem with ortgatyp at end + cxcheng 10/22/96 - add OCITypeByRef and OCITypeArrayByRef + cxcheng 10/20/96 - remove ortgtyp() from #define section at end + cxcheng 10/18/96 - rename OCITypeGetArray to OCITypeArrayByName + cxcheng 10/17/96 - final change to prototype for OCI_TYPEPARAM_IS_REQUI + cxcheng 10/15/96 - rename OCIEncapLevel and OCIMethodFlag + cxcheng 10/14/96 - change prototype of OCITypeResult + mluong 10/11/96 - fix compile error + jwijaya 10/10/96 - fix bug on OCI_PARAM_IS_REQUIRED + cxcheng 10/09/96 - more lint and link fixes + cxcheng 10/08/96 - more lint fixes + cxcheng 10/07/96 - more changes + cxcheng 10/04/96 - replace short names with long names + cxcheng 10/01/96 - change to long names for readability + cxcheng 09/27/96 - rename ortgatyp() to ortgtya() for lint + cxcheng 09/20/96 - add ortgatyp() for array get type + cxcheng 09/18/96 - add array pin and iterator functions + cxcheng 08/09/96 - add version table calls + cxcheng 07/22/96 - add OCITypeElemType() to top + jwijaya 07/03/96 - add ANSI prototypes + cxcheng 06/28/96 - add OCITypeElemCharSetForm() + cxcheng 06/26/96 - fix comment on OCITypeParamByPos()/ortgpps() + cxcheng 06/18/96 - fix comments on OCITypeResult() + cxcheng 06/17/96 - improve comments + skrishna 06/03/96 - change OCITypeCollElem() prototype + vkrishna 05/29/96 - replace OROTCFAR with OROTCCAR + cxcheng 05/28/96 - fix comments, remove non-beta1 functions + cxcheng 05/02/96 - fix prototype bugs + cxcheng 04/29/96 - rename OCITypeElemm() to ortanct() + cxcheng 04/26/96 - add ortgrbp and ortftyi, + fix comments and examples + cxcheng 04/22/96 - big merge to main branch + cxcheng 04/17/96 - fix syntax + cxcheng 04/08/96 - change prototype to ortaty() + skrishna 04/08/96 - change ort*() to take OCIEnv* and OCIError* instead + of oroenv* + cxcheng 03/28/96 - add ortslob(), change ortsstr() prototype + cxcheng 03/13/96 - change alter type interface + cxcheng 03/11/96 - ORT interface changes + cxcheng 02/27/96 - correct comments + jboonleu 02/09/96 - rename oroopd to OCIDuration + cxcheng 01/19/96 - change ORTCTYVAL to ORTCTYEMB for embedded ADT + cxcheng 02/14/96 - add more comments + jboonleu 02/09/96 - rename oroopd to OCIDuration + cxcheng 02/07/96 - fix comments and examples + cxcheng 01/19/96 - new ORT interface without korfc's + cxcheng 01/08/96 - consolidate collection functions + cxcheng 12/14/95 - remove obsolete ortgcol() and ortrelease() + jweisz 12/12/95 - merge screwup: ortdth twice + cxcheng 12/05/95 - change multiset interface for new standard + skotsovo 12/01/95 - merge from /vobs/rdbms/public/ort.h@@/main/ + st_rdbms_big_dev/st_rdbms_obj/ + st_rdbms_jwijaya_variable_ref + cxcheng 11/13/95 - add ortaty()/orteaty() + cxcheng 11/13/95 - add new collection type accessors + skotsovo 10/30/95 - add 'oid' type b/c extent type uses it. + skotsovo 10/24/95 - update according to new variable length ref + cxcheng 10/05/95 - add null support, change prototypes to calls + cxcheng 10/03/95 - add OCITypeMethodOrder() to get ORDER method + cxcheng 09/28/95 - add OCITypeElemm() for collection types support + skotsovo 06/05/95 - add adt_type parameter to ortsab() + skotsovo 05/10/95 - ifdef'd out ortgafp() + skotsovo 03/07/95 - update interface to only include release 1 + skotsovo 02/22/95 - add multiset accessors + skotsovo 02/09/95 - update according to new ots doc + skotsovo 01/31/95 - add rest of release 1 types + skotsovo 01/24/95 - categorize sint32, double, and real as number types + (with precision and scale) instead of scalar types. + skotsovo 01/12/95 - remove dependency from ortdty interface + skotsovo 01/03/95 - remove orotyp accessors + skotsovo 12/12/94 - update comments + skotsovo 12/05/94 - change OCITypeElemParameterizedTyper interface + skotsovo 10/26/94 - add type version table + skotsovo 10/17/94 - fix ortgafp() comments + skotsovo 10/14/94 - modify ortgafp() parameters + skotsovo 10/14/94 - add examples + skotsovo 10/13/94 - add a few new routines + jwijaya 10/07/94 - add namespace to pin by name + jwijaya 10/02/94 - connection handle -> connection number + skotsovo 09/13/94 - modify example to use updated oririni interface + skotsovo 08/25/94 - change scale to sb1 from sb2 + skotsovo 07/28/94 - add ortbeg() and ortend() + skotsovo 07/14/94 - add decimal type & call graph + skotsovo 06/28/94 - subset by removing miscellaneous functions + skotsovo 06/28/94 - consistently put comments before typedefs + skotsovo 06/27/94 - modify according to new header file template, add + more examples, and change ortcty() to return a + reference to the type + skotsovo 06/24/94 - add functions to get type information from orotyp + skotsovo 06/20/94 - finish modifying according to header template + skotsovo 06/09/94 - modify according to header file template + skotsovo 06/08/94 - replace s.h with oratypes.h + skotsovo 05/24/94 - modify comments & update example + skotsovo 05/23/94 - modify fnt names for create, alter and drop type + skotsovo 05/18/94 - remove ortdme() -- delete a method + skotsovo 05/17/94 - add tdo parameter to all type modifiers + skotsovo 05/11/94 - return text* instead of including it in arglist + skotsovo 11/16/93 - creation + + } +{$ifndef ORO_ORACLE} +{ $include <oro.h>} +{$endif} + {--------------------------------------------------------------------------- } + { SHORT NAMES SUPPORT SECTION } + {--------------------------------------------------------------------------- } +{$ifdef SLSHORTNAME} + { the following are short names that are only supported on IBM mainframes + with the SLSHORTNAME defined. + With this all subsequent long names will actually be substituted with + the short names here } + + const + OCITypeArrayByName = ortgatyp; + OCITypeAttrByName = ortgabn; + OCITypeAttrNext = ortgabi; + OCITypeAttrs = ortgtna; + OCITypeByRef = ortgtbrf; + OCITypeCollElem = ortgcel; + OCITypeCollExtTypeCode = ortgcsqt; + OCITypeCollSize = ortgcne; + OCITypeCollTypeCode = ortgdttc; + OCITypeElem = ortado; + OCITypeElemCharSetForm = ortgscform; + OCITypeElemCharSetID = ortgscid; + OCITypeElemDefaultValue = ortgpdv; + OCITypeElemExtTypeCode = ortgasqt; + OCITypeElemLength = ortgsl; + OCITypeElemName = ortganm; + OCITypeElemNumPrec = ortgnp; + OCITypeElemNumScale = ortgns; + OCITypeElemParamMode = ortgpmo; + OCITypeElemParameterizedType = ortgpa; + OCITypeElemType = ortgaty; + OCITypeElemTypeCode = ortgatc; + OCITypeIter = ortitr; + OCITypeIterFree = ortifre; + OCITypeIterNew = ortinew; + OCITypeIterSet = ortiset; + OCITypeMethod = ortmdo; + OCITypeMethodByName = ortgmbn; + OCITypeMethodEncap = ortgmen; + OCITypeMethodFlags = ortgmfl; + OCITypeMethodMap = ortgmmap; + OCITypeMethodName = ortgmnm; + OCITypeMethodNext = ortgmbi; + OCITypeMethodOrder = ortgmor; + OCITypeMethodOverload = ortgmno; + OCITypeMethodParams = ortgmnp; + OCITypeMethods = ortgtnm; + OCITypeName = ortgtme; + OCITypeParamByName = ortgpbn; + OCITypeParamPos = ortgpps; + OCITypeSchema = ortgtsch; + OCITypeTypeCode = ortgttc; + OCITypeVTInit = ortvini; + OCITypeVTInsert = ortvins; + OCITypeVTSelect = ortvsel; + OCITypeVersion = ortgtvn; +{$endif} + { SLSHORTNAME } + {============================ } { PUBLIC TYPES AND CONSTANTS } + {============================ } + {----------------------------- TYPE DESCRIPTION ---------------------------- } + { + * OCIType - OCI Type Description Object + * + * The contents of an 'OCIType' is private/opaque to clients. Clients just + * need to declare and pass 'OCIType' pointers in to the type manage + * functions. + * The pointer points to the type in the object cache. Thus, clients don't + * need to allocate space for this type and must NEVER free the pointer to the + * 'OCIType'. + } + + type + POCIType = pointer; + {------------------------- TYPE ELEMENT DESCRIPTION ------------------------ } + { + * OCITypeElem - OCI Type Element object + * + * The contents of an 'OCITypeElem' is private/opaque to clients. Clients just + * need to declare and pass 'OCITypeElem' pointers in to the type manager + * functions. + * + * 'OCITypeElem' objects contains type element information such as the numeric + * precision for example, for number objects, and the number of elements for + * arrays. + * They ARE used to describe type attributes, collection elements, + * method parameters, and method results. Hence they are pass in or returned + * by attribute, collection, and method parameter/result accessors. + } + POCITypeElem = pointer; + + {--------------------------- METHOD DESCRIPTION --------------------------- } + { + * OCITypeMethod - OCI Method Description object + * + * The contents of an 'OCITypeMethod' is private/opaque to clients. Clients + * just need to declare and pass 'OCITypeMethod' pointers in to the type + * manager functions. + * The pointer points to the method in the object cache. Thus, clients don't + * need to allocate space for this type and must NEVER free the pointer to + * the 'OCITypeMethod'. + } + POCITypeMethod = pointer; + + {--------------------------- TYPE ACCESS ITERATOR -------------------------- } + { + * OCITypeIter- OCI Type Iterator + * + * The contents of an 'orti' is private/opaque to clients. Clients just + * need to declare and pass 'orti' pointers in to the type manager functions. + * The iterator is used to retreive MDO's and ADO's that belong to the TDO + * one at a time. It needs to be allocated by the 'OCITypeIterNew()' function + * call and deallocated with the 'OCITypeIterFree()' function call. + } + POCITypeIter = pointer; + + {================== } + { PUBLIC FUNCTIONS } + {================== } + {-------------------------------------------------------------------------- } + { ITERATOR } + {-------------------------------------------------------------------------- } + {-----------------------_- OCITypeIterNew --------------------------------- } + { ** OBSOLETE ** } + +{$IFNDEF LinkDynamically} + function OCITypeIterNew(env:POCIEnv; err:POCIError; tdo:POCIType; var iterator_ort:POCITypeIter):sword;cdecl;external ocilib name 'OCITypeIterNew'; +{$ELSE} +var OCITypeIterNew : function (env:POCIEnv; err:POCIError; tdo:POCIType; var iterator_ort:POCITypeIter):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeIterNew - OCI Iterator NEW + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + tdo (IN) - pointer to the pinned type in the object cache to + initialize the iterator with + iterator_ort (OUT) - pointer to the pointer to the new iterator created + DESCRIPTION: + Create a new instance of a method/attribute iterator and initalize + it's values. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the required parameters is null. + 2) error while allocating space for the iterator. + } + {------------------------ OCITypeIterSet --------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeIterSet(env:POCIEnv; err:POCIError; tdo:POCIType; iterator_ort:POCITypeIter):sword;cdecl;external ocilib name 'OCITypeIterSet'; +{$ELSE} + OCITypeIterSet : function (env:POCIEnv; err:POCIError; tdo:POCIType; iterator_ort:POCITypeIter):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeIterSet - OCI Iterator SET + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + tdo (IN) - pointer to the pinned type in the object cache to + initialize the iterator with + iterator_ort (IN/OUT) - pointer to the iterator to set + DESCRIPTION: + Initializes the iterator. This is used to reset the state of the + iterator. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the required parameters is null. + } + {------------------------ OCITypeIterFree --------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeIterFree(env:POCIEnv; err:POCIError; iterator_ort:POCITypeIter):sword;cdecl;external ocilib name 'OCITypeIterFree'; +{$ELSE} + OCITypeIterFree : function (env:POCIEnv; err:POCIError; iterator_ort:POCITypeIter):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeIterFree - OCI Iterator FREe + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + iterator_ort (IN/OUT) - pointer to the iterator to free + DESCRIPTION: + Free space allocated for the iterator. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the required parameters is null. + 2) error while freeing the iterator, probably bad iterator pointer. + } + {-------------------------------------------------------------------------- } + { TYPE GET } + {-------------------------------------------------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeByName(env:POCIEnv; err:POCIError; svc:POCISvcCtx; schema_name:Poratext; s_length:ub4; + type_name:Poratext; t_length:ub4; version_name:Poratext; v_length:ub4; pin_duration:OCIDuration; + get_option:OCITypeGetOpt;var tdo:POCIType):sword;cdecl;external ocilib name 'OCITypeByName'; +{$ELSE} + OCITypeByName : function (env:POCIEnv; err:POCIError; svc:POCISvcCtx; schema_name:Poratext; s_length:ub4; + type_name:Poratext; t_length:ub4; version_name:Poratext; v_length:ub4; pin_duration:OCIDuration; + get_option:OCITypeGetOpt;var tdo:POCIType):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeByName - OCI Get the most current version of an existing TYPe + by name. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + svc (IN) - OCI service handle + schema_name (IN, optional) - name of schema associated with the + type. By default, the user's schema name is used. + s_length (IN) - length of the 'schema_name' parameter + type_name (IN) - name of the type to get + t_length (IN) - length of the 'type_name' parameter + version_name (IN, optional) - user readable version of the type. + Pass (oratext *)0 for the most current version. + v_length (IN) - length of version_name in bytes. Should be 0 if + the most current version is to be retrieved. + pin_duration (IN) - pin duration (e.g. until the end of current + transaction). See 'oro.h' for a description of + each option. + get_option (IN) - options for loading the types. It can be one of two + values: + OCI_TYPEGET_HEADER for only the header to be loaded, or + OCI_TYPEGET_ALL for the TDO and all ADO and MDOs to be + loaded. + tdo (OUT) - pointer to the pinned type in the object cache + DESCRIPTION: + Get a pointer to a version of the existing type associated + with schema/type name. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the required parameters is null. + 2) the adt type associated with schema/type name does not exist. + NOTE: + Schema and type names are CASE-SENSITIVE. If they have been created + via SQL, you need to use uppercase names. + } +{$IFNDEF LinkDynamically} + function OCITypeArrayByName(env:POCIEnv; err:POCIError; svc:POCISvcCtx; array_len:ub4; schema_name:array of Poratext; + s_length:array of ub4; type_name:array of Poratext; t_length:array of ub4; version_name:array of Poratext; v_length:array of ub4; + pin_duration:OCIDuration; get_option:OCITypeGetOpt; var tdo:POCIType):sword;cdecl;external ocilib name 'OCITypeArrayByName'; +{$ELSE} + OCITypeArrayByName : function (env:POCIEnv; err:POCIError; svc:POCISvcCtx; array_len:ub4; schema_name:array of Poratext; + s_length:array of ub4; type_name:array of Poratext; t_length:array of ub4; version_name:array of Poratext; v_length:array of ub4; + pin_duration:OCIDuration; get_option:OCITypeGetOpt; var tdo:POCIType):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeArrayByName - OCI Get array of TYPes by name. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + svc (IN) - OCI service handle + array_len (IN) - number of schema_name/type_name/version_name entries to + be retrieved. + schema_name (IN, optional) - array of schema names associated with the + types to be retrieved. The array must have array_len + elements if specified. + If 0 is supplied, the default schema is assumed, otherwise + it MUST have array_len number of elements. + 0 can be supplied for one or more of the entries to indicate + that the default schema is desired for those entries. + s_length (IN) - array of schema_name lengths with each entry + corresponding to the length of the corresponding schema_name + entry in the schema_name array in bytes. + The array must either have array_len number of elements or + it MUST be 0 if schema_name is not specified. + type_name (IN) - array of the names of the types to retrieve. This + MUST have array_len number of elements. + t_length (IN) - array of the lengths of type names in the type_name + array in bytes. + version_name (IN) - array of the version names of the types to retrieve + corresponding. This can be 0 to indicate retrieval of the + most current versions, or it MUST have array_len number of + elements. + If 0 is supplied, the most current version is assumed, + otherwise it MUST have array_len number of elements. + 0 can be supplied for one or more of the entries to indicate + that the current version is desired for those entries. + v_length (IN) - array of the lengths of version names in the + version_name array in bytes. + pin_duration (IN) - pin duration (e.g. until the end of current + transaction) for the types retreieve. See 'oro.h' for a + description of each option. + get_option (IN) - options for loading the types. It can be one of two + values: + OCI_TYPEGET_HEADER for only the header to be loaded, or + OCI_TYPEGET_ALL for the TDO and all ADO and MDOs to be + loaded. + tdo (OUT) - output array for the pointers to each pinned type in the + object cache. It must have space for array_len pointers. + Use OCIObjectGetObjectRef() to obtain the CREF to each + pinned type descriptor. + DESCRIPTION: + Get pointers to the existing types associated with the schema/type name + array. This is similar to OCITypeByName() except that all the TDO's are + retreived via a single network roundtrip. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the required parameters is null. + 2) one or more adt types associated with a schema/type name entry + does not exist. + } +{$IFNDEF LinkDynamically} + function OCITypeByRef(env:POCIEnv; err:POCIError; type_ref:POCIRef; pin_duration:OCIDuration; get_option:OCITypeGetOpt; + var tdo:POCIType):sword;cdecl;external ocilib name 'OCITypeByRef'; +{$ELSE} + OCITypeByRef : function (env:POCIEnv; err:POCIError; type_ref:POCIRef; pin_duration:OCIDuration; get_option:OCITypeGetOpt; + var tdo:POCIType):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeArrayByRef - OCI Get array of TYPes by REF. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + type_ref (IN) - OCIRef * pointing to the particular version of + the type descriptor object to obtain. + The array must have array_len elements if specified. + pin_duration (IN) - pin duration (e.g. until the end of current + transaction) for the type to retreieve. See 'oro.h' for a + description of each option. + get_option (IN) - options for loading the type. It can be one of two + values: + OCI_TYPEGET_HEADER for only the header to be loaded, or + OCI_TYPEGET_ALL for the TDO and all ADO and MDOs to be + loaded. + tdo (OUT) - pointer to the pinned type in the object cache + DESCRIPTION: + Get pointers to the + with the schema/type name array. This is similar to OCITypeByName() + except that all the TDO's are retreived via a single network roundtrip. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the required parameters is null. + 2) one or more adt types associated with a schema/type name entry + does not exist. + } +{$IFNDEF LinkDynamically} + function OCITypeArrayByRef(env:POCIEnv; err:POCIError; array_len:ub4; var type_ref:POCIRef; pin_duration:OCIDuration; + get_option:OCITypeGetOpt; var tdo:POCIType):sword;cdecl;external ocilib name 'OCITypeArrayByRef'; +{$ELSE} + OCITypeArrayByRef : function (env:POCIEnv; err:POCIError; array_len:ub4; var type_ref:POCIRef; pin_duration:OCIDuration; + get_option:OCITypeGetOpt; var tdo:POCIType):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeArrayByRef - OCI Get array of TYPes by REF. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + array_len (IN) - number of schema_name/type_name/version_name entries to + be retrieved. + type_ref (IN) - array of OCIRef * pointing to the particular version of + the type descriptor object to obtain. + The array must have array_len elements if specified. + pin_duration (IN) - pin duration (e.g. until the end of current + transaction) for the types retreieve. See 'oro.h' for a + description of each option. + get_option (IN) - options for loading the types. It can be one of two + values: + OCI_TYPEGET_HEADER for only the header to be loaded, or + OCI_TYPEGET_ALL for the TDO and all ADO and MDOs to be + loaded. + tdo (OUT) - output array for the pointers to each pinned type in the + object cache. It must have space for array_len pointers. + Use OCIObjectGetObjectRef() to obtain the CREF to each + pinned type descriptor. + DESCRIPTION: + Get pointers to the + with the schema/type name array. This is similar to OCITypeByName() + except that all the TDO's are retreived via a single network roundtrip. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the required parameters is null. + 2) one or more adt types associated with a schema/type name entry + does not exist. + } + {-------------------------------------------------------------------------- } + { TYPE ACCESSORS } + {-------------------------------------------------------------------------- } + {---------------------------- OCITypeName --------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeName(env:POCIEnv; err:POCIError; tdo:POCIType; n_length:Pub4):Poratext;cdecl;external ocilib name 'OCITypeName'; +{$ELSE} + OCITypeName : function (env:POCIEnv; err:POCIError; tdo:POCIType; n_length:Pub4):Poratext;cdecl; +{$ENDIF} + + { + NAME: OCITypeName - ORT Get a Type's naME. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + tdo (IN) - pointer to to the type descriptor in the object cache + n_length (OUT) - length (in bytes) of the returned type name. The + caller must allocate space for the ub4 before calling this + routine. + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) All input parameters must not be NULL and must be valid. + 3) 'n_length' must point to an allocated ub4. + DESCRIPTION: + Get the name of the type. + RETURNS: + the name of the type + NOTES: + The type descriptor, 'tdo', must be unpinned when the accessed + information is no longer needed. + } + {------------------------ OCITypeSchema --------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeSchema(env:POCIEnv; err:POCIError; tdo:POCIType; n_length:Pub4):Poratext;cdecl;external ocilib name 'OCITypeSchema'; +{$ELSE} + OCITypeSchema : function (env:POCIEnv; err:POCIError; tdo:POCIType; n_length:Pub4):Poratext;cdecl; +{$ENDIF} + + { + NAME: OCITypeSchema - ORT Get a Type's SCHema name. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + tdo (IN) - pointer to to the type descriptor in the object cache + n_length (OUT) - length (in bytes) of the returned schema name. The + caller must allocate space for the ub4 before calling this + routine. + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) All input parameters must not be NULL and must be valid. + 3) 'n_length' must point to an allocated ub4. + DESCRIPTION: + Get the schema name of the type. + RETURNS: + the schema name of the type + NOTES: + The type descriptor, 'tdo', must be unpinned when the accessed + information is no longer needed. + } + {------------------------ OCITypeTypeCode --------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeTypeCode(env:POCIEnv; err:POCIError; tdo:POCIType):OCITypeCode;cdecl;external ocilib name 'OCITypeTypeCode'; +{$ELSE} + OCITypeTypeCode : function (env:POCIEnv; err:POCIError; tdo:POCIType):OCITypeCode;cdecl; +{$ENDIF} + + { + NAME: OCITypeTypeCode - OCI Get a Type's Type Code. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + tdo (IN) - pointer to to the type descriptor in the object cache + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) All input parameters must not be NULL and must be valid. + DESCRIPTION: + Get the type code of the type. + RETURNS: + The type code of the type. + NOTES: + The type descriptor, 'tdo', must be unpinned when the accessed + information is no longer needed. + } + {----------------------- OCITypeCollTypeCode ------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeCollTypeCode(env:POCIEnv; err:POCIError; tdo:POCIType):OCITypeCode;cdecl;external ocilib name 'OCITypeCollTypeCode'; +{$ELSE} + OCITypeCollTypeCode : function (env:POCIEnv; err:POCIError; tdo:POCIType):OCITypeCode;cdecl; +{$ENDIF} + + { + NAME: OCITypeCollTypeCode - OCI Get a Domain Type's Type Code. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + tdo (IN) - pointer to to the type descriptor in the object cache + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) All input parameters must not be NULL and must be valid. + 3) 'tdo' MUST point to a named collection type. + DESCRIPTION: + Get the type code of the named collection type. For V8.0, named + collection types can only be variable length arrays and nested tables. + RETURNS: + OCI_TYPECODE_VARRAY for variable length array, and + OCI_TYPECODE_TABLE for nested tables. + NOTES: + The type descriptor, 'tdo', should be unpinned when the accessed + information is no longer needed. + } + {------------------------- OCITypeVersion --------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeVersion(env:POCIEnv; err:POCIError; tdo:POCIType; v_length:Pub4):Poratext;cdecl;external ocilib name 'OCITypeVersion'; +{$ELSE} + OCITypeVersion : function (env:POCIEnv; err:POCIError; tdo:POCIType; v_length:Pub4):Poratext;cdecl; +{$ENDIF} + + { + NAME: OCITypeVersion - OCI Get a Type's user-readable VersioN. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + tdo (IN) - pointer to to the type descriptor in the object cache + v_length (OUT) - length (in bytes) of the returned user-readable + version. The caller must allocate space for the ub4 before + calling this routine. + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) All input parameters must not be NULL and must be valid. + 3) 'v_length' must point to an allocated ub4. + DESCRIPTION: + Get the user-readable version of the type. + RETURNS: + The user-readable version of the type + NOTES: + The type descriptor, 'tdo', must be unpinned when the accessed + information is no longer needed. + } + {--------------------------- OCITypeAttrs --------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeAttrs(env:POCIEnv; err:POCIError; tdo:POCIType):ub4;cdecl;external ocilib name 'OCITypeAttrs'; +{$ELSE} + OCITypeAttrs : function (env:POCIEnv; err:POCIError; tdo:POCIType):ub4;cdecl; +{$ENDIF} + + { + NAME: OCITypeAttrs - OCI Get a Type's Number of Attributes. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + tdo (IN) - pointer to to the type descriptor in the object cache + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) All input parameters must not be NULL and must be valid. + DESCRIPTION: + Get the number of attributes in the type. + RETURNS: + The number of attributes in the type. 0 for ALL non-ADTs. + NOTES: + The type descriptor, 'tdo', must be unpinned when the accessed + information is no longer needed. + } + {------------------------- OCITypeMethods --------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeMethods(env:POCIEnv; err:POCIError; tdo:POCIType):ub4;cdecl;external ocilib name 'OCITypeMethods'; +{$ELSE} + OCITypeMethods : function (env:POCIEnv; err:POCIError; tdo:POCIType):ub4;cdecl; +{$ENDIF} + + { + NAME: OCITypeMethods - OCI Get a Type's Number of Methods. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + tdo (IN) - pointer to to the type descriptor in the object cache + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) All input parameters must not be NULL and must be valid. + DESCRIPTION: + Get the number of methods in a type. + RETURNS: + The number of methods in the type + NOTES: + The type descriptor, 'tdo', must be unpinned when the accessed + information is no longer needed. + } + {-------------------------------------------------------------------------- } + { TYPE ELEMENT INFORMATION ACCESSORS } + {-------------------------------------------------------------------------- } + {------------------------ OCITypeElemName --------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeElemName(env:POCIEnv; err:POCIError; elem:POCITypeElem; n_length:Pub4):Poratext;cdecl;external ocilib name 'OCITypeElemName'; +{$ELSE} + OCITypeElemName : function (env:POCIEnv; err:POCIError; elem:POCITypeElem; n_length:Pub4):Poratext;cdecl; +{$ENDIF} + + { + NAME: OCITypeElemName - OCI Get an Attribute's NaMe. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + elem (IN) - pointer to the type element descriptor in the object cache + n_length (OUT) - length (in bytes) of the returned attribute name. + The caller must allocate space for the ub4 before calling this + routine. + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) All input parameters must not be NULL and must be valid. + 3) 'n_length' must point to an allocated ub4. + DESCRIPTION: + Get the name of the attribute. + RETURNS: + the name of the attribute and the length in n_length + NOTES: + The type must be unpinned when the accessed information is no + longer needed. + } + {------------------------ OCITypeElemTypeCode ------------------------------ } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeElemTypeCode(env:POCIEnv; err:POCIError; elem:POCITypeElem):OCITypeCode;cdecl;external ocilib name 'OCITypeElemTypeCode'; +{$ELSE} + OCITypeElemTypeCode : function (env:POCIEnv; err:POCIError; elem:POCITypeElem):OCITypeCode;cdecl; +{$ENDIF} + + { + NAME: OCITypeElemTypeCode - OCI Get an Attribute's TypeCode. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + elem (IN) - pointer to the type element descriptor in the object cache + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) All input parameters must not be NULL and must be valid. + DESCRIPTION: + Get the typecode of an attribute's type. + RETURNS: + the typecode of the attribute's type. If this is a scalar type, the + typecode sufficiently describes the scalar type and no further calls + need to be made. Valid scalar types include: OCI_TYPECODE_SIGNED8, + OCI_TYPECODE_UNSIGNED8, OCI_TYPECODE_SIGNED16, OCI_TYPECODE_UNSIGNED16, + OCI_TYPECODE_SIGNED32, OCI_TYPECODE_UNSIGNED32, OCI_TYPECODE_REAL, + OCI_TYPECODE_DOUBLE, OCI_TYPECODE_DATE, + OCI_TYPECODE_MLSLABEL, OROTCOID, OCI_TYPECODE_OCTET, or OROTCLOB. + This function converts the CREF (stored in the attribute) into a + typecode. + NOTES: + The type must be unpinned when the accessed information is no + longer needed. + } + {------------------------ OCITypeElemType --------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeElemType(env:POCIEnv; err:POCIError; elem:POCITypeElem; var elem_tdo:POCIType):sword;cdecl;external ocilib name 'OCITypeElemType'; +{$ELSE} + OCITypeElemType : function (env:POCIEnv; err:POCIError; elem:POCITypeElem; var elem_tdo:POCIType):sword;cdecl; +{$ENDIF} + + { + PARAMETERS + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + elem (IN) - pointer to the type element descriptor in the object cache + elem_tdo (OUT) - If the function completes successfully, 'elem_tdo' + points to the type descriptor (in the object cache) of the type of + the element. + + REQUIRES + 1) All type accessors require that the type be pinned before calling + any accessor. This can be done by calling 'OCITypeByName()'. + 2) if 'elem' is not null, it must point to a valid type element descriptor + in the object cache. + + DESCRIPTION + Get the type tdo of the type of this element. + RETURNS + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the parameters is null. + + NOTES + The type must be unpinned when the accessed information is no + longer needed. This can be done by calling 'OCIObjectUnpin()'. + } + {------------------------- OCITypeElemFlags ------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeElemFlags(env:POCIEnv; err:POCIError; elem:POCITypeElem):ub4;cdecl;external ocilib name 'OCITypeElemFlags'; +{$ELSE} + OCITypeElemFlags : function (env:POCIEnv; err:POCIError; elem:POCITypeElem):ub4;cdecl; +{$ENDIF} + + { + NAME: OCITypeElemFlags - OCI Get a Elem's FLags + (inline, constant, virtual, constructor, + destructor). + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + elem (IN) - pointer to the type element descriptor in the object cache + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) All input parameters must not be NULL and must be valid. + DESCRIPTION: + Get the flags of a type element (attribute, parameter). + RETURNS: + The flags of the type element. + NOTES: + The flag bits are not externally documented. Use only the macros + in the last section (ie. OCI_TYPEPARAM_IS_REQUIRED, and + OCI_TYPEELEM_IS_REF) to test for them only. The type must be unpinned + when the accessed information is no longer needed. + } + {------------------------ OCITypeElemNumPrec ------------------------------ } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeElemNumPrec(env:POCIEnv; err:POCIError; elem:POCITypeElem):ub1;cdecl;external ocilib name 'OCITypeElemNumPrec'; +{$ELSE} + OCITypeElemNumPrec : function (env:POCIEnv; err:POCIError; elem:POCITypeElem):ub1;cdecl; +{$ENDIF} + + { + NAME: OCITypeElemNumPrec - Get a Number's Precision. This includes float, + decimal, real, double, and oracle number. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + elem (IN) - pointer to the type element descriptor in the object cache + REQUIRES: + All input parameters must not be NULL and must be valid. + DESCRIPTION: + Get the precision of a float, decimal, long, unsigned long, real, + double, or Oracle number type. + RETURNS: + the precision of the float, decimal, long, unsigned long, real, double, + or Oracle number + } + {------------------------- OCITypeElemNumScale ----------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeElemNumScale(env:POCIEnv; err:POCIError; elem:POCITypeElem):sb1;cdecl;external ocilib name 'OCITypeElemNumScale'; +{$ELSE} + OCITypeElemNumScale : function (env:POCIEnv; err:POCIError; elem:POCITypeElem):sb1;cdecl; +{$ENDIF} + + { + NAME: OCITypeElemNumScale - Get a decimal or oracle Number's Scale + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + elem (IN) - pointer to the type element descriptor in the object cache + REQUIRES: + All input parameters must not be NULL and must be valid. + DESCRIPTION: + Get the scale of a decimal, or Oracle number type. + RETURNS: + the scale of the decimal, or Oracle number + } + {------------------------ OCITypeElemLength ------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeElemLength(env:POCIEnv; err:POCIError; elem:POCITypeElem):ub4;cdecl;external ocilib name 'OCITypeElemLength'; +{$ELSE} + OCITypeElemLength : function (env:POCIEnv; err:POCIError; elem:POCITypeElem):ub4;cdecl; +{$ENDIF} + + { + NAME: OCITypeElemLength - Get a raw, fixed or variable length String's + length in bytes. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + elem (IN) - pointer to the type element descriptor in the object cache + REQUIRES: + All input parameters must not be NULL and must be valid. + DESCRIPTION: + Get the length of a raw, fixed or variable length string type. + RETURNS: + length of the raw, fixed or variable length string + } + {----------------------- OCITypeElemCharSetID ----------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeElemCharSetID(env:POCIEnv; err:POCIError; elem:POCITypeElem):ub2;cdecl;external ocilib name 'OCITypeElemCharSetID'; +{$ELSE} + OCITypeElemCharSetID : function (env:POCIEnv; err:POCIError; elem:POCITypeElem):ub2;cdecl; +{$ENDIF} + + { + NAME: OCITypeElemCharSetID - Get a fixed or variable length String's + character set ID + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + elem (IN) - pointer to the type element descriptor in the object cache + REQUIRES: + All input parameters must not be NULL and must be valid. + DESCRIPTION: + Get the character set ID of a fixed or variable length string type. + RETURNS: + character set ID of the fixed or variable length string + } + {---------------------- OCITypeElemCharSetForm ---------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeElemCharSetForm(env:POCIEnv; err:POCIError; elem:POCITypeElem):ub2;cdecl;external ocilib name 'OCITypeElemCharSetForm'; +{$ELSE} + OCITypeElemCharSetForm : function (env:POCIEnv; err:POCIError; elem:POCITypeElem):ub2;cdecl; +{$ENDIF} + + { + NAME: OCITypeElemCharSetForm - Get a fixed or variable length String's + character set specification form. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + elem (IN) - pointer to the attribute information in the object cache + REQUIRES: + All input parameters must not be NULL and must be valid. + DESCRIPTION: + Get the character form of a fixed or variable length string type. + The character form is an enumerated value that can be one of the + 4 values below: + SQLCS_IMPLICIT for CHAR, VARCHAR2, CLOB w/o a specified set + SQLCS_NCHAR for NCHAR, NCHAR VARYING, NCLOB + SQLCS_EXPLICIT for CHAR, etc, with "CHARACTER SET ..." syntax + SQLCS_FLEXIBLE for PL/SQL "flexible" parameters + RETURNS: + character form of the fixed or variable string + } + {--------------------- OCITypeElemParameterizedType ------------------------ } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeElemParameterizedType(env:POCIEnv; err:POCIError; elem:POCITypeElem; var type_stored:POCIType):sword;cdecl;external ocilib name 'OCITypeElemParameterizedType'; +{$ELSE} + OCITypeElemParameterizedType : function (env:POCIEnv; err:POCIError; elem:POCITypeElem; var type_stored:POCIType):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeElemParameterizedType + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + elem (IN) - pointer to the type element descriptor in the object cache + type_stored (OUT) - If the function completes successfully, + and the parameterized type is complex, 'type_stored' is NULL. + Otherwise, 'type_stored' points to the type descriptor (in the + object cache) of the type that is stored in the parameterized + type. The caller must allocate space for the OCIType* + before calling this routine and must not write into the space. + REQUIRES: + All input parameters must be valid. + DESCRIPTION: + Get a descriptor to the parameter type of a parameterized type. + Parameterized types are types of the form: + REF T + VARRAY (n) OF T + etc, where T is the parameter in the parameterized type. + Additionally is_ref is set if the parameter is a PTR or REF. + For example, it is set for REF T or VARRAY(n) OF REF T. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the parameters is null. + 2) 'type_stored' is not NULL but points to NULL data. + NOTES: + Complex parameterized types will be in a future release (once + typedefs are supported. When setting the parameterized type + information, the user must typedef the contents if it's a + complex parameterized type. Ex. for varray<varray<car>>, use + 'typedef varray<car> varcar' and then use varray<varcar>. + } + {----------------------- OCITypeElemExtTypeCode ---------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeElemExtTypeCode(env:POCIEnv; err:POCIError; elem:POCITypeElem):OCITypeCode;cdecl;external ocilib name 'OCITypeElemExtTypeCode'; +{$ELSE} + OCITypeElemExtTypeCode : function (env:POCIEnv; err:POCIError; elem:POCITypeElem):OCITypeCode;cdecl; +{$ENDIF} + + { + NAME: OCITypeElemExtTypeCode - OCI Get an element's SQLT constant. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + elem (IN) - pointer to the type element descriptor in the object cache + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) All input parameters must not be NULL and must be valid. + DESCRIPTION: + Get the internal Oracle typecode associated with an attribute's type. + This is the actual typecode for the attribute when it gets mapped + to a column in the Oracle database. + RETURNS: + The Oracle typecode associated with the attribute's type. + NOTES: + The type must be unpinned when the accessed information is no + longer needed. + } + {-------------------------------------------------------------------------- } + { ATTRIBUTE ACCESSORS } + {-------------------------------------------------------------------------- } + {------------------------ OCITypeAttrByName ------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeAttrByName(env:POCIEnv; err:POCIError; tdo:POCIType; name:Poratext; n_length:ub4; + var elem:POCITypeElem):sword;cdecl;external ocilib name 'OCITypeAttrByName'; +{$ELSE} + OCITypeAttrByName : function (env:POCIEnv; err:POCIError; tdo:POCIType; name:Poratext; n_length:ub4; + var elem:POCITypeElem):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeAttrByName - OCI Get an Attribute By Name. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + tdo (IN) - pointer to to the type descriptor in the object cache + name (IN) - the attribute's name + n_length (IN) - length (in bytes) of the 'name' parameter + elem (OUT) - If this function completes successfully, 'elem' points to + the selected type element descriptor pertaining to the + attributein the object cache. + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) if 'tdo' is not null, it must point to a valid type descriptor + in the object cache. + DESCRIPTION: + Get an attribute given its name. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the required parameters is null. + 2) the type does not contain an attribute with the input 'name'. + 3) 'name' is NULL. + NOTES: + The type descriptor, 'tdo', must be unpinned when the accessed + information is no longer needed. + Schema and type names are CASE-SENSITIVE. If they have been created + via SQL, you need to use uppercase names. + } + {------------------------ OCITypeAttrNext --------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeAttrNext(env:POCIEnv; err:POCIError; iterator_ort:POCITypeIter; var elem:POCITypeElem):sword;cdecl;external ocilib name 'OCITypeAttrNext'; +{$ELSE} + OCITypeAttrNext : function (env:POCIEnv; err:POCIError; iterator_ort:POCITypeIter; var elem:POCITypeElem):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeAttrNext - OCI Get an Attribute By Iteration. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + iterator_ort (IN/OUT) - iterator for retrieving the next attribute; + see OCITypeIterNew() to initialize iterator. + elem (OUT) - If this function completes successfully, 'elem' points to + the selected type element descriptor pertaining to the + attributein the object cache. + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) if 'tdo' is not null, it must point to a valid type descriptor + in the object cache. + DESCRIPTION: + Iterate to the next attribute to retrieve. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_NO_DATA if there are no more attributes to iterate on; use + OCITypeIterSet() to reset the iterator if necessary. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the required parameters is null. + NOTES: + The type must be unpinned when the accessed information is no + longer needed. + } + {-------------------------------------------------------------------------- } + { COLLECTION ACCESSORS } + {-------------------------------------------------------------------------- } + {------------------------ OCITypeCollElem --------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeCollElem(env:POCIEnv; err:POCIError; tdo:POCIType; var element:POCITypeElem):sword;cdecl;external ocilib name 'OCITypeCollElem'; +{$ELSE} + OCITypeCollElem : function (env:POCIEnv; err:POCIError; tdo:POCIType; var element:POCITypeElem):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeCollElem + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + tdo (IN) - pointer to the type descriptor in the object cache + element (IN/OUT) - If the function completes successfully, this + points to the descriptor for the collection's element. + It is stored in the same format as an ADT attribute's + descriptor. + If *element is NULL, OCITypeCollElem() implicitly allocates a + new instance of OCITypeElem in the object cache. This instance + will be + automatically freed at the end of the session, and does not have + to be freed explicitly. + If *element is not NULL, OCITypeCollElem() assumes that it + points to a valid OCITypeElem descriptor and will copy the + results into it. + REQUIRES: + All input parameters must be valid. + DESCRIPTION: + Get a pointer to the descriptor (OCITypeElem) of the element of an + array or the rowtype of a nested table. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the parameters is null. + 2) the type TDO does not point to a valid collection's type. + NOTES: + Complex parameterized types will be in a future release (once + typedefs are supported. When setting the parameterized type + information, the user must typedef the contents if it's a + complex parameterized type. Ex. for varray<varray<car>>, use + 'typedef varray<car> varcar' and then use varray<varcar>. + } + {------------------------ OCITypeCollSize --------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeCollSize(env:POCIEnv; err:POCIError; tdo:POCIType; num_elems:Pub4):sword;cdecl;external ocilib name 'OCITypeCollSize'; +{$ELSE} + OCITypeCollSize : function (env:POCIEnv; err:POCIError; tdo:POCIType; num_elems:Pub4):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeCollSize - OCI Get a Collection's Number of Elements. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + tdo (IN) - pointer to the type descriptor in the object cache + num_elems (OUT) - number of elements in collection + REQUIRES: + All input parameters must be valid. tdo points to an array type + defined as a domain. + DESCRIPTION: + Get the number of elements stored in a fixed array or the maximum + number of elements in a variable array. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the parameters is null. + 2) 'tdo' does not point to a domain with a collection type. + NOTES: + Complex parameterized types will be in a future release (once + typedefs are supported. When setting the parameterized type + information, the user must typedef the contents if it's a + complex parameterized type. Ex. for varray<varray<car>>, use + 'typedef varray<car> varcar' and then use varray<varcar>. + } + {------------------------ OCITypeCollExtTypeCode --------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeCollExtTypeCode(env:POCIEnv; err:POCIError; tdo:POCIType; sqt_code:POCITypeCode):sword;cdecl;external ocilib name 'OCITypeCollExtTypeCode'; +{$ELSE} + OCITypeCollExtTypeCode : function (env:POCIEnv; err:POCIError; tdo:POCIType; sqt_code:POCITypeCode):sword;cdecl; +{$ENDIF} + + { + NAME: ortcsqt - OCI Get a Collection element's DTY constant. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + tdo (IN) - pointer to the type descriptor in the object cache + sqt_code (OUT) - SQLT code of type element. + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) All input parameters must not be NULL and must be valid. + DESCRIPTION: + Get the SQLT constant associated with an domain's element type. + The SQLT codes are defined in <sqldef.h> and are needed for OCI/OOCI + use. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the parameters is null. + 2) 'tdo' does not point to a domain with a collection type. + NOTES: + The type must be unpinned when the accessed information is no + longer needed. + } + {-------------------------------------------------------------------------- } + { METHOD ACCESSORS } + {-------------------------------------------------------------------------- } + {------------------------- OCITypeMethodOverload -------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeMethodOverload(env:POCIEnv; err:POCIError; tdo:POCIType; method_name:Poratext; m_length:ub4):ub4;cdecl;external ocilib name 'OCITypeMethodOverload'; +{$ELSE} + OCITypeMethodOverload : function (env:POCIEnv; err:POCIError; tdo:POCIType; method_name:Poratext; m_length:ub4):ub4;cdecl; +{$ENDIF} + + { + NAME: OCITypeMethodOverload - OCI Get type's Number of Overloaded names + for the given method name. + PARAMETERS: + gp (IN/OUT) - pga environment handle. Any errors are recorded here. + tdo (IN) - pointer to to the type descriptor in the object cache + method_name (IN) - the method's name + m_length (IN) - length (in bytes) of the 'method_name' parameter + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) if 'tdo' is not null, it must point to a valid type descriptor + in the object cache. + DESCRIPTION: + Overloading of methods implies that more than one method may have the + same method name. This routine returns the number of methods that + have the given method name. If there are no methods with the input + method name, 'num_methods' is 0. The caller uses this information when + allocating space for the array of mdo and/or position pointers before + calling 'OCITypeMethodByName()' or 'ortgmps()'. + RETURNS: + The number of methods with the given name. 0 if none contains the + name. + NOTES: + Schema and type names are CASE-SENSITIVE. If they have been created + via SQL, you need to use uppercase names. + } + {------------------------ OCITypeMethodByName ------------------------------ } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeMethodByName(env:POCIEnv; err:POCIError; tdo:POCIType; method_name:Poratext; m_length:ub4; + var mdos:POCITypeMethod):sword;cdecl;external ocilib name 'OCITypeMethodByName'; +{$ELSE} + OCITypeMethodByName : function (env:POCIEnv; err:POCIError; tdo:POCIType; method_name:Poratext; m_length:ub4; + var mdos:POCITypeMethod):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeMethodByName - OCI Get one or more Methods with Name. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + tdo (IN) - pointer to to the type descriptor in the object cache + method_name (IN) - the methods' name + m_length (IN) - length (in bytes) of the 'name' parameter + mdos (OUT) - If this function completes successfully, 'mdos' points to + the selected methods in the object cache. The caller must + allocate space for the array of OCITypeMethod pointers before + calling this routine and must not write into the space. + The number of OCITypeMethod pointers that will be returned can + be obtained by calling 'OCITypeMethodOverload()'. + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) if 'tdo' is not null, it must point to a valid type descriptor + in the object cache. + DESCRIPTION: + Get one or more methods given the name. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the required parameters is null. + 2) No methods in type has name 'name'. + 3) 'mdos' is not NULL but points to NULL data. + NOTES: + The type must be unpinned when the accessed information is no + longer needed. + Schema and type names are CASE-SENSITIVE. If they have been created + via SQL, you need to use uppercase names. + } + {------------------------ OCITypeMethodNext -------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeMethodNext(env:POCIEnv; err:POCIError; iterator_ort:POCITypeIter; var mdo:POCITypeMethod):sword;cdecl;external ocilib name 'OCITypeMethodNext'; +{$ELSE} + OCITypeMethodNext : function (env:POCIEnv; err:POCIError; iterator_ort:POCITypeIter; var mdo:POCITypeMethod):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeMethodNext - OCI Get a Method By Iteration. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + iterator_ort (IN/OUT) - iterator for retrieving the next method; + see OCITypeIterNew() to set iterator. + mdo (OUT) - If this function completes successfully, 'mdo' points to + the selected method descriptor in the object cache. Positions + start at 1. The caller must allocate space for the + OCITypeMethod* before calling this routine and must not write + nto the space. + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) if 'tdo' is not null, it must point to a valid type descriptor + in the object cache. + DESCRIPTION: + Iterate to the next method to retrieve. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_NO_DATA if there are no more attributes to iterate on; use + OCITypeIterSet() to reset the iterator if necessary. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the required parameters is null. + 2) 'mdo' is not NULL but points to NULL data. + NOTES: + The type must be unpinned when the accessed information is no + longer needed. + } + {------------------------ OCITypeMethodName -------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeMethodName(env:POCIEnv; err:POCIError; mdo:POCITypeMethod; n_length:Pub4):Poratext;cdecl;external ocilib name 'OCITypeMethodName'; +{$ELSE} + OCITypeMethodName : function (env:POCIEnv; err:POCIError; mdo:POCITypeMethod; n_length:Pub4):Poratext;cdecl; +{$ENDIF} + + { + NAME: OCITypeMethodName - OCI Get a Method's NaMe. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + mdo (IN) - pointer to the method descriptor in the object cache + n_length (OUT) - length (in bytes) of the 'name' parameter. The caller + must allocate space for the ub4 before calling this routine. + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) All input parameters must not be NULL and must be valid. + DESCRIPTION: + Get the (non-unique) real name of the method. + RETURNS: + the non-unique name of the method or NULL if there is an error. + NOTES: + The type must be unpinned when the accessed information is no + longer needed. + } + {------------------------ OCITypeMethodEncap ------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeMethodEncap(env:POCIEnv; err:POCIError; mdo:POCITypeMethod):OCITypeEncap;cdecl;external ocilib name 'OCITypeMethodName'; +{$ELSE} + OCITypeMethodEncap : function (env:POCIEnv; err:POCIError; mdo:POCITypeMethod):OCITypeEncap;cdecl; +{$ENDIF} + + { + NAME: OCITypeMethodEncap - Get a Method's ENcapsulation (private/public). + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + mdo (IN) - pointer to the method descriptor in the object cache + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) All input parameters must not be NULL and must be valid. + DESCRIPTION: + Get the encapsulation (private, or public) of a method. + RETURNS: + the encapsulation (private, or public) of the method + NOTES: + The type must be unpinned when the accessed information is no + longer needed. + } + {------------------------ OCITypeMethodFlags ------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeMethodFlags (env:POCIEnv; err:POCIError; mdo:POCITypeMethod):OCITypeMethodFlag;cdecl;external ocilib name 'OCITypeMethodEncap'; +{$ELSE} + OCITypeMethodFlags : function (env:POCIEnv; err:POCIError; mdo:POCITypeMethod):OCITypeMethodFlag;cdecl; +{$ENDIF} + + { + NAME: OCITypeMethodFlags - OCI Get a Method's FLags + (inline, constant, virtual, constructor, + destructor). + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + mdo (IN) - pointer to the method descriptor in the object cache + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) All input parameters must not be NULL and must be valid. + DESCRIPTION: + Get the flags (inline, constant, virutal, constructor, destructor) of + a method. + RETURNS: + the flags (inline, constant, virutal, constructor, destructor) of + the method + NOTES: + The type must be unpinned when the accessed information is no + longer needed. + } + {------------------------ OCITypeMethodMap --------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeMethodMap(env:POCIEnv; err:POCIError; tdo:POCIType; var mdo:POCITypeMethod):sword;cdecl;external ocilib name 'OCITypeMethodMap'; +{$ELSE} + OCITypeMethodMap : function (env:POCIEnv; err:POCIError; tdo:POCIType; var mdo:POCITypeMethod):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeMethodMap - OCI Get the Method's MAP function. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + tdo (IN) - pointer to to the type descriptor in the object cache + mdo (OUT) - If this function completes successfully, and there is a + map function for this type, 'mdo' points to the selected method + descriptor in the object cache. Otherwise, 'mdo' is null. + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) All required input parameters must not be NULL and must be valid. + DESCRIPTION: + A type may have only one map function. 'OCITypeMethodMap()' finds + this function, if it exists, and returns a reference and a pointer to + the method descriptor in the object cache. If the type does not have a + map (relative ordering) function, then 'mdo_ref' and 'mdo' are set + to null and an error is returned. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + the type does not contain a map function. + NOTES: + The type must be unpinned when the accessed information is no + longer needed. + } + {------------------------ OCITypeMethodOrder ------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeMethodOrder(env:POCIEnv; err:POCIError; tdo:POCIType; var mdo:POCITypeMethod):sword;cdecl;external ocilib name 'OCITypeMethodOrder'; +{$ELSE} + OCITypeMethodOrder : function (env:POCIEnv; err:POCIError; tdo:POCIType; var mdo:POCITypeMethod):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeMethodOrder - OCI Get the Method's ORder function. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + tdo (IN) - pointer to to the type descriptor in the object cache + mdo (OUT) - If this function completes successfully, and there is a + map function for this type, 'mdo' points to the selected method + descriptor in the object cache. Otherwise, 'mdo' is null. + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) All required input parameters must not be NULL and must be valid. + DESCRIPTION: + A type may have only one ORder or MAP function. 'OCITypeMethodOrder()' + finds this function, if it exists, and returns a ref and a pointer + to the method descriptor in the object cache. If the type does not + have a map (relative ordering) function, then 'mdo_ref' and 'mdo' are + set to null and an error is returned. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + the type does not contain a map function. + NOTES: + The type must be unpinned when the accessed information is no + longer needed. + } + {------------------------ OCITypeMethodParams ------------------------------ } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeMethodParams(env:POCIEnv; err:POCIError; mdo:POCITypeMethod):ub4;cdecl;external ocilib name 'OCITypeMethodParams'; +{$ELSE} + OCITypeMethodParams : function (env:POCIEnv; err:POCIError; mdo:POCITypeMethod):ub4;cdecl; +{$ENDIF} + + { + NAME: OCITypeMethodParams - OCI Get a Method's Number of Parameters. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + mdo (IN) - pointer to the method descriptor in the object cache + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) All input parameters must not be NULL and must be valid. + DESCRIPTION: + Get the number of parameters in a method. + RETURNS: + the number of parameters in the method + NOTES: + The type must be unpinned when the accessed information is no + longer needed. + } + {-------------------------------------------------------------------------- } + { RESULT ACCESSORS } + {-------------------------------------------------------------------------- } + {-------------------------- OCITypeResult --------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeResult(env:POCIEnv; err:POCIError; mdo:POCITypeMethod; var elem:POCITypeElem):sword;cdecl;external ocilib name 'OCITypeResult'; +{$ELSE} + OCITypeResult : function (env:POCIEnv; err:POCIError; mdo:POCITypeMethod; var elem:POCITypeElem):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeResult - OCI Get a method's result type descriptor. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + mdo (IN) - pointer to the method descriptor in the object cache + elem (OUT) - If this function completes successfully, 'rdo' points to + the selected result (parameter) descriptor in the object cache. + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) 'elem' MUST be the address of an OCITypeElem pointer. + DESCRIPTION: + Get the result of a method. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the required parameters is null. + 2) method returns no results. + NOTES: + The method must be unpinned when the accessed information is no + longer needed. + } + {-------------------------------------------------------------------------- } + { PARAMETER ACCESSORS } + {-------------------------------------------------------------------------- } + {------------------------ OCITypeParamByPos ------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeParamByPos(env:POCIEnv; err:POCIError; mdo:POCITypeMethod; position:ub4; var elem:POCITypeElem):sword;cdecl;external ocilib name 'OCITypeParamByPos'; +{$ELSE} + OCITypeParamByPos : function (env:POCIEnv; err:POCIError; mdo:POCITypeMethod; position:ub4; var elem:POCITypeElem):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeParamByPos - OCI Get a Parameter in a method By Position. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + mdo (IN) - pointer to the method descriptor in the object cache + position (IN) - the parameter's position. Positions start at 1. + elem (OUT) - If this function completes successfully, 'elem' points to + the selected parameter descriptor in the object cache. + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + DESCRIPTION: + Get a parameter given its position in the method. Positions start + at 1. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the required parameters is null. + 2) 'position' is not >= 1 and <= the number of parameters in the + method. + NOTES: + The type must be unpinned when the accessed information is no + longer needed. + } + {------------------------ OCITypeParamByName ------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeParamByName(env:POCIEnv; err:POCIError; mdo:POCITypeMethod; name:Poratext; n_length:ub4; + var elem:POCITypeElem):sword;cdecl;external ocilib name 'OCITypeParamByName'; +{$ELSE} + OCITypeParamByName : function (env:POCIEnv; err:POCIError; mdo:POCITypeMethod; name:Poratext; n_length:ub4; + var elem:POCITypeElem):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeParamByName - OCI Get a Parameter in a method By Name. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + mdo (IN) - pointer to the method descriptor in the object cache + name (IN) - the parameter's name + n_length (IN) - length (in bytes) of the 'name' parameter + elem (OUT) - If this function completes successfully, 'elem' points to + the selected parameter descriptor in the object cache. + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) if 'mdo' is not null, it must point to a valid method descriptor + in the object cache. + DESCRIPTION: + Get a parameter given its name. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the required parameters is null. + 2) the method does not contain a parameter with the input 'name'. + NOTES: + The type must be unpinned when the accessed information is no + longer needed. + } + {------------------------ OCITypeParamPos --------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeParamPos(env:POCIEnv; err:POCIError; mdo:POCITypeMethod; name:Poratext; n_length:ub4; + position:Pub4; var elem:POCITypeElem):sword;cdecl;external ocilib name 'OCITypeParamPos'; +{$ELSE} + OCITypeParamPos : function (env:POCIEnv; err:POCIError; mdo:POCITypeMethod; name:Poratext; n_length:ub4; + position:Pub4; var elem:POCITypeElem):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeParamPos - OCI Get a parameter's position in a method + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + mdo (IN) - pointer to the method descriptor in the object cache + name (IN) - the parameter's name + n_length (IN) - length (in bytes) of the 'name' parameter + position (OUT) - If this function completes successfully, 'position' + points to the position of the parameter in the method starting + at position 1. position MUST point to space for a ub4. + elem (OUT) - If this function completes successfully, and + the input 'elem' is not NULL, 'elem' points to the selected + parameter descriptor in the object cache. + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) if 'mdo' is not null, it must point to a valid method descriptor + in the object cache. + DESCRIPTION: + Get the position of a parameter in a method. Positions start at 1. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the parameters is null. + 2) the method does not contain a parameter with the input 'name'. + NOTES: + The type must be unpinned when the accessed information is no + longer needed. + } + {------------------------ OCITypeParamElemMode ----------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeElemParamMode(env:POCIEnv; err:POCIError; elem:POCITypeElem):OCITypeParamMode;cdecl;external ocilib name 'OCITypeElemParamMode'; +{$ELSE} + OCITypeElemParamMode : function (env:POCIEnv; err:POCIError; elem:POCITypeElem):OCITypeParamMode;cdecl; +{$ENDIF} + + { + NAME: OCITypeElemParamMode - OCI Get a parameter's mode + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + elem (IN) - pointer to the parameter descriptor in the object cache + (represented by an OCITypeElem) + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) All input parameters must not be NULL and must be valid. + DESCRIPTION: + Get the mode (in, out, or in/out) of the parameter. + RETURNS: + the mode (in, out, or in/out) of the parameter + NOTES: + The type must be unpinned when the accessed information is no + longer needed. + } + {------------------------- OCITypeElemDefaultValue ------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeElemDefaultValue(env:POCIEnv; err:POCIError; elem:POCITypeElem; d_v_length:Pub4):Poratext;cdecl;external ocilib name 'OCITypeElemDefaultValue'; +{$ELSE} + OCITypeElemDefaultValue : function (env:POCIEnv; err:POCIError; elem:POCITypeElem; d_v_length:Pub4):Poratext;cdecl; +{$ENDIF} + + { + NAME: OCITypeElemDefaultValue - OCI Get the element's Default Value. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + elem (IN) - pointer to the parameter descriptor in the object cache + (represented by an OCITypeElem) + d_v_length (OUT) - length (in bytes) of the returned default value. + The caller must allocate space for the ub4 before calling this + routine. + REQUIRES: + 1) All type accessors require that the type be pinned before calling + any accessor. + 2) All input parameters must not be NULL and must be valid. + DESCRIPTION: + Get the default value in text form (PL/SQL) of an element. For V8.0, + this only makes sense for a method parameter. + RETURNS: + The default value (text) of the parameter. + NOTES: + The type must be unpinned when the accessed information is no + longer needed. + } + {-------------------------------------------------------------------------- } + { TYPE VERSION TABLE } + {-------------------------------------------------------------------------- } + { For V8.0, the type version table is meant to be an internal data structure + only for Oracle clients for type version maintanence purposes. A more + general version of the API may be made public in subsequent releases. } + {--------------------------- OCITypeVTInit -------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeVTInit(env:POCIEnv; err:POCIError):sword;cdecl;external ocilib name 'OCITypeVTInit'; +{$ELSE} + OCITypeVTInit : function (env:POCIEnv; err:POCIError):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeVTInit - OCI type Version table INItialize + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + REQUIRES: + none + DESCRIPTION: + Allocate space for and initialize the type version table and the type + version table's index. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if internal errors occurrs during initialization. + } + {--------------------------- OCITypeVTInsert ------------------------------- } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeVTInsert(env:POCIEnv; err:POCIError; schema_name:Poratext; s_n_length:ub4; type_name:Poratext; + t_n_length:ub4; user_version:Poratext; u_v_length:ub4):sword;cdecl;external ocilib name 'OCITypeVTInsert'; +{$ELSE} + OCITypeVTInsert : function (env:POCIEnv; err:POCIError; schema_name:Poratext; s_n_length:ub4; type_name:Poratext; + t_n_length:ub4; user_version:Poratext; u_v_length:ub4):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeVTInsert - OCI type Version table INSert entry. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + schema_name (IN, optional) - name of schema associated with the + type. By default, the user's schema name is used. + s_n_length (IN) - length of the 'schema_name' parameter + type_name (IN) - type name to insert + t_n_length (IN) - length (in bytes) of the 'type_name' parameter + user_version (IN) - user readable version of the type + u_v_length (IN) - length (in bytes) of the 'user_version' parameter + REQUIRES: + none + DESCRIPTION: + Insert an entry into the type version table and the type version + table's index. The entry's type name and user readable version + fields are updated with the input values. All other fields are + initialized to null. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the parameters is invalid. + 2) an entry for 'type_name' has already been registered in the + type version table. + } + {------------------------------ OCITypeVTSelect ---------------------------- } + { OCITypeVTSelect - OCI type VERSion table SELECT entry } + { ** OBSOLETE ** } +{$IFNDEF LinkDynamically} + function OCITypeVTSelect(env:POCIEnv; err:POCIError; schema_name:Poratext; s_n_length:ub4; type_name:Poratext; + t_n_length:ub4; var user_version:Poratext; u_v_length:Pub4; version:Pub2):sword;cdecl;external ocilib name 'OCITypeVTSelect'; +{$ELSE} + OCITypeVTSelect : function (env:POCIEnv; err:POCIError; schema_name:Poratext; s_n_length:ub4; type_name:Poratext; + t_n_length:ub4; var user_version:Poratext; u_v_length:Pub4; version:Pub2):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeVTSelect - OCI type Version table SELect entry. + PARAMETERS: + env (IN/OUT) - OCI environment handle initialized in object mode + err (IN/OUT) - error handle. If there is an error, it is + recorded in 'err' and this function returns OCI_ERROR. + The error recorded in 'err' can be retrieved by calling + OCIErrorGet(). + schema_name (IN, optional) - name of schema associated with the + type. By default, the user's schema name is used. + s_n_length (IN) - length of the 'schema_name' parameter + type_name (IN) - type name to select + t_n_length (IN) - length (in bytes) of the 'type_name' parameter + user_version (OUT, optional) - pointer to user readable version of the + type + u_v_length (OUT, optional) - length (in bytes) of the 'user_version' + parameter + version (OUT, optional) - internal type version + REQUIRES: + All input parameters must not be NULL and must be valid. + DESCRIPTION: + Select an entry in the type version table by name. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_INVALID_HANDLE if 'env' or 'err' is null. + OCI_ERROR if + 1) any of the parameters is invalid. + 2) an entry with 'type_name' does not exist. + } + { Compatibility function - following function prototype retained for + compatibility only } +{$IFNDEF LinkDynamically} + function ortgcty(env:POCIEnv; err:POCIError; coll_tdo:POCIType; var collelem_tdo:POCIType):sword;cdecl;external ocilib name 'ortgcty'; +{$ELSE} + ortgcty : function (env:POCIEnv; err:POCIError; coll_tdo:POCIType; var collelem_tdo:POCIType):sword;cdecl; +{$ENDIF} + + {--------------------------------------------------------------------------- } + { Transient Type Construction functions } + {--------------------------------------------------------------------------- } +{$IFNDEF LinkDynamically} + function OCITypeBeginCreate(svchp:POCISvcCtx; errhp:POCIError; tc:OCITypeCode; dur:OCIDuration; var _type:POCIType):sword;cdecl;external ocilib name 'OCITypeBeginCreate'; +{$ELSE} + OCITypeBeginCreate : function (svchp:POCISvcCtx; errhp:POCIError; tc:OCITypeCode; dur:OCIDuration; var _type:POCIType):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeBeginCreate - OCI Type Begin Creation of a transient type. + REMARKS + Begins the construction process for a transient type. The type will be + anonymous (no name). To create a persistent named type, the CREATE TYPE + statement should be used from SQL. Transient types have no identity. + They are pure values. + PARAMETERS: + svchp (IN) - The OCI Service Context. + errhp (IN/OUT) - The OCI error handle. If there is an error, it is + recorded in errhp and this function returns + OCI_ERROR. Diagnostic information can be obtained by + calling OCIErrorGet(). + tc - The TypeCode for the type. The Typecode could + correspond to a User Defined Type or a Built-in type. + Currently, the permissible values for User Defined + Types are OCI_TYPECODE_OBJECT for an Object Type + (structured), OCI_TYPECODE_VARRAY for a VARRAY + collection type or OCI_TYPECODE_TABLE for a nested + table collection type. For Object types, + OCITypeAddAttr() needs to be called to add each of + the attribute types. For Collection types, + OCITypeSetCollection() needs to be called. + Subsequently, OCITypeEndCreate() needs to be called + to finish the creation process. + The permissible values for Built-in type codes are + specified in the user manual. Additional information + on built-ins if any (like precision, scale for + numbers, character set info for VARCHAR2s etc.) must + be set with a subsequent call to OCITypeSetBuiltin(). + Subsequently OCITypeEndCreate() needs to be called + to finish the creation process. + dur - The allocation duration for the Type. Could be a + predefined or a user defined duration. + type(OUT) - The OCIType (Type Descriptor) that is being + constructed. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_ERROR on error. + } +{$IFNDEF LinkDynamically} + function OCITypeSetCollection(svchp:POCISvcCtx; errhp:POCIError; _type:POCIType; collelem_info:POCIParam; coll_count:ub4):sword;cdecl;external ocilib name 'OCITypeSetCollection'; +{$ELSE} + OCITypeSetCollection : function (svchp:POCISvcCtx; errhp:POCIError; _type:POCIType; collelem_info:POCIParam; coll_count:ub4):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeSetCollection - OCI Type Set Collection information + REMARKS : + Set Collection type information. This call can be called only if the + OCIType has been constructed with a collection typecode. + PARAMETERS: + svchp (IN) - The OCI Service Context. + errhp (IN/OUT) - The OCI error handle. If there is an error, it is + recorded in errhp and this function returns + OCI_ERROR. Diagnostic information can be obtained by + calling OCIErrorGet(). + type(IN OUT) - The OCIType (Type Descriptor) that is being + constructed. + collelem_info - collelem_info provides information on the collection + element. It is obtained by allocating an OCIParam + (parameter handle) and setting type information in + the OCIParam using OCIAttrSet() calls. + coll_count - The count of elements in the collection. Pass 0 for + a nested table (unbounded). + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_ERROR on error. + } +{$IFNDEF LinkDynamically} + function OCITypeSetBuiltin(svchp:POCISvcCtx; errhp:POCIError; _type:POCIType; builtin_info:POCIParam):sword;cdecl;external ocilib name 'OCITypeSetBuiltin'; +{$ELSE} + OCITypeSetBuiltin : function (svchp:POCISvcCtx; errhp:POCIError; _type:POCIType; builtin_info:POCIParam):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeSetBuiltin - OCI Type Set Builtin information. + REMARKS: + Set Built-in type information. This call can be called only if the + OCIType has been constructed with a built-in typecode + (OCI_TYPECODE_NUMBER etc.). + PARAMETERS: + svchp (IN) - The OCI Service Context. + errhp (IN/OUT) - The OCI error handle. If there is an error, it is + recorded in errhp and this function returns + OCI_ERROR. Diagnostic information can be obtained by + calling OCIErrorGet(). + type(IN OUT) - The OCIType (Type Descriptor) that is being + constructed. + builtin_info - builtin_info provides information on the built-in + (like precision, scale, charater set etc.). It is + obtained by allocating an OCIParam (parameter handle) + and setting type information in the OCIParam using + OCIAttrSet() calls. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_ERROR on error. + } +{$IFNDEF LinkDynamically} + function OCITypeAddAttr(svchp:POCISvcCtx; errhp:POCIError; _type:POCIType; a_name:Poratext; a_length:ub4; + attr_info:POCIParam):sword;cdecl;external ocilib name 'OCITypeAddAttr'; +{$ELSE} + OCITypeAddAttr : function (svchp:POCISvcCtx; errhp:POCIError; _type:POCIType; a_name:Poratext; a_length:ub4; + attr_info:POCIParam):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeAddAttr - OCI Type Add Attribute to an Object Type. + REMARKS: + Adds an attribute to an Object type (that was constructed earlier with + typecode OCI_TYPECODE_OBJECT). + PARAMETERS: + svchp (IN) - The OCI Service Context + errhp (IN/OUT) - The OCI error handle. If there is an error, it is + recorded in errhp and this function returns + OCI_ERROR. Diagnostic information can be obtained by + calling OCIErrorGet(). + type (IN/OUT) - The Type description that is being constructed. + a_name(IN) - Optional. gives the name of the attribute. + a_length - Optional. gives length of attribute name. + attr_info - Information on the attribute. It is obtained by + allocating an OCIParam (parameter handle) and setting + type information in the OCIParam using OCIAttrSet() + calls. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_ERROR on error. + } +{$IFNDEF LinkDynamically} + function OCITypeEndCreate(svchp:POCISvcCtx; errhp:POCIError; _type:POCIType):sword;cdecl;external ocilib name 'OCITypeEndCreate'; +{$ELSE} + OCITypeEndCreate : function (svchp:POCISvcCtx; errhp:POCIError; _type:POCIType):sword;cdecl; +{$ENDIF} + + { + NAME: OCITypeEndCreate - OCI Type End Creation + REMARKS: + Finishes construction of a type description.Subsequently, only access + will be allowed. + PARAMETERS: + svchp (IN) - The OCI Service Context + errhp (IN/OUT) - The OCI error handle. If there is an error, it is + recorded in errhp and this function returns + OCI_ERROR. Diagnostic information can be obtained by + calling OCIErrorGet(). + type (IN/OUT) - The Type description that is being constructed. + RETURNS: + OCI_SUCCESS if the function completes successfully. + OCI_ERROR on error. + } + {========================= } + { PUBLIC MACROS AND FLAGS } + {========================= } + {-------------------------------------------------------------------------- } + { TYPE ELEMENT FLAGS } + {-------------------------------------------------------------------------- } + { element is a REF } + + const + OCI_TYPEELEM_REF = $8000; + { parameter is required } + OCI_TYPEPARAM_REQUIRED = $0800; + { macros to test flags } + +// function OCI_TYPEELEM_IS_REF(elem_flag : longint) : longint; + +// function OCI_TYPEPARAM_IS_REQUIRED(param_flag : longint) : longint; + +{implementation + + function OCI_TYPEELEM_IS_REF(elem_flag : longint) : longint; + begin +// OCI_TYPEELEM_IS_REF:=(elem_flag(@(OCI_TYPEELEM_REF)))<>0; + end; + + function OCI_TYPEPARAM_IS_REQUIRED(param_flag : longint) : longint; + begin +// OCI_TYPEPARAM_IS_REQUIRED:=(param_flag(@(OCI_TYPEPARAM_REQUIRED)))<>0; + end; + + +end.} |
