Annotation of win32/sql/oracle/include/oci/ocikp.h, revision 1.1

1.1     ! parser      1: /*
        !             2:  * $Header: /var/lib/cvsroot/parser3/parser3/src/sql/oracle/oracle32/include/oci/ocikp.h,v 1.1 2001/08/22 14:02:19 parser Exp $
        !             3:  */
        !             4: /* Copyright (c) Oracle Corporation 1996, 1997, 1998, 1999. 
        !             5: All Rights Reserved. */
        !             6:  
        !             7: /* NOTE:  See 'header_template.doc' in the 'doc' dve under the 'forms' 
        !             8:       directory for the header file template that includes instructions. 
        !             9: */
        !            10:  
        !            11: /* 
        !            12:    NAME 
        !            13:      ocikp.h - Prototypes of V8 OCI functions in K&R style
        !            14: 
        !            15:    DESCRIPTION 
        !            16:      defines the prototypes of V8 OCI functions in K&R style
        !            17: 
        !            18:    RELATED DOCUMENTS 
        !            19:  
        !            20:    INSPECTION STATUS 
        !            21:      Inspection date: 
        !            22:      Inspection status: 
        !            23:      Estimated increasing cost defects per page: 
        !            24:      Rule sets: 
        !            25:  
        !            26:    ACCEPTANCE REVIEW STATUS 
        !            27:      Review date: 
        !            28:      Review status: 
        !            29:      Reviewers: 
        !            30:  
        !            31:    PUBLIC FUNCTION(S) 
        !            32:      <list of external functions declared/defined - with one-line descriptions>
        !            33: 
        !            34:    PRIVATE FUNCTION(S) 
        !            35:      <list of static functions defined in .c file - with one-line descriptions>
        !            36:  
        !            37:    EXAMPLES 
        !            38:  
        !            39:    NOTES 
        !            40:      <other useful comments, qualifications, etc.> 
        !            41: 
        !            42:    MODIFIED   (MM/DD/YY)
        !            43:    porangas    09/20/99 - correct lines that exceed 80 characters:bug#974710
        !            44:    slari       09/01/99 - remove OCIEnvCallback
        !            45:    slari       08/23/99 - add OCIUcb in user callback functions
        !            46:    whe         09/01/99 - 976457:check __cplusplus for C++ code
        !            47:    dsaha       07/07/99 - Add OCIFEnvCreate for forms
        !            48:   vyanaman    06/21/99 - Change OCI DateTime/Interval APIs.
        !            49:    esoyleme    07/01/99 - expose MTS performance enhancements                  
        !            50:    whe         06/14/99 - bug727872:add CONST to match definitions
        !            51:    kkarun      02/23/99 - Fix OCIDateTime APIs
        !            52:    jiyang      12/07/98 - Add comments for OCI_NLS_DUAL_CURRENCY
        !            53:    aroy        12/01/98 - add OCIEnvCreate
        !            54:    slari       11/23/98 - use ORASTDARG
        !            55:    slari       11/22/98 - use arglist in OCIUserCallback
        !            56:    slari       11/21/98 - replace ellipsis by arglist in OCIUserCallback
        !            57:    thchang     10/20/98 - correct comment on OCILobCreateTemporary
        !            58:    sgollapu    09/30/98 - Fix bug 725473
        !            59:    slari       09/08/98 - allow envh to receive error info also in CallbackReg/
        !            60:    lchidamb    07/07/98 - change comments
        !            61:    aroy        08/04/98 - add OCITerminate calls                               
        !            62:    sgollapu    06/30/98 - Add OCISubscription* prototypes
        !            63:    nramakri    06/25/98 - remove CONST from some OCIPickler APIs
        !            64:    jiyang      06/22/98 - Fix a lint error
        !            65:    nmallava    06/08/98 - ociistemporary -> envhp
        !            66:    jhasenbe    05/27/98 - Remove definitions for U-Calls (Unicode)
        !            67:    nmallava    05/18/98 - correct comment
        !            68:    sgollapu    05/19/98 - Change text to OraText
        !            69:    aroy        04/20/98 - merge forward 8.0.5 -> 8.1.3
        !            70:    nbhatt      05/14/98 - aq listen call
        !            71:    vyanaman    04/19/98 - system timestamp
        !            72:    kkarun      04/17/98 - Add more Interval functions
        !            73:    vyanaman    04/16/98 - Add get/set TZ
        !            74:    kkarun      04/13/98 - add datetime prototypes
        !            75:    rkasamse    04/13/98 - change OCIEnv* to dvoid* for context/memory cart serv
        !            76:    rkasamse    04/15/98 - chage pickler cart interface
        !            77:    slari       03/20/98 - change proto of OCIUserCallback
        !            78:    slari       02/17/98 - add OCIEnvCallback
        !            79:    jiyang      04/02/98 - Accept both env and user handles for NLS
        !            80:    nmallava    04/09/98 - OCILobLocatorAssign
        !            81:    nmallava    04/07/98 - fix compiler warnings
        !            82:    jhasenbe    04/06/98 - Add new interfaces for Unicode support
        !            83:    skabraha    03/24/98 - fixing prototype mismatch
        !            84:    tsaulys     03/20/98 - use environment or session handle
        !            85:    rkasamse    03/20/98 - remove prototypes for OCIMemoryDuration* functions
        !            86:    nmallava    03/17/98 - add interfaces
        !            87:    nmallava    03/16/98 - add open/close apis
        !            88:    nmallava    03/10/98 - add temporary lobs apis
        !            89:    sgollapu    07/10/97 - Add OCIReset
        !            90:    sgollapu    02/09/98 - OCI non-blocking
        !            91:    nramakri    01/16/98 - remove #ifdef NEVER clause for OCIExtract
        !            92:    rmurthy     01/08/98 - OCIContextGenerateKey: change ub1 to ub4
        !            93:    ewaugh      01/02/98 - remove VAFP from OCIFormatString prototype
        !            94:    ewaugh      12/18/97 - Turn type wrappers into functions.
        !            95:    rtaranto    12/17/97 - Resolve merge conflicts
        !            96:    jiyang      11/13/97 - Add NLS service for cartridge
        !            97:    rhwu        12/02/97 - add OCI Thread
        !            98:    nramakri    12/15/97 - move to core4
        !            99:    nramakri    12/11/97 - modify OCIExtract prototype
        !           100:    ewaugh      12/10/97 - add OCIFormat prototypes
        !           101:    skabraha    12/02/97 - adding OCIFile functions
        !           102:    nramakri    11/12/97 - add OCIExtract prototypes
        !           103:    rkasamse    11/21/97 - add prototypes for memory cartridge services and cont
        !           104:    rkasamse    11/03/97 - Add pickler cartridge service interfaces
        !           105:    tanguyen    08/19/97 -
        !           106:    schandra    06/25/97 - AQ OCI interface
        !           107:    bnainani    07/21/97 - add prototypes for Oracle XA extensions
        !           108:    rtaranto    05/20/97 - remove OCILobLocatorSize (again)
        !           109:    esoyleme    05/13/97 - move failover callback prototype
        !           110:    skmishra    05/06/97 - stdc compiler fixes
        !           111:    skmishra    04/23/97 - Provide C++ compatibility
        !           112:    skotsovo    04/21/97 - make lob parameter names consistent
        !           113:    rwhitman    04/16/97 - Fix LOB prototypes - Olint OCI 8.0.3
        !           114:    ramkrish    04/15/97 - Add free flag to OCILobFlushBuffer
        !           115:    cxcheng     04/09/97 - change objnamp from CONST text* to dvoid*
        !           116:    cxcheng     04/08/97 - fix prototype for OCIDescribeAny
        !           117:    skotsovo    03/31/97 - remove OCILobLocatorSize
        !           118:    skotsovo    03/27/97 - add OCILobLoadFromFile
        !           119:    sgollapu    03/26/97 - Change OCIDescribeAny prototype
        !           120:    skotsovo    03/26/97 - add svchp to ocienablebuffering
        !           121:    skotsovo    03/26/97 - change OCILobFlushBuffers to OCILobFlushBuffer
        !           122:    skotsovo    03/18/97 - add interface for lob buffering.
        !           123:    dchatter    01/13/97 - fix comments on LOB calls
        !           124:    aroy        01/10/97 - remove ocilobfilecreate delete
        !           125:    sgollapu    12/27/96 - Correct OCILogon prototype
        !           126:    dchatter    01/04/97 - comments to describe the functions
        !           127:    sgollapu    11/25/96 - Change OCILobFileIsExistent
        !           128:    schandra    11/18/96 - Remove xa.h include
        !           129:    sgollapu    11/09/96 - Change prototype of OCIDescribeAny
        !           130:    dchatter    11/01/96 - lint error
        !           131:    dchatter    10/31/96 - delete CONST from lob write cb fn
        !           132:    dchatter    10/30/96 - more changes
        !           133:    dchatter    10/26/96 - lob/file long name corrections
        !           134:    slari       10/16/96 - delete unused calls
        !           135:    rwessman    10/29/96 - Fixed OCISecurityGetIdentity prototype
        !           136:    sgollapu    10/22/96 - Add OCILogon and OCILogoff prototypes
        !           137:    rwessman    10/16/96 - Added cryptographic and digital signature functions
        !           138:    rxgovind    10/07/96 - add oci file calls
        !           139:    skotsovo    09/20/96 - in OCILobGetLength(), remove the 'isnull' parameter.
        !           140:    skotsovo    10/01/96 - move orl lob fnts to oci
        !           141:    skotsovo    09/20/96 - in OCILobGetLength(), remove the 'isnull' parameter.
        !           142:    aroy        08/29/96 - change prototype for Nchar Lob support
        !           143:    dchatter    08/21/96 - OCIResultSetToStmt prototype change
        !           144:    sthakur     08/14/96 - add OCIParamSet
        !           145:    schandra    06/17/96 - Convert XA to use new OCI
        !           146:    aroy        07/17/96 - terminology change: OCILobLocator => OCILobLocator
        !           147:    dchatter    07/01/96 - drop prototypes not in beta1
        !           148:    dchatter    06/29/96 - OCIParamGet prototype change
        !           149:    dchatter    06/19/96 - add OCISvcCtxBreak, OCILdaToSvcCtx
        !           150:    slari       06/12/96 - inlcude oratypes.h instead of s.h
        !           151:    schandra    05/31/96 - remove client DBID parameters from OCITransStart
        !           152:    asurpur     06/05/96 - Changing the prototype for OCIPasswordChange
        !           153:    dchatter    05/30/96 - change OCIStmtGetBind prototype
        !           154:    schandra    05/29/96 - Add timeout parameter to OCITransDetach
        !           155:    slari       05/30/96 - add OCIBindDynamic/OCIDefineDynamic
        !           156:    slari       05/28/96 - fix gpi/spi protos
        !           157:    slari       05/28/96 - change proto for OCIParamGet
        !           158:    jbellemo    05/23/96 - remove ociisc
        !           159:    schandra    05/15/96 - Remove ocitgti type
        !           160:    schandra    04/18/96 - OCITransCommitt -> OCITransCommit
        !           161:    schandra    03/27/96 - V8OCI - add transaction related calls
        !           162:    dchatter    04/01/96 - change return types to sword to be compatible with oo
        !           163:    dchatter    03/21/96 - add oci2lda conversion routines
        !           164:    aroy        03/12/96 - change parameter order for lob functions
        !           165:    dchatter    03/08/96 - minor parameter renaming for lob calls
        !           166:    slari       03/14/96 - change proto of OCITransRollback
        !           167:    slari       03/12/96 - remove ocidqry
        !           168:    slari       03/01/96 - change proto for OCIInitialize
        !           169:    slari       02/07/96 - update prototypes
        !           170:    slari       02/06/96 - add OCITransCommit()
        !           171:    slari       02/02/96 - ociisc: rm dblink info
        !           172:    dchatter    01/08/96 - V8 OCI K&R prototype file
        !           173:    dchatter    01/08/96 - Creation
        !           174: 
        !           175: */
        !           176:  
        !           177: #ifndef OCIKP_ORACLE
        !           178: # define OCIKP_ORACLE
        !           179:  
        !           180: # ifndef ORATYPES 
        !           181: #  include <oratypes.h> 
        !           182: # endif 
        !           183:  
        !           184: #ifndef ORASTDARG
        !           185: #include <stdarg.h>
        !           186: #define ORASTDARG
        !           187: #endif
        !           188:  
        !           189: #ifndef OCIDFN
        !           190: #include <ocidfn.h>
        !           191: #endif
        !           192: 
        !           193: #ifndef NZT_ORACLE
        !           194: #include <nzt.h>
        !           195: #endif /* NZT_ORACLE */
        !           196: 
        !           197: #ifndef OCI_ORACLE
        !           198: #include <oci.h>
        !           199: #endif
        !           200: 
        !           201: #ifndef ORT_ORACLE
        !           202: #include <ort.h>
        !           203: #endif 
        !           204: 
        !           205: /*--------------------------------------------------------------------------- 
        !           206:                      PUBLIC TYPES AND CONSTANTS 
        !           207:   ---------------------------------------------------------------------------*/
        !           208: 
        !           209: /*--------------------------------------------------------------------------- 
        !           210:                      PRIVATE TYPES AND CONSTANTS 
        !           211:   ---------------------------------------------------------------------------*/
        !           212:  
        !           213:  
        !           214: /*--------------------------------------------------------------------------- 
        !           215:                            PUBLIC FUNCTIONS 
        !           216:   ---------------------------------------------------------------------------*/
        !           217: 
        !           218: /*------------------Oracle Version 8 Call Interface--------------------------*/
        !           219: 
        !           220: 
        !           221: /*****************************************************************************
        !           222:                               DESCRIPTION
        !           223: ******************************************************************************
        !           224: Note: the descriptions of the functions are alphabetically arranged. Please 
        !           225: maintain the arrangement when adding a new function description. The actual 
        !           226: prototypes are below this comment section and donot follow any alphabetical 
        !           227: ordering. 
        !           228: 
        !           229: 
        !           230: --------------------------------OCIAttrGet------------------------------------
        !           231: 
        !           232: OCIAttrGet()
        !           233: Name
        !           234: OCI Attribute Get
        !           235: Purpose
        !           236: This call is used to get a particular attribute of a handle. 
        !           237: Syntax
        !           238: sword OCIAttrGet ( CONST dvoid    *trgthndlp,
        !           239:                  ub4            trghndltyp,
        !           240:                  dvoid          *attributep,
        !           241:                  ub4            *sizep,
        !           242:                  ub4            attrtype,
        !           243:                  OCIError       *errhp );
        !           244: Comments
        !           245: This call is used to get a particular attribute of a handle.
        !           246: See Appendix B,  "Handle Attributes",  for a list of handle types and their 
        !           247: readable attributes.
        !           248: Parameters
        !           249: trgthndlp (IN) - is the pointer to a handle type. 
        !           250: trghndltyp (IN) - is the handle type. 
        !           251: attributep (OUT) - is a pointer to the storage for an attribute value. The 
        !           252: attribute value is filled in. 
        !           253: sizep (OUT) - is the size of the attribute value. 
        !           254: This can be passed in as NULL for most parameters as the size is well known. 
        !           255: For OraText* parameters, a pointer to a ub4 must be passed in to get the length 
        !           256: of the string. 
        !           257: attrtype (IN) - is the type of attribute.
        !           258: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !           259: diagnostic information in the event of an error.
        !           260: Related Functions
        !           261: OCIAttrSet()
        !           262: 
        !           263: --------------------------------OCIAttrSet------------------------------------
        !           264: 
        !           265: 
        !           266: OCIAttrSet()
        !           267: Name
        !           268: OCI Attribute Set
        !           269: Purpose
        !           270: This call is used to set a particular attribute of a handle or a descriptor. 
        !           271: Syntax
        !           272: sword OCIAttrSet ( dvoid       *trgthndlp,
        !           273:                  ub4         trghndltyp,
        !           274:                  dvoid       *attributep,
        !           275:                  ub4         size,
        !           276:                  ub4         attrtype,
        !           277:                  OCIError    *errhp );
        !           278: Comments
        !           279: This call is used to set a particular attribute of a handle or a descriptor. 
        !           280: See Appendix B for a list of handle types and their writeable attributes.
        !           281: Parameters
        !           282: trghndlp (IN/OUT) - the pointer to a handle type whose attribute gets 
        !           283: modified. 
        !           284: trghndltyp (IN/OUT) - is the handle type. 
        !           285: attributep (IN) - a pointer to an attribute value. 
        !           286: The attribute value is copied into the target handle. If the attribute value 
        !           287: is a pointer, then only the pointer is copied, not the contents of the pointer.
        !           288: size (IN) - is the size of an attribute value. This can be passed in as 0 for 
        !           289: most attributes as the size is already known by the OCI library. For OraText*
        !           290: attributes, a ub4 must be passed in set to the length of the string. 
        !           291: attrtype (IN) - the type of attribute being set.
        !           292: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !           293: diagnostic information in the event of an error. 
        !           294: Related Functions
        !           295: OCIAttrGet()
        !           296: 
        !           297: 
        !           298: 
        !           299: --------------------------------OCIBindArrayOfStruct--------------------------
        !           300: 
        !           301: 
        !           302: 
        !           303: OCIBindArrayOfStruct()
        !           304: Name
        !           305: OCI Bind for Array of Structures
        !           306: Purpose
        !           307: This call sets up the skip parameters for a static array bind.
        !           308: Syntax
        !           309: sword OCIBindArrayOfStruct ( OCIBind     *bindp,
        !           310:                            OCIError    *errhp,
        !           311:                            ub4         pvskip, 
        !           312:                            ub4         indskip, 
        !           313:                            ub4         alskip, 
        !           314:                            ub4         rcskip );
        !           315: Comments
        !           316: This call sets up the skip parameters necessary for a static array bind.
        !           317: This call follows a call to OCIBindByName() or OCIBindByPos(). The bind 
        !           318: handle returned by that initial bind call is used as a parameter for the 
        !           319: OCIBindArrayOfStruct() call.
        !           320: For information about skip parameters, see the section "Arrays of Structures" 
        !           321: on page 4-16.
        !           322: Parameters
        !           323: bindp (IN) - the handle to a bind structure. 
        !           324: errhp (IN) - an error handle which can be passed to OCIErrorGet() for 
        !           325: diagnostic information in the event of an error.
        !           326: pvskip (IN) - skip parameter for the next data value. 
        !           327: indskip (IN) - skip parameter for the next indicator value or structure. 
        !           328: alskip (IN) - skip parameter for the next actual length value. 
        !           329: rcskip (IN) - skip parameter for the next column-level return code value. 
        !           330: Related Functions
        !           331: OCIAttrGet()
        !           332: 
        !           333: 
        !           334: --------------------------------OCIBindByName---------------------------------
        !           335: 
        !           336: 
        !           337: OCIBindByName()
        !           338: Name
        !           339: OCI Bind by Name
        !           340: Purpose
        !           341: Creates an association between a program variable and a placeholder in a SQL 
        !           342: statement or PL/SQL block.
        !           343: Syntax
        !           344: sword OCIBindByName (
        !           345:               OCIStmt       *stmtp, 
        !           346:               OCIBind       **bindp,
        !           347:               OCIError      *errhp,
        !           348:               CONST OraText    *placeholder,
        !           349:               sb4           placeh_len,
        !           350:               dvoid         *valuep,
        !           351:               sb4           value_sz,
        !           352:               ub2           dty,
        !           353:               dvoid         *indp,
        !           354:               ub2           *alenp,
        !           355:               ub2           *rcodep,
        !           356:               ub4           maxarr_len,
        !           357:               ub4           *curelep, 
        !           358:               ub4           mode ); 
        !           359: Description
        !           360: This call is used to perform a basic bind operation. The bind creates an 
        !           361: association between the address of a program variable and a placeholder in a 
        !           362: SQL statement or PL/SQL block. The bind call also specifies the type of data 
        !           363: which is being bound, and may also indicate the method by which data will be 
        !           364: provided at runtime.
        !           365: This function also implicitly allocates the bind handle indicated by the bindp 
        !           366: parameter.
        !           367: Data in an OCI application can be bound to placeholders statically or 
        !           368: dynamically. Binding is static when all the IN bind data and the OUT bind 
        !           369: buffers are well-defined just before the execute. Binding is dynamic when the 
        !           370: IN bind data and the OUT bind buffers are provided by the application on 
        !           371: demand at execute time to the client library. Dynamic binding is indicated by 
        !           372: setting the mode parameter of this call to OCI_DATA_AT_EXEC.
        !           373: Related Functions: For more information about dynamic binding, see 
        !           374: the section "Runtime Data Allocation and Piecewise Operations" on 
        !           375: page 5-16.
        !           376: Both OCIBindByName() and OCIBindByPos() take as a parameter a bind handle, 
        !           377: which is implicitly allocated by the bind call A separate bind handle is 
        !           378: allocated for each placeholder the application is binding.
        !           379: Additional bind calls may be required to specify particular attributes 
        !           380: necessary when binding certain data types or handling input data in certain 
        !           381: ways:
        !           382: If arrays of structures are being utilized, OCIBindArrayOfStruct() must 
        !           383: be called to set up the necessary skip parameters.
        !           384: If data is being provided dynamically at runtime, and the application 
        !           385: will be using user-defined callback functions, OCIBindDynamic() must 
        !           386: be called to register the callbacks.
        !           387: If a named data type is being bound, OCIBindObject() must be called to 
        !           388: specify additional necessary information.
        !           389: Parameters
        !           390: stmth (IN/OUT) - the statement handle to the SQL or PL/SQL statement 
        !           391: being processed.
        !           392: bindp (IN/OUT) - a pointer to a pointer to a bind handle which is implicitly 
        !           393: allocated by this call.  The bind handle  maintains all the bind information for 
        !           394: this particular input value. The handle is feed implicitly when the statement 
        !           395: handle is deallocated.
        !           396: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !           397: diagnostic information in the event of an error. 
        !           398: placeholder (IN) - the placeholder attributes are specified by name if ocibindn() 
        !           399: is being called.
        !           400: placeh_len (IN) - the length of the placeholder name specified in placeholder.
        !           401: valuep (IN/OUT) - a pointer to a data value or an array of data values of the 
        !           402: type specified in the dty parameter. An array of data values can be specified 
        !           403: for mapping into a PL/SQL table or for providing data for SQL multiple-row 
        !           404: operations. When an array of bind values is provided, this is called an array 
        !           405: bind in OCI terms. Additional attributes of the array bind (not bind to a 
        !           406: column of ARRAY type) are set up in OCIBindArrayOfStruct() call. 
        !           407: For a REF, named data type  bind, the valuep parameter is used only for IN 
        !           408: bind data. The pointers to OUT buffers are set in the pgvpp parameter 
        !           409: initialized by OCIBindObject(). For named data type and REF binds, the bind 
        !           410: values are unpickled into the Object Cache. The OCI object navigational calls 
        !           411: can then be used to navigate the objects and the refs in the Object Cache.
        !           412: If the OCI_DATA_AT_EXEC mode is specified in the mode parameter, valuep 
        !           413: is ignored for all data types. OCIBindArrayOfStruct() cannot be used and 
        !           414: OCIBindDynamic() must be invoked to provide callback functions if desired. 
        !           415: value_sz (IN) - the size of a data value. In the case of an array bind, this is the 
        !           416: maximum size of any element possible with the actual sizes being specified in 
        !           417: the alenp parameter. 
        !           418: If the OCI_DATA_AT_EXEC mode is specified, valuesz defines the maximum 
        !           419: size of the data that can be ever provided at runtime for data types other than 
        !           420: named data types or REFs. 
        !           421: dty (IN) - the data type of the value(s) being bound. Named data types 
        !           422: (SQLT_NTY) and REFs (SQLT_REF) are valid only if the application has been 
        !           423: initialized in object mode. For named data types, or REFs, additional calls 
        !           424: must be made with the bind handle to set up the datatype-specific attributes.
        !           425: indp (IN/OUT) - pointer to an indicator variable or array. For scalar data 
        !           426: types, this is a pointer to sb2 or an array of sb2s. For named data types, 
        !           427: this pointer is ignored and the actual pointer to the indicator structure or 
        !           428: an array of indicator structures is initialized by OCIBindObject(). 
        !           429: Ignored for dynamic binds.
        !           430: See the section "Indicator Variables" on page 2-43 for more information about 
        !           431: indicator variables.
        !           432: alenp (IN/OUT) - pointer to array of actual lengths of array elements. Each 
        !           433: element in alenp is the length of the data in the corresponding element in the 
        !           434: bind value array before and after the execute. This parameter is ignored for 
        !           435: dynamic binds.
        !           436: rcodep (OUT) - pointer to array of column level return codes. This parameter 
        !           437: is ignored for dynamic binds.
        !           438: maxarr_len (IN) - the maximum possible number of elements of type dty in a 
        !           439: PL/SQL binds. This parameter is not required for non-PL/SQL binds. If 
        !           440: maxarr_len is non-zero, then either OCIBindDynamic() or 
        !           441: OCIBindArrayOfStruct() can be invoked to set up additional bind attributes. 
        !           442: curelep(IN/OUT) - a pointer to the actual number of elements. This parameter 
        !           443: is only required for PL/SQL binds.
        !           444: mode (IN) - the valid modes for this parameter are:
        !           445: OCI_DEFAULT. This is default mode.
        !           446: OCI_DATA_AT_EXEC. When this mode is selected, the value_sz 
        !           447: parameter defines the maximum size of the data that can be ever 
        !           448: provided at runtime. The application must be ready to provide the OCI 
        !           449: library runtime IN data buffers at any time and any number of times. 
        !           450: Runtime data is provided in one of the two ways:
        !           451: callbacks using a user-defined function which must be registered 
        !           452: with a subsequent call to OCIBindDynamic(). 
        !           453: a polling mechanism using calls supplied by the OCI. This mode 
        !           454: is assumed if no callbacks are defined.
        !           455: For more information about using the OCI_DATA_AT_EXEC mode, see 
        !           456: the section "Runtime Data Allocation and Piecewise Operations" on 
        !           457: page 5-16.
        !           458: When the allocated buffers are not required any more, they should be 
        !           459: freed by the client. 
        !           460: Related Functions
        !           461: OCIBindDynamic(), OCIBindObject(), OCIBindArrayOfStruct(), OCIAttrGet()
        !           462: 
        !           463: 
        !           464: -------------------------------OCIBindByPos----------------------------------
        !           465: 
        !           466: 
        !           467: OCIBindByPos()
        !           468: Name
        !           469: OCI Bind by Position
        !           470: Purpose
        !           471: Creates an association between a program variable and a placeholder in a SQL 
        !           472: statement or PL/SQL block.
        !           473: Syntax
        !           474: sword OCIBindByPos ( 
        !           475:               OCIStmt      *stmtp, 
        !           476:               OCIBind      **bindp,
        !           477:               OCIError     *errhp,
        !           478:               ub4          position,
        !           479:               dvoid        *valuep,
        !           480:               sb4          value_sz,
        !           481:               ub2          dty,
        !           482:               dvoid        *indp,
        !           483:               ub2          *alenp,
        !           484:               ub2          *rcodep,
        !           485:               ub4          maxarr_len,
        !           486:               ub4          *curelep, 
        !           487:               ub4          mode);
        !           488: 
        !           489: Description
        !           490: This call is used to perform a basic bind operation. The bind creates an 
        !           491: association between the address of a program variable and a placeholder in a 
        !           492: SQL statement or PL/SQL block. The bind call also specifies the type of data 
        !           493: which is being bound, and may also indicate the method by which data will be 
        !           494: provided at runtime.
        !           495: This function also implicitly allocates the bind handle indicated by the bindp 
        !           496: parameter.
        !           497: Data in an OCI application can be bound to placeholders statically or 
        !           498: dynamically. Binding is static when all the IN bind data and the OUT bind 
        !           499: buffers are well-defined just before the execute. Binding is dynamic when the 
        !           500: IN bind data and the OUT bind buffers are provided by the application on 
        !           501: demand at execute time to the client library. Dynamic binding is indicated by 
        !           502: setting the mode parameter of this call to OCI_DATA_AT_EXEC.
        !           503: Related Functions: For more information about dynamic binding, see 
        !           504: the section "Runtime Data Allocation and Piecewise Operations" on 
        !           505: page 5-16
        !           506: Both OCIBindByName() and OCIBindByPos() take as a parameter a bind handle, 
        !           507: which is implicitly allocated by the bind call A separate bind handle is 
        !           508: allocated for each placeholder the application is binding.
        !           509: Additional bind calls may be required to specify particular attributes 
        !           510: necessary when binding certain data types or handling input data in certain 
        !           511: ways:
        !           512: If arrays of structures are being utilized, OCIBindArrayOfStruct() must 
        !           513: be called to set up the necessary skip parameters.
        !           514: If data is being provided dynamically at runtime, and the application 
        !           515: will be using user-defined callback functions, OCIBindDynamic() must 
        !           516: be called to register the callbacks.
        !           517: If a named data type is being bound, OCIBindObject() must be called to 
        !           518: specify additional necessary information.
        !           519: Parameters
        !           520: stmth (IN/OUT) - the statement handle to the SQL or PL/SQL statement 
        !           521: being processed.
        !           522: bindp (IN/OUT) - a pointer to a pointer to a bind handle which is implicitly 
        !           523: allocated by this call.  The bind handle  maintains all the bind information for 
        !           524: this particular input value. The handle is feed implicitly when the statement 
        !           525: handle is deallocated.
        !           526: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !           527: diagnostic information in the event of an error. 
        !           528: position (IN) - the placeholder attributes are specified by position if ocibindp() 
        !           529: is being called.
        !           530: valuep (IN/OUT) - a pointer to a data value or an array of data values of the 
        !           531: type specified in the dty parameter. An array of data values can be specified 
        !           532: for mapping into a PL/SQL table or for providing data for SQL multiple-row 
        !           533: operations. When an array of bind values is provided, this is called an array 
        !           534: bind in OCI terms. Additional attributes of the array bind (not bind to a 
        !           535: column of ARRAY type) are set up in OCIBindArrayOfStruct() call. 
        !           536: For a REF, named data type  bind, the valuep parameter is used only for IN 
        !           537: bind data. The pointers to OUT buffers are set in the pgvpp parameter 
        !           538: initialized by OCIBindObject(). For named data type and REF binds, the bind 
        !           539: values are unpickled into the Object Cache. The OCI object navigational calls 
        !           540: can then be used to navigate the objects and the refs in the Object Cache.
        !           541: If the OCI_DATA_AT_EXEC mode is specified in the mode parameter, valuep 
        !           542: is ignored for all data types. OCIBindArrayOfStruct() cannot be used and 
        !           543: OCIBindDynamic() must be invoked to provide callback functions if desired. 
        !           544: value_sz (IN) - the size of a data value. In the case of an array bind, this is the 
        !           545: maximum size of any element possible with the actual sizes being specified in 
        !           546: the alenp parameter. 
        !           547: If the OCI_DATA_AT_EXEC mode is specified, valuesz defines the maximum 
        !           548: size of the data that can be ever provided at runtime for data types other than 
        !           549: named data types or REFs. 
        !           550: dty (IN) - the data type of the value(s) being bound. Named data types 
        !           551: (SQLT_NTY) and REFs (SQLT_REF) are valid only if the application has been 
        !           552: initialized in object mode. For named data types, or REFs, additional calls 
        !           553: must be made with the bind handle to set up the datatype-specific attributes.
        !           554: indp (IN/OUT) - pointer to an indicator variable or array. For scalar data 
        !           555: types, this is a pointer to sb2 or an array of sb2s. For named data types, 
        !           556: this pointer is ignored and the actual pointer to the indicator structure or 
        !           557: an array of indicator structures is initialized by OCIBindObject(). Ignored 
        !           558: for dynamic binds.
        !           559: See the section "Indicator Variables" on page 2-43 for more information about 
        !           560: indicator variables.
        !           561: alenp (IN/OUT) - pointer to array of actual lengths of array elements. Each 
        !           562: element in alenp is the length of the data in the corresponding element in the 
        !           563: bind value array before and after the execute. This parameter is ignored for 
        !           564: dynamic binds.
        !           565: rcodep (OUT) - pointer to array of column level return codes. This parameter 
        !           566: is ignored for dynamic binds.
        !           567: maxarr_len (IN) - the maximum possible number of elements of type dty in a 
        !           568: PL/SQL binds. This parameter is not required for non-PL/SQL binds. If 
        !           569: maxarr_len is non-zero, then either OCIBindDynamic() or 
        !           570: OCIBindArrayOfStruct() can be invoked to set up additional bind attributes. 
        !           571: curelep(IN/OUT) - a pointer to the actual number of elements. This parameter 
        !           572: is only required for PL/SQL binds.
        !           573: mode (IN) - the valid modes for this parameter are:
        !           574: OCI_DEFAULT. This is default mode.
        !           575: OCI_DATA_AT_EXEC. When this mode is selected, the value_sz 
        !           576: parameter defines the maximum size of the data that can be ever 
        !           577: provided at runtime. The application must be ready to provide the OCI 
        !           578: library runtime IN data buffers at any time and any number of times. 
        !           579: Runtime data is provided in one of the two ways:
        !           580: callbacks using a user-defined function which must be registered 
        !           581: with a subsequent call to OCIBindDynamic() . 
        !           582: a polling mechanism using calls supplied by the OCI. This mode 
        !           583: is assumed if no callbacks are defined.
        !           584: For more information about using the OCI_DATA_AT_EXEC mode, see 
        !           585: the section "Runtime Data Allocation and Piecewise Operations" on 
        !           586: page 5-16.
        !           587: When the allocated buffers are not required any more, they should be 
        !           588: freed by the client. 
        !           589: Related Functions
        !           590: OCIBindDynamic(), OCIBindObject(), OCIBindArrayOfStruct(), OCIAttrGet()
        !           591: 
        !           592: 
        !           593: 
        !           594: -------------------------------OCIBindDynamic---------------------------------
        !           595: 
        !           596: 
        !           597: OCIBindDynamic()
        !           598: Name
        !           599: OCI Bind Dynamic Attributes
        !           600: Purpose
        !           601: This call is used to register user callbacks for dynamic data allocation. 
        !           602: Syntax
        !           603: sword OCIBindDynamic( OCIBind     *bindp,
        !           604:                     OCIError    *errhp,
        !           605:                     dvoid       *ictxp, 
        !           606:                     OCICallbackInBind         (icbfp)(
        !           607:                                 dvoid            *ictxp,
        !           608:                                 OCIBind          *bindp,
        !           609:                                 ub4              iter, 
        !           610:                                 ub4              index, 
        !           611:                                 dvoid            **bufpp,
        !           612:                                 ub4              *alenp,
        !           613:                                 ub1              *piecep, 
        !           614:                                 dvoid            **indp ),
        !           615:                     dvoid       *octxp,
        !           616:                     OCICallbackOutBind         (ocbfp)(
        !           617:                                 dvoid            *octxp,
        !           618:                                 OCIBind          *bindp,
        !           619:                                 ub4              iter, 
        !           620:                                 ub4              index, 
        !           621:                                 dvoid            **bufp, 
        !           622:                                 ub4              **alenpp,
        !           623:                                 ub1              *piecep,
        !           624:                                 dvoid            **indpp, 
        !           625:                                 ub2              **rcodepp)   );
        !           626: Comments
        !           627: This call is used to register user-defined callback functions for providing data 
        !           628: for an UPDATE or INSERT if OCI_DATA_AT_EXEC mode was specified in a 
        !           629: previous call to OCIBindByName() or OCIBindByPos(). 
        !           630: The callback function pointers must return OCI_CONTINUE if it the call is 
        !           631: successful. Any return code other than OCI_CONTINUE signals that the client 
        !           632: wishes to abort processing immediately.
        !           633: For more information about the OCI_DATA_AT_EXEC mode, see the section 
        !           634: "Runtime Data Allocation and Piecewise Operations" on page 5-16.
        !           635: Parameters
        !           636: bindp (IN/OUT) - a bind handle returned by a call to OCIBindByName() or 
        !           637: OCIBindByPos(). 
        !           638: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !           639: diagnostic information in the event of an error. 
        !           640: ictxp (IN) - the context pointer required by the call back function icbfp. 
        !           641: icbfp (IN) - the callback function which returns a pointer to the IN bind 
        !           642: value or piece at run time. The callback takes in the following parameters. 
        !           643: ictxp (IN/OUT) - the context pointer for this callback function. 
        !           644: bindp (IN) - the bind handle passed in to uniquely identify this bind 
        !           645: variable. 
        !           646: iter (IN) - 1-based execute iteration value. 
        !           647: index (IN) - index of the current array, for an array bind. 1 based not 
        !           648: greater than curele parameter of the bind call. 
        !           649: index (IN) - index of the current array, for an array bind. This parameter 
        !           650: is 1-based, and may not be greater than curele parameter of the bind call. 
        !           651: bufpp (OUT) - the pointer to the buffer. 
        !           652: piecep (OUT) - which piece of the bind value. This can be one of the 
        !           653: following values - OCI_ONE_PIECE, OCI_FIRST_PIECE, 
        !           654: OCI_NEXT_PIECE and OCI_LAST_PIECE.
        !           655: indp (OUT) - contains the indicator value. This is apointer to either an 
        !           656: sb2 value or a pointer to an indicator structure for binding named data 
        !           657: types. 
        !           658: indszp (OUT) - contains the indicator value size. A pointer containing 
        !           659: the size of either an sb2 or an indicator structure pointer. 
        !           660: octxp (IN) - the context pointer required by the callback function ocbfp. 
        !           661: ocbfp (IN) - the callback function which returns a pointer to the OUT bind 
        !           662: value or piece at run time. The callback takes in the following parameters. 
        !           663: octxp (IN/OUT) - the context pointer for this call back function. 
        !           664: bindp (IN) - the bind handle passed in to uniquely identify this bind 
        !           665: variable. 
        !           666: iter (IN) - 1-based execute iteration value. 
        !           667: index (IN) - index of the current array, for an array bind. This parameter 
        !           668: is 1-based, and must not be greater than curele parameter of the bind call. 
        !           669: bufpp (OUT) - a pointer to a buffer to write the bind value/piece. 
        !           670: buflp (OUT) - returns the buffer size. 
        !           671: alenpp (OUT) - a pointer to a storage for OCI to fill in the size of the bind 
        !           672: value/piece after it has been read. 
        !           673: piecep (IN/OUT) - which piece of the bind value. It will be set by the 
        !           674: library to be one of the following values - OCI_ONE_PIECE or 
        !           675: OCI_NEXT_PIECE. The callback function can leave it unchanged or set 
        !           676: it to OCI_FIRST_PIECE or OCI_LAST_PIECE. By default - 
        !           677: OCI_ONE_PIECE. 
        !           678: indpp (OUT) - returns a pointer to contain the indicator value which 
        !           679: either an sb2 value or a pointer to an indicator structure for named data 
        !           680: types. 
        !           681: indszpp (OUT) - returns a pointer to return the size of the indicator 
        !           682: value which is either size of an sb2 or size of an indicator structure. 
        !           683: rcodepp (OUT) - returns a pointer to contains the return code. 
        !           684: Related Functions
        !           685: OCIAttrGet()
        !           686: 
        !           687: 
        !           688: 
        !           689: ---------------------------------OCIBindObject--------------------------------
        !           690: 
        !           691: 
        !           692: OCIBindObject()
        !           693: Name
        !           694: OCI Bind Object
        !           695: Purpose
        !           696: This function sets up additional attributes which are required for a named 
        !           697: data type (object)  bind.
        !           698: Syntax
        !           699: sword OCIBindObject ( OCIBind          *bindp,
        !           700:                     OCIError         *errhp, 
        !           701:                     CONST OCIType    *type,
        !           702:                     dvoid            **pgvpp, 
        !           703:                     ub4              *pvszsp, 
        !           704:                     dvoid            **indpp, 
        !           705:                     ub4              *indszp, );
        !           706: Comments
        !           707: This function sets up additional attributes which binding a named data type 
        !           708: or a REF. An error will be returned if this function is called when the OCI 
        !           709: environment has been initialized in non-object mode. 
        !           710: This call takes as a paramter a type descriptor object (TDO) of datatype 
        !           711: OCIType for the named data type being defined.  The TDO can be retrieved 
        !           712: with a call to OCITypeByName().
        !           713: If the OCI_DATA_AT_EXEC mode was specified in ocibindn() or ocibindp(), the 
        !           714: pointers to the IN buffers are obtained either using the callback icbfp 
        !           715: registered in the OCIBindDynamic() call or by the OCIStmtSetPieceInfo() call. 
        !           716: The buffers are dynamically allocated for the OUT data and the pointers to 
        !           717: these buffers are returned either by calling ocbfp() registered by the 
        !           718: OCIBindDynamic() or by setting the pointer to the buffer in the buffer passed 
        !           719: in by OCIStmtSetPieceInfo() called when OCIStmtExecute() returned 
        !           720: OCI_NEED_DATA. The memory of these client library- allocated buffers must be 
        !           721: freed when not in use anymore by using the OCIObjectFreee() call.
        !           722: Parameters
        !           723: bindp ( IN/OUT) - the bind handle returned by the call to OCIBindByName() 
        !           724: or OCIBindByPos(). 
        !           725: errhp ( IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !           726: diagnostic information in the event of an error.
        !           727: type ( IN) - points to the TDO which describes the type of the program 
        !           728: variable being bound. Retrieved by calling OCITypeByName().
        !           729: pgvpp ( IN/OUT) - points to a pointer to the program variable buffer. For an 
        !           730: array, pgvpp points to an array of pointers. When the bind variable is also an 
        !           731: OUT variable, the OUT Named Data Type value or REF is allocated 
        !           732: (unpickled) in the Object Cache, and a pointer to the value or REF is returned,
        !           733: At the end of execute, when all OUT values have been received, pgvpp points 
        !           734: to an array of pointer(s) to these newly allocated named data types in the 
        !           735: object cache. 
        !           736: pgvpp is ignored if the OCI_DATA_AT_EXEC mode is set. Then the Named 
        !           737: Data Type buffers are requested at runtime. For static array binds, skip 
        !           738: factors may be specified using the OCIBindArrayOfStruct() call. The skip 
        !           739: factors are used to compute the address of the next pointer to the value, the 
        !           740: indicator structure and their sizes.
        !           741: pvszsp ( IN/OUT) - points to the size of the program variable. The size of the 
        !           742: named data type is not required on input. For an array, pvszsp is an array of 
        !           743: ub4s. On return, for OUT bind variables, this points to size(s) of the Named 
        !           744: Data Types and REFs received. pvszsp is ignored if the OCI_DATA_AT_EXEC 
        !           745: mode is set. Then the size of the buffer is taken at runtime.
        !           746: indpp ( IN/OUT) - points to a pointer to the program variable buffer 
        !           747: containing the parallel indicator structure. For an array, points to an array of 
        !           748: pointers. When the bind variable is also an OUT bind variable, memory is 
        !           749: allocated in the object cache, to store the unpickled OUT indicator values. At 
        !           750: the end of the execute when all OUT values have been received, indpp points 
        !           751: to the pointer(s) to these newly allocated indicator structure(s). 
        !           752: indpp is ignored if the OCI_DATA_AT_EXEC mode is set. Then the indicator 
        !           753: is requested at runtime.
        !           754: indszp ( IN/OUT) - points to the size of the IN indicator structure program 
        !           755: variable. For an array, it is an array of sb2s. On return for OUT bind variables, 
        !           756: this points to size(s) of the received OUT indicator structures.
        !           757: indszp is ignored if the OCI_DATA_AT_EXEC mode is set. Then the indicator 
        !           758: size is requested at runtime.
        !           759: Related Functions
        !           760: OCIAttrGet()
        !           761: 
        !           762: 
        !           763: 
        !           764: ----------------------------------OCIBreak------------------------------------
        !           765: 
        !           766: 
        !           767: 
        !           768: OCIBreak()
        !           769: Name
        !           770: OCI Break
        !           771: Purpose
        !           772: This call performs an immediate (asynchronous) abort of any currently 
        !           773: executing OCI function that is associated with a server .
        !           774: Syntax
        !           775: sword OCIBreak ( dvoid      *hndlp,
        !           776:                  OCIError   *errhp);
        !           777: Comments
        !           778: This call performs an immediate (asynchronous) abort of any currently 
        !           779: executing OCI function that is associated with a server. It is normally used 
        !           780: to stop a long-running OCI call being processed on the server.
        !           781: This call can take either the service context handle or the server context 
        !           782: handle as a parameter to identify the function to be aborted.
        !           783: Parameters
        !           784: hndlp (IN) - the service context handle or the server context handle.
        !           785: errhp (IN) - an error handle which can be passed to OCIErrorGet() for 
        !           786: diagnostic information in the event of an error.
        !           787: Related Functions
        !           788: 
        !           789: ------------------------------OCIDateTimeAssign --------------------------
        !           790: sword OCIDateTimeAssign(dvoid *hndl, OCIError *err, CONST OCIDateTime *from, 
        !           791:                         OCIDateTime *to);
        !           792: NAME: OCIDateTimeAssign - OCIDateTime Assignment
        !           793: PARAMETERS:
        !           794: hndl (IN) - Session/Env handle.
        !           795: err (IN/OUT) - error handle. If there is an error, it is
        !           796:                 recorded in 'err' and this function returns OCI_ERROR.
        !           797:                 The error recorded in 'err' can be retrieved by calling
        !           798:                 OCIErrorGet().
        !           799: from (IN) - datetime to be assigned
        !           800: to (OUT) - lhs of assignment
        !           801: DESCRIPTION:
        !           802:         Performs date assignment. The type of the output will be same as that
        !           803:        of input
        !           804: 
        !           805: ------------------------------OCIDateTimeCheck--------------------
        !           806: sword OCIDateTimeCheck(dvoid *hndl, OCIError *err, CONST OCIDateTime *date, 
        !           807:                 ub4 *valid );
        !           808: NAME: OCIDateTimeCheck - OCIDateTime CHecK if the given date is valid
        !           809: PARAMETERS:
        !           810: hndl (IN) - Session/Env handle. 
        !           811: err (IN/OUT) - error handle. If there is an error, it is
        !           812:                 recorded in 'err' and this function returns OCI_ERROR.
        !           813:                 The error recorded in 'err' can be retrieved by calling
        !           814:                 OCIErrorGet().
        !           815: date (IN) - date to be checked
        !           816: type (IN) - type of the input datetime(OCI_DATE, OCI_TIME, 
        !           817:                                OCI_TIMESTAMP,  OCI_TZTIMESTAMP, OCI_TZTIME)
        !           818: valid (OUT) -  returns zero for a valid date, otherwise 
        !           819:                the ORed combination of all error bits specified below:
        !           820:    Macro name                   Bit number      Error
        !           821:    ----------                   ----------      -----
        !           822:    OCI_DATE_INVALID_DAY         0x1             Bad day
        !           823:    OCI_DATE_DAY_BELOW_VALID     0x2             Bad DAy Low/high bit (1=low)
        !           824:    OCI_DATE_INVALID_MONTH       0x4             Bad MOnth
        !           825:    OCI_DATE_MONTH_BELOW_VALID   0x8             Bad MOnth Low/high bit (1=low)
        !           826:    OCI_DATE_INVALID_YEAR        0x10            Bad YeaR
        !           827:    OCI_DATE_YEAR_BELOW_VALID    0x20            Bad YeaR Low/high bit (1=low)
        !           828:    OCI_DATE_INVALID_HOUR        0x40            Bad HouR
        !           829:    OCI_DATE_HOUR_BELOW_VALID    0x80            Bad HouR Low/high bit (1=low)
        !           830:    OCI_DATE_INVALID_MINUTE      0x100           Bad MiNute
        !           831:    OCI_DATE_MINUTE_BELOW_VALID 0x200           Bad MiNute Low/high bit (1=low)
        !           832:    OCI_DATE_INVALID_SECOND      0x400           Bad SeCond
        !           833:    OCI_DATE_SECOND_BELOW_VALID  0x800           bad second Low/high bit (1=low)
        !           834:    OCI_DATE_DAY_MISSING_FROM_1582 0x1000        Day is one of those "missing"
        !           835:                                                 from 1582
        !           836:    OCI_DATE_YEAR_ZERO           0x2000          Year may not equal zero
        !           837:    OCI_DATE_INVALID_TIMEZONE    0x4000          Bad Timezone
        !           838:    OCI_DATE_INVALID_FORMAT      0x8000          Bad date format input
        !           839: 
        !           840:    So, for example, if the date passed in was 2/0/1990 25:61:10 in
        !           841:    (month/day/year hours:minutes:seconds format), the error returned
        !           842:    would be OCI_DATE_INVALID_DAY | OCI_DATE_DAY_BELOW_VALID |
        !           843:    OCI_DATE_INVALID_HOUR | OCI_DATE_INVALID_MINUTE
        !           844: 
        !           845: DESCRIPTION:
        !           846:        Check if the given date is valid.
        !           847: RETURNS:
        !           848:         OCI_SUCCESS if the function completes successfully.
        !           849:         OCI_INVALID_HANDLE if 'err' is NULL.
        !           850:         OCI_ERROR if
        !           851:          'date' and 'valid' pointers are NULL pointers
        !           852: 
        !           853: ------------------------------- OCIDateTimeCompare-------------------------
        !           854: sword OCIDateTimeCompare(dvoid *hndl, OCIError *err, CONST OCIDateTime *date1, 
        !           855:                      CONST OCIDateTime *date2,  sword *result );
        !           856: NAME: OCIDateTimeCompare - OCIDateTime CoMPare dates
        !           857: PARAMETERS:
        !           858: hndl (IN) - Session/Env handle. 
        !           859: err (IN/OUT) - error handle. If there is an error, it is
        !           860:                 recorded in 'err' and this function returns OCI_ERROR.
        !           861:                 The error recorded in 'err' can be retrieved by calling
        !           862:                 OCIErrorGet().
        !           863: date1, date2 (IN) - dates to be compared
        !           864: type (IN)  - Type of datetime to be compared. Both input datetimes
        !           865:                        should be of same type.(OCI_DATE, OCI_TIME, 
        !           866:                                OCI_TIMESTAMP, OCI_TZTIMESTAMP, OCI_TZTIME)
        !           867: result (OUT) - comparison result, 0 if equal, -1 if date1 < date2, 
        !           868:                1 if date1 > date2
        !           869: DESCRIPTION:
        !           870: The function OCIDateCompare compares two dates. It returns -1 if 
        !           871: date1 is smaller than date2, 0 if they are equal, and 1 if date1 is 
        !           872: greater than date2.
        !           873: RETURNS:
        !           874:        OCI_SUCCESS if the function completes successfully.
        !           875:         OCI_INVALID_HANDLE if 'err' is NULL.
        !           876:         OCI_ERROR if
        !           877:          invalid date
        !           878:          input dates are not mutually comparable
        !           879: 
        !           880: ------------------------------OCIDateTimeConvert----------------------
        !           881: sword OCIDateTimeConvert(dvoid *hndl, OCIError *err, OCIDateTime *indate, 
        !           882:                                OCIDateTime *outdate);
        !           883: NAME: OCIDateTimeConvert - Conversion between different DATETIME types
        !           884: PARAMETERS:
        !           885: hndl (IN) - Session/Env handle. 
        !           886: err (IN/OUT) - error handle. If there is an error, it is
        !           887:                 recorded in 'err' and this function returns OCI_ERROR.
        !           888:                 The error recorded in 'err' can be retrieved by calling
        !           889:                 OCIErrorGet().
        !           890: indate (IN) - pointer to input date
        !           891: outdate (OUT) - pointer to output datetime 
        !           892: DESCRIPTION: Converts one datetime type to another. The result type is
        !           893:        the type of the 'outdate' descriptor.
        !           894: RETURNS:
        !           895:         OCI_SUCCESS if the function completes successfully.
        !           896:         OCI_INVALID_HANDLE if 'err' is NULL.
        !           897:        OCI_ERROR if
        !           898:            conversion not possible.
        !           899:    
        !           900: ---------------------------- OCIDateTimeFromText-----------------------
        !           901: sword OCIDateTimeFromText(dvoid *hndl, OCIError *err, CONST OraText *date_str, 
        !           902:                      size_t d_str_length, CONST OraText *fmt, ub1 fmt_length, 
        !           903:                      CONST OraText *lang_name, size_t lang_length, 
        !           904:                      OCIDateTime *date );
        !           905: NAME: OCIDateTimeFromText - OCIDateTime convert String FROM Date
        !           906: PARAMETERS:
        !           907: hndl (IN) - Session/Env handle. If Session Handle is passed, the 
        !           908:                    conversion takes place in session NLS_LANGUAGE and
        !           909:                    session NLS_CALENDAR, otherwise the default is used.
        !           910: err (IN/OUT) - error handle. If there is an error, it is
        !           911:                 recorded in 'err' and this function returns OCI_ERROR.
        !           912:                 The error recorded in 'err' can be retrieved by calling
        !           913:                 OCIErrorGet().
        !           914: date_str (IN) - input string to be converted to Oracle date
        !           915: d_str_length (IN) - size of the input string, if the length is -1
        !           916:                then 'date_str' is treated as a null terminated  string
        !           917: fmt (IN) - conversion format; if 'fmt' is a null pointer, then
        !           918:                 the string is expected to be in the default format for
        !           919:                the datetime type.
        !           920: fmt_length (IN) - length of the 'fmt' parameter
        !           921: lang_name (IN) - language in which the names and abbreviations of
        !           922:                days and months are specified, if null i.e. (OraText *)0,
        !           923:                the default language of session is used, 
        !           924: lang_length (IN) - length of the 'lang_name' parameter
        !           925: date (OUT) - given string converted to date
        !           926: DESCRIPTION:
        !           927:        Converts the given string to Oracle datetime type set in the 
        !           928:         OCIDateTime descriptor according to the specified format. Refer to 
        !           929:         "TO_DATE" conversion function described in "Oracle SQL Language 
        !           930:         Reference Manual" for a description of format.
        !           931: RETURNS:
        !           932:         OCI_SUCCESS if the function completes successfully.
        !           933:         OCI_INVALID_HANDLE if 'err' is NULL.
        !           934:         OCI_ERROR if
        !           935:          invalid format
        !           936:          unknown language
        !           937:          invalid input string
        !           938: 
        !           939: --------------------------- OCIDateTimeGetDate-------------------------
        !           940: void OCIDateTimeGetDate(dvoid *hndl, OCIError *err,  CONST OCIDateTime *date, 
        !           941:                 sb2 *year, ub1 *month, ub1 *day );
        !           942: NAME: OCIDateTimeGetDate - OCIDateTime Get Date (year, month, day)  
        !           943:                                portion of DATETIME. 
        !           944: PARAMETERS:
        !           945: hndl (IN) - Session/Env handle. 
        !           946: err (IN/OUT) - error handle. If there is an error, it is
        !           947:                 recorded in 'err' and this function returns OCI_ERROR.
        !           948:                 The error recorded in 'err' can be retrieved by calling
        !           949:                 OCIErrorGet().
        !           950: datetime (IN) - Pointer to OCIDateTime 
        !           951: year      (OUT) - year value
        !           952: month     (OUT) - month value
        !           953: day       (OUT) - day value
        !           954: 
        !           955: --------------------------- OCIDateTimeGetTime ------------------------
        !           956: void OCIDateTimeGetTime(dvoid *hndl, OCIError *err, OCIDateTime *datetime, 
        !           957:                 ub1 *hour, ub1 *min, ub1 *sec, ub4 *fsec);
        !           958: NAME: OCIDateTimeGetTime - OCIDateTime Get Time (hour, min, second, 
        !           959:                        fractional second)  of DATETIME. 
        !           960: PARAMETERS:
        !           961: hndl (IN) - Session/Env handle. 
        !           962: err (IN/OUT) - error handle. If there is an error, it is
        !           963:                 recorded in 'err' and this function returns OCI_ERROR.
        !           964:                 The error recorded in 'err' can be retrieved by calling
        !           965:                 OCIErrorGet().
        !           966: datetime (IN) - Pointer to OCIDateTime 
        !           967: hour      (OUT) - hour value
        !           968: min       (OUT) - minute value
        !           969: sec       (OUT) - second value
        !           970: fsec      (OUT) - Fractional Second value
        !           971: 
        !           972: --------------------------- OCIDateTimeGetTimeZoneOffset ----------------------
        !           973: sword OCIDateTimeGetTimeZoneOffset(dvoid *hndl,OCIError *err,CONST 
        !           974:               OCIDateTime *datetime,sb1 *hour,sb1  *minute);
        !           975:  
        !           976: NAME: OCIDateTimeGetTimeZoneOffset - OCIDateTime Get TimeZone (hour, minute)  
        !           977:                          portion of DATETIME. 
        !           978: PARAMETERS:
        !           979: hndl (IN) - Session/Env handle. 
        !           980: err (IN/OUT) - error handle. If there is an error, it is
        !           981:                 recorded in 'err' and this function returns OCI_ERROR.
        !           982:                 The error recorded in 'err' can be retrieved by calling
        !           983:                 OCIErrorGet().
        !           984: datetime (IN) - Pointer to OCIDateTime 
        !           985: hour      (OUT) - TimeZone Hour value
        !           986: minute     (OUT) - TimeZone Minute value
        !           987:  
        !           988: 
        !           989: ------------------------------OCIDateTimeIntervalAdd----------------------
        !           990: sword OCIDateTimeIntervalAdd(dvoid *hndl, OCIError *err, OCIDateTime *datetime,
        !           991:         OCIInterval *inter, OCIDateTime *outdatetime);
        !           992: NAME: OCIDateTimeIntervalAdd - Adds an interval to datetime
        !           993: PARAMETERS:
        !           994: hndl (IN) - Session/Env handle.
        !           995: err (IN/OUT) - error handle. If there is an error, it is
        !           996:                 recorded in 'err' and this function returns OCI_ERROR.
        !           997:                 The error recorded in 'err' can be retrieved by calling
        !           998:                 OCIErrorGet().
        !           999: datetime (IN) - pointer to input datetime
        !          1000: inter    (IN) - pointer to interval 
        !          1001: outdatetime (IN) - pointer to output datetime. The output datetime 
        !          1002:                                will be of same type as input datetime
        !          1003: DESCRIPTION: 
        !          1004:        Adds an interval to a datetime to produce a resulting datetime
        !          1005: RETURNS:
        !          1006:         OCI_SUCCESS if the function completes successfully.
        !          1007:         OCI_INVALID_HANDLE if 'err' is NULL.
        !          1008:        OCI_ERROR if:
        !          1009:                resulting date is before Jan 1, -4713
        !          1010:                resulting date is after Dec 31, 9999
        !          1011: 
        !          1012: ------------------------------OCIDateTimeIntervalSub----------------------
        !          1013: sword OCIDateTimeIntervalSub(dvoid *hndl, OCIError *err, OCIDateTime *datetime,
        !          1014:         OCIInterval *inter, OCIDateTime *outdatetime);
        !          1015: NAME: OCIDateTimeIntervalSub - Subtracts an interval from a datetime
        !          1016: PARAMETERS:
        !          1017: hndl (IN) - Session/Env handle. 
        !          1018: err (IN/OUT) - error handle. If there is an error, it is
        !          1019:                 recorded in 'err' and this function returns OCI_ERROR.
        !          1020:                 The error recorded in 'err' can be retrieved by calling
        !          1021:                 OCIErrorGet().
        !          1022: datetime (IN) - pointer to input datetime
        !          1023: inter    (IN) - pointer to interval 
        !          1024: outdatetime (IN) - pointer to output datetime. The output datetime 
        !          1025:                                will be of same type as input datetime
        !          1026: DESCRIPTION: 
        !          1027:        Subtracts an interval from a datetime and stores the result in a
        !          1028:        datetime
        !          1029: RETURNS:
        !          1030:         OCI_SUCCESS if the function completes successfully.
        !          1031:         OCI_INVALID_HANDLE if 'err' is NULL.
        !          1032:        OCI_ERROR if:
        !          1033:                resulting date is before Jan 1, -4713
        !          1034:                resulting date is after Dec 31, 9999
        !          1035: 
        !          1036: --------------------------- OCIDateTimeConstruct-------------------------
        !          1037: sword OCIDateTimeConstruct(dvoid  *hndl,OCIError *err,OCIDateTime *datetime,
        !          1038:                sb2 year,ub1 month,ub1 day,ub1 hour,ub1 min,ub1 sec,ub4 fsec,
        !          1039:                OraText  *timezone,size_t timezone_length);
        !          1040: 
        !          1041:    NAME: OCIDateTimeConstruct - Construct an OCIDateTime. Only the relevant
        !          1042:        fields for the OCIDateTime descriptor types are used.
        !          1043:    PARAMETERS:
        !          1044:         hndl (IN) - Session/Env handle. 
        !          1045:         err (IN/OUT) - error handle. If there is an error, it is
        !          1046:                 recorded in 'err' and this function returns OCI_ERROR.
        !          1047:                 The error recorded in 'err' can be retrieved by calling
        !          1048:                 OCIErrorGet().
        !          1049:         datetime (IN) - Pointer to OCIDateTime 
        !          1050:         year      (IN) - year value
        !          1051:         month     (IN) - month value
        !          1052:         day       (IN) - day value        
        !          1053:         hour      (IN) - hour value
        !          1054:         min       (IN) - minute value
        !          1055:         sec       (IN) - second value
        !          1056:         fsec      (IN) - Fractional Second value
        !          1057:         timezone  (IN) - Timezone string
        !          1058:         timezone_length(IN) - Length of timezone string
        !          1059: DESCRIPTION:
        !          1060:        Constructs a DateTime descriptor. The type of the datetime is the
        !          1061:        type of the OCIDateTime descriptor. Only the relevant fields based
        !          1062:        on the type are used. For Types with timezone, the date and time
        !          1063:        fields are assumed to be in the local time of the specified timezone.
        !          1064:        If timezone is not specified, then session default timezone is
        !          1065:        assumed.
        !          1066: RETURNS:
        !          1067:         OCI_SUCCESS if the function completes successfully.
        !          1068:         OCI_ERROR if datetime is not valid.
        !          1069: --------------------------- OCIDateTimeSysTimeStamp---------------------
        !          1070: sword OCIDateTimeSysTimeStamp(dvoid *hndl, OCIError *err, 
        !          1071:               OCIDateTime *sys_date );
        !          1072:  
        !          1073: NAME: OCIDateTimeSysTimeStamp - Returns system date/time as a TimeStamp with 
        !          1074:                       timezone
        !          1075: PARAMETERS:
        !          1076: hndl (IN) - Session/Env handle. 
        !          1077: err (IN/OUT) - error handle. If there is an error, it is
        !          1078:                 recorded in 'err' and this function returns OCI_ERROR.
        !          1079:                 The error recorded in 'err' can be retrieved by calling
        !          1080:                 OCIErrorGet().
        !          1081: sys_date (OUT) - Pointer to output timestamp
        !          1082:  
        !          1083: DESCRIPTION: 
        !          1084:         Gets the system current date and time as a timestamp with timezone
        !          1085: RETURNS:
        !          1086:         OCI_SUCCESS if the function completes successfully.
        !          1087:         OCI_INVALID_HANDLE if 'err' is NULL.
        !          1088:  
        !          1089: 
        !          1090: ------------------------------OCIDateTimeSubtract-----------------------
        !          1091: sword OCIDateTimeSubtract(dvoid *hndl, OCIError *err, OCIDateTime *indate1, 
        !          1092:                OCIDateTime *indate2,   OCIInterval *inter);
        !          1093: NAME: OCIDateTimeSubtract - subtracts two datetimes to return an interval
        !          1094: PARAMETERS:
        !          1095: hndl (IN) - Session/Env handle. 
        !          1096: err (IN/OUT) - error handle. If there is an error, it is
        !          1097:                 recorded in 'err' and this function returns OCI_ERROR.
        !          1098:                 The error recorded in 'err' can be retrieved by calling
        !          1099:                 OCIErrorGet().
        !          1100: indate1(IN) - pointer to subtrahend
        !          1101: indate2(IN) - pointer to minuend
        !          1102: inter  (OUT) - pointer to output interval
        !          1103: DESCRIPTION: 
        !          1104:        Takes two datetimes as input and stores their difference in an 
        !          1105:         interval. The type of the result interval is the type of the 
        !          1106:         'inter' descriptor.
        !          1107: RETURNS:
        !          1108:         OCI_SUCCESS if the function completes successfully.
        !          1109:         OCI_INVALID_HANDLE if 'err' is NULL.
        !          1110:        OCI_ERROR if
        !          1111:           datetimes are not comparable.
        !          1112: 
        !          1113: --------------------------- OCIDateTimeToText--------------------------
        !          1114: sword OCIDateTimeToText(dvoid *hndl, OCIError *err, CONST OCIDateTime *date, 
        !          1115:                         CONST OraText *fmt, ub1 fmt_length, ub1 fsprec,
        !          1116:                         CONST OraText *lang_name, size_t lang_length, 
        !          1117:                         size_t *buf_size, OraText *buf );
        !          1118: NAME: OCIDateTimeToText - OCIDateTime convert date TO String 
        !          1119: PARAMETERS:
        !          1120: hndl (IN) - Session/Env handle. If Session Handle is passed, the 
        !          1121:                    conversion takes place in session NLS_LANGUAGE and
        !          1122:                    session NLS_CALENDAR, otherwise the default is used.
        !          1123: err (IN/OUT) - error handle. If there is an error, it is
        !          1124:                 recorded in 'err' and this function returns OCI_ERROR.
        !          1125:                 The error recorded in 'err' can be retrieved by calling
        !          1126:                 OCIErrorGet().
        !          1127: date (IN) - Oracle datetime to be converted
        !          1128: fmt (IN) - conversion format, if null string pointer (OraText*)0, then
        !          1129:                 the date is converted to a character string in the
        !          1130:                 default format for that type.
        !          1131: fmt_length (IN) - length of the 'fmt' parameter
        !          1132: fsprec (IN) - specifies the fractional second precision in which the
        !          1133:                fractional seconds is returned.
        !          1134: lang_name (IN) - specifies the language in which the names and 
        !          1135:                abbreviations of months and days are returned;
        !          1136:                default language of session is used if 'lang_name' 
        !          1137:                is null i.e. (OraText *)0
        !          1138: lang_length (IN) - length of the 'nls_params' parameter
        !          1139: buf_size (IN/OUT) - size of the buffer; size of the resulting string
        !          1140:                 is returned via this parameter
        !          1141: buf (OUT) - buffer into which the converted string is placed
        !          1142: DESCRIPTION:
        !          1143:         Converts the given date to a string according to the specified format.
        !          1144:         Refer to "TO_DATE" conversion function described in
        !          1145:         "Oracle SQL Language Reference Manual" for a description of format
        !          1146:         and NLS arguments. The converted null-terminated date string is
        !          1147:         stored in the buffer 'buf'.
        !          1148: RETURNS:
        !          1149:         OCI_SUCCESS if the function completes successfully.
        !          1150:         OCI_INVALID_HANDLE if 'err' is NULL.
        !          1151:         OCI_ERROR if
        !          1152:          buffer too small
        !          1153:          invalid format
        !          1154:          unknown language
        !          1155:           overflow error
        !          1156: 
        !          1157: 
        !          1158: 
        !          1159: ------------------------------OCIDefineArrayOfStruct--------------------------
        !          1160: 
        !          1161: 
        !          1162: OCIDefineArrayOfStruct()
        !          1163: Name
        !          1164: OCI Define for Array of Structures
        !          1165: Purpose
        !          1166: This call specifies additional attributes necessary for a static array define.
        !          1167: Syntax
        !          1168: sword OCIDefineArrayOfStruct ( OCIDefine   *defnp,
        !          1169:                              OCIError    *errhp,
        !          1170:                              ub4         pvskip, 
        !          1171:                              ub4         indskip, 
        !          1172:                              ub4         rlskip,
        !          1173:                              ub4         rcskip );
        !          1174: Comments
        !          1175: This call specifies additional attributes necessary for an array define, used in 
        !          1176: an array of structures (multi-row, multi-column) fetch.
        !          1177: For more information about skip parameters, see the section "Skip Parameters" 
        !          1178: on page 4-17.
        !          1179: Parameters
        !          1180: defnp (IN) - the handle to the define structure which was returned by a call 
        !          1181: to OCIDefineByPos().
        !          1182: errhp (IN) - an error handle which can be passed to OCIErrorGet() for 
        !          1183: diagnostic information in the event of an error.
        !          1184: pvskip (IN) - skip parameter for the next data value.
        !          1185: indskip (IN) - skip parameter for the next indicator location. 
        !          1186: rlskip (IN) - skip parameter for the next return length value.
        !          1187: rcskip (IN) - skip parameter for the next return code.
        !          1188: Related Functions
        !          1189: OCIAttrGet()
        !          1190: 
        !          1191: 
        !          1192: 
        !          1193: 
        !          1194: 
        !          1195: OCIDefineByPos()
        !          1196: Name
        !          1197: OCI Define By Position
        !          1198: Purpose
        !          1199: Associates an item in a select-list with the type and output data buffer. 
        !          1200: Syntax
        !          1201: sb4 OCIDefineByPos ( 
        !          1202:               OCIStmt     *stmtp, 
        !          1203:               OCIDefine   **defnp,
        !          1204:               OCIError    *errhp,
        !          1205:               ub4         position,
        !          1206:               dvoid       *valuep,
        !          1207:               sb4         value_sz,
        !          1208:               ub2         dty,
        !          1209:               dvoid       *indp,
        !          1210:               ub2         *rlenp,
        !          1211:               ub2         *rcodep,
        !          1212:               ub4         mode );
        !          1213: Comments
        !          1214: This call defines an output buffer which will receive data retreived from 
        !          1215: Oracle. The define is a local step which is necessary when a SELECT statement 
        !          1216: returns data to your OCI application.
        !          1217: This call also implicitly allocates the define handle for the select-list item.
        !          1218: Defining attributes of a column for a fetch is done in one or more calls. The 
        !          1219: first call is to OCIDefineByPos(), which defines the minimal attributes 
        !          1220: required to specify the fetch. 
        !          1221: This call takes as a parameter a define handle, which must have been 
        !          1222: previously allocated with a call to OCIHandleAlloc().
        !          1223: Following the call to OCIDefineByPos() additional define calls may be 
        !          1224: necessary for certain data types or fetch modes:
        !          1225: A call to OCIDefineArrayOfStruct() is necessary to set up skip parameters 
        !          1226: for an array fetch of multiple columns.
        !          1227: A call to OCIDefineObject() is necessary to set up the appropriate 
        !          1228: attributes of a named data type fetch. In this case the data buffer pointer 
        !          1229: in ocidefn() is ignored.
        !          1230: Both OCIDefineArrayOfStruct() and OCIDefineObject() must be called 
        !          1231: after ocidefn() in order to fetch multiple rows with a column of named 
        !          1232: data types.
        !          1233: For a LOB define, the buffer pointer must be a lob locator of type 
        !          1234: OCILobLocator , allocated by the OCIDescAlloc() call. LOB locators, and not 
        !          1235: LOB values, are always returned for a LOB column. LOB values can then be 
        !          1236: fetched using OCI LOB calls on the fetched locator.
        !          1237: For NCHAR (fixed and varying length), the buffer pointer must point to an 
        !          1238: array of bytes sufficient for holding the required NCHAR characters. 
        !          1239: Nested table columns are defined and fetched like any other named data type. 
        !          1240: If the mode parameter is this call is set to OCI_DYNAMIC_FETCH, the client 
        !          1241: application can fetch data dynamically at runtime.
        !          1242: Runtime data can be provided in one of two ways:
        !          1243: callbacks using a user-defined function which must be registered with a 
        !          1244: subsequent call to OCIDefineDynamic(). When the client library needs a 
        !          1245: buffer to return the fetched data, the callback will be invoked and the 
        !          1246: runtime buffers provided will return a piece or the whole data. 
        !          1247: a polling mechanism using calls supplied by the OCI. This mode is 
        !          1248: assumed if no callbacks are defined. In this case, the fetch call returns the 
        !          1249: OCI_NEED_DATA error code, and a piecewise polling method is used 
        !          1250: to provide the data.
        !          1251: Related Functions: For more information about using the 
        !          1252: OCI_DYNAMIC_FETCH mode, see the section "Runtime Data 
        !          1253: Allocation and Piecewise Operations" on page 5-16 of Volume 1..
        !          1254: For more information about the define step, see the section "Defining" 
        !          1255: on page 2-30.
        !          1256: Parameters
        !          1257: stmtp (IN) - a handle to the requested SQL query operation.
        !          1258: defnp (IN/OUT) - a pointer to a pointer to a define handle which is implicitly 
        !          1259: allocated by this call.  This handle is used to  store the define information 
        !          1260: for this column.
        !          1261: errhp (IN) - an error handle which can be passed to OCIErrorGet() for 
        !          1262: diagnostic information in the event of an error.
        !          1263: position (IN) - the position of this value in the select list. Positions are 
        !          1264: 1-based and are numbered from left to right. For example, in the SELECT 
        !          1265: statement
        !          1266: SELECT empno, ssn, mgrno FROM employees;
        !          1267: empno is at position 1, ssn is at position 2, and mgrno is at position 3.
        !          1268: valuep (IN/OUT) - a pointer to a buffer or an array of buffers of the type 
        !          1269: specified in the dty parameter. A number of buffers can be specified when 
        !          1270: results for more than one row are desired in a single fetch call.
        !          1271: value_sz (IN) - the size of each valuep buffer in bytes. If the data is stored 
        !          1272: internally in VARCHAR2 format, the number of characters desired, if different 
        !          1273: from the buffer size in bytes, may be additionally specified by the using 
        !          1274: OCIAttrSet(). 
        !          1275: In an NLS conversion environment, a truncation error will be generated if the 
        !          1276: number of bytes specified is insufficient to handle the number of characters 
        !          1277: desired.
        !          1278: dty (IN) - the data type. Named data type (SQLT_NTY) and REF (SQLT_REF) 
        !          1279: are valid only if the environment has been intialized with in object mode. 
        !          1280: indp - pointer to an indicator variable or array. For scalar data types, 
        !          1281: pointer to sb2 or an array of sb2s. Ignored for named data types. For named 
        !          1282: data types, a pointer to a named data type indicator structure or an array of 
        !          1283: named data type indicator structures is associated by a subsequent 
        !          1284: OCIDefineObject() call. 
        !          1285: See the section "Indicator Variables" on page 2-43 for more information about 
        !          1286: indicator variables.
        !          1287: rlenp (IN/OUT) - pointer to array of length of data fetched. Each element in 
        !          1288: rlenp is the length of the data in the corresponding element in the row after 
        !          1289: the fetch. 
        !          1290: rcodep (OUT) - pointer to array of column-level return codes
        !          1291: mode (IN) - the valid modes are:
        !          1292: OCI_DEFAULT. This is the default mode.
        !          1293: OCI_DYNAMIC_FETCH. For applications requiring dynamically 
        !          1294: allocated data at the time of fetch, this mode must be used. The user may 
        !          1295: additionally call OCIDefineDynamic() to set up a callback function that 
        !          1296: will be invoked to receive the dynamically allocated buffers and to set 
        !          1297: up the memory allocate/free callbacks and the context for the callbacks. 
        !          1298: valuep and value_sz are ignored in this mode. 
        !          1299: Related Functions
        !          1300: OCIDefineArrayOfStruct(), OCIDefineDynamic(), OCIDefineObject()
        !          1301: 
        !          1302: 
        !          1303: 
        !          1304: 
        !          1305: OCIDefineDynamic()
        !          1306: Name
        !          1307: OCI Define Dynamic Fetch Attributes
        !          1308: Purpose
        !          1309: This call is used to set the additional attributes required if the 
        !          1310: OCI_DYNAMIC_FETCH mode was selected in OCIDefineByPos(). 
        !          1311: Syntax
        !          1312: sword OCIDefineDynamic( OCIDefine   *defnp,
        !          1313:                       OCIError    *errhp,
        !          1314:                       dvoid       *octxp, 
        !          1315:                       OCICallbackDefine (ocbfp)(
        !          1316:                                   dvoid             *octxp,
        !          1317:                                   OCIDefine         *defnp,
        !          1318:                                   ub4               iter, 
        !          1319:                                   dvoid             **bufpp,
        !          1320:                                   ub4               **alenpp,
        !          1321:                                   ub1               *piecep,
        !          1322:                                   dvoid             **indpp,
        !          1323:                                   ub2               **rcodep)  );
        !          1324: Comments
        !          1325: This call is used to set the additional attributes required if the 
        !          1326: OCI_DYNAMIC_FETCH mode has been selected in a call to 
        !          1327: OCIDefineByPos(). 
        !          1328: When the OCI_DYNAMIC_FETCH mode is selected, buffers will be 
        !          1329: dynamically allocated for REF, and named data type, values to receive the 
        !          1330: data. The pointers to these buffers will be returned. 
        !          1331: If OCI_DYNAMIC_FETCH mode was selected, and the call to 
        !          1332: OCIDefineDynamic() is skipped, then the application can fetch data piecewise 
        !          1333: using OCI calls.
        !          1334: For more information about OCI_DYNAMIC_FETCH mode, see the section 
        !          1335: "Runtime Data Allocation and Piecewise Operations" on page 5-16.
        !          1336: Parameters
        !          1337: defnp (IN/OUT) - the handle to a define structure returned by a call to 
        !          1338: OCIDefineByPos().
        !          1339: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          1340: diagnostic information in the event of an error. 
        !          1341: octxp (IN) - points to a context for the callback function. 
        !          1342: ocbfp (IN) - points to a callback function. This is invoked at runtime to get 
        !          1343: a pointer to the buffer into which the fetched data or a piece of it will be 
        !          1344: retreived. The callback also specifies the indicator, the return code and the 
        !          1345: lengths of the data piece and indicator. The callback has the following 
        !          1346: parameters:
        !          1347: octxp (IN) - a context pointer passed as an argument to all the callback 
        !          1348: functions.
        !          1349: defnp (IN) - the define handle.
        !          1350: iter (IN) - which row of this current fetch.
        !          1351: bufpp (OUT) - returns a pointer to a buffer to store the column value, ie. 
        !          1352: *bufp points to some appropriate storage for the column value.
        !          1353: alenpp (OUT) - returns a pointer to the length of the buffer. *alenpp 
        !          1354: contains the size of the buffer after return from callback. Gets set to 
        !          1355: actual data size after fetch.
        !          1356: piecep (IN/OUT) - returns a piece value, as follows:
        !          1357: The IN value can be OCI_ONE_PIECE, OCI_FIRST_PIECE or 
        !          1358: OCI_NEXT_PIECE.
        !          1359: The OUT value can be OCI_ONE_PIECE if the IN value was 
        !          1360: OCI_ONE_PIECE.
        !          1361: The OUT value can be OCI_ONE_PIECE or OCI_FIRST_PIECE if 
        !          1362: the IN value was OCI_FIRST_PIECE.
        !          1363: The OUT value can only be OCI_NEXT_PIECE or 
        !          1364: OCI_LAST_PIECE if the IN value was OCI_NEXT_PIECE. 
        !          1365: indpp (IN) - indicator variable pointer
        !          1366: rcodep (IN) - return code variable pointer
        !          1367: Related Functions
        !          1368: OCIAttrGet()
        !          1369: OCIDefineObject()
        !          1370: 
        !          1371: 
        !          1372: 
        !          1373: 
        !          1374: OCIDefineObject()
        !          1375: Name
        !          1376: OCI Define Named Data Type attributes
        !          1377: Purpose
        !          1378: Sets up additional attributes necessary for a Named Data Type define.
        !          1379: Syntax
        !          1380: sword OCIDefineObject ( OCIDefine       *defnp,
        !          1381:                       OCIError        *errhp,
        !          1382:                       CONST OCIType   *type,
        !          1383:                       dvoid           **pgvpp, 
        !          1384:                       ub4             *pvszsp, 
        !          1385:                       dvoid           **indpp, 
        !          1386:                       ub4             *indszp );
        !          1387: Comments
        !          1388: 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 
        !          1389: has been initialized in non-Object mode.
        !          1390: This call takes as a paramter a type descriptor object (TDO) of datatype 
        !          1391: OCIType for the named data type being defined.  The TDO can be retrieved 
        !          1392: with a call to OCITypeByName().
        !          1393: See the description of OCIInitialize() on page 13 - 43 for more information 
        !          1394: about initializing the OCI process environment.
        !          1395: Parameters
        !          1396: defnp (IN/OUT) - a define handle previously allocated in a call to 
        !          1397: OCIDefineByPos(). 
        !          1398: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          1399: diagnostic information in the event of an error.
        !          1400: type (IN, optional) - points to the Type Descriptor Object (TDO) which 
        !          1401: describes the type of the program variable. Only used for program variables 
        !          1402: of type SQLT_NTY. This parameter is optional, and may be passed as NULL 
        !          1403: if it is not being used.
        !          1404: pgvpp (IN/OUT) - points to a pointer to a program variable buffer. For an 
        !          1405: array, pgvpp points to an array of pointers. Memory for the fetched named data 
        !          1406: type instance(s) is dynamically allocated in the object cache. At the end of the 
        !          1407: fetch when all the values have been received, pgvpp points to the pointer(s) to
        !          1408: these newly allocated named data type instance(s). The application must call 
        !          1409: OCIObjectMarkDel() to deallocate the named data type instance(s) when they 
        !          1410: are no longer needed. 
        !          1411: pvszsp (IN/OUT) - points to the size of the program variable. For an array, it 
        !          1412: is an array of ub4s. On return points to the size(s) of unpickled fetched 
        !          1413: values.
        !          1414: indpp (IN/OUT) - points to a pointer to the program variable buffer 
        !          1415: containing the parallel indicator structure. For an array, points to an array 
        !          1416: of pointers. Memory is allocated to store the indicator structures in the 
        !          1417: object cache. At the end of the fetch when all values have been received, 
        !          1418: indpp points to the pointer(s) to these newly allocated indicator structure(s).
        !          1419: indszp (IN/OUT) - points to the size(s) of the indicator structure program 
        !          1420: variable. For an array, it is an array of ub4s. On return points to the size(s)
        !          1421: of the unpickled fetched indicator values.
        !          1422: Related Functions
        !          1423: OCIAttrGet()
        !          1424: 
        !          1425: 
        !          1426: 
        !          1427: OCIDescAlloc()
        !          1428: Name
        !          1429: OCI Get DESCriptor or lob locator
        !          1430: Purpose
        !          1431: Allocates storage to hold certain data types. The descriptors can be used as 
        !          1432: bind or define variables.
        !          1433: Syntax
        !          1434: sword OCIDescAlloc ( CONST dvoid   *parenth,
        !          1435:                    dvoid         **descpp, 
        !          1436:                    ub4           type,
        !          1437:                    size_t        xtramem_sz,
        !          1438:                    dvoid         **usrmempp);
        !          1439: Comments
        !          1440: Returns a pointer to an allocated and initialized structure, corresponding to 
        !          1441: the type specified in type. A non-NULL descriptor or LOB locator is returned 
        !          1442: on success. No diagnostics are available on error.
        !          1443: This call returns OCI_SUCCESS if successful, or OCI_INVALID_HANDLE if 
        !          1444: an out-of-memory error occurs. 
        !          1445: Parameters
        !          1446: parenth (IN) - an environment handle. 
        !          1447: descpp (OUT) - returns a descriptor or LOB locator of desired type. 
        !          1448: type (IN) - specifies the type of descriptor or LOB locator to be allocated. 
        !          1449: The specific types are:
        !          1450: OCI_DTYPE_SNAP - specifies generation of snapshot descriptor of C 
        !          1451: type - OCISnapshot
        !          1452: OCI_DTYPE_LOB - specifies generation of a LOB data type locator of C 
        !          1453: type - OCILobLocator
        !          1454: OCI_DTYPE_RSET - specifies generation of a descriptor of C type 
        !          1455: OCIResult that references a result set (a number of rows as a result of a 
        !          1456: query). This descriptor is bound to a bind variable of data type 
        !          1457: SQLT_RSET (result set). The descriptor has to be converted into a 
        !          1458: statement handle using a function - OCIResultSetToStmt() - which can 
        !          1459: then be passed to OCIDefineByPos() and OCIStmtFetch() to retrieve the 
        !          1460: rows of the result set.
        !          1461: OCI_DTYPE_ROWID - specifies generation of a ROWID descriptor of C 
        !          1462: type OCIRowid.
        !          1463: OCI_DTYPE_COMPLEXOBJECTCOMP - specifies generation of a 
        !          1464: complex object retrieval descriptor of C type 
        !          1465: OCIComplexObjectComp.
        !          1466: xtramemsz (IN) - specifies an amount of user memory to be allocated for use 
        !          1467: by the application. 
        !          1468: usrmempp (OUT) - returns a pointer to the user memory of size xtramemsz 
        !          1469: allocated by the call for the user. 
        !          1470: Related Functions
        !          1471: OCIDescFree()
        !          1472: 
        !          1473: 
        !          1474: 
        !          1475: 
        !          1476: OCIDescFree()
        !          1477: Name
        !          1478: OCI Free DESCriptor
        !          1479: Purpose
        !          1480: Deallocates a previously allocated descriptor.
        !          1481: Syntax
        !          1482: sword OCIDescFree ( dvoid    *descp,
        !          1483:                   ub4      type);
        !          1484: Comments
        !          1485: This call frees up storage associated with the descriptor, corresponding to the
        !          1486: type specified in type. Returns OCI_SUCCESS or OCI_INVALID_HANDLE. 
        !          1487: All descriptors must be explicitly deallocated. OCI will not deallocate a 
        !          1488: descriptor if the environment handle is deallocated.
        !          1489: Parameters
        !          1490: descp (IN) - an allocated descriptor. 
        !          1491: type (IN) - specifies the type of storage to be freed. The specific types are: 
        !          1492: OCI_DTYPE_SNAP - snapshot descriptor
        !          1493: OCI_DTYPE_LOB - a LOB data type descriptor
        !          1494: OCI_DTYPE_RSET - a descriptor that references a result set (a number 
        !          1495: of rows as a result of a query).
        !          1496: OCI_DTYPE_ROWID - a ROWID descriptor
        !          1497: OCI_DTYPE_COMPLEXOBJECTCOMP - a complex object retrieval 
        !          1498: descriptor
        !          1499: Related Functions
        !          1500: OCIDescAlloc()
        !          1501: 
        !          1502: 
        !          1503: 
        !          1504: OCIDescribeAny()
        !          1505: Name
        !          1506: OCI DeSCribe Any
        !          1507: Purpose
        !          1508: Describes existing schema objects.
        !          1509: Syntax
        !          1510: sword OCIDescribeAny ( OCISvcCtx     *svchp,
        !          1511:                      OCIError      *errhp,
        !          1512:                      dvoid         *objptr,
        !          1513:                      ub4           objptr_len,
        !          1514:                     ub1           objptr_typ,
        !          1515:                      ub1           info_level,
        !          1516:                     ub1           objtype,
        !          1517:                      OCIDesc       *dschp );
        !          1518: Comments
        !          1519: This is a generic describe call that describes existing schema objects: tables,
        !          1520: views, synonyms, procedures, functions, packages, sequences, and types. As a 
        !          1521: result of this call, the describe handle is populated with the object-specific 
        !          1522: attributes which can be obtained through an OCIAttrGet() call.
        !          1523: An OCIParamGet() on the describe handle returns a parameter descriptor for a 
        !          1524: specified position. Parameter positions begin with 1. Calling OCIAttrGet() on 
        !          1525: the parameter descriptor returns the specific attributes of a stored procedure 
        !          1526: or function parameter or a table column descriptor as the case may be. 
        !          1527: These subsequent calls do not need an extra round trip to the server because 
        !          1528: the entire schema object description cached on the client side by 
        !          1529: OCIDescribeAny(). Calling OCIAttrGet() on the describe handle can also return 
        !          1530: the total number of positions.
        !          1531: See the section "Describing" on page 2-33 for more information about describe 
        !          1532: operations.
        !          1533: Parameters
        !          1534: TO BE UPDATED
        !          1535: svchp (IN/OUT) - a service context handle.
        !          1536: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          1537: diagnostic information in the event of an error.
        !          1538: objptr (IN) - the name of the object (a null-terminated string) to be 
        !          1539: described. Only procedure or function names are valid when connected to an 
        !          1540: Oracle7 Server.
        !          1541: objptr_len (IN) - the length of the string. Must be non-zero.
        !          1542: objptr_typ (IN) - Must be OCI_OTYPE_NAME, OCI_OTYPE_REF, or OCI_OTYPE_PTR.
        !          1543: info_level (IN) - reserved for future extensions. Pass OCI_DEFAULT.
        !          1544: objtype (IN/OUT) - Object type.
        !          1545: dschp (IN/OUT) - a describe handle that is populated with describe 
        !          1546: information about the object after the call.
        !          1547: Related Functions
        !          1548: OCIAttrGet()
        !          1549: 
        !          1550: 
        !          1551: 
        !          1552: OCIEnvCreate()
        !          1553: Name
        !          1554: OCI ENVironment CREATE
        !          1555: Purpose
        !          1556: This function creates and initializes an environment for the rest of
        !          1557: the OCI functions to work under.  This call is a replacement for both
        !          1558: the OCIInitialize and OCIEnvInit calls.
        !          1559: Syntax
        !          1560: sword OCIEnvCreate  ( OCIEnv        **envhpp, 
        !          1561:                       ub4           mode, 
        !          1562:                       CONST dvoid   *ctxp, 
        !          1563:                       CONST dvoid   *(*malocfp) 
        !          1564:                                     (dvoid *ctxp, 
        !          1565:                                         size_t size), 
        !          1566:                       CONST dvoid   *(*ralocfp) 
        !          1567:                                     (dvoid *ctxp, 
        !          1568:                                        dvoid *memptr, 
        !          1569:                                        size_t newsize), 
        !          1570:                       CONST void    (*mfreefp) 
        !          1571:                                     (dvoid *ctxp, 
        !          1572:                                        dvoid *memptr))
        !          1573:                       size_t    xtramemsz,
        !          1574:                       dvoid     **usrmempp );
        !          1575:  
        !          1576: Comments
        !          1577: This call creates an environment for all the OCI calls using the modes
        !          1578: specified by the user. This call can be used instead of the two calls
        !          1579: OCIInitialize and OCIEnvInit. This function returns an environment handle
        !          1580: which is then used by the remaining OCI functions. There can be multiple
        !          1581: environments in OCI each with its own environment modes.  This function 
        !          1582: also performs any process level initialization if required by any mode.
        !          1583: For example if the user wants to initialize an environment as OCI_THREADED,
        !          1584: then all libraries that are used by OCI are also initialized in the
        !          1585: threaded mode. 
        !          1586: 
        !          1587: This call should be invoked before anny other OCI call and should be used
        !          1588: instead of the OCIInitialize and OCIEnvInit calls. This is the recommended
        !          1589: call, although OCIInitialize and OCIEnvInit calls will still be supported
        !          1590: for backward compatibility. 
        !          1591:  
        !          1592: envpp (OUT) - a pointer to a handle to the environment. 
        !          1593: mode (IN) - specifies initialization of the mode. The valid modes are:
        !          1594: OCI_DEFAULT - default mode.
        !          1595: OCI_THREADED - threaded environment. In this mode, internal data 
        !          1596: structures are protected from concurrent accesses by multiple threads. 
        !          1597: OCI_OBJECT - will use navigational object interface. 
        !          1598: ctxp (IN) - user defined context for the memory call back routines. 
        !          1599: malocfp (IN) - user-defined memory allocation function. If mode is 
        !          1600: OCI_THREADED, this memory allocation routine must be thread safe.
        !          1601: ctxp - context pointer for the user-defined memory allocation function.
        !          1602: size - size of memory to be allocated by the user-defined memory 
        !          1603: allocation function
        !          1604: ralocfp (IN) - user-defined memory re-allocation function. If mode is 
        !          1605: OCI_THREADED, this memory allocation routine must be thread safe.
        !          1606: ctxp - context pointer for the user-defined memory reallocation 
        !          1607: function.
        !          1608: memp - pointer to memory block
        !          1609: newsize - new size of memory to be allocated
        !          1610: mfreefp (IN) - user-defined memory free function. If mode is 
        !          1611: OCI_THREADED, this memory free routine must be thread safe.
        !          1612: ctxp - context pointer for the user-defined memory free function.
        !          1613: memptr - pointer to memory to be freed
        !          1614: xtramemsz (IN) - specifies the amount of user memory to be allocated. 
        !          1615: usrmempp (OUT) - returns a pointer to the user memory of size xtramemsz 
        !          1616: allocated by the call for the user.
        !          1617: 
        !          1618: Example
        !          1619: 
        !          1620: Related Functions
        !          1621: OCIInitialize, OCIEnvInit
        !          1622: 
        !          1623: 
        !          1624: 
        !          1625: 
        !          1626: OCIEnvInit()
        !          1627: Name
        !          1628: OCI INITialize environment
        !          1629: Purpose
        !          1630: This call initializes the OCI environment handle.
        !          1631: Syntax
        !          1632: sword OCIEnvInit ( OCIEnv    **envp,
        !          1633:                  ub4       mode,
        !          1634:                  size_t    xtramemsz,
        !          1635:                  dvoid     **usrmempp );
        !          1636: Comments
        !          1637: Initializes the OCI environment handle. No changes are done on an initialized 
        !          1638: handle. If OCI_ERROR or OCI_SUCCESS_WITH_INFO is returned, the 
        !          1639: environment handle can be used to obtain ORACLE specific errors and 
        !          1640: diagnostics.
        !          1641: This call is processed locally, without a server round-trip.
        !          1642: Parameters
        !          1643: envpp (OUT) - a pointer to a handle to the environment. 
        !          1644: mode (IN) - specifies initialization of an environment mode. The only valid 
        !          1645: mode is OCI_DEFAULT for default mode
        !          1646: xtramemsz (IN) - specifies the amount of user memory to be allocated. 
        !          1647: usrmempp (OUT) - returns a pointer to the user memory of size xtramemsz 
        !          1648: allocated by the call for the user.
        !          1649: Example
        !          1650: See the description of OCISessionBegin() on page 13-84 for an example showing 
        !          1651: the use of OCIEnvInit(). 
        !          1652: Related Functions
        !          1653: 
        !          1654: 
        !          1655: 
        !          1656: 
        !          1657: OCIErrorGet()
        !          1658: Name
        !          1659: OCI Get Diagnostic Record
        !          1660: Purpose
        !          1661: Returns an error message in the buffer provided and an ORACLE error.
        !          1662: Syntax
        !          1663: sword OCIErrorGet ( dvoid      *hndlp, 
        !          1664:                   ub4        recordno,
        !          1665:                   OraText       *sqlstate,
        !          1666:                   ub4        *errcodep, 
        !          1667:                   OraText       *bufp,
        !          1668:                   ub4        bufsiz,
        !          1669:                   ub4        type );
        !          1670: Comments
        !          1671: Returns an error message in the buffer provided and an ORACLE error. 
        !          1672: Currently does not support SQL state. This call can be called a multiple 
        !          1673: number of times if there are more than one diagnostic record for an error.
        !          1674: The error handle is originally allocated with a call to OCIHandleAlloc().
        !          1675: Parameters
        !          1676: hndlp (IN) - the error handle, in most cases, or the environment handle (for 
        !          1677: errors on OCIEnvInit(), OCIHandleAlloc()).
        !          1678: recordno (IN) - indicates the status record from which the application seeks 
        !          1679: info. Starts from 1. 
        !          1680: sqlstate (OUT) - Not supported in Version 8.0.
        !          1681: errcodep (OUT) - an ORACLE Error is returned.
        !          1682: bufp (OUT) - the error message text is returned.
        !          1683: bufsiz (IN) - the size of the buffer provide to get the error message.
        !          1684: type (IN) - the type of the handle.
        !          1685: Related Functions
        !          1686: OCIHandleAlloc()
        !          1687: 
        !          1688: OCIExtractInit
        !          1689: Name
        !          1690: OCI Extract Initialize 
        !          1691: Purpose
        !          1692: This function initializes the parameter manager. 
        !          1693: Syntax
        !          1694: sword OCIExtractInit(dvoid *hndl, OCIError *err);
        !          1695: Comments
        !          1696: It must be called before calling any other parameter manager routine. The NLS 
        !          1697: information is stored inside the parameter manager context and used in 
        !          1698: subsequent calls to OCIExtract routines.
        !          1699: Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR
        !          1700: Parameters
        !          1701: hndl (IN/OUT) - The OCI environment or session handle.
        !          1702: err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in 
        !          1703:                err and this function returns OCI_ERROR. Diagnostic information 
        !          1704:                can be obtained by calling OCIErrorGet().
        !          1705: Related Functions
        !          1706: OCIExtractTerm()
        !          1707: 
        !          1708: OCIExtractTerm
        !          1709: Name
        !          1710: OCI Extract Terminate
        !          1711: Purpose
        !          1712: This function releases all dynamically allocated storage and may perform 
        !          1713: other internal bookkeeping functions.
        !          1714: Syntax
        !          1715: sword OCIExtractTerm(dvoid *hndl, OCIError *err);
        !          1716: Comments
        !          1717: It must be called when the parameter manager is no longer being used.
        !          1718: Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR
        !          1719: Parameters
        !          1720: hndl (IN/OUT) - The OCI environment or session handle.
        !          1721: err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in 
        !          1722:                err and this function returns OCI_ERROR. Diagnostic information 
        !          1723:                can be obtained by calling OCIErrorGet().
        !          1724: Related Functions
        !          1725: OCIExtractInit()
        !          1726: 
        !          1727: OCIExtractReset
        !          1728: Name
        !          1729: OCI Extract Reset
        !          1730: Purpose
        !          1731: The memory currently used for parameter storage, key definition storage, and 
        !          1732: parameter value lists is freed and the structure is reinitialized.
        !          1733: Syntax
        !          1734: sword OCIExtractReset(dvoid *hndl, OCIError *err);
        !          1735: Comments
        !          1736: Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR
        !          1737: Parameters
        !          1738: hndl (IN/OUT) - The OCI environment or session handle.
        !          1739: err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in 
        !          1740:                err and this function returns OCI_ERROR. Diagnostic information 
        !          1741:                can be obtained by calling OCIErrorGet().
        !          1742: Related Functions
        !          1743: 
        !          1744: OCIExtractSetNumKeys
        !          1745: Name
        !          1746: OCI Extract Set Number of Keys
        !          1747: Purpose
        !          1748: Informs the parameter manager of the number of keys that will be registered.
        !          1749: Syntax
        !          1750: sword OCIExtractSetNumKeys(dvoid *hndl, OCIError *err, uword numkeys);
        !          1751: Comments
        !          1752: This routine must be called prior to the first call of OCIExtractSetKey().  
        !          1753: Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR
        !          1754: Parameters
        !          1755: hndl (IN/OUT) - The OCI environment or session handle.
        !          1756: err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in 
        !          1757:                err and this function returns OCI_ERROR. Diagnostic information 
        !          1758:                can be obtained by calling OCIErrorGet().
        !          1759: numkeys (IN) - The number of keys that will be registered with 
        !          1760:                OCIExtractSetKey().
        !          1761: Related Functions
        !          1762: OCIExtractSetKey()
        !          1763: 
        !          1764: OCIExtractSetKey
        !          1765: Name
        !          1766: OCI Extract Set Key definition
        !          1767: Purpose
        !          1768: Registers information about a key with the parameter manager.
        !          1769: Syntax
        !          1770: sword OCIExtractSetKey(dvoid *hndl, OCIError *err, CONST OraText *name, ub1 type,
        !          1771:                        ub4 flag, CONST dvoid *defval, CONST sb4 *intrange, 
        !          1772:                        CONST OraText *CONST *strlist);
        !          1773: Comments
        !          1774: This routine must be called after calling OCIExtractSetKey() and before 
        !          1775: calling OCIExtractFromFile() or OCIExtractFromStr().  
        !          1776: Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR
        !          1777: Parameters
        !          1778: hndl (IN/OUT) - The OCI environment or session handle.
        !          1779: err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in 
        !          1780:                err and this function returns OCI_ERROR. Diagnostic information 
        !          1781:                can be obtained by calling OCIErrorGet().
        !          1782: name (IN) - The name of the key.
        !          1783: type (IN) - The type of the key (OCI_EXTRACT_TYPE_INTEGER, 
        !          1784:             OCI_EXTRACT_TYPE_OCINUM, OCI_EXTRACT_TYPE_STRING, or 
        !          1785:             OCI_EXTRACT_TYPE_BOOLEAN).
        !          1786: flag (IN) - Set to OCI_EXTRACT_MULTIPLE if the key can take multiple values 
        !          1787:             or 0 otherwise.
        !          1788: defval (IN) - Set to the default value for the key.  May be NULL if there is 
        !          1789:                no default.  A string default must be a (text*) type, an 
        !          1790:                integer default must be an (sb4*) type, and a boolean default 
        !          1791:                must be a (ub1*) type.
        !          1792: intrange (IN) - Starting and ending values for the allowable range of integer 
        !          1793:                 values.  May be NULL if the key is not an integer type or if 
        !          1794:                 all integer values are acceptable.
        !          1795: strlist (IN) - List of all acceptable text strings for the key.  May be NULL 
        !          1796:                if the key is not a string type or if all text values are 
        !          1797:                acceptable.
        !          1798: Related Functions
        !          1799: OCIExtractSetNumKeys()
        !          1800: 
        !          1801: OCIExtractFromFile
        !          1802: Name
        !          1803: OCI Extract parameters From File
        !          1804: Purpose
        !          1805: The keys and their values in the given file are processed. 
        !          1806: Syntax
        !          1807: sword OCIExtractFromFile(dvoid *hndl, OCIError *err, ub4 flag, OraText *filename);
        !          1808: Comments
        !          1809: Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR
        !          1810: Parameters
        !          1811: hndl (IN/OUT) - The OCI environment or session handle.
        !          1812: err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in 
        !          1813:                err and this function returns OCI_ERROR. Diagnostic information 
        !          1814:                can be obtained by calling OCIErrorGet().
        !          1815: flag (IN) - Zero or has one or more of the following bits set: 
        !          1816:            OCI_EXTRACT_CASE_SENSITIVE, OCI_EXTRACT_UNIQUE_ABBREVS, or 
        !          1817:            OCI_EXTRACT_APPEND_VALUES. 
        !          1818: filename (IN) - Null-terminated filename string.
        !          1819: Related Functions
        !          1820: 
        !          1821: OCIExtractFromStr
        !          1822: Name
        !          1823: OCI Extract parameters From String
        !          1824: Purpose
        !          1825: The keys and their values in the given string are processed. 
        !          1826: Syntax
        !          1827: sword OCIExtractFromStr(dvoid *hndl, OCIError *err, ub4 flag, OraText *input);
        !          1828: Comments
        !          1829: Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR
        !          1830: Parameters
        !          1831: hndl (IN/OUT) - The OCI environment or session handle.
        !          1832: err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in 
        !          1833:                err and this function returns OCI_ERROR. Diagnostic information 
        !          1834:                can be obtained by calling OCIErrorGet().
        !          1835: flag (IN) - Zero or has one or more of the following bits set: 
        !          1836:            OCI_EXTRACT_CASE_SENSITIVE, OCI_EXTRACT_UNIQUE_ABBREVS, or 
        !          1837:            OCI_EXTRACT_APPEND_VALUES. 
        !          1838: input (IN) - Null-terminated input string.
        !          1839: Related Functions
        !          1840: 
        !          1841: OCIExtractToInt
        !          1842: Name
        !          1843: OCI Extract To Integer
        !          1844: Purpose
        !          1845: Gets the integer value for the specified key.
        !          1846: Syntax
        !          1847: sword OCIExtractToInt(dvoid *hndl, OCIError *err, OraText *keyname, uword valno, 
        !          1848:                       sb4 *retval);
        !          1849: Comments
        !          1850: The valno'th value (starting with 0) is returned.
        !          1851: Returns OCI_SUCCESS, OCI_INVALID_HANDLE, OCI_NO_DATA, or OCI_ERROR. 
        !          1852: OCI_NO_DATA means that there is no valno'th value for this key.
        !          1853: Parameters
        !          1854: hndl (IN) - The OCI environment or session handle.
        !          1855: err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in 
        !          1856:                err and this function returns OCI_ERROR. Diagnostic information 
        !          1857:                can be obtained by calling OCIErrorGet().
        !          1858: keyname (IN) - Key name.
        !          1859: valno (IN) - Which value to get for this key.
        !          1860: retval (OUT) - The actual integer value.
        !          1861: Related Functions
        !          1862: 
        !          1863: OCIExtractToBool
        !          1864: Name
        !          1865: OCI Extract To Boolean
        !          1866: Purpose
        !          1867: Gets the boolean value for the specified key. 
        !          1868: Syntax
        !          1869: sword OCIExtractToBool(dvoid *hndl, OCIError *err, OraText *keyname, uword valno,
        !          1870:                        ub1 *retval);
        !          1871: Comments
        !          1872: The valno'th value (starting with 0) is returned.
        !          1873: Returns OCI_SUCCESS, OCI_INVALID_HANDLE, OCI_NO_DATA, or OCI_ERROR. 
        !          1874: OCI_NO_DATA means that there is no valno'th value for this key.
        !          1875: Parameters
        !          1876: hndl (IN) - The OCI environment or session handle.
        !          1877: err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in 
        !          1878:                err and this function returns OCI_ERROR. Diagnostic information 
        !          1879:                can be obtained by calling OCIErrorGet().
        !          1880: keyname (IN) - Key name.
        !          1881: valno (IN) - Which value to get for this key.
        !          1882: retval (OUT) - The actual boolean value.
        !          1883: Related Functions
        !          1884: 
        !          1885: OCIExtractToStr
        !          1886: Name
        !          1887: OCI Extract To String
        !          1888: Purpose
        !          1889: Gets the string value for the specified key.
        !          1890: Syntax
        !          1891: sword OCIExtractToStr(dvoid *hndl, OCIError *err, OraText *keyname, uword valno, 
        !          1892:                       OraText *retval, uword buflen);
        !          1893: Comments
        !          1894: The valno'th value (starting with 0) is returned.
        !          1895: Returns OCI_SUCCESS, OCI_INVALID_HANDLE, OCI_NO_DATA, or OCI_ERROR. 
        !          1896: OCI_NO_DATA means that there is no valno'th value for this key.
        !          1897: Parameters
        !          1898: hndl (IN) - The OCI environment or session handle.
        !          1899: err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in 
        !          1900:                err and this function returns OCI_ERROR. Diagnostic information 
        !          1901:                can be obtained by calling OCIErrorGet().
        !          1902: keyname (IN) - Key name.
        !          1903: valno (IN) - Which value to get for this key.
        !          1904: retval (OUT) - The actual null-terminated string value.
        !          1905: buflen (IN) - The length of the buffer for retval.
        !          1906: Related Functions
        !          1907: 
        !          1908: Note: The following OCIExtract functions are unavailable in this release
        !          1909: 
        !          1910: OCIExtractToOCINum
        !          1911: Name
        !          1912: OCI Extract To OCI Number
        !          1913: Purpose
        !          1914: Gets the OCINumber value for the specified key.
        !          1915: Syntax
        !          1916: sword OCIExtractToOCINum(dvoid *hndl, OCIError *err, OraText *keyname, 
        !          1917:                          uword valno, OCINumber *retval);
        !          1918: Comments
        !          1919: The valno'th value (starting with 0) is returned.
        !          1920: Returns OCI_SUCCESS, OCI_INVALID_HANDLE, OCI_NO_DATA, or OCI_ERROR. 
        !          1921: OCI_NO_DATA means that there is no valno'th value for this key.
        !          1922: Parameters
        !          1923: hndl (IN) - The OCI environment or session handle.
        !          1924: err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in 
        !          1925:                err and this function returns OCI_ERROR. Diagnostic information 
        !          1926:                can be obtained by calling OCIErrorGet().
        !          1927: keyname (IN) - Key name.
        !          1928: valno (IN) - Which value to get for this key.
        !          1929: retval (OUT) - The actual OCINumber value.
        !          1930: Related Functions
        !          1931: 
        !          1932: OCIExtractToList
        !          1933: Name
        !          1934: OCI Extract To parameter List
        !          1935: Purpose
        !          1936: Generates a list of parameters from the parameter structures that are stored 
        !          1937: in memory. 
        !          1938: Syntax
        !          1939: sword OCIExtractToList(dvoid *hndl, OCIError *err, uword *numkeys);
        !          1940: Comments
        !          1941: Must be called before OCIExtractValues() is called.
        !          1942: Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR
        !          1943: Parameters
        !          1944: hndl (IN) - The OCI environment or session handle.
        !          1945: err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in 
        !          1946:                err and this function returns OCI_ERROR. Diagnostic information 
        !          1947:                can be obtained by calling OCIErrorGet().
        !          1948: numkeys (OUT) - Number of distinct keys stored in memory.
        !          1949: Related Functions
        !          1950: OCIExtractFromList()
        !          1951: 
        !          1952: OCIExtractFromList
        !          1953: Name
        !          1954: OCI Extract From parameter List
        !          1955: Purpose
        !          1956: Generates a list of values for the a parameter in the parameter list.
        !          1957: Syntax
        !          1958: sword OCIExtractFromList(dvoid *hndl, OCIError *err, uword index, OraText *name, 
        !          1959:                          ub1 *type, uword *numvals, dvoid ***values);
        !          1960: Comments
        !          1961: Parameters are specified by an index. OCIExtractToList() must be called prior 
        !          1962: to calling this routine to generate the parameter list from the parameter 
        !          1963: structures that are stored in memory. 
        !          1964: Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR
        !          1965: Parameters
        !          1966: hndl (IN) - The OCI environment or session handle.
        !          1967: err (IN/OUT) - The OCI error handle. If there is an error, it is recorded in 
        !          1968:                err and this function returns OCI_ERROR. Diagnostic information 
        !          1969:                can be obtained by calling OCIErrorGet().
        !          1970: name (OUT) - Name of the key for the current parameter.
        !          1971: type (OUT) - Type of the current parameter (OCI_EXTRACT_TYPE_STRING, 
        !          1972:              OCI_EXTRACT_TYPE_INTEGER, OCI_EXTRACT_TYPE_OCINUM, or 
        !          1973:              OCI_EXTRACT_TYPE_BOOLEAN)
        !          1974: numvals (OUT) - Number of values for this parameter.
        !          1975: values (OUT) - The values for this parameter.
        !          1976: Related Functions
        !          1977: OCIExtractToList()
        !          1978: 
        !          1979: 
        !          1980: ************************  OCIFileClose() ***********************************
        !          1981:  
        !          1982: Name
        !          1983:  OCIFileClose - Oracle Call Interface FILE i/o CLOSE
        !          1984: 
        !          1985: Purpose
        !          1986:  Close a previously opened file.
        !          1987: 
        !          1988: Syntax
        !          1989:  sword OCIFileClose ( dvoid             *hndl, 
        !          1990:                      OCIError          *err,
        !          1991:                       OCIFileObject     *filep )
        !          1992: 
        !          1993: Comments
        !          1994:  This function will close a previously opened file. If the function succeeds
        !          1995:  then OCI_SUCCESS will be returned, else OCI_ERROR. 
        !          1996:  
        !          1997: Parameters
        !          1998:  hndl  (IN) - the OCI environment or session handle.
        !          1999:  err (OUT) - the OCI error handle
        !          2000:  filep (IN) - the OCIFile file object
        !          2001: 
        !          2002: Related Functions
        !          2003:  OCIFileOpen.  
        !          2004: 
        !          2005: 
        !          2006: 
        !          2007: ********************* OCIFileExists() **************************************
        !          2008: 
        !          2009: Name
        !          2010:  OCIFileExists - Oracle Call Interface FILE i/o EXIST
        !          2011: 
        !          2012: Purpose
        !          2013:  Check to see if the file exists.
        !          2014: 
        !          2015: Syntax
        !          2016:  sword OCIFileExists ( dvoid           *hndl, 
        !          2017:                      OCIError         *err, 
        !          2018:                       OraText          *filename,
        !          2019:                       OraText          *path,
        !          2020:                       ub1              *flag )
        !          2021: 
        !          2022: Comments
        !          2023:  This function will set the flag to TRUE if the file exists else it will
        !          2024:  be set to FALSE.
        !          2025:  The function will return OCI_ERROR if any error is encountered, else
        !          2026:  it will return OCI_ERROR. 
        !          2027: 
        !          2028: Parameters
        !          2029:  hndl(IN) - OCI environment or session handleenv
        !          2030:  err(OUT) - OCI error handle
        !          2031:  filename(IN) - filename
        !          2032:  path(IN) - path of the file
        !          2033:  flag(OUT) - whether the file exists or not
        !          2034: 
        !          2035: Related Functions.
        !          2036:  None.
        !          2037:      
        !          2038: 
        !          2039:  **************************** OCIFileFlush() ******************************
        !          2040: 
        !          2041: 
        !          2042: Name
        !          2043:  OCIFileFlush - Oracle Call Interface File i/o FLUSH
        !          2044: 
        !          2045: Purpose
        !          2046:  Flush the buffers associated with the file to the disk.
        !          2047: 
        !          2048: Syntax
        !          2049:  sword OCIFileFlush ( dvoid             *hndl, 
        !          2050:                      OCIError          *err,
        !          2051:                       OCIFileObject     *filep )
        !          2052: 
        !          2053: Comments
        !          2054:  The function will return OCI_ERROR if any error is encountered, else
        !          2055:  it will return OCI_ERROR.
        !          2056: 
        !          2057: Parameters 
        !          2058:  hndl (IN) - the OCI environment or session handle.
        !          2059:  err (OUT) - the OCI error handle
        !          2060:  filep (IN) - the OCIFile file object
        !          2061: 
        !          2062: Related Functions
        !          2063:  OCIFileOpen, OCIFileWrite
        !          2064: 
        !          2065: 
        !          2066: 
        !          2067:  *************************** OCIFileGetLength() ****************************
        !          2068: 
        !          2069: Name
        !          2070:  OCIFileGetLength - Oracle Call Interface FILE i/o GET file LENGTH
        !          2071: 
        !          2072: Purpose
        !          2073:  Get the length of a file.
        !          2074: 
        !          2075: Syntax
        !          2076:  OCIFileGetLength(dvoid           *hndl, 
        !          2077:                  OCIError        *err,
        !          2078:                   OraText         *filename,
        !          2079:                   OraText         *path,
        !          2080:                   ubig_ora        *lenp )
        !          2081: 
        !          2082: Comments
        !          2083:  The length of the file will be returned in lenp.
        !          2084:  The function will return OCI_ERROR if any error is encountered, else
        !          2085:  it will return OCI_ERROR.
        !          2086:  
        !          2087: Parameters
        !          2088:  hndl (IN) - the OCI environment or session handle.
        !          2089:  err (OUT) - the OCI error handle.  If  there is an error, it is recorded 
        !          2090:  in err and this function returns OCI_ERROR.  Diagnostic information can be 
        !          2091:  obtained by calling OCIErrorGet().
        !          2092:  filename (IN) - file name.
        !          2093:  path (IN) - path of the file.
        !          2094:  lenp (OUT) - On output, it is the length of the file in bytes.
        !          2095:  is the number of bytes in the file.
        !          2096: 
        !          2097: Related Functions
        !          2098:  None.
        !          2099: 
        !          2100: 
        !          2101: 
        !          2102: ******************************** OCIFileInit() *****************************
        !          2103:    
        !          2104: Name
        !          2105:  OCIFileInit - Oracle Call Interface FILE i/o INITialize
        !          2106: 
        !          2107: Purpose
        !          2108:  Initialize the OCI File I/O package and create the OCIFile context.
        !          2109: 
        !          2110: Syntax
        !          2111:  sword OCIFileInit ( dvoid *hndl, 
        !          2112:                      OCIError *err)
        !          2113: 
        !          2114: Comments
        !          2115:  This function should be called before any of the OCIFile functions are
        !          2116:  used.
        !          2117:  The function will return OCI_ERROR if any error is encountered, else
        !          2118:  it will return OCI_ERROR.
        !          2119:  
        !          2120: Parameters
        !          2121:  hndl(IN) - OCI environment or session handle.
        !          2122:  err(OUT) - OCI error structure.
        !          2123: 
        !          2124: Related Functions
        !          2125:  OCIFileTerm
        !          2126:      
        !          2127: 
        !          2128: 
        !          2129: ********************************* OCIFileOpen() *****************************
        !          2130: 
        !          2131: Name
        !          2132:  OCIFileOpen - Oracle Call Interface File i/o OPEN
        !          2133: 
        !          2134: Purpose
        !          2135:      Open a file.
        !          2136: 
        !          2137: Syntax
        !          2138:  sword OCIFileOpen ( dvoid               *hndl, 
        !          2139:                     OCIError            *err,
        !          2140:                      OCIFileObject      **filep,
        !          2141:                      OraText             *filename,
        !          2142:                      OraText             *path,
        !          2143:                      ub4                  mode,
        !          2144:                      ub4                  create, 
        !          2145:                      ub4                  type )
        !          2146: 
        !          2147: Comments
        !          2148:  OCIFileOpen returns a handle to the open file in filep if the file is
        !          2149:  successfully opened. 
        !          2150:  If one wants to use the standard file objects (stdin, stdout & stderr)
        !          2151:  then OCIFileOpen whould be called with the type filed containing the 
        !          2152:  appropriate type (see the parameter type). If any of the standard files 
        !          2153:  are specified then filename, path, mode and create are ignored.
        !          2154:  The function will return OCI_ERROR if any error is encountered, else
        !          2155:  it will return OCI_ERROR.
        !          2156: 
        !          2157: Parameters
        !          2158:  hndl (OUT) - the OCI environment or session handle.
        !          2159:  err (OUT) - the OCI error handle.  If  there is an error, it is recorded 
        !          2160:  in err and this function returns OCI_ERROR.  Diagnostic information can be 
        !          2161:  obtained by calling OCIErrorGet().
        !          2162:  filep (OUT) - the file object to be returned.
        !          2163:  filename (IN) - file name (NULL terminated string).
        !          2164:  path (IN) - path of the file (NULL terminated string).
        !          2165:  mode - mode in which to open the file (valid modes are OCI_FILE_READONLY,
        !          2166:  OCI_FILE_WRITEONLY, OCI_FILE_READ_WRITE).
        !          2167:  create - should the file be created if it does not exist. Valid values
        !          2168:  are: 
        !          2169:      OCI_FILE_TRUNCATE - create a file regardless of whether or not it exists. 
        !          2170:                         If the file already exists overwrite it.
        !          2171:      OCI_FILE_EXCL - fail if the file exists, else create.
        !          2172:      OCI_FILE_EXIST - open it if it exists, else fail.
        !          2173:      OCI_FILE_CREATE - open the file if it exists, and create it if it doesn't.
        !          2174:      OCI_FILE_APPEND - set the file pointer to the end of the file prior to 
        !          2175:                       writing(this flag can be OR'ed with OCI_FILE_EXIST or
        !          2176:                       OCI_FILE_CREATE).
        !          2177: type - file type. Valid values are OCI_FILE_TEXT, OCI_FILE_BIN, 
        !          2178:        OCI_FILE_STDIN, OCI_FILE_STDOUT and OCI_FILE_STDERR.
        !          2179:        If any of the standard files are specified then filename, path, mode
        !          2180:        and create are ignored.
        !          2181: 
        !          2182: Related Functions.
        !          2183:  OCIFileClose
        !          2184: 
        !          2185: 
        !          2186: 
        !          2187: ************************** OCIFileRead() ************************************
        !          2188:    
        !          2189: Name
        !          2190:  OCIFileRead - Oracle Call Interface FILE i/o READ
        !          2191: 
        !          2192: Purpose
        !          2193:  Read from a file into a buffer.
        !          2194: 
        !          2195: Syntax
        !          2196:  sword OCIFileRead ( dvoid            *hndl, 
        !          2197:                     OCIError         *err,
        !          2198:                      OCIFileObject    *filep,
        !          2199:                      dvoid            *bufp,
        !          2200:                      ub4               bufl,
        !          2201:                      ub4              *bytesread )
        !          2202: 
        !          2203: Comments
        !          2204:  Upto bufl bytes from the file will be read into bufp. The user should
        !          2205:  allocate memory for the buffer.
        !          2206:  The number of bytes read would be in bytesread.
        !          2207:  The function will return OCI_ERROR if any error is encountered, else
        !          2208:  it will return OCI_ERROR.
        !          2209: 
        !          2210: Parameters
        !          2211:  hndl (IN) - the OCI environment or session handle.
        !          2212:  err (OUT) - the OCI error handle.  If  there is an error, it is recorded 
        !          2213:  in err and this function returns OCI_ERROR.  Diagnostic information can be 
        !          2214:  obtained by calling OCIErrorGet().
        !          2215:  filep (IN/OUT) - a File Object that uniquely references the file.
        !          2216:  bufp (IN) - the pointer to a buffer into which the data will be read. The 
        !          2217:  length of the allocated memory is assumed to be bufl. 
        !          2218:  bufl - the length of the buffer in bytes. 
        !          2219:  bytesread (OUT) - the number of bytes read.
        !          2220: 
        !          2221: Related Functions
        !          2222:  OCIFileOpen, OCIFileSeek, OCIFileWrite
        !          2223: 
        !          2224: 
        !          2225: 
        !          2226: ****************************** OCIFileSeek() ******************************
        !          2227: 
        !          2228: Name
        !          2229:  OCIFileSeek - Oracle Call Interface FILE i/o SEEK
        !          2230: 
        !          2231: Purpose
        !          2232:  Perfom a seek to a byte position.
        !          2233: 
        !          2234: Syntax
        !          2235:  sword OCIFileSeek ( dvoid           *hndl, 
        !          2236:                     OCIError        *err,  
        !          2237:                      OCIFileObject   *filep,
        !          2238:                      uword            origin,
        !          2239:                      ubig_ora         offset,
        !          2240:                      sb1              dir)
        !          2241: 
        !          2242: Comments
        !          2243:  The function will return OCI_ERROR if any error is encountered, else
        !          2244:  it will return OCI_ERROR.
        !          2245: 
        !          2246: Parameters
        !          2247:  hndl (IN) - the OCI environment or session handle.
        !          2248:  err (OUT) - the OCI error handle.  If  there is an error, it is recorded 
        !          2249:  in err and this function returns OCI_ERROR.  Diagnostic information can be 
        !          2250:  obtained by calling OCIErrorGet().
        !          2251:  filep (IN/OUT) - a file handle that uniquely references the file.
        !          2252:  origin - The starting point we want to seek from. NOTE: The starting 
        !          2253:  point may be OCI_FILE_SEEK_BEGINNING (beginning), OCI_FILE_SEEK_CURRENT 
        !          2254:  (current position), or OCI_FILE_SEEK_END (end of file). 
        !          2255:  offset - The number of bytes from the origin we want to start reading from. 
        !          2256:  dir - The direction we want to go from the origin. NOTE: The direction 
        !          2257:  can be either OCI_FILE_FORWARD or OCI_FILE_BACKWARD. 
        !          2258:  
        !          2259: Related Function
        !          2260:  OCIFileOpen, OCIFileRead, OCIFileWrite
        !          2261: 
        !          2262: 
        !          2263: 
        !          2264: *************************** OCIFileTerm() **********************************
        !          2265: 
        !          2266: Name
        !          2267:  OCIFileTerm - Oracle Call Interface FILE i/o TERMinate
        !          2268: 
        !          2269: Purpose
        !          2270:  Terminate the OCI File I/O package and destroy the OCI File context.
        !          2271: 
        !          2272: Syntax
        !          2273:  sword OCIFileTerm ( dvoid *hndl, 
        !          2274:                      OCIError *err )
        !          2275: 
        !          2276: Comments
        !          2277:  After this function has been called no OCIFile function should be used.
        !          2278:  The function will return OCI_ERROR if any error is encountered, else
        !          2279:  it will return OCI_ERROR.
        !          2280:  
        !          2281: Parameters
        !          2282:  hndl(IN) - OCI environment or session handle.
        !          2283:  err(OUT) - OCI error structure. 
        !          2284:   
        !          2285: Related Functions 
        !          2286:  OCIFileInit   
        !          2287:  
        !          2288: 
        !          2289: ********************************* OCIFileWrite() **************************** 
        !          2290: 
        !          2291: Name 
        !          2292:  OCIFileWrite - Oracle Call Interface FILE i/o WRITE
        !          2293: 
        !          2294: Purpose
        !          2295:   Write data from buffer into a file.
        !          2296: 
        !          2297: Syntax
        !          2298:  sword OCIFileWrite ( dvoid            *hndl, 
        !          2299:                      OCIError         *err,  
        !          2300:                       OCIFileObject    *filep,
        !          2301:                       dvoid            *bufp, 
        !          2302:                       ub4               buflen
        !          2303:                       ub4              *byteswritten )
        !          2304: 
        !          2305: Comments
        !          2306:  The number of bytes written will be in *byteswritten.
        !          2307:  The function will return OCI_ERROR if any error is encountered, else
        !          2308:  it will return OCI_ERROR.
        !          2309: 
        !          2310: Parameters
        !          2311:  hndl (IN) - the OCI environment or session handle.
        !          2312:  err (OUT) - the OCI error handle.  If  there is an error, it is recorded 
        !          2313:  in err and this function returns OCI_ERROR.  Diagnostic information can be 
        !          2314:  obtained by calling OCIErrorGet().
        !          2315:  filep (IN/OUT) - a file handle that uniquely references the file.
        !          2316:  bufp (IN) - the pointer to a buffer from which the data will be written. 
        !          2317:  The length of the allocated memory is assumed to be the value passed
        !          2318:  in bufl. 
        !          2319:  bufl - the length of the buffer in bytes.
        !          2320:  byteswritten (OUT) - the number of bytes written.
        !          2321:  
        !          2322: Related Functions
        !          2323:  OCIFileOpen, OCIFileSeek, OCIFileRead
        !          2324: 
        !          2325: 
        !          2326: 
        !          2327: OCIHandleAlloc()
        !          2328: Name
        !          2329: OCI Get HaNDLe
        !          2330: Purpose
        !          2331: This call returns a pointer to an allocated and initialized handle.
        !          2332: Syntax
        !          2333: sword OCIHandleAlloc ( CONST dvoid   *parenth,
        !          2334:                      dvoid         **hndlpp, 
        !          2335:                      ub4           type, 
        !          2336:                      size_t        xtramem_sz,
        !          2337:                      dvoid         **usrmempp);
        !          2338: Comments
        !          2339: Returns a pointer to an allocated and initialized structure, corresponding to 
        !          2340: the type specified in type. A non-NULL handle is returned on success. Bind 
        !          2341: handle and define handles are allocated with respect to a statement handle. All
        !          2342: other handles are allocated with respect to an environment handle which is 
        !          2343: passed in as a parent handle.
        !          2344: No diagnostics are available on error. This call returns OCI_SUCCESS if 
        !          2345: successful, or OCI_INVALID_HANDLE if an out-of-memory error occurs.
        !          2346: Handles must be allocated using OCIHandleAlloc() before they can be passed 
        !          2347: into an OCI call.
        !          2348: Parameters
        !          2349: parenth (IN) - an environment or a statement handle. 
        !          2350: hndlpp (OUT) - returns a handle to a handle type. 
        !          2351: type (IN) - specifies the type of handle to be allocated. The specific types 
        !          2352: are: 
        !          2353: OCI_HTYPE_ERROR - specifies generation of an error report handle of 
        !          2354: C type OCIError
        !          2355: OCI_HTYPE_SVCCTX - specifies generation of a service context handle 
        !          2356: of C type OCISvcCtx
        !          2357: OCI_HTYPE_STMT - specifies generation of a statement (application 
        !          2358: request) handle of C type OCIStmt
        !          2359: OCI_HTYPE_BIND - specifies generation of a bind information handle 
        !          2360: of C type OCIBind
        !          2361: OCI_HTYPE_DEFINE - specifies generation of a column definition 
        !          2362: handle of C type OCIDefine
        !          2363: OCI_HTYPE_DESCRIBE  - specifies generation of a select list 
        !          2364: description handle of C type OCIDesc
        !          2365: OCI_HTYPE_SERVER - specifies generation of a server context handle 
        !          2366: of C type OCIServer
        !          2367: OCI_HTYPE_SESSION - specifies generation of an authentication 
        !          2368: context handle of C type OCISession
        !          2369: OCI_HTYPE_TRANS - specifies generation of a transaction context 
        !          2370: handle of C type OCITrans
        !          2371: OCI_HTYPE_COMPLEXOBJECT - specifies generation of a complex 
        !          2372: object retrieval handle of C type OCIComplexObject
        !          2373: OCI_HTYPE_SECURITY - specifies generation of a security handle of C 
        !          2374: type OCISecurity
        !          2375: xtramem_sz (IN) - specifies an amount of user memory to be allocated.
        !          2376: usrmempp (OUT) - returns a pointer to the user memory of size xtramemsz 
        !          2377: allocated by the call for the user. 
        !          2378: Related Functions
        !          2379: OCIHandleFree()
        !          2380: 
        !          2381: 
        !          2382: 
        !          2383: OCIHandleFree()
        !          2384: Name
        !          2385: OCI Free HaNDLe
        !          2386: Purpose
        !          2387: This call explicitly deallocates a handle.
        !          2388: Syntax
        !          2389: sword OCIHandleFree ( dvoid     *hndlp,
        !          2390:                     ub4       type);
        !          2391: Comments
        !          2392: This call frees up storage associated with a handle, corresponding to the type 
        !          2393: specified in the type parameter.
        !          2394: This call returns either OCI_SUCCESS or OCI_INVALID_HANDLE.
        !          2395: All handles must be explicitly deallocated. OCI will not deallocate a child 
        !          2396: handle if the parent is deallocated.
        !          2397: Parameters
        !          2398: hndlp (IN) - an opaque pointer to some storage.
        !          2399: type (IN) - specifies the type of storage to be allocated. The specific types are:
        !          2400: OCI_HTYPE_ENV - an environment handle
        !          2401: OCI_HTYPE_ERROR - an error report handle
        !          2402: OCI_HTYPE_SVCCTX - a service context handle
        !          2403: OCI_HTYPE_STMT - a statement (application request) handle
        !          2404: OCI_HTYPE_BIND - a bind information handle
        !          2405: OCI_HTYPE_DEFINE - a column definition handle
        !          2406: OCI_HTYPE_DESCRIBE  - a select list description handle
        !          2407: OCI_HTYPE_SERVER - a server handle
        !          2408: OCI_HTYPE_SESSION - a user authentication handle
        !          2409: OCI_HTYPE_TRANS - a transaction handle
        !          2410: OCI_HTYPE_COMPLEXOBJECT - a complex object retrieval handle
        !          2411: OCI_HTYPE_SECURITY - a security handle
        !          2412: Related Functions
        !          2413: OCIHandleAlloc()
        !          2414: 
        !          2415: 
        !          2416: 
        !          2417: 
        !          2418: OCIInitialize()
        !          2419: Name
        !          2420: OCI Process Initialize
        !          2421: Purpose
        !          2422: Initializes the OCI process environment.
        !          2423: Syntax
        !          2424: sword OCIInitialize ( ub4           mode,
        !          2425:                     CONST dvoid   *ctxp, 
        !          2426:                     CONST dvoid   *(*malocfp) 
        !          2427:                                   ( dvoid *ctxp,
        !          2428:                                     size_t size ),
        !          2429:                     CONST dvoid   *(*ralocfp)
        !          2430:                                   ( dvoid *ctxp,
        !          2431:                                     dvoid *memp,
        !          2432:                                     size_t newsize ),
        !          2433:                     CONST void    (*mfreefp)
        !          2434:                                   ( dvoid *ctxp,
        !          2435:                                     dvoid *memptr ));
        !          2436: Comments
        !          2437: This call initializes the OCI process environment.
        !          2438: OCIInitialize() must be invoked before any other OCI call. 
        !          2439: Parameters
        !          2440: mode (IN) - specifies initialization of the mode. The valid modes are:
        !          2441: OCI_DEFAULT - default mode.
        !          2442: OCI_THREADED - threaded environment. In this mode, internal data 
        !          2443: structures are protected from concurrent accesses by multiple threads. 
        !          2444: OCI_OBJECT - will use navigational object interface. 
        !          2445: ctxp (IN) - user defined context for the memory call back routines. 
        !          2446: malocfp (IN) - user-defined memory allocation function. If mode is 
        !          2447: OCI_THREADED, this memory allocation routine must be thread safe.
        !          2448: ctxp - context pointer for the user-defined memory allocation function.
        !          2449: size - size of memory to be allocated by the user-defined memory 
        !          2450: allocation function
        !          2451: ralocfp (IN) - user-defined memory re-allocation function. If mode is 
        !          2452: OCI_THREADED, this memory allocation routine must be thread safe.
        !          2453: ctxp - context pointer for the user-defined memory reallocation 
        !          2454: function.
        !          2455: memp - pointer to memory block
        !          2456: newsize - new size of memory to be allocated
        !          2457: mfreefp (IN) - user-defined memory free function. If mode is 
        !          2458: OCI_THREADED, this memory free routine must be thread safe.
        !          2459: ctxp - context pointer for the user-defined memory free function.
        !          2460: memptr - pointer to memory to be freed
        !          2461: Example
        !          2462: See the description of OCIStmtPrepare() on page 13-96 for an example showing 
        !          2463: the use of OCIInitialize().
        !          2464: Related Functions
        !          2465: 
        !          2466: 
        !          2467: --------------------------------OCITerminate------------------------------------
        !          2468: 
        !          2469: OCITerminate()
        !          2470: Name
        !          2471: OCI process Terminate
        !          2472: Purpose
        !          2473: Do cleanup before process termination
        !          2474: Syntax
        !          2475: sword OCITerminate ( ub4           mode);
        !          2476: 
        !          2477: Comments
        !          2478: This call performs  OCI related clean up before the OCI process terminates.
        !          2479: If the process is running in shared mode then the OCI process is disconnected
        !          2480: from the shared memory subsystem.
        !          2481: 
        !          2482: OCITerminate() should be the last OCI call in any process.
        !          2483: 
        !          2484: Parameters
        !          2485: mode (IN) - specifies different termination modes.
        !          2486: 
        !          2487: OCI_DEFAULT - default mode.
        !          2488: 
        !          2489: Example
        !          2490: 
        !          2491: Related Functions
        !          2492: OCIInitialize()
        !          2493: 
        !          2494:  ---------------------- OCIIntervalAssign -------------------- 
        !          2495: void OCIIntervalAssign(dvoid *hndl, OCIError *err, CONST OCIInterval *inpinter,
        !          2496:                        OCIInterval *outinter );
        !          2497: 
        !          2498:   DESCRIPTION
        !          2499:     Copies one interval to another to create a replica
        !          2500:   PARAMETERS
        !          2501:      hndl (IN) - Session/Env handle.
        !          2502:     err (IN/OUT) - error handle. If there is an error, it is
        !          2503:                 recorded in 'err' and this function returns OCI_ERROR.
        !          2504:                 The error recorded in 'err' can be retrieved by calling
        !          2505:                 OCIErrorGet().
        !          2506:     (IN)  inpinter - Input Interval 
        !          2507:     (OUT) outinter - Output Interval 
        !          2508:   RETURNS
        !          2509:      OCI_INVALID_HANDLE if 'err' is NULL.
        !          2510:      OCI_SUCCESS otherwise
        !          2511: 
        !          2512:  ---------------------- OCIIntervalCheck -------------------- 
        !          2513: sword OCIIntervalCheck(dvoid *hndl, OCIError *err, CONST OCIInterval *interval,
        !          2514:                         ub4 *valid );
        !          2515: 
        !          2516:   DESCRIPTION
        !          2517:     Checks the validity of an interval
        !          2518:   PARAMETERS
        !          2519:      hndl (IN) - Session/Env handle.
        !          2520:     err (IN/OUT) - error handle. If there is an error, it is
        !          2521:                 recorded in 'err' and this function returns OCI_ERROR.
        !          2522:                 The error recorded in 'err' can be retrieved by calling
        !          2523:                 OCIErrorGet().
        !          2524:     (IN)  interval - Interval to be checked 
        !          2525:     (OUT) valid     - Zero if the interval is valid, else returns an Ored
        !          2526:        combination of the following codes.
        !          2527: 
        !          2528:    Macro name                   Bit number      Error
        !          2529:    ----------                   ----------      -----
        !          2530:    OCI_INTER_INVALID_DAY         0x1           Bad day
        !          2531:    OCI_INTER_DAY_BELOW_VALID     0x2           Bad DAy Low/high bit (1=low)
        !          2532:    OCI_INTER_INVALID_MONTH       0x4           Bad MOnth
        !          2533:    OCI_INTER_MONTH_BELOW_VALID   0x8           Bad MOnth Low/high bit (1=low)
        !          2534:    OCI_INTER_INVALID_YEAR        0x10          Bad YeaR
        !          2535:    OCI_INTER_YEAR_BELOW_VALID    0x20          Bad YeaR Low/high bit (1=low)
        !          2536:    OCI_INTER_INVALID_HOUR        0x40          Bad HouR
        !          2537:    OCI_INTER_HOUR_BELOW_VALID    0x80          Bad HouR Low/high bit (1=low)
        !          2538:    OCI_INTER_INVALID_MINUTE      0x100         Bad MiNute
        !          2539:    OCI_INTER_MINUTE_BELOW_VALID         0x200         Bad MiNute Low/high bit(1=low)
        !          2540:    OCI_INTER_INVALID_SECOND      0x400         Bad SeCond
        !          2541:    OCI_INTER_SECOND_BELOW_VALID  0x800         bad second Low/high bit(1=low)
        !          2542:    OCI_INTER_INVALID_FRACSEC     0x1000        Bad Fractional second
        !          2543:    OCI_INTER_FRACSEC_BELOW_VALID 0x2000        Bad fractional second Low/High
        !          2544: 
        !          2545:        
        !          2546:   RETURNS
        !          2547:     OCI_SUCCESS if interval is okay
        !          2548:     OCI_INVALID_HANDLE if 'err' is NULL.
        !          2549: 
        !          2550:  ---------------------- OCIIntervalCompare -------------------- 
        !          2551: sword OCIIntervalCompare(dvoid *hndl, OCIError *err, OCIInterval *inter1, 
        !          2552:                        OCIInterval *inter2, sword *result );
        !          2553: 
        !          2554:   DESCRIPTION
        !          2555:        Compares two intervals, returns 0 if equal, -1 if inter1 < inter2, 
        !          2556:        1 if inter1 > inter2
        !          2557:   PARAMETERS
        !          2558:      hndl (IN) - Session/Env handle. 
        !          2559:      err (IN/OUT) - error handle. If there is an error, it is
        !          2560:                 recorded in 'err' and this function returns OCI_ERROR.
        !          2561:                 The error recorded in 'err' can be retrieved by calling
        !          2562:                 OCIErrorGet().
        !          2563:      inter1  (IN)   - Interval to be compared 
        !          2564:      inter2  (IN)   - Interval to be compared 
        !          2565:      result  (OUT)  -  comparison result, 0 if equal, -1 if inter1 < inter2, 
        !          2566:                        1 if inter1 > inter2
        !          2567: 
        !          2568:   RETURNS
        !          2569:      OCI_SUCCESS on success
        !          2570:      OCI_INVALID_HANDLE if 'err' is NULL.
        !          2571:      OCI_ERROR if 
        !          2572:        the two input datetimes are not mutually comparable.
        !          2573: 
        !          2574: ---------------------- OCIIntervalDivide -------------------- 
        !          2575: sword OCIIntervalDivide(dvoid *hndl, OCIError *err, OCIInterval *dividend, 
        !          2576:                OCINumber *divisor, OCIInterval *result );
        !          2577:  
        !          2578:   DESCRIPTION
        !          2579:      Divides an interval by an Oracle Number to produce an interval
        !          2580:   PARAMETERS
        !          2581:        hndl (IN) - Session/Env handle. 
        !          2582:      err (IN/OUT) - error handle. If there is an error, it is
        !          2583:                 recorded in 'err' and this function returns OCI_ERROR.
        !          2584:                 The error recorded in 'err' can be retrieved by calling
        !          2585:                 OCIErrorGet().
        !          2586:      dividend  (IN)   - Interval to be divided 
        !          2587:      divisor   (IN)   - Oracle Number dividing `dividend' 
        !          2588:      result    (OUT)  - resulting interval (dividend / divisor) 
        !          2589:   RETURNS
        !          2590:      OCI_SUCCESS on success
        !          2591:      OCI_INVALID_HANDLE if 'err' is NULL.
        !          2592:  
        !          2593:  ---------------------- OCIIntervalFromNumber -------------------- 
        !          2594: sword OCIIntervalFromNumber(dvoid *hndl, OCIError *err, 
        !          2595:                OCIInterval *inter, OCINumber *number);
        !          2596:   DESCRIPTION
        !          2597:     Converts an interval to an Oracle Number
        !          2598:   PARAMETERS
        !          2599:      hndl (IN) - Session/Env handle. 
        !          2600:     err (IN/OUT) - error handle. If there is an error, it is
        !          2601:                 recorded in 'err' and this function returns OCI_ERROR.
        !          2602:                 The error recorded in 'err' can be retrieved by calling
        !          2603:                 OCIErrorGet().
        !          2604:     (OUT)  interval - Interval to be converted 
        !          2605:     (IN) number - Oracle number result  (in years for YEARMONTH interval
        !          2606:                      and in days for DAYSECOND)
        !          2607:   RETURNS
        !          2608:     OCI_SUCCESS on success 
        !          2609:     OCI_INVALID_HANDLE if 'err' is NULL.
        !          2610:     OCI_ERROR on error.
        !          2611:   NOTES
        !          2612:     Fractional portions of the date (for instance, minutes and seconds if
        !          2613:     the unit chosen is hours) will be included in the Oracle number produced.
        !          2614:     Excess precision will be truncated.
        !          2615:  
        !          2616:  ---------------------- OCIIntervalFromText -------------------- 
        !          2617: sword OCIIntervalFromText(dvoid *hndl, OCIError *err, CONST OraText *inpstring,
        !          2618:                size_t str_len, OCIInterval *result );
        !          2619: 
        !          2620:   DESCRIPTION
        !          2621:     Given an interval string produce the interval represented by the string. 
        !          2622:     The type of the interval is the type of the 'result' descriptor.
        !          2623:   PARAMETERS
        !          2624: 
        !          2625:      hndl (IN) - Session/Env handle. 
        !          2626:      err (IN/OUT) - error handle. If there is an error, it is
        !          2627:                 recorded in 'err' and this function returns OCI_ERROR.
        !          2628:                 The error recorded in 'err' can be retrieved by calling
        !          2629:                 OCIErrorGet().
        !          2630:     (IN)  inpstring - Input string 
        !          2631:     (IN)  str_len - Length of input string 
        !          2632:     (OUT) result - Resultant interval 
        !          2633:   RETURNS
        !          2634:     OCI_SUCCESS on success
        !          2635:     OCI_INVALID_HANDLE if 'err' is NULL.
        !          2636:     OCI_ERROR if
        !          2637:        there are too many fields in the literal string
        !          2638:        the year is out of range (-4713 to 9999)
        !          2639:        if the month is out of range (1 to 12)
        !          2640:        if the day of month is out of range (1 to 28...31)
        !          2641:        if hour is not in range (0 to 23)
        !          2642:        if hour is not in range (0 to 11)
        !          2643:        if minute is not in range (0 to 59)
        !          2644:        if seconds in minute not in range (0 to 59)
        !          2645:        if seconds in day not in range (0 to 86399)
        !          2646:        if the interval is invalid
        !          2647: 
        !          2648:  ---------------------- OCIIntervalGetDaySecond -------------------- 
        !          2649: 
        !          2650:   DESCRIPTION
        !          2651:      Gets values of day second interval
        !          2652:   PARAMETERS
        !          2653:        hndl (IN) - Session/Env handle.
        !          2654:         err (IN/OUT) - error handle. If there is an error, it is
        !          2655:                 recorded in 'err' and this function returns OCI_ERROR.
        !          2656:                 The error recorded in 'err' can be retrieved by calling
        !          2657:                 OCIErrorGet().     
        !          2658:         day     (OUT) - number of days
        !          2659:         hour    (OUT) - number of hours
        !          2660:         min     (OUT) - number of mins
        !          2661:         sec     (OUT) - number of secs
        !          2662:         fsec    (OUT) - number of fractional seconds
        !          2663:        result     (IN)  - resulting interval 
        !          2664:   RETURNS
        !          2665:        OCI_SUCCESS on success
        !          2666:         OCI_INVALID_HANDLE if 'err' is NULL.
        !          2667: 
        !          2668:  ---------------------- OCIIntervalGetYearMonth -------------------- 
        !          2669: 
        !          2670:   DESCRIPTION
        !          2671:      Gets year month from an interval
        !          2672:   PARAMETERS
        !          2673:        hndl (IN) - Session/Env handle.
        !          2674:         err (IN/OUT) - error handle. If there is an error, it is
        !          2675:                 recorded in 'err' and this function returns OCI_ERROR.
        !          2676:                 The error recorded in 'err' can be retrieved by calling
        !          2677:                 OCIErrorGet().     
        !          2678:        year    (OUT)   - year value
        !          2679:        month   (OUT)   - month value
        !          2680:        result     (IN)  - resulting interval 
        !          2681:   RETURNS
        !          2682:        OCI_SUCCESS on success
        !          2683:         OCI_INVALID_HANDLE if 'err' is NULL.
        !          2684: 
        !          2685: 
        !          2686: ---------------------- OCIIntervalAdd -------------------- 
        !          2687: sword OCIIntervalAdd(dvoid *hndl, OCIError *err, OCIInterval *addend1, 
        !          2688:                        OCIInterval *addend2, OCIInterval *result );
        !          2689: NAME OCIIntervalAdd - Adds two intervals 
        !          2690: PARAMETERS
        !          2691: hndl (IN) - Session/Env handle. 
        !          2692: err (IN/OUT) - error handle. If there is an error, it is
        !          2693:                 recorded in 'err' and this function returns OCI_ERROR.
        !          2694:                 The error recorded in 'err' can be retrieved by calling
        !          2695:                 OCIErrorGet().
        !          2696: addend1  (IN)   - Interval to be added 
        !          2697: addend2  (IN)   - Interval to be added 
        !          2698: result   (OUT)  - resulting interval (addend1 + addend2) 
        !          2699: DESCRIPTION
        !          2700:      Adds two intervals to produce a resulting interval
        !          2701: RETURNS
        !          2702:      OCI_SUCCESS on success
        !          2703:      OCI_ERROR if:
        !          2704:        the two input intervals are not mutually comparable.
        !          2705:        the resulting year would go above SB4MAXVAL
        !          2706:        the resulting year would go below SB4MINVAL
        !          2707:      OCI_INVALID_HANDLE if 'err' is NULL.
        !          2708: NOTES
        !          2709:      The two input intervals must be mutually comparable
        !          2710: 
        !          2711:  ---------------------- OCIIntervalSubtract -------------------- 
        !          2712: sword OCIIntervalSubtract(dvoid *hndl, OCIError *err, OCIInterval *minuend, 
        !          2713:                            OCIInterval *subtrahend, OCIInterval *result );
        !          2714: NAME - OCIIntervalSubtract - subtracts two intervals
        !          2715: PARAMETERS
        !          2716: hndl (IN) - Session/Env handle.
        !          2717: err (IN/OUT) - error handle. If there is an error, it is
        !          2718:                 recorded in 'err' and this function returns OCI_ERROR.
        !          2719:                 The error recorded in 'err' can be retrieved by calling
        !          2720:                 OCIErrorGet().     
        !          2721: minuend    (IN)   - interval to be subtracted from 
        !          2722: subtrahend (IN)   - interval subtracted from minuend 
        !          2723: result     (OUT)  - resulting interval (minuend - subtrahend) 
        !          2724: DESCRIPTION
        !          2725:      Subtracts two intervals and stores the result in an interval
        !          2726: RETURNS
        !          2727:        OCI_SUCCESS on success
        !          2728:         OCI_INVALID_HANDLE if 'err' is NULL.
        !          2729:        OCI_ERROR if:
        !          2730:           the two input intervals are not mutually comparable.
        !          2731:           the resulting leading field would go below SB4MINVAL 
        !          2732:           the resulting leading field would go above SB4MAXVAL
        !          2733: 
        !          2734: ---------------------- OCIIntervalMultiply -------------------- 
        !          2735: sword OCIIntervalMultiply(dvoid *hndl, OCIError *err, CONST OCIInterval *inter,
        !          2736:                        OCINumber *nfactor, OCIInterval *result );
        !          2737: 
        !          2738:   DESCRIPTION
        !          2739:      Multiplies an interval by an Oracle Number to produce an interval
        !          2740:   PARAMETERS
        !          2741:        hndl (IN) - Session/Env handle. 
        !          2742:      err (IN/OUT) - error handle. If there is an error, it is
        !          2743:                 recorded in 'err' and this function returns OCI_ERROR.
        !          2744:                 The error recorded in 'err' can be retrieved by calling
        !          2745:                 OCIErrorGet().
        !          2746:      ifactor  (IN)   - Interval to be multiplied 
        !          2747:      nfactor  (IN)   - Oracle Number to be multiplied 
        !          2748:      result   (OUT)  - resulting interval (ifactor * nfactor) 
        !          2749:   RETURNS
        !          2750:      OCI_SUCCESS on success
        !          2751:      OCI_INVALID_HANDLE if 'err' is NULL.
        !          2752:      OCI_ERROR if:
        !          2753:        the resulting year would go above SB4MAXVAL
        !          2754:        the resulting year would go below SB4MINVAL
        !          2755: 
        !          2756: 
        !          2757:  ---------------------- OCIIntervalSetDaySecond -------------------- 
        !          2758: 
        !          2759:   DESCRIPTION
        !          2760:      Sets day second interval
        !          2761:   PARAMETERS
        !          2762:        hndl (IN) - Session/Env handle.
        !          2763:         err (IN/OUT) - error handle. If there is an error, it is
        !          2764:                 recorded in 'err' and this function returns OCI_ERROR.
        !          2765:                 The error recorded in 'err' can be retrieved by calling
        !          2766:                 OCIErrorGet().     
        !          2767:         day     (IN) - number of days
        !          2768:         hour    (IN) - number of hours
        !          2769:         min     (IN) - number of mins
        !          2770:         sec     (IN) - number of secs
        !          2771:         fsec    (IN) - number of fractional seconds
        !          2772:        result     (OUT)  - resulting interval 
        !          2773:   RETURNS
        !          2774:        OCI_SUCCESS on success
        !          2775:         OCI_INVALID_HANDLE if 'err' is NULL.
        !          2776: 
        !          2777:  ---------------------- OCIIntervalSetYearMonth -------------------- 
        !          2778: 
        !          2779:   DESCRIPTION
        !          2780:      Sets year month interval
        !          2781:   PARAMETERS
        !          2782:        hndl (IN) - Session/Env handle.
        !          2783:         err (IN/OUT) - error handle. If there is an error, it is
        !          2784:                 recorded in 'err' and this function returns OCI_ERROR.
        !          2785:                 The error recorded in 'err' can be retrieved by calling
        !          2786:                 OCIErrorGet().     
        !          2787:        year    (IN)   - year value
        !          2788:        month   (IN)   - month value
        !          2789:        result     (OUT)  - resulting interval 
        !          2790:   RETURNS
        !          2791:        OCI_SUCCESS on success
        !          2792:         OCI_INVALID_HANDLE if 'err' is NULL.
        !          2793: 
        !          2794: 
        !          2795:  ---------------------- OCIIntervalToNumber -------------------- 
        !          2796: sword OCIIntervalToNumber(dvoid *hndl, OCIError *err, CONST OCIInterval *inter,
        !          2797:                        OCINumber *number, uword units );
        !          2798: 
        !          2799:   DESCRIPTION
        !          2800:     Converts an interval to an Oracle Number
        !          2801:   PARAMETERS
        !          2802:      hndl (IN) - Session/Env handle. 
        !          2803:     err (IN/OUT) - error handle. If there is an error, it is
        !          2804:                 recorded in 'err' and this function returns OCI_ERROR.
        !          2805:                 The error recorded in 'err' can be retrieved by calling
        !          2806:                 OCIErrorGet().
        !          2807:     (IN)  interval - Interval to be converted 
        !          2808:     (OUT) number - Oracle number result   (in years for YEARMONTH interval
        !          2809:                      and in days for DAYSECOND)
        !          2810:   RETURNS
        !          2811:     OCI_INVALID_HANDLE if 'err' is NULL.
        !          2812:     OCI_SUCCESS on success 
        !          2813:   NOTES
        !          2814:     Fractional portions of the date (for instance, minutes and seconds if
        !          2815:     the unit chosen is hours) will be included in the Oracle number produced.
        !          2816:     Excess precision will be truncated.
        !          2817:  
        !          2818:  ---------------------- OCIIntervalToText -------------------- 
        !          2819: sword OCIIntervalToText( dvoid *hndl, OCIError *err, CONST OCIInterval *inter,
        !          2820:                         ub1 lfprec, ub1 fsprec, OraText *buffer, 
        !          2821:                         size_t buflen, size_t *resultlen );
        !          2822: 
        !          2823:   DESCRIPTION
        !          2824:     Given an interval, produces a string representing the interval.
        !          2825:   PARAMETERS
        !          2826:      hndl (IN) - Session/Env handle. 
        !          2827:     err (IN/OUT) - error handle. If there is an error, it is
        !          2828:                 recorded in 'err' and this function returns OCI_ERROR.
        !          2829:                 The error recorded in 'err' can be retrieved by calling
        !          2830:                 OCIErrorGet().
        !          2831:     (IN)  interval - Interval to be converted 
        !          2832:     (IN)  lfprec  - Leading field precision. Number of digits used to
        !          2833:                 represent the leading field.
        !          2834:     (IN)  fsprec  - Fractional second precision of the interval. Number of
        !          2835:                 digits used to represent the fractional seconds.
        !          2836:     (OUT) buffer - buffer to hold result 
        !          2837:     (IN)  buflen - length of above buffer 
        !          2838:     (OUT) resultlen - length of result placed into buffer 
        !          2839:  
        !          2840:   RETURNS
        !          2841:     OCI_SUCCESS on success
        !          2842:     OCI_INVALID_HANDLE if 'err' is NULL.
        !          2843:     OCI_ERROR 
        !          2844:        if the buffer is not large enough to hold the result
        !          2845:   NOTES
        !          2846:     The interval literal will be output as `year' or `[year-]month' for
        !          2847:     YEAR-MONTH intervals and as `seconds' or `minutes[:seconds]' or
        !          2848:     `hours[:minutes[:seconds]]' or `days[ hours[:minutes[:seconds]]]' for
        !          2849:     DAY-TIME intervals (where optional fields are surrounded by brackets).
        !          2850: 
        !          2851: 
        !          2852: OCILdaToSvcCtx()
        !          2853: Name
        !          2854: OCI toggle version 7 Lda_Def to SerVice context handle
        !          2855: Purpose
        !          2856: Converts a V7 Lda_Def to a V8 service context handle.
        !          2857: Syntax
        !          2858: sword OCILdaToSvcCtx ( OCISvcCtx  **svchpp,
        !          2859:                      OCIError   *errhp,
        !          2860:                      Lda_Def    *ldap );
        !          2861: Comments
        !          2862: Converts a V7 Lda_Def to a V8 service context handle. The action of this call 
        !          2863: can be reversed by passing the resulting service context handle to the 
        !          2864: OCISvcCtxToLda() function.
        !          2865: Parameters
        !          2866: svchpp (IN/OUT) - the service context handle. 
        !          2867: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          2868: diagnostic information in the event of an error.
        !          2869: ldap (IN/OUT) - the V7 logon data area returned by OCISvcCtxToLda() from 
        !          2870: this service context.
        !          2871: Related Functions
        !          2872: OCISvcCtxToLda()
        !          2873: 
        !          2874: 
        !          2875: 
        !          2876: 
        !          2877: OCILobAppend()
        !          2878: 
        !          2879: Name
        !          2880: OCI Lob APpend
        !          2881: 
        !          2882: Purpose
        !          2883: Appends a LOB value at the end of another LOB. 
        !          2884: 
        !          2885: Syntax
        !          2886: sword OCILobAppend ( OCISvcCtx        *svchp,
        !          2887:                    OCIError         *errhp,
        !          2888:                    OCILobLocator    *dst_locp,
        !          2889:                    OCILobLocator    *src_locp );
        !          2890: Comments
        !          2891: Appends a LOB value at the end of LOB. The data is 
        !          2892: copied from the source to the destination at the end of the destination. The 
        !          2893: source and the destination must already exist. The destination LOB is 
        !          2894: extended to accommodate the newly written data.
        !          2895: 
        !          2896: It is an error to extend the destination LOB beyond the maximum length 
        !          2897: allowed or to try to copy from a NULL LOB. 
        !          2898: 
        !          2899: Parameters
        !          2900: svchp (IN) - the service context handle. 
        !          2901: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          2902: diagnostic information in the event of an error. 
        !          2903: dst_locp (IN/OUT) - a locator uniquely referencing the destination LOB. 
        !          2904: src_locp (IN/OUT) - a locator uniquely referencing the source LOB. 
        !          2905: 
        !          2906: Related Functions
        !          2907: OCILobTrim()
        !          2908: OCIErrorGet()
        !          2909: OCILobWrite()
        !          2910: OCILobCopy()
        !          2911: 
        !          2912: 
        !          2913: 
        !          2914: 
        !          2915: 
        !          2916: OCILobAssign()
        !          2917: 
        !          2918: Name
        !          2919: OCI Lob ASsiGn
        !          2920: 
        !          2921: Purpose
        !          2922: Assigns one LOB/FILE locator to another.
        !          2923: 
        !          2924: Syntax
        !          2925: sword OCILobAssign ( OCIEnv                *envhp, 
        !          2926:                      OCIError              *errhp, 
        !          2927:                      CONST OCILobLocator   *src_locp, 
        !          2928:                      OCILobLocator         **dst_locpp );
        !          2929: 
        !          2930: Comments
        !          2931: Assign source locator to destination locator.  After the assignment, both 
        !          2932: locators refer to the same LOB data.  For internal LOBs, the source locator's 
        !          2933: LOB data gets copied to the destination locator's LOB data only when the 
        !          2934: destination locator gets stored in the table.  Therefore, issuing a flush of 
        !          2935: the object containing the destination locator will copy the LOB data. For FILEs
        !          2936: only the locator that refers to the OS file is copied to the table. The OS file
        !          2937: is not copied.
        !          2938: 
        !          2939: Parameters
        !          2940: envhp (IN/OUT) - OCI environment handle initialized in object mode.
        !          2941: errhp (IN/OUT) - The OCI error handle. If there is an error, it is recorded in 
        !          2942: errhp and this function returns OCI_ERROR. Diagnostic information can be 
        !          2943: obtained by calling OCIErrorGet().
        !          2944: src_locp (IN) - LOB locator to copy from.
        !          2945: dst_locpp (IN/OUT) - LOB locator to copy to.  The caller must allocate space 
        !          2946: for the OCILobLocator by calling OCIDescriptorAlloc().
        !          2947: Note: The only difference between this and OCILobLocatorAssign is that this
        !          2948: takes an environment handle whereas OCILobLocatorAssign takes an OCI service
        !          2949: handle
        !          2950: 
        !          2951: See also
        !          2952: OCIErrorGet()
        !          2953: OCILobIsEqual()
        !          2954: OCILobLocatorIsInit()
        !          2955: OCILobLocatorAssign()
        !          2956: 
        !          2957: 
        !          2958: 
        !          2959: OCILobCharSetForm()
        !          2960: 
        !          2961: Name
        !          2962: OCI Lob Get Character Set Form
        !          2963: 
        !          2964: Purpose
        !          2965: Gets the LOB locator's character set fpr,, if any.
        !          2966: 
        !          2967: Syntax
        !          2968: sword OCILobCharSetForm ( OCIEnv                    *envhp, 
        !          2969:                           OCIError                  *errhp, 
        !          2970:                           CONST OCILobLocator       *locp, 
        !          2971:                           ub1                       *csfrm );
        !          2972: 
        !          2973: Comments
        !          2974: Returns the character set form of the input LOB locator in the csfrm output 
        !          2975: parameter. 
        !          2976: 
        !          2977: Parameters
        !          2978: envhp (IN/OUT) - OCI environment handle initialized in object mode.
        !          2979: errhp (IN/OUT) - error handle. The OCI error handle. If there is an error, it 
        !          2980: is recorded in err and this function returns OCI_ERROR. Diagnostic information 
        !          2981: can be obtained by calling OCIErrorGet().
        !          2982: locp (IN) - LOB locator for which to get the character set form.
        !          2983: csfrm(OUT) - character set form of the input LOB locator.  If the input 
        !          2984: locator is for a BLOB or a BFILE, csfrm is set to 0 since there is no concept 
        !          2985: of a character set for binary LOBs/FILEs.  The caller must allocate space for 
        !          2986: the csfrm (ub1) and not write into the space.
        !          2987: See also
        !          2988: OCIErrorGet(), OCILobCharSetId(), OCILobLocatorIsInit
        !          2989: 
        !          2990: 
        !          2991: 
        !          2992: 
        !          2993: OCILobCharSetId()
        !          2994: 
        !          2995: Name
        !          2996: OCI Lob get Character Set IDentifier
        !          2997: 
        !          2998: Purpose
        !          2999: Gets the LOB locator's character set ID, if any.
        !          3000: 
        !          3001: Syntax
        !          3002: sword OCILobCharSetId ( OCIEnv                    *envhp, 
        !          3003:                         OCIError                  *errhp, 
        !          3004:                         CONST OCILobLocator       *locp, 
        !          3005:                         ub2                       *csid );
        !          3006: 
        !          3007: Comments
        !          3008: Returns the character set ID of the input LOB locator in the cid output 
        !          3009: parameter. 
        !          3010: 
        !          3011: Parameters
        !          3012: envhp (IN/OUT) - OCI environment handle initialized in object mode.
        !          3013: errhp (IN/OUT) - error handle. The OCI error handle. If there is an error, it 
        !          3014: is recorded in err and this function returns OCI_ERROR. Diagnostic information 
        !          3015: can be obtained by calling OCIErrorGet().
        !          3016: locp (IN) - LOB locator for which to get the character set ID.
        !          3017: csid (OUT) - character set ID of the input LOB locator.  If the input locator 
        !          3018: is for a BLOB or a BFILE, csid is set to 0 since there is no concept of a 
        !          3019: 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.
        !          3020: 
        !          3021: See also
        !          3022: OCIErrorGet(), OCILobCharSetForm(), OCILobLocatorIsInit()
        !          3023: 
        !          3024: 
        !          3025: 
        !          3026: 
        !          3027: OCILobCopy()
        !          3028: 
        !          3029: Name
        !          3030: OCI Lob Copy
        !          3031: 
        !          3032: Purpose
        !          3033: Copies a portion of a LOB value into another LOB value.
        !          3034: 
        !          3035: Syntax
        !          3036: sword OCILobCopy ( OCISvcCtx        *svchp,
        !          3037:                    OCIError         *errhp,
        !          3038:                    OCILobLocator    *dst_locp,
        !          3039:                    OCILobLocator    *src_locp,
        !          3040:                    ub4              amount,
        !          3041:                    ub4              dst_offset,
        !          3042:                    ub4              src_offset );
        !          3043: 
        !          3044: Comments
        !          3045: Copies a portion of a LOB value into another LOB as specified. The data 
        !          3046: is copied from the source to the destination. The source (src_locp) and the 
        !          3047: destination (dlopb) LOBs must already exist.
        !          3048: If the data already exists at the destination's start position, it is 
        !          3049: overwritten with the source data. If the destination's start position is 
        !          3050: beyond the end of the current data, a hole is created from the end of the data
        !          3051: to the beginning of the newly written data from the source. The destination 
        !          3052: LOB is extended to accommodate the newly written data if it extends 
        !          3053: beyond the current length of the destination LOB. 
        !          3054: It is an error to extend the destination LOB beyond the maximum length 
        !          3055: allowed or to try to copy from a NULL LOB.
        !          3056: Parameters
        !          3057: svchp (IN) - the service context handle. 
        !          3058: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          3059: diagnostic information in the event of an error. 
        !          3060: dst_locp (IN/OUT) - a locator uniquely referencing the destination LOB. 
        !          3061: src_locp (IN/OUT) - a locator uniquely referencing the source LOB. 
        !          3062: amount (IN) - the number of character or bytes, as appropriate, to be copied.
        !          3063: dst_offset (IN) - this is the absolute offset for the destination LOB. 
        !          3064: For character LOBs it is the number of characters from the beginning of the 
        !          3065: LOB at which to begin writing. For binary LOBs it is the number of bytes from 
        !          3066: the beginning of the lob from which to begin reading. The offset starts at 1.
        !          3067: src_offset (IN) - this is the absolute offset for the source LOB. 
        !          3068: For character LOBs it is the number of characters from the beginning of the 
        !          3069: LOB, for binary LOBs it is the number of bytes. Starts at 1.
        !          3070: 
        !          3071: See Also 
        !          3072: OCIErrorGet(), OCILobAppend(), OCILobWrite(), OCILobTrim()
        !          3073: 
        !          3074: OCILobCreateTemporary()
        !          3075: 
        !          3076: Name
        !          3077: OCI Lob Create Temporary
        !          3078: 
        !          3079: Purpose
        !          3080: Create a Temporary Lob
        !          3081: 
        !          3082: Syntax
        !          3083: sword OCILobCreateTemporary(OCISvcCtx          *svchp,
        !          3084:                             OCIError           *errhp,
        !          3085:                             OCILobLocator      *locp,
        !          3086:                             ub2                 csid,
        !          3087:                             ub1                 csfrm,
        !          3088:                             ub1                 lobtype,
        !          3089:                             boolean             cache,
        !          3090:                             OCIDuration         duration);
        !          3091: 
        !          3092: 
        !          3093: Comments
        !          3094: svchp (IN) - the service context handle. 
        !          3095: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          3096: diagnostic information in the event of an error. 
        !          3097: locp (IN/OUT) - a locator which points to the temporary Lob
        !          3098: csid (IN) - the character set id
        !          3099: csfrm(IN) - the character set form
        !          3100: lobtype (IN) - the lob type - one of the three constants OCI_TEMP_BLOB, 
        !          3101:                OCI_TEMP_CLOB and OCI_TEMP_NCLOB
        !          3102: cache(IN)-  TRUE if the temporary LOB goes through the cache; FALSE, if not.
        !          3103: duration(IN)- duration of the temporary LOB; Can be a valid duration id or one 
        !          3104:               of the values: OCI_DURATION_SESSION, OCI_DURATION_CALL
        !          3105:              Note: OCI_DURATION_TRANSACTION is not supported in 8.1. 
        !          3106: Related functions
        !          3107: OCILobFreeTemporary()
        !          3108: OCILobIsTemporary()
        !          3109: 
        !          3110: OCILobDisableBuffering()
        !          3111: 
        !          3112: Name
        !          3113: OCI Lob Disable Buffering
        !          3114: 
        !          3115: Purpose
        !          3116: Disable lob buffering for the input locator.
        !          3117: 
        !          3118: 
        !          3119: Syntax
        !          3120: sword OCILobDisableBuffering ( OCISvcCtx      *svchp,
        !          3121:                                OCIError       *errhp,
        !          3122:                                OCILobLocator  *locp);
        !          3123: 
        !          3124: Comments
        !          3125: 
        !          3126: Disable lob buffering for the input locator.  The next time data is
        !          3127: read/written from/to the lob through the input locator, the lob
        !          3128: buffering subsystem is *not* used.  
        !          3129: 
        !          3130: Parameters
        !          3131: svchp (IN) - the service context handle. 
        !          3132: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          3133: diagnostic information in the event of an error. 
        !          3134: locp (IN/OUT) - a locator uniquely referencing the LOB. 
        !          3135: 
        !          3136: Related Functions
        !          3137: OCILobEnableBuffering()
        !          3138: OCIErrorGet()
        !          3139: OCILobFlush()
        !          3140: 
        !          3141: 
        !          3142: 
        !          3143: 
        !          3144: OCILobEnableBuffering()
        !          3145: 
        !          3146: Name
        !          3147: OCI Lob Enable Buffering
        !          3148: 
        !          3149: Purpose
        !          3150: Enable lob buffering for the input locator.
        !          3151: 
        !          3152: 
        !          3153: Syntax
        !          3154: sword OCILobEnableBuffering ( OCISvcCtx      *svchp,
        !          3155:                               OCIError       *errhp,
        !          3156:                               OCILobLocator  *locp);
        !          3157: 
        !          3158: Comments
        !          3159: 
        !          3160: Enable lob buffering for the input locator.  The next time data is
        !          3161: read/written from/to the lob through the input locator, the lob
        !          3162: buffering subsystem is used.  
        !          3163: 
        !          3164: Once lob buffering is enabled for a locator, if that locator is passed to 
        !          3165: one of the following routines, an error is returned:
        !          3166:         OCILobCopy, OCILobAppend, OCILobErase, OCILobGetLength, OCILobTrim
        !          3167: 
        !          3168: Parameters
        !          3169: svchp (IN) - the service context handle. 
        !          3170: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          3171: diagnostic information in the event of an error. 
        !          3172: locp (IN/OUT) - a locator uniquely referencing the LOB. 
        !          3173: 
        !          3174: Related Functions
        !          3175: OCILobDisableBuffering()
        !          3176: OCIErrorGet()
        !          3177: OCILobWrite()
        !          3178: OCILobRead()
        !          3179: OCILobFlush()
        !          3180: 
        !          3181: 
        !          3182: 
        !          3183: 
        !          3184: OCILobErase()
        !          3185: 
        !          3186: Name
        !          3187: OCI Lob ERase
        !          3188: 
        !          3189: Purpose
        !          3190: Erases a specified portion of the LOB data starting at a specified offset.
        !          3191: 
        !          3192: Syntax
        !          3193: sword OCILobErase ( OCISvcCtx       *svchp,
        !          3194:                   OCIError        *errhp,
        !          3195:                   OCILobLocator   *locp,
        !          3196:                   ub4             *amount,
        !          3197:                   ub4             offset );
        !          3198: 
        !          3199: Comments
        !          3200: Erases a specified portion of the LOB data starting at a specified offset.
        !          3201: The actual number of characters/bytes erased is returned. The actual number 
        !          3202: of characters/bytes and the requested number of characters/bytes will differ 
        !          3203: if the end of the LOB data is reached before erasing the requested number of 
        !          3204: characters/bytes.
        !          3205: If a section of data from the middle of the LOB data is erased, a hole is 
        !          3206: created. When data from that hole is read, 0's are returned. If the LOB is
        !          3207: NULL, this routine will indicate that 0 characters/bytes were erased.
        !          3208: 
        !          3209: Parameters
        !          3210: svchp (IN) - the service context handle.
        !          3211: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          3212: diagnostic information in the event of an error.
        !          3213: locp (IN/OUT) - the LOB for which to erase a section of data.
        !          3214: amount (IN/OUT) - On IN, the number of characters/bytes to erase. On OUT, 
        !          3215: the actual number of characters/bytes erased.
        !          3216: offset (IN) - absolute offset from the beginning of the LOB data from which to 
        !          3217: start erasing data. Starts at 1.
        !          3218: 
        !          3219: See Also
        !          3220: OCIErrorGet(), OCILobRead(), OCILobWrite()
        !          3221: 
        !          3222: 
        !          3223: 
        !          3224: 
        !          3225: OCILobFileClose()
        !          3226: 
        !          3227: Name
        !          3228: OCI Lob File CLoSe
        !          3229: 
        !          3230: Purpose
        !          3231: Closes a previously opened FILE.
        !          3232: 
        !          3233: Syntax
        !          3234: sword OCILobFileClose ( OCISvcCtx            *svchp,
        !          3235:                         OCIError             *errhp,
        !          3236:                         OCILobLocator        *filep );
        !          3237: 
        !          3238: Comments
        !          3239: Closes a previously opened FILE. It is an error if this function is called for
        !          3240: an internal LOB. No error is returned if the FILE exists but is not opened.
        !          3241: Parameters
        !          3242: svchp (IN) - the service context handle.
        !          3243: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          3244: diagnostic information in the event of an error.
        !          3245: filep (IN/OUT) - a pointer to a FILE locator to be closed.
        !          3246: 
        !          3247: See Also
        !          3248: OCIErrorGet(), OCILobFileOpen(), OCILobFileCloseAll(), OCILobFileIsOpen(),
        !          3249: OCILobFileExists(), CREATE DIRECTORY DDL
        !          3250: 
        !          3251: 
        !          3252: 
        !          3253: 
        !          3254: 
        !          3255: 
        !          3256: OCILobFileCloseAll()
        !          3257: 
        !          3258: Name
        !          3259: OCI LOB FILE Close All
        !          3260: 
        !          3261: Purpose
        !          3262: Closes all open FILEs on a given service context.
        !          3263: 
        !          3264: Syntax
        !          3265: sword OCILobFileCLoseAll ( OCISvcCtx *svchp, 
        !          3266:                            OCIError  *errhp );
        !          3267: 
        !          3268: Comments
        !          3269: Closes all open FILEs on a given service context.
        !          3270: 
        !          3271: Parameters
        !          3272: svchp (IN) - the service context handle.
        !          3273: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          3274: diagnostic information in the event of an error.
        !          3275: 
        !          3276: See also
        !          3277: OCILobFileClose(),
        !          3278: OCIErrorGet(), OCILobFileOpen(), OCILobFileIsOpen(),
        !          3279: OCILobFileExists(), CREATE DIRECTORY DDL
        !          3280: 
        !          3281: 
        !          3282: 
        !          3283: 
        !          3284: 
        !          3285: 
        !          3286: OCILobFileExists()
        !          3287: 
        !          3288: Name
        !          3289: OCI LOB FILE exists
        !          3290: 
        !          3291: Purpose
        !          3292: Tests to see if the FILE exists on the server
        !          3293: 
        !          3294: Syntax
        !          3295: sword OCILobFileExists ( OCISvcCtx     *svchp,
        !          3296:                          OCIError      *errhp,
        !          3297:                          OCILobLocator *filep,
        !          3298:                          boolean       *flag );
        !          3299: 
        !          3300: Comments
        !          3301: Checks to see if a FILE exists for on the server.
        !          3302: 
        !          3303: Parameters
        !          3304: svchp (IN) - the OCI service context handle.
        !          3305: errhp (IN/OUT) - error handle. The OCI error handle. If there is an error, 
        !          3306: it is recorded in err and this function returns OCI_ERROR. Diagnostic 
        !          3307: information can be obtained by calling OCIErrorGet().
        !          3308: filep (IN) - pointer to the FILE locator that refers to the file.
        !          3309: flag (OUT) - returns TRUE if the FILE exists; FALSE if it does not.
        !          3310: 
        !          3311: See also
        !          3312: OCIErrorGet, CREATE DIRECTORY (DDL)
        !          3313: 
        !          3314: 
        !          3315: 
        !          3316: 
        !          3317: OCILobFileGetName()
        !          3318: 
        !          3319: Name
        !          3320: OCI LOB FILE Get file Name
        !          3321: 
        !          3322: Purpose
        !          3323: Gets the FILE locator's directory alias and file name.
        !          3324: 
        !          3325: Syntax
        !          3326: sword OCILobFileGetName ( OCIEnv                   *envhp,
        !          3327:                           OCIError                 *errhp, 
        !          3328:                           CONST OCILobLocator      *filep, 
        !          3329:                           OraText                     *dir_alias,
        !          3330:                           ub2                      *d_length, 
        !          3331:                           OraText                     *filename, 
        !          3332:                           ub2                      *f_length );
        !          3333: 
        !          3334: Comments
        !          3335: Returns the directory alias and file name associated with this file locator.  
        !          3336: 
        !          3337: Parameters
        !          3338: envhp (IN/OUT) - OCI environment handle initialized in object mode.
        !          3339: errhp (IN/OUT) -The OCI error handle. If there is an error, it is recorded in 
        !          3340: errhp and this function returns OCI_ERROR. Diagnostic information can be 
        !          3341: obtained by calling OCIErrorGet().
        !          3342: filep (IN) - FILE locator for which to get the directory alias and file name.
        !          3343: dir_alias (OUT) - buffer into which the directory alias name is placed. The 
        !          3344: caller must allocate enough space for the directory alias name and must not 
        !          3345: write into the space.
        !          3346: d_length (IN/OUT)                 
        !          3347:         - IN: length of the input dir_alias string;
        !          3348:         - OUT: length of the returned dir_alias string.
        !          3349: filename (OUT) - buffer into which the file name is placed. The caller must 
        !          3350: allocate enough space for the file name and must not write into the space.
        !          3351: f_length (IN/OUT) 
        !          3352:         - IN: length of the input filename string;
        !          3353:          - OUT: lenght of the returned filename string.
        !          3354: 
        !          3355: See also
        !          3356: OCILobFileSetName(), OCIErrorGet()
        !          3357: 
        !          3358: 
        !          3359: 
        !          3360: 
        !          3361: OCILobFileIsOpen()
        !          3362: 
        !          3363: Name
        !          3364: OCI LOB FILE Is Open?
        !          3365: 
        !          3366: Purpose
        !          3367: Tests to see if the FILE is open
        !          3368: 
        !          3369: Syntax
        !          3370: sword OCILobFileIsOpen ( OCISvcCtx *svchp,
        !          3371:                          OCIError  *errhp,
        !          3372:                          OCILobLocator *filep,
        !          3373:                          boolean       *flag );
        !          3374: 
        !          3375: Comments
        !          3376: Checks to see if the FILE on the server is open for a given LobLocator.
        !          3377: 
        !          3378: Parameters
        !          3379: svchp (IN) - the OCI service context handle.
        !          3380: errhp (IN/OUT) - error handle. The OCI error handle. If there is an error, it 
        !          3381: is recorded in err and this function returns OCI_ERROR. Diagnostic information 
        !          3382: can be obtained by calling OCIErrorGet().
        !          3383: filep (IN) - pointer to the FILE locator being examined. If the input file 
        !          3384: locator was never passed to OCILobFileOpen(), the file is considered not to 
        !          3385: be opened by this locator. However, a different locator may have opened the 
        !          3386: file. More than one file opens can be performed on the same file using 
        !          3387: different locators.
        !          3388: flag (OUT) - returns TRUE if the FILE is opened using this locator; FALSE if 
        !          3389: it is not. 
        !          3390: 
        !          3391: See also
        !          3392: OCIErrorGet, OCILobFileOpen, OCILobFileClose, OCILobFileCloseAll, CREATE 
        !          3393: DIRECTORY SQL command
        !          3394: 
        !          3395: 
        !          3396: OCILobFileOpen()
        !          3397: 
        !          3398: Name
        !          3399: OCI LOB FILE open
        !          3400: 
        !          3401: Purpose
        !          3402: Opens a FILE for read-only access
        !          3403: 
        !          3404: Syntax
        !          3405: sword OCILobFileOpen ( OCISvcCtx            *svchp,
        !          3406:                      OCIError             *errhp,
        !          3407:                      OCILobLocator        *filep,
        !          3408:                      ub1                  mode );
        !          3409: 
        !          3410: Comments
        !          3411: Opens a FILE. The FILE can be opened for read-only access only. FILEs may not 
        !          3412: be written to throough ORACLE.
        !          3413: 
        !          3414: Parameters 
        !          3415: svchp (IN) - the service context handle. 
        !          3416: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          3417: diagnostic information in the event of an error.
        !          3418: filep (IN/OUT) - the FILE to open. Error if the locator does not refer to a 
        !          3419: FILE. 
        !          3420: mode (IN) - mode in which to open the file. The only valid mode is read-only - 
        !          3421: OCI_FILE_READONLY. 
        !          3422: 
        !          3423: See Also
        !          3424: OCILobFileClose, OCIErrorGet, OCILobFileCloseAll, OCILobFileIsOpen, 
        !          3425: OCILobFileSetName, CREATE DIRECTORY 
        !          3426: 
        !          3427: 
        !          3428: 
        !          3429: 
        !          3430: OCILobFileSetName()
        !          3431: 
        !          3432: Name
        !          3433: OCI Lob File Set NaMe
        !          3434: 
        !          3435: Purpose
        !          3436: Sets directory alias and file name in the FILE locator.
        !          3437: 
        !          3438: Syntax
        !          3439: sword OCILobFileSetName ( OCIEnv             *envhp,
        !          3440:                           OCIError           *errhp,
        !          3441:                           OCILobLocator      **filepp,
        !          3442:                           OraText               *dir_alias,
        !          3443:                           ub2                d_length, 
        !          3444:                           OraText               *filename, 
        !          3445:                           ub2                f_length );
        !          3446: Comments
        !          3447: Sets the directory alias and file name in the LOB file locator.  
        !          3448: Parameters
        !          3449: envhp (IN/OUT) - OCI environment handle initialized in object mode.
        !          3450: errhp (IN/OUT) - The OCI error handle. If there is an error, it is recorded in 
        !          3451: errhp and this function returns OCI_ERROR. Diagnostic information can be 
        !          3452: obtained by calling OCIErrorGet().
        !          3453: filepp (IN/OUT) - FILE locator for which to set the directory alias name.
        !          3454: The caller must have already allocated space for the locator by
        !          3455: calling OCIDescriptorAlloc().
        !          3456: dir_alias (IN) - buffer that contains the directory alias name to set in the 
        !          3457: locator.
        !          3458: d_length (IN) - length of the input dir_alias parameter.
        !          3459: filename (IN) - buffer that contains the file name is placed.
        !          3460: f_length (IN) - length of the input filename parameter.
        !          3461: See also
        !          3462: OCILobFileGetName, OCIErrorGet, CREATE DIRECTORY
        !          3463: 
        !          3464: 
        !          3465: 
        !          3466: 
        !          3467: OCILobFlushBuffer()
        !          3468: 
        !          3469: Name
        !          3470: OCI Lob Flush all Buffers for this lob.
        !          3471: 
        !          3472: Purpose
        !          3473: Flush/write all buffers for this lob to the server.
        !          3474: 
        !          3475: 
        !          3476: Syntax
        !          3477: sword OCILobFlushBuffer ( OCISvcCtx       *svchp,
        !          3478:                           OCIError        *errhp,
        !          3479:                           OCILobLocator   *locp,
        !          3480:                           ub4              flag);
        !          3481: 
        !          3482: Comments
        !          3483: 
        !          3484: Flushes all buffers, associated with the lob referenced by the input
        !          3485: locator, to the server.  This routine will actually write the data in
        !          3486: the buffer to the lob in the database.  Lob buffering must have been
        !          3487: enabled for the input lob locator.
        !          3488: 
        !          3489: This routine, by default, does not free the buffer resources for
        !          3490: reallocation to another buffered LOB operation. However, if you
        !          3491: want to free the buffer explicitly, you can set the flag parameter
        !          3492: to OCI_LOB_BUFFER_FREE.
        !          3493: 
        !          3494: Parameters
        !          3495: svchp (IN/OUT) - the service context handle. 
        !          3496: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          3497: diagnostic information in the event of an error. 
        !          3498: locp (IN/OUT) - a locator uniquely referencing the LOB. 
        !          3499: flag    (IN)     - to indicate if the buffer resources need to be freed
        !          3500:                    after a flush. Default value is OCI_LOB_BUFFER_NOFREE.
        !          3501:                    Set it to OCI_LOB_BUFFER_FREE if you want the buffer
        !          3502:                    resources to be freed.
        !          3503: 
        !          3504: Related Functions
        !          3505: OCILobEnableBuffering()
        !          3506: OCILobDisableBuffering()
        !          3507: OCIErrorGet()
        !          3508: OCILobWrite()
        !          3509: OCILobRead()
        !          3510: 
        !          3511: OCILobFreeTemporary()
        !          3512: 
        !          3513: Name
        !          3514: OCI Lob Free Temporary
        !          3515: 
        !          3516: Purpose
        !          3517: Free a temporary LOB
        !          3518: 
        !          3519: Syntax
        !          3520: sword OCILobFreeTemporary(OCISvcCtx          *svchp,
        !          3521:                           OCIError           *errhp,
        !          3522:                           OCILobLocator      *locp,
        !          3523: 
        !          3524: Comments
        !          3525:   Frees the contents of the temporary Lob this locator is pointing to. Note
        !          3526:   that the locator itself is not freed until a OCIDescriptorFree is done.
        !          3527: 
        !          3528: Parameters
        !          3529: svchp (IN/OUT) - the service context handle. 
        !          3530: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          3531: diagnostic information in the event of an error. 
        !          3532: locp (IN/OUT) - a locator uniquely referencing the LOB
        !          3533: 
        !          3534: Related functions
        !          3535: OCILobCreateTemporary()
        !          3536: OCILobIsTemporary()
        !          3537: 
        !          3538: Name
        !          3539: OCI Lob/File Get Chunk Size
        !          3540: 
        !          3541: Purpose
        !          3542: When creating the table, the user can specify the chunking factor, which can
        !          3543: be a multiple of Oracle blocks. This corresponds to the chunk size used by the
        !          3544: LOB data layer when accessing/modifying the LOB value. Part of the chunk is
        !          3545: used to store system-related information and the rest stores the LOB value.
        !          3546: This function returns the amount of space used in the LOB chunk to store 
        !          3547: the LOB value.
        !          3548: 
        !          3549: Syntax
        !          3550: sword OCILobGetChunkSize ( OCISvcCtx      *svchp,
        !          3551:                            OCIError       *errhp,
        !          3552:                            OCILobLocator  *locp,
        !          3553:                            ub4            *chunksizep );
        !          3554: 
        !          3555: Comments
        !          3556:  Performance will be improved if the user issues read/write
        !          3557: requests using a multiple of this chunk size. For writes, there is an added 
        !          3558: benefit since LOB chunks are versioned and, if all writes are done on chunk
        !          3559: basis, no extra/excess versioning is done nor duplicated. Users could batch 
        !          3560: up the write until they have enough for a chunk instead of issuing several
        !          3561: write calls for the same chunk.
        !          3562: 
        !          3563: Parameters
        !          3564: svchp (IN) - the service context handle.
        !          3565: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          3566: diagnostic information in the event of an error.
        !          3567: locp (IN/OUT) - a LOB locator that uniquely references the LOB. For internal
        !          3568: LOBs, this locator must be a locator that was obtained from the server 
        !          3569: specified by svchp. For FILEs, this locator can be initialized by a Select or
        !          3570: OCILobFileSetName.
        !          3571: chunksizep (OUT) - On output, it is the length of the LOB if not NULL - for 
        !          3572: character LOBs it is the number of characters, for binary LOBs it is the 
        !          3573: number of bytes in the LOB.
        !          3574: 
        !          3575: Related Functions
        !          3576: 
        !          3577: 
        !          3578: OCILobGetLength()
        !          3579: 
        !          3580: Name
        !          3581: OCI Lob/File Length
        !          3582: 
        !          3583: Purpose
        !          3584: Gets the length of a LOB/FILE. 
        !          3585: 
        !          3586: Syntax
        !          3587: sword OCILobGetLength ( OCISvcCtx      *svchp,
        !          3588:                         OCIError       *errhp,
        !          3589:                         OCILobLocator  *locp,
        !          3590:                         ub4            *lenp );
        !          3591: 
        !          3592: Comments
        !          3593: Gets the length of a LOB/FILE. If the LOB/FILE is NULL, the length is 
        !          3594: undefined.
        !          3595: 
        !          3596: Parameters
        !          3597: svchp (IN) - the service context handle.
        !          3598: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          3599: diagnostic information in the event of an error.
        !          3600: locp (IN/OUT) - a LOB locator that uniquely references the LOB. For internal
        !          3601: LOBs, this locator must be a locator that was obtained from the server 
        !          3602: specified by svchp. For FILEs, this locator can be initialized by a Select or
        !          3603: OCILobFileSetName.
        !          3604: lenp (OUT) - On output, it is the length of the LOB if not NULL - for 
        !          3605: character LOBs it is the number of characters, for binary LOBs it is the 
        !          3606: number of bytes in the LOB.
        !          3607: 
        !          3608: Related Functions
        !          3609: OCIErrorGet, OCIFileSetName
        !          3610: 
        !          3611: 
        !          3612: 
        !          3613: 
        !          3614: OCILobIsEqual()
        !          3615: 
        !          3616: Name
        !          3617: 
        !          3618: OCI Lob Is Equal
        !          3619: 
        !          3620: Purpose
        !          3621: Compares two LOB locators for equality.
        !          3622: 
        !          3623: Syntax
        !          3624: sword OCILobIsEqual ( OCIEnv                  *envhp,
        !          3625:                       CONST OCILobLocator     *x,
        !          3626:                       CONST OCILobLocator     *y,
        !          3627:                       boolean                 *is_equal );
        !          3628: 
        !          3629: Comments
        !          3630: Compares the given LOB locators for equality.  Two LOB locators are equal if 
        !          3631: and only if they both refer to the same LOB data.
        !          3632: Two NULL locators are considered not equal by this function.
        !          3633: Parameters
        !          3634: envhp (IN) - the OCI environment handle.
        !          3635: x (IN) - LOB locator to compare.
        !          3636: y (IN) - LOB locator to compare.
        !          3637: is_equal (OUT) - TRUE, if the LOB locators are equal; FALSE if they are not.
        !          3638: 
        !          3639: See also
        !          3640: OCILobAssign, OCILobLocatorIsInit
        !          3641: OCILobLocatorAssign()
        !          3642: OCILobIsTemporary()
        !          3643: 
        !          3644: Name
        !          3645: 
        !          3646: OCI Lob Is Temporary
        !          3647: 
        !          3648: Purpose
        !          3649:   Tests if this locator points to a temporary LOB
        !          3650: 
        !          3651: Syntax
        !          3652: sword OCILobIsTemporary(OCISvcCtx         *svchp,
        !          3653:                         OCIError          *errhp,
        !          3654:                         OCILobLocator     *locp,
        !          3655:                         boolean           *is_temporary);
        !          3656: 
        !          3657: Comments
        !          3658: Tests the locator to determine if it points to a temporary LOB.
        !          3659: If so, is_temporary is set to TRUE. If not, is_temporary is set
        !          3660: to FALSE.
        !          3661: 
        !          3662: Parameters
        !          3663: svchp (IN) - the service context handle. 
        !          3664: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          3665: diagnostic information in the event of an error. 
        !          3666: locp (IN) - the locator to test for temporary LOB
        !          3667: is_temporary(OUT) - TRUE, if the LOB locator points to a temporary LOB;
        !          3668:                     FALSE, if not.
        !          3669: 
        !          3670: See Also
        !          3671: OCILobCreateTemporary, OCILobFreeTemporary
        !          3672: 
        !          3673: 
        !          3674: 
        !          3675: OCILobLoadFromFile()
        !          3676: 
        !          3677: Name
        !          3678: OCI Lob Load From File
        !          3679: 
        !          3680: Purpose
        !          3681: Load/copy all or a portion of the file into an internal LOB.
        !          3682: 
        !          3683: Syntax
        !          3684: sword OCILobLoadFromFile ( OCISvcCtx        *svchp,
        !          3685:                            OCIError         *errhp,
        !          3686:                            OCILobLocator    *dst_locp,
        !          3687:                            OCILobLocator    *src_filep,
        !          3688:                            ub4              amount,
        !          3689:                            ub4              dst_offset,
        !          3690:                            ub4              src_offset );
        !          3691: 
        !          3692: Comments
        !          3693: Loads/copies a portion or all of a file value into an internal LOB as 
        !          3694: specified.  The data is copied from the source file to the destination 
        !          3695: internal LOB (BLOB/CLOB).  No character set conversions are performed 
        !          3696: when copying the bfile data to a clob/nclob.  The bfile data must already
        !          3697: be in the same character set as the clob/nclob in the database.  No
        !          3698: error checking is performed to verify this.
        !          3699: The source (src_filep) and the destination (dlopb) LOBs must already exist.
        !          3700: If the data already exists at the destination's start position, it is 
        !          3701: overwritten with the source data. If the destination's start position is 
        !          3702: beyond the end of the current data, a hole is created from the end of the data
        !          3703: to the beginning of the newly written data from the source. The destination 
        !          3704: LOB is extended to accommodate the newly written data if it extends 
        !          3705: beyond the current length of the destination LOB. 
        !          3706: It is an error to extend the destination LOB beyond the maximum length 
        !          3707: allowed or to try to copy from a NULL LOB.
        !          3708: Parameters
        !          3709: svchp (IN) - the service context handle. 
        !          3710: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          3711: diagnostic information in the event of an error. 
        !          3712: dst_locp (IN/OUT) - a locator uniquely referencing the destination internal 
        !          3713: LOB which may be of type blob, clob, or nclob. 
        !          3714: src_filep (IN/OUT) - a locator uniquely referencing the source BFILE. 
        !          3715: amount (IN) - the number of bytes to be copied.
        !          3716: dst_offset (IN) - this is the absolute offset for the destination LOB. 
        !          3717: For character LOBs it is the number of characters from the beginning of the 
        !          3718: LOB at which to begin writing. For binary LOBs it is the number of bytes from 
        !          3719: the beginning of the lob from which to begin reading. The offset starts at 1.
        !          3720: src_offset (IN) - this is the absolute offset for the source BFILE.  It is the 
        !          3721: number of bytes from the beginning of the LOB.  The offset starts at 1.
        !          3722: 
        !          3723: See Also 
        !          3724: OCIErrorGet(), OCILobAppend(), OCILobWrite(), OCILobTrim(), OCILobCopy()
        !          3725: 
        !          3726: 
        !          3727: Name
        !          3728: OCI Lob LOCATOR ASsiGn
        !          3729: 
        !          3730: Purpose
        !          3731: Assigns one LOB/FILE locator to another.
        !          3732: 
        !          3733: Syntax
        !          3734: sword OCILobLocatorAssign ( OCISvcCtx             *svchp, 
        !          3735:                             OCIError              *errhp, 
        !          3736:                             CONST OCILobLocator   *src_locp, 
        !          3737:                             OCILobLocator         **dst_locpp );
        !          3738: 
        !          3739: Comments
        !          3740: Assign source locator to destination locator.  After the assignment, both 
        !          3741: locators refer to the same LOB data.  For internal LOBs, the source locator's 
        !          3742: LOB data gets copied to the destination locator's LOB data only when the 
        !          3743: destination locator gets stored in the table.  Therefore, issuing a flush of 
        !          3744: the object containing the destination locator will copy the LOB data. For 
        !          3745: FILEs only the locator that refers to the OS file is copied to the table. The
        !          3746: OS file is not copied.
        !          3747: Note : the only difference between this and OCILobAssign is that this takes
        !          3748: a OCI service handle pointer instead of a OCI environment handle pointer
        !          3749: 
        !          3750: Parameters
        !          3751: svchp (IN/OUT) - OCI service handle initialized in object mode.
        !          3752: errhp (IN/OUT) - The OCI error handle. If there is an error, it is recorded 
        !          3753: in errhp and this function returns OCI_ERROR. Diagnostic information can be 
        !          3754: obtained by calling OCIErrorGet().
        !          3755: src_locp (IN) - LOB locator to copy from.
        !          3756: dst_locpp (IN/OUT) - LOB locator to copy to.  The caller must allocate space 
        !          3757: for the OCILobLocator by calling OCIDescriptorAlloc().
        !          3758: 
        !          3759: See also
        !          3760: OCIErrorGet()
        !          3761: OCILobIsEqual()
        !          3762: OCILobLocatorIsInit()
        !          3763: OCILobAssign()
        !          3764: 
        !          3765: 
        !          3766: OCILobLocatorIsInit()
        !          3767: 
        !          3768: Name
        !          3769: OCI LOB locator is initialized?
        !          3770: 
        !          3771: Purpose
        !          3772: Tests to see if a given LOB locator is initialized.
        !          3773: 
        !          3774: Syntax
        !          3775: sword OCILobLocatorIsInit ( OCIEnv   *envhp,
        !          3776:                             OCIError *errhp,
        !          3777:                             CONST OCILobLocator *locp,
        !          3778:                             boolean *is_initialized );
        !          3779: 
        !          3780: Comments
        !          3781: Tests to see if a given LOB locator is initialized.
        !          3782: 
        !          3783: Parameters
        !          3784: envhp (IN/OUT) - OCI environment handle initialized in object mode.
        !          3785: errhp (IN/OUT) - error handle. The OCI error handle. If there is an error, it 
        !          3786: is recorded in err and this function returns OCI_ERROR. Diagnostic information 
        !          3787: can be obtained by calling OCIErrorGet().
        !          3788: locp (IN) - the LOB locator being tested
        !          3789: is_initialized (OUT) - returns TRUE if the given LOB locator is initialized; 
        !          3790: FALSE if it is not.
        !          3791: 
        !          3792: See also
        !          3793: OCIErrorGet, OCILobIsEqual
        !          3794: 
        !          3795: 
        !          3796: OCILobOpen()
        !          3797: 
        !          3798: Name
        !          3799: OCI Lob Open
        !          3800: Purpose
        !          3801:  Open an internal LOB or BFILE locator.
        !          3802: Syntax
        !          3803: sword OCILobOpen( OCISvcCtx      *svchp,
        !          3804:                   OCIError       *errhp,
        !          3805:                   OCILobLocator  *locp,
        !          3806:                   ub1             mode);
        !          3807: 
        !          3808: Comments
        !          3809: Opens an internal LOB or a Bfile. A LOB can be opened only once in a 
        !          3810: transaction. A LOB opened in a transaction has to be closed before 
        !          3811: committing the transaction. Otherwise, the transaction is rolled back.
        !          3812: A LOB cannot be opened in read_write mode without starting a transaction.
        !          3813: 
        !          3814: Parameters
        !          3815: svchp (IN/OUT) - the service context handle. 
        !          3816: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          3817: diagnostic information in the event of an error.
        !          3818: locp (IN/OUT) - a LOB locator that uniquely references a LOB. 
        !          3819: mode(IN) - mode can be OCI_LOB_READONLY, OCI_LOB_READWRITE
        !          3820: 
        !          3821: Related functions
        !          3822: OCILobClose(), OCIIsLobOpen()
        !          3823: 
        !          3824: OCILobRead()
        !          3825: 
        !          3826: Name
        !          3827: OCI Lob/File ReaD
        !          3828: 
        !          3829: Purpose
        !          3830: Reads a portion of a LOB/FILE as specified by the call into a buffer. 
        !          3831: 
        !          3832: Syntax
        !          3833: sword OCILobRead ( OCISvcCtx       *svchp,
        !          3834:                    OCIError        *errhp,
        !          3835:                    OCILobLocator   *locp,
        !          3836:                    ub4             offset,
        !          3837:                    ub4             *amtp,
        !          3838:                    dvoid           *bufp,
        !          3839:                    ub4             bufl,
        !          3840:                    dvoid           *ctxp,  
        !          3841:                    OCICallbackLobRead (cbfp)
        !          3842:                                    (
        !          3843:                                     dvoid         *ctxp,
        !          3844:                                     CONST dvoid   *bufp,
        !          3845:                                     ub4           len,
        !          3846:                                     ub1           piece )
        !          3847:                    ub2             csid,
        !          3848:                    ub1             csfrm );
        !          3849: 
        !          3850: Comments
        !          3851: Reads a portion of a LOB/FILE as specified by the call into a buffer. Data read
        !          3852: from a hole is returned as 0s. It is an error to try to read from a NULL LOB/
        !          3853: FILE. The OS FILE must already exist on the server and must have been opened
        !          3854: using the input locator. Oracle must hav epermission to read the OS file and 
        !          3855: user must have read permission on the directory object.
        !          3856: 
        !          3857: Parameters
        !          3858: svchp (IN/OUT) - the service context handle. 
        !          3859: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          3860: diagnostic information in the event of an error.
        !          3861: locp (IN/OUT) - a LOB locator that uniquely references a LOB. 
        !          3862: offset (IN) - On input, it is the absolute offset, for character LOBs in the 
        !          3863: number of characters from the beginning of the LOB, for binary LOBs it is the 
        !          3864: number of bytes. Starts from 1.
        !          3865: amtp (IN/OUT) - On input, the number of character or bytes to be read. On 
        !          3866: output, the actual number of bytes or characters read. 
        !          3867: If the amount of bytes to be read is larger than the buffer length it is 
        !          3868: assumed that the LOB is being read in a streamed mode. On input if this value 
        !          3869: is 0, then the data shall be read in streamed mode from the LOB until the end 
        !          3870: of LOB. If the data is read in pieces, *amtp always contains the length of the last piece read.
        !          3871: If a callback function is defined, then this callback function will be invoked 
        !          3872: each time bufl bytes are read off the pipe. Each piece will be written into 
        !          3873: bufp.
        !          3874: If the callback function is not defined, then OCI_NEED_DATA error code will 
        !          3875: be returned. The application must invoke the LOB read over and over again to 
        !          3876: read more pieces of the LOB until the OCI_NEED_DATA error code is not 
        !          3877: returned. The buffer pointer and the length can be different in each call 
        !          3878: if the pieces are being read into different sizes and location. 
        !          3879: bufp (IN) - the pointer to a buffer into which the piece will be read. The 
        !          3880: length of the allocated memory is assumed to be bufl. 
        !          3881: bufl (IN) - the length of the buffer in octets. 
        !          3882: ctxp (IN) - the context for the call back function. Can be NULL.
        !          3883: cbfp (IN) - a callback that may be registered to be called for each piece. If 
        !          3884: this is NULL, then OCI_NEED_DATA will be returned for each piece. 
        !          3885: The callback function must return OCI_CONTINUE for the read to continue. 
        !          3886: If any other error code is returned, the LOB read is aborted. 
        !          3887:   ctxp (IN) - the context for the call back function. Can be NULL.
        !          3888:   bufp (IN) - a buffer pointer for the piece.
        !          3889:   len (IN) - the length of length of current piece in bufp.
        !          3890:   piece (IN) - which piece - OCI_FIRST_PIECE, OCI_NEXT_PIECE or 
        !          3891:   OCI_LAST_PIECE.
        !          3892: csid - the character set ID of the buffer data
        !          3893: csfrm - the character set form of the buffer data
        !          3894: 
        !          3895: Related Functions
        !          3896: OCIErrorGet, OCILobWrite, OCILobFileOpen, OCILobFileSetName, CREATE DIRECTORY
        !          3897: 
        !          3898: 
        !          3899: 
        !          3900: 
        !          3901: OCILobTrim()
        !          3902: 
        !          3903: Name
        !          3904: 
        !          3905: OCI Lob  Trim
        !          3906: 
        !          3907: Purpose
        !          3908: Trims the lob value to a shorter length
        !          3909: 
        !          3910: Syntax
        !          3911: sword OCILobTrim ( OCISvcCtx       *svchp,
        !          3912:                  OCIError        *errhp,
        !          3913:                  OCILobLocator   *locp,
        !          3914:                  ub4             newlen );
        !          3915: 
        !          3916: Comments
        !          3917: Truncates LOB data to a specified shorter length. 
        !          3918: 
        !          3919: Parameters
        !          3920: svchp (IN) - the service context handle. 
        !          3921: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          3922: diagnostic information in the event of an error. 
        !          3923: locp (IN/OUT) - a LOB locator that uniquely references the LOB. This locator 
        !          3924: must be a locator that was obtained from the server specified by svchp. 
        !          3925: newlen (IN) - the new length of the LOB data, which must be less than or equal
        !          3926: to the current length. 
        !          3927: 
        !          3928: Related Functions
        !          3929: OCIErrorGet, OCILobWrite, OCiLobErase, OCILobAppend, OCILobCopy
        !          3930: 
        !          3931: 
        !          3932: 
        !          3933: 
        !          3934: 
        !          3935: OCILobWrite()
        !          3936: 
        !          3937: Name
        !          3938: OCI Lob Write
        !          3939: 
        !          3940: Purpose
        !          3941: Writes a buffer into a LOB
        !          3942: 
        !          3943: Syntax
        !          3944: sword OCILobWrite ( OCISvcCtx       *svchp,
        !          3945:                     OCIError        *errhp,
        !          3946:                     OCILobLocator   *locp,
        !          3947:                     ub4             offset,
        !          3948:                     ub4             *amtp,
        !          3949:                     dvoid           *bufp, 
        !          3950:                     ub4             buflen,
        !          3951:                     ub1             piece,
        !          3952:                     dvoid           *ctxp,  
        !          3953:                     OCICallbackLobWrite   (cbfp)
        !          3954:                                     (
        !          3955:                                     dvoid    *ctxp,
        !          3956:                                     dvoid    *bufp,
        !          3957:                                     ub4      *lenp,
        !          3958:                                     ub1      *piecep ) 
        !          3959:                     ub2             csid
        !          3960:                     ub1             csfrm );
        !          3961: 
        !          3962: 
        !          3963: Comments
        !          3964: Writes a buffer into a LOB as specified. If LOB data already exists 
        !          3965: it is overwritten with the data stored in the buffer.
        !          3966: The buffer can be written to the LOB in a single piece with this call, or
        !          3967: it can be provided piecewise using callbacks or a standard polling method.
        !          3968: If this value of the piece parameter is OCI_FIRST_PIECE, data must be 
        !          3969: provided through callbacks or polling.
        !          3970: If a callback function is defined in the cbfp parameter, then this callback 
        !          3971: function will be invoked to get the next piece after a piece is written to the 
        !          3972: pipe. Each piece will be written from bufp.
        !          3973: If no callback function is defined, then OCILobWrite() returns the 
        !          3974: OCI_NEED_DATA error code. The application must all OCILobWrite() again 
        !          3975: to write more pieces of the LOB. In this mode, the buffer pointer and the 
        !          3976: length can be different in each call if the pieces are of different sizes and 
        !          3977: from different locations. A piece value of OCI_LAST_PIECE terminates the 
        !          3978: piecewise write. 
        !          3979: 
        !          3980: Parameters
        !          3981: svchp (IN/OUT) - the service context handle. 
        !          3982: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          3983: diagnostic information in the event of an error. 
        !          3984: locp (IN/OUT) - a LOB locator that uniquely references a LOB. 
        !          3985: offset (IN) - On input, it is the absolute offset, for character LOBs in 
        !          3986: the number of characters from the beginning of the LOB, for binary LOBs it 
        !          3987: is the number of bytes. Starts at 1.
        !          3988: bufp (IN) - the pointer to a buffer from which the piece will be written. The 
        !          3989: length of the allocated memory is assumed to be the value passed in bufl. Even 
        !          3990: if the data is being written in pieces, bufp must contain the first piece of 
        !          3991: the LOB when this call is invoked.
        !          3992: bufl (IN) - the length of the buffer in bytes.
        !          3993: Note: This parameter assumes an 8-bit byte. If your platform uses a 
        !          3994: longer byte, the value of bufl must be adjusted accordingly.
        !          3995: piece (IN) - which piece of the buffer is being written. The default value for
        !          3996: this parameter is OCI_ONE_PIECE, indicating the buffer will be written in a 
        !          3997: single piece.
        !          3998: The following other values are also possible for piecewise or callback mode: 
        !          3999: OCI_FIRST_PIECE, OCI_NEXT_PIECE and OCI_LAST_PIECE.
        !          4000: amtp (IN/OUT) - On input, takes the number of character or bytes to be 
        !          4001: written. On output, returns the actual number of bytes or characters written. 
        !          4002: If the data is written in pieces, *amtp will contain the total length of the 
        !          4003: pieces written at the end of the call (last piece written) and is undefined in
        !          4004: between. 
        !          4005: (Note it is different from the piecewise read case)
        !          4006: ctxp (IN) - the context for the call back function. Can be NULL.
        !          4007: cbfp (IN) - a callback that may be registered to be called for each piece in a 
        !          4008: piecewise write. If this is NULL, the standard polling method will be used.
        !          4009: The callback function must return OCI_CONTINUE for the write to continue. 
        !          4010: If any other error code is returned, the LOB write is aborted. The 
        !          4011: callback takes the following parameters:
        !          4012:   ctxp (IN) - the context for the call back function. Can be NULL.
        !          4013:   bufp (IN/OUT) - a buffer pointer for the piece.
        !          4014:   lenp (IN/OUT) - the length of the buffer (in octets) and the length of 
        !          4015:   current piece in bufp (out octets).
        !          4016:   piecep (OUT) - which piece - OCI_NEXT_PIECE or OCI_LAST_PIECE.
        !          4017: csid - the character set ID of the buffer data
        !          4018: csfrm - the character set form of the buffer data
        !          4019: Related Functions
        !          4020: 
        !          4021: 
        !          4022: 
        !          4023: 
        !          4024: 
        !          4025: 
        !          4026: OCILobWriteAppend()
        !          4027: 
        !          4028: Name
        !          4029: OCI Lob Write Append
        !          4030: 
        !          4031: Purpose
        !          4032: Writes data to the end of a LOB value. This call provides the ability
        !          4033: to get the length of the data and append it to the end of the LOB in
        !          4034: a single round trip to the server.
        !          4035: 
        !          4036: 
        !          4037: Syntax
        !          4038: sword OCILobWriteAppend ( OCISvcCtx       *svchp,
        !          4039:                     OCIError        *errhp,
        !          4040:                     OCILobLocator   *locp,
        !          4041:                     ub4             *amtp,
        !          4042:                     dvoid           *bufp, 
        !          4043:                     ub4             buflen,
        !          4044:                     ub1             piece,
        !          4045:                     dvoid           *ctxp,  
        !          4046:                     OCICallbackLobWrite   (cbfp)
        !          4047:                                     (
        !          4048:                                     dvoid    *ctxp,
        !          4049:                                     dvoid    *bufp,
        !          4050:                                     ub4      *lenp,
        !          4051:                                     ub1      *piecep ) 
        !          4052:                     ub2             csid
        !          4053:                     ub1             csfrm );
        !          4054: 
        !          4055: 
        !          4056: Comments
        !          4057: Writes a buffer to the end of a LOB as specified. If LOB data already exists 
        !          4058: it is overwritten with the data stored in the buffer.
        !          4059: The buffer can be written to the LOB in a single piece with this call, or
        !          4060: it can be provided piecewise using callbacks or a standard polling method.
        !          4061: If this value of the piece parameter is OCI_FIRST_PIECE, data must be 
        !          4062: provided through callbacks or polling.
        !          4063: If a callback function is defined in the cbfp parameter, then this callback 
        !          4064: function will be invoked to get the next piece after a piece is written to the 
        !          4065: pipe. Each piece will be written from bufp.
        !          4066: If no callback function is defined, then OCILobWriteAppend() returns the 
        !          4067: OCI_NEED_DATA error code. The application must all OCILobWriteAppend() again 
        !          4068: to write more pieces of the LOB. In this mode, the buffer pointer and the 
        !          4069: length can be different in each call if the pieces are of different sizes and 
        !          4070: from different locations. A piece value of OCI_LAST_PIECE terminates the 
        !          4071: piecewise write. 
        !          4072: 
        !          4073: Parameters
        !          4074: svchp (IN/OUT) - the service context handle. 
        !          4075: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          4076: diagnostic information in the event of an error. 
        !          4077: locp (IN/OUT) - a LOB locator that uniquely references a LOB. 
        !          4078: offset (IN) - On input, it is the absolute offset, for character LOBs in 
        !          4079: the number of characters from the beginning of the LOB, for binary LOBs it 
        !          4080: is the number of bytes. Starts at 1.
        !          4081: bufp (IN) - the pointer to a buffer from which the piece will be written. The 
        !          4082: length of the allocated memory is assumed to be the value passed in bufl. Even 
        !          4083: if the data is being written in pieces, bufp must contain the first piece of 
        !          4084: the LOB when this call is invoked.
        !          4085: bufl (IN) - the length of the buffer in bytes.
        !          4086: Note: This parameter assumes an 8-bit byte. If your platform uses a 
        !          4087: longer byte, the value of bufl must be adjusted accordingly.
        !          4088: piece (IN) - which piece of the buffer is being written. The default value for
        !          4089: this parameter is OCI_ONE_PIECE, indicating the buffer will be written in a 
        !          4090: single piece.
        !          4091: The following other values are also possible for piecewise or callback mode: 
        !          4092: OCI_FIRST_PIECE, OCI_NEXT_PIECE and OCI_LAST_PIECE.
        !          4093: amtp (IN/OUT) - On input, takes the number of character or bytes to be 
        !          4094: written. On output, returns the actual number of bytes or characters written. 
        !          4095: If the data is written in pieces, *amtp will contain the total length of the 
        !          4096: pieces written at the end of the call (last piece written) and is undefined in
        !          4097: between. 
        !          4098: (Note it is different from the piecewise read case)
        !          4099: ctxp (IN) - the context for the call back function. Can be NULL.
        !          4100: cbfp (IN) - a callback that may be registered to be called for each piece in a 
        !          4101: piecewise write. If this is NULL, the standard polling method will be used.
        !          4102: The callback function must return OCI_CONTINUE for the write to continue. 
        !          4103: If any other error code is returned, the LOB write is aborted. The 
        !          4104: callback takes the following parameters:
        !          4105:   ctxp (IN) - the context for the call back function. Can be NULL.
        !          4106:   bufp (IN/OUT) - a buffer pointer for the piece.
        !          4107:   lenp (IN/OUT) - the length of the buffer (in octets) and the length of 
        !          4108:   current piece in bufp (out octets).
        !          4109:   piecep (OUT) - which piece - OCI_NEXT_PIECE or OCI_LAST_PIECE.
        !          4110: csid - the character set ID of the buffer data
        !          4111: csfrm - the character set form of the buffer data
        !          4112: Related Functions
        !          4113: 
        !          4114: 
        !          4115: 
        !          4116: 
        !          4117: 
        !          4118: 
        !          4119: OCILogoff()
        !          4120: Name
        !          4121: OCI simplified Logoff
        !          4122: Purpose
        !          4123: This function is used to terminate a session created with OCILogon().
        !          4124: Syntax
        !          4125: sword OCILogoff ( OCISvcCtx      *svchp
        !          4126:                    OCIError       *errhp );
        !          4127: Comments
        !          4128: This call is used to terminate a session which was created with OCILogon().  
        !          4129: This call implicitly deallocates the server, authentication, and service 
        !          4130: context handles.
        !          4131: Note: For more information on logging on and off in an application, 
        !          4132: refer to the section "Application Initialization, Connection, and 
        !          4133: Authorization" on page 2-16.
        !          4134: Parameters
        !          4135: svchp (IN) - the service context handle which was used in the call to 
        !          4136: OCILogon().
        !          4137: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          4138: diagnostic information in the event of an error.
        !          4139: See Also
        !          4140: OCILogon()
        !          4141: 
        !          4142: 
        !          4143: 
        !          4144: 
        !          4145: 
        !          4146: 
        !          4147: OCILogon()
        !          4148: Name
        !          4149: OCI Service Context Logon
        !          4150: Purpose
        !          4151: This function is used to create a simple logon session.
        !          4152: Syntax
        !          4153: sword OCILogon ( OCIEnv          *envhp,
        !          4154:                        OCIError        *errhp,
        !          4155:                        OCISvcCtx       *svchp,
        !          4156:                        CONST OraText      *username,
        !          4157:                        ub4             uname_len,
        !          4158:                        CONST OraText      *password,
        !          4159:                        ub4             passwd_len,
        !          4160:                        CONST OraText      *dbname,
        !          4161:                        ub4             dbname_len );
        !          4162: Comments
        !          4163: This function is used to create a simple logon session for an application. 
        !          4164: Note: Users requiring more complex session (e.g., TP monitor 
        !          4165: applications) should refer to the section "Application Initialization, 
        !          4166: Connection, and Authorization" on page 2-16.
        !          4167: This call allocates the error and service context handles which are passed to 
        !          4168: it. This call also implicitly allocates server and authentication handles 
        !          4169: associated with the session.  These handles can be retrieved by calling 
        !          4170: OCIAttrGet() on the service context handle.
        !          4171: Parameters
        !          4172: envhp (IN) - the OCI environment handle.
        !          4173: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          4174: diagnostic information in the event of an error.
        !          4175: svchp (OUT) - the service context pointer.
        !          4176: username (IN) - the username.
        !          4177: uname_len (IN) - the length of username.
        !          4178: password (IN) - the user's password.
        !          4179: passwd_len (IN) - the length of password.
        !          4180: dbname (IN) - the name of the database to connect to.
        !          4181: dbname_len (IN) - the length of dbname.
        !          4182: See Also
        !          4183: OCILogoff()
        !          4184: 
        !          4185: 
        !          4186: 
        !          4187: 
        !          4188: 
        !          4189: OCIMemoryFree()
        !          4190: Name
        !          4191: OCI FREE Memory
        !          4192: Purpose
        !          4193: Frees up storage associated with the pointer.
        !          4194: Syntax
        !          4195: void OCIMemoryFree ( CONST OCIStmt   *stmhp,
        !          4196:                      dvoid           *memptr);
        !          4197: Comments
        !          4198: Frees up dynamically allocated data pointers associated with the pointer using 
        !          4199: either the default memory free function or the registered memory free 
        !          4200: function, as the case may be.
        !          4201: A user-defined memory free function can be registered during the initial call 
        !          4202: to OCIInitialize(). 
        !          4203: This call is always successful. 
        !          4204: Parameters
        !          4205: stmhp (IN) - statement handle which returned this data buffer.
        !          4206: memptr (IN) - pointer to data allocated by the client library. 
        !          4207: Related Functions
        !          4208: OCIInitialize()
        !          4209: 
        !          4210: 
        !          4211: 
        !          4212: 
        !          4213: 
        !          4214: OCIParamGet()
        !          4215: Name
        !          4216: OCI Get PARaMeter
        !          4217: Purpose
        !          4218: Returns a descriptor of a parameter specified by position in the describe 
        !          4219: handle or statement handle.
        !          4220: Syntax
        !          4221: sword OCIParamGet ( CONST dvoid       *hndlp,
        !          4222:                   ub4         htype,
        !          4223:                   OCIError    *errhp,
        !          4224:                   dvoid    **parmdpp,
        !          4225:                   ub4         pos );
        !          4226: Comments
        !          4227: This call returns a descriptor of a parameter specified by position in the 
        !          4228: describe handle or statement handle. Parameter descriptors are always 
        !          4229: allocated internally by the OCI library. They are read-only.
        !          4230: OCI_NO_DATA may be returned if there are no parameter descriptors for this 
        !          4231: position. 
        !          4232: See Appendix B for more detailed information about parameter descriptor 
        !          4233: attributes.
        !          4234: Parameters
        !          4235: hndlp (IN) - a statement handle or describe handle. The OCIParamGet() 
        !          4236: function will return a parameter descriptor for this handle. 
        !          4237: htype (IN) - the type of the handle passed in the handle parameter. Valid 
        !          4238: types are OCI_HTYPE_DESCRIBE, for a describe handle OCI_HTYPE_STMT, for a 
        !          4239: statement handle
        !          4240: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          4241: diagnostic information in the event of an error.
        !          4242: parmdpp (OUT) - a descriptor of the parameter at the position given in the pos 
        !          4243: parameter.
        !          4244: pos (IN) - position number in the statement handle or describe handle. A 
        !          4245: parameter descriptor will be returned for this position.
        !          4246: Note: OCI_NO_DATA may be returned if there are no parameter 
        !          4247: descriptors for this position. 
        !          4248: Related Functions
        !          4249: OCIAttrGet(), OCIAttrSet()
        !          4250: 
        !          4251: 
        !          4252: 
        !          4253: 
        !          4254: 
        !          4255: OCIParamSet()
        !          4256: Name
        !          4257: OCI Parameter Set in handle
        !          4258: Purpose
        !          4259: Used to set a complex object retrieval descriptor into a complex object 
        !          4260: retrieval handle.
        !          4261: Syntax
        !          4262: sword   OCIParamGet ( dvoid *hndlp,
        !          4263:                        ub4 htyp,
        !          4264:                       OCIError *errhp,
        !          4265:                       CONST dvoid *dscp,
        !          4266:                       ub4 dtyp,
        !          4267:                       ub4 pos );
        !          4268: Comments
        !          4269: This call sets a given complex object retrieval descriptor into a complex 
        !          4270: object retrieval handle.
        !          4271: The handle must have been previously allocated using OCIHandleAlloc(), and 
        !          4272: the descriptor must have been previously allocated using OCIDescAlloc(). 
        !          4273: Attributes of the descriptor are set using OCIAttrSet().
        !          4274: Parameters
        !          4275: hndlp (IN/OUT) - handle pointer.
        !          4276: htype (IN) - handle type.
        !          4277: errhp (IN/OUT) - error handle.
        !          4278: dscp (IN) - complex object retrieval descriptor pointer.
        !          4279: dtyp (IN) - 
        !          4280: pos (IN) - position number.
        !          4281: See Also
        !          4282: 
        !          4283: 
        !          4284: 
        !          4285: 
        !          4286: 
        !          4287: OCIPasswordChange()
        !          4288: Name
        !          4289: OCI Change PassWord
        !          4290: Purpose
        !          4291: This call allows the password of an account to be changed.
        !          4292: Syntax
        !          4293: sword OCIPasswordChange ( OCISvcCtx     *svchp,
        !          4294:                         OCIError      *errhp,
        !          4295:                         CONST OraText    *user_name,
        !          4296:                         ub4           usernm_len,
        !          4297:                         CONST OraText    *opasswd,
        !          4298:                         ub4           opasswd_len,
        !          4299:                         CONST OraText    *npasswd,
        !          4300:                         sb4           npasswd_len,
        !          4301:                         ub4           mode);
        !          4302: Comments
        !          4303: This call allows the password of an account to be changed. This call is 
        !          4304: similar to OCISessionBegin() with the following differences:
        !          4305: If the user authentication is already established, it authenticates 
        !          4306: the account using the old password and then changes the 
        !          4307: password to the new password
        !          4308: If the user authentication is not established, it establishes a user 
        !          4309: authentication and authenticates the account using the old 
        !          4310: password, then changes the password to the new password.
        !          4311: This call is useful when the password of an account is expired and 
        !          4312: OCISessionBegin() returns an error or warning which indicates that the 
        !          4313: password has expired. 
        !          4314: Parameters
        !          4315: svchp (IN/OUT) - a handle to a service context. The service context handle 
        !          4316: must be initialized and have a server context handle associated with it.
        !          4317: errhp (IN) - an error handle which can be passed to OCIErrorGet() for 
        !          4318: diagnostic information in the event of an error.
        !          4319: user_name (IN) - specifies the user name. It points to a character string, 
        !          4320: whose length is specified in usernm_len. This parameter must be NULL if the 
        !          4321: service context has been initialized with an authentication handle.
        !          4322: usernm_len (IN) - the length of the user name string specified in user_name. 
        !          4323: For a valid user name string, usernm_len must be non-zero.
        !          4324: opasswd (IN) - specifies the user's old password. It points to a character 
        !          4325: string, whose length is specified in opasswd_len .
        !          4326: opasswd_len (IN) - the length of the old password string specified in opasswd. 
        !          4327: For a valid password string, opasswd_len must be non-zero.
        !          4328: npasswd (IN) - specifies the user's new password. It points to a character 
        !          4329: string, whose length is specified in npasswd_len which must be non-zero for a 
        !          4330: valid password string. If the password complexity verification routine is 
        !          4331: specified in the user's profile to verify the new password's complexity, the 
        !          4332: new password must meet the complexity requirements of the verification 
        !          4333: function.
        !          4334: npasswd_len (IN)  - then length of the new password string specified in 
        !          4335: npasswd. For a valid password string, npasswd_len must be non-zero.
        !          4336: mode - pass as OCI_DEFAULT.
        !          4337: Related Functions
        !          4338: OCISessionBegin()
        !          4339: 
        !          4340: 
        !          4341: ----------------------------------OCIReset------------------------------------
        !          4342: 
        !          4343: 
        !          4344: OCIReset()
        !          4345: Name
        !          4346: OCI Reset
        !          4347: Purpose
        !          4348: Resets the interrupted asynchronous operation and protocol. Must be called
        !          4349: if a OCIBreak call had been issued while a non-blocking operation was in
        !          4350: progress.
        !          4351: Syntax
        !          4352: sword OCIReset ( dvoid      *hndlp,
        !          4353:                  OCIError   *errhp);
        !          4354: Comments
        !          4355: This call is called in non-blocking mode ONLY. Resets the interrupted
        !          4356: asynchronous operation and protocol. Must be called if a OCIBreak call 
        !          4357: had been issued while a non-blocking operation was in progress. 
        !          4358: Parameters
        !          4359: hndlp (IN) - the service context handle or the server context handle.
        !          4360: errhp (IN) - an error handle which can be passed to OCIErrorGet() for 
        !          4361: diagnostic information in the event of an error.
        !          4362: Related Functions
        !          4363: 
        !          4364: 
        !          4365: OCIResultSetToStmt()
        !          4366: Name
        !          4367: OCI convert Result Set to Statement Handle
        !          4368: Purpose
        !          4369: Converts a descriptor to statement handle for fetching rows.
        !          4370: Syntax
        !          4371: sword OCIResultSetToStmt ( OCIResult     *rsetdp,
        !          4372:                          OCIError      *errhp );
        !          4373: Comments
        !          4374: Converts a descriptor to statement handle for fetching rows.
        !          4375: A result set descriptor can be allocated with a call to OCIDescAlloc().
        !          4376: Parameters
        !          4377: rsetdp (IN/OUT) - a result set descriptor pointer. 
        !          4378: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          4379: diagnostic information in the event of an error. 
        !          4380: Related Functions
        !          4381: OCIDescAlloc()
        !          4382: 
        !          4383: 
        !          4384: 
        !          4385: 
        !          4386: OCIServerAttach()
        !          4387: Name
        !          4388: OCI ATtaCH to server
        !          4389: Purpose
        !          4390: Creates an access path to a data source for OCI operations.
        !          4391: Syntax
        !          4392: sword OCIServerAttach ( OCIServer    *srvhp,
        !          4393:                       OCIError     *errhp,
        !          4394:                       CONST OraText   *dblink,
        !          4395:                       sb4          dblink_len,
        !          4396:                       ub4          mode);
        !          4397: Comments
        !          4398: This call is used to create an association between an OCI application and a 
        !          4399: particular server. 
        !          4400: This call initializes a server context handle, which must have been previously 
        !          4401: allocated with a call to OCIHandleAlloc().
        !          4402: The server context handle initialized by this call can be associated with a 
        !          4403: service context through a call to OCIAttrSet(). Once that association has been 
        !          4404: made, OCI operations can be performed against the server.
        !          4405: If an application is operating against multiple servers, multiple server 
        !          4406: context handles can be maintained. OCI operations are performed against 
        !          4407: whichever server context is currently associated with the service context.
        !          4408: Parameters
        !          4409: srvhp (IN/OUT) - an uninitialized server context handle, which gets 
        !          4410: initialized by this call. Passing in an initialized server handle causes an 
        !          4411: error. 
        !          4412: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          4413: diagnostic information in the event of an error.
        !          4414: dblink (IN) - specifies the database (server) to use. This parameter points to
        !          4415: a character string which specifies a connect string or a service point. If the 
        !          4416: connect string is NULL, then this call attaches to the default host. The length
        !          4417: of connstr is specified in connstr_len. The connstr pointer may be freed by the
        !          4418: caller on return.
        !          4419: dblink_len (IN) - the length of the string pointed to by connstr. For a valid 
        !          4420: connect string name or alias, connstr_len must be non-zero.
        !          4421: mode (IN) - specifies the various modes of operation.  For release 8.0, pass as
        !          4422: OCI_DEFAULT - in this mode, calls made to the server on this server context 
        !          4423: are made in blocking mode. 
        !          4424: Example
        !          4425: See the description of OCIStmtPrepare() on page 13-96 for an example showing 
        !          4426: the use of OCIServerAttach().
        !          4427: Related Functions
        !          4428: OCIServerDetach()
        !          4429: 
        !          4430: 
        !          4431: 
        !          4432: OCIServerDetach()
        !          4433: Name
        !          4434: OCI DeTaCH server
        !          4435: Purpose
        !          4436: Deletes an access to a data source for OCI operations.
        !          4437: Syntax
        !          4438: sword OCIServerDetach ( OCIServer   *svrhp,
        !          4439:                       OCIError    *errhp,
        !          4440:                       ub4         mode); 
        !          4441: Comments
        !          4442: This call deletes an access to data source for OCI operations, which was 
        !          4443: established by a call to OCIServerAttach(). 
        !          4444: Parameters
        !          4445: srvhp (IN) - a handle to an initialized server context, which gets reset to 
        !          4446: uninitialized state. The handle is not de-allocated. 
        !          4447: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          4448: diagnostic information in the event of an error. 
        !          4449: mode (IN) - specifies the various modes of operation. The only valid mode is 
        !          4450: OCI_DEFAULT for the default mode. 
        !          4451: Related Functions
        !          4452: OCIServerAttach()
        !          4453: 
        !          4454: 
        !          4455: 
        !          4456: OCIServerVersion()
        !          4457: Name
        !          4458: OCI VERSion
        !          4459: Purpose
        !          4460: Returns the version string of the Oracle server.
        !          4461: Syntax
        !          4462: sword OCIServerVersion ( dvoid        *hndlp, 
        !          4463:                        OCIError     *errhp, 
        !          4464:                        OraText         *bufp,
        !          4465:                        ub4          bufsz
        !          4466:                        ub1          hndltype );
        !          4467: Comments
        !          4468: This call returns the version string of the Oracle server. 
        !          4469: For example, the following might be returned as the version string if your 
        !          4470: application is running against a 7.3.2 server:
        !          4471: Oracle7 Server Release 7.3.2.0.0 - Production Release
        !          4472: PL/SQL Release 2.3.2.0.0 - Production
        !          4473: CORE Version 3.5.2.0.0 - Production
        !          4474: TNS for SEQUENT DYNIX/ptx: Version 2.3.2.0.0 - Production
        !          4475: NLSRTL Version 3.2.2.0.0 - Production
        !          4476: 
        !          4477: Parameters
        !          4478: hndlp (IN) - the service context handle or the server context handle.
        !          4479: errhp (IN) - an error handle which can be passed to OCIErrorGet() for 
        !          4480: diagnostic information in the event of an error.
        !          4481: bufp (IN) - the buffer in which the version information is returned.
        !          4482: bufsz (IN) - the length of the buffer.
        !          4483: hndltype (IN) - the type of handle passed to the function.
        !          4484: Related Functions
        !          4485: 
        !          4486: 
        !          4487: 
        !          4488: 
        !          4489: 
        !          4490: OCISessionBegin()
        !          4491: Name
        !          4492: OCI Session Begin and authenticate user
        !          4493: Purpose
        !          4494: Creates a user authentication and begins a user session for a given server.
        !          4495: Syntax
        !          4496: sword OCISessionBegin ( OCISvcCtx     *svchp,
        !          4497:                       OCIError      *errhp,
        !          4498:                       OCISession    *usrhp,
        !          4499:                       ub4           credt,
        !          4500:                       ub4           mode);
        !          4501: 
        !          4502: Comments
        !          4503: For Oracle8, OCISessionBegin() must be called for any given server handle 
        !          4504: before requests can be made against it. Also, OCISessionBegin() only supports 
        !          4505: authenticating the user for access to the Oracle server specified by the 
        !          4506: server handle in the service context. In other words, after OCIServerAttach() 
        !          4507: is called to initialize a server handle, OCISessionBegin() must be called to 
        !          4508: authenticate the user for that given server. 
        !          4509: When OCISessionBegin() is called for the first time for the given server 
        !          4510: handle, the initialized authentication handle is called a primary 
        !          4511: authentication context. A primary authentication context may not be created 
        !          4512: with the OCI_MIGRATE mode. Also, only one primary authentication context can 
        !          4513: be created for a given server handle and the primary authentication context c
        !          4514: an only ever be used with that server handle. If the primary authentication 
        !          4515: context is set in a service handle with a different server handle, then an 
        !          4516: error will result.
        !          4517: After OCISessionBegin() has been called for the server handle, and the primary 
        !          4518: authentication context is set in the service handle, OCISessionBegin() may be 
        !          4519: called again to initialize another authentication handle with different (or 
        !          4520: the same) credentials. When OCISessionBegin() is called with a service handle 
        !          4521: set with a primary authentication context, the returned authentication context
        !          4522: in authp is called a user authentication context. As many user authentication 
        !          4523: contexts may be initialized as desired.
        !          4524: User authentication contexts may be created with the OCI_MIGRATE mode. 
        !          4525: If the OCI_MIGRATE mode is not specified, then the user authentication 
        !          4526: context can only ever be used with the same server handle set in svchp. If 
        !          4527: OCI_MIGRATE mode is specified, then the user authentication may be set 
        !          4528: with different server handles. However, the user authentication context is 
        !          4529: restricted to use with only server handles which resolve to the same database 
        !          4530: instance and that have equivalent primary authentication contexts. Equivalent 
        !          4531: authentication contexts are those which were authenticated as the same 
        !          4532: database user.
        !          4533: OCI_SYSDBA, OCI_SYSOPER, and OCI_PRELIM_AUTH may only be used 
        !          4534: with a primary authentication context.
        !          4535: To provide credentials for a call to OCISessionBegin(), one of two methods are 
        !          4536: supported. The first is to provide a valid username and password pair for 
        !          4537: database authentication in the user authentication handle passed to 
        !          4538: OCISessionBegin(). This involves using OCIAttrSet() to set the 
        !          4539: OCI_ATTR_USERNAME and OCI_ATTR_PASSWORD attributes on the 
        !          4540: authentication handle. Then OCISessionBegin() is called with 
        !          4541: OCI_CRED_RDBMS.
        !          4542: Note: When the authentication handle is terminated using 
        !          4543: OCISessionEnd(), the username and password attributes remain 
        !          4544: unchanged and thus can be re-used in a future call to OCISessionBegin(). 
        !          4545: Otherwise, they must be reset to new values before the next 
        !          4546: OCISessionBegin() call.
        !          4547: The second type of credentials supported are external credentials. No 
        !          4548: attributes need to be set on the authentication handle before calling 
        !          4549: OCISessionBegin(). The credential type is OCI_CRED_EXT. This is equivalent 
        !          4550: to the Oracle7 `connect /' syntax. If values have been set for 
        !          4551: OCI_ATTR_USERNAME and OCI_ATTR_PASSWORD, then these are 
        !          4552: ignored if OCI_CRED_EXT is used.
        !          4553: Parameters
        !          4554: svchp (IN) - a handle to a service context. There must be a valid server 
        !          4555: handle set in svchp.
        !          4556: errhp (IN) - an error handle to the retrieve diagnostic information.
        !          4557: usrhp (IN/OUT) - a handle to an authentication context, which is initialized 
        !          4558: by this call.
        !          4559: credt (IN) - specifies the type of credentials to use for authentication. 
        !          4560: Valid values for credt are:
        !          4561: OCI_CRED_RDBMS - authenticate using a database username and 
        !          4562: password pair as credentials. The attributes OCI_ATTR_USERNAME 
        !          4563: and OCI_ATTR_PASSWORD should be set on the authentication 
        !          4564: context before this call.
        !          4565: OCI_CRED_EXT - authenticate using external credentials. No username 
        !          4566: or password is provided.
        !          4567: mode (IN) - specifies the various modes of operation. Valid modes are:
        !          4568: OCI_DEFAULT - in this mode, the authentication context returned may 
        !          4569: only ever be set with the same server context specified in svchp. This 
        !          4570: establishes the primary authentication context.
        !          4571: OCI_MIGRATE - in this mode, the new authentication context may be 
        !          4572: set in a service handle with a different server handle. This mode 
        !          4573: establishes the user authentication context. 
        !          4574: OCI_SYSDBA - in this mode, the user is authenticated for SYSDBA 
        !          4575: access.
        !          4576: OCI_SYSOPER - in this mode, the user is authenticated for SYSOPER 
        !          4577: access.
        !          4578: OCI_PRELIM_AUTH - this mode may only be used with OCI_SYSDBA 
        !          4579: or OCI_SYSOPER to authenticate for certain administration tasks.
        !          4580: Related Functions
        !          4581: OCISessionEnd()
        !          4582: 
        !          4583: 
        !          4584: 
        !          4585: 
        !          4586: 
        !          4587: 
        !          4588: OCISessionEnd()
        !          4589: Name
        !          4590: OCI Terminate user Authentication Context
        !          4591: Purpose
        !          4592: Terminates a user authentication context created by OCISessionBegin()
        !          4593: Syntax
        !          4594: sword OCISessionEnd ( OCISvcCtx       *svchp,
        !          4595:                     OCIError        *errhp,
        !          4596:                     OCISession      *usrhp,
        !          4597:                     ub4             mode);
        !          4598: 
        !          4599: Comments
        !          4600: The user security context associated with the service context is invalidated 
        !          4601: by this call. Storage for the authentication context is not freed. The 
        !          4602: transaction specified by the service context is implicitly committed. The 
        !          4603: transaction handle, if explicitly allocated, may be freed if not being used.
        !          4604: Resources allocated on the server for this user are freed.
        !          4605: The authentication handle may be reused in a new call to OCISessionBegin().
        !          4606: Parameters
        !          4607: svchp (IN/OUT) - the service context handle. There must be a valid server 
        !          4608: handle and user authentication handle associated with svchp.
        !          4609: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          4610: diagnostic information in the event of an error. 
        !          4611: usrhp (IN) - de-authenticate this user. If this parameter is passed as NULL, the 
        !          4612: user in the service context handle is de-authenticated.
        !          4613: mode (IN) - the only valid mode is OCI_DEFAULT.
        !          4614: Example
        !          4615: In this example, an authentication context is destroyed.
        !          4616: Related Functions
        !          4617: OCISessionBegin()
        !          4618: 
        !          4619: 
        !          4620: 
        !          4621: 
        !          4622: OCIStmtExecute()
        !          4623: Name
        !          4624: OCI EXECute
        !          4625: Purpose
        !          4626: This call associates an application request with a server.
        !          4627: Syntax
        !          4628: sword OCIStmtExecute ( OCISvcCtx           *svchp,
        !          4629:                      OCIStmt             *stmtp,
        !          4630:                      OCIError            *errhp,
        !          4631:                      ub4                 iters,
        !          4632:                      ub4                 rowoff,
        !          4633:                      CONST OCISnapshot   *snap_in,
        !          4634:                      OCISnapshot         *snap_out,
        !          4635:                      ub4                 mode );
        !          4636: Comments
        !          4637: This function  is used to execute a prepared SQL statement.
        !          4638: Using an execute call, the application associates a request with a server. On 
        !          4639: success, OCI_SUCCESS is returned.
        !          4640: If a SELECT statement is executed, the description of the select list follows 
        !          4641: implicitly as a response. This description is buffered on the client side for 
        !          4642: describes, fetches and define type conversions. Hence it is optimal to 
        !          4643: describe a select list only after an execute. 
        !          4644: Also for SELECT statements, some results are available implicitly. Rows will 
        !          4645: be received and buffered at the end of the execute. For queries with small row 
        !          4646: count, a prefetch causes memory to be released in the server if the end of 
        !          4647: fetch is reached, an optimization that may result in memory usage reduction. 
        !          4648: Set attribute call has been defined to set the number of rows to be prefetched
        !          4649: per result set.
        !          4650: For SELECT statements, at the end of the execute, the statement handle 
        !          4651: implicitly maintains a reference to the service context on which it is 
        !          4652: executed. It is the user's responsibility to maintain the integrity of the 
        !          4653: service context. If the attributes of a service context is changed for 
        !          4654: executing some operations on this service context, the service context must 
        !          4655: be restored to have the same attributes, that a statement was executed with, 
        !          4656: prior to a fetch on the statement handle. The implicit reference is maintained 
        !          4657: until the statement handle is freed or the fetch is cancelled or an end of 
        !          4658: fetch condition is reached.
        !          4659: Note: If output variables are defined for a SELECT statement before a 
        !          4660: call to OCIStmtExecute(), the number of rows specified by iters will be 
        !          4661: fetched directly into the defined output buffers and additional rows 
        !          4662: equivalent to the prefetch count will be prefetched. If there are no 
        !          4663: additional rows, then the fetch is complete without calling 
        !          4664: OCIStmtFetch().
        !          4665: The execute call will return errors if the statement has bind data types that 
        !          4666: are not supported in an Oracle7 server.
        !          4667: Parameters
        !          4668: svchp (IN/OUT) - service context handle. 
        !          4669: stmtp (IN/OUT) - an statement handle - defines the statement and the 
        !          4670: associated data to be executed at the server. It is invalid to pass in a 
        !          4671: statement handle that has bind of data types only supported in release 8.0 
        !          4672: when srvchp points to an Oracle7 server. 
        !          4673: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          4674: diagnostic information in the event of an error. If the statement is being 
        !          4675: batched and it is successful, then this handle will contain this particular 
        !          4676: statement execution specific errors returned from the server when the batch is 
        !          4677: flushed.
        !          4678: iters (IN) - the number of times this statement is executed for non-Select 
        !          4679: statements. For Select statements, if iters is non-zero, then defines must 
        !          4680: have been done for the statement handle. The execution fetches iters rows into 
        !          4681: these predefined buffers and prefetches more rows depending upon the prefetch 
        !          4682: row count. This function returns an error if iters=0 for non-SELECT 
        !          4683: statements.
        !          4684: rowoff (IN) - the index from which the data in an array bind is relevant for 
        !          4685: this multiple row execution. 
        !          4686: snap_in (IN) - this parameter is optional. if supplied, must point to a 
        !          4687: snapshot descriptor of type OCI_DTYPE_SNAP.  The contents of this descriptor 
        !          4688: must be obtained from the snap_out parameter of a previous call.  The 
        !          4689: descriptor is ignored if the SQL is not a SELECT.  This facility allows 
        !          4690: multiple service contexts to ORACLE to see the same consistent snapshot of the 
        !          4691: database's committed data.  However, uncommitted data in one context is not 
        !          4692: visible to another context even using the same snapshot.
        !          4693: snap_out (OUT) - this parameter optional. if supplied, must point to a 
        !          4694: descriptor of type OCI_DTYPE_SNAP. This descriptor is filled in with an 
        !          4695: opaque representation which is the current ORACLE "system change 
        !          4696: number" suitable as a snap_in input to a subsequent call to OCIStmtExecute().  
        !          4697: This descriptor should not be used any longer than necessary in order to avoid 
        !          4698: "snapshot too old" errors. 
        !          4699: mode (IN) - The modes are:
        !          4700: If OCI_DEFAULT_MODE, the default mode, is selected, the request is 
        !          4701: immediately executed. Error handle contains diagnostics on error if any. 
        !          4702: OCI_EXACT_FETCH - if the statement is a SQL SELECT, this mode is 
        !          4703: only valid if the application has set the prefetch row count prior to this 
        !          4704: call. In this mode, the OCI library will get up to the number of rows 
        !          4705: specified (i.e., prefetch row count plus iters). If the number of rows 
        !          4706: returned by the query is greater than this value, OCI_ERROR will be 
        !          4707: returned with ORA-01422 as the implementation specific error in a 
        !          4708: diagnostic record. If the number of rows returned by the query is 
        !          4709: smaller than the prefetch row count, OCI_SUCCESS_WITH_INFO will 
        !          4710: be returned with ORA-01403 as the implementation specific error. The 
        !          4711: prefetch buffer size is ignored and the OCI library tries to allocate all the 
        !          4712: space required to contain the prefetched rows. The exact fetch semantics 
        !          4713: apply to only the top level rows. No more rows can be fetched for this 
        !          4714: query at the end of the call. 
        !          4715: OCI_KEEP_FETCH_STATE - the result set rows (not yet fetched) of this 
        !          4716: statement executed in this transaction will be maintained when the 
        !          4717: transaction is detached for migration. By default, a query is cancelled 
        !          4718: when a transaction is detached for migration. This mode is the default 
        !          4719: mode when connected to a V7 server. 
        !          4720: Related Functions
        !          4721: OCIStmtPrepare()
        !          4722: 
        !          4723: 
        !          4724: 
        !          4725: 
        !          4726: 
        !          4727: OCIStmtFetch()
        !          4728: Name
        !          4729: OCI FetCH
        !          4730: Purpose
        !          4731: Fetches rows from a query.
        !          4732: Syntax
        !          4733: sword OCIStmtFetch ( OCIStmt     *stmtp,
        !          4734:                    OCIError    *errhp, 
        !          4735:                    ub4         nrows,
        !          4736:                    ub2         orientation,
        !          4737:                    ub4         mode);
        !          4738: Comments
        !          4739: The fetch call is a local call, if prefetched rows suffice. However, this is 
        !          4740: transparent to the application. If LOB columns are being read, LOB locators 
        !          4741: are fetched for subsequent LOB operations to be performed on these locators. 
        !          4742: Prefetching is turned off if LONG columns are involved. 
        !          4743: A fetch with nrows set to 0 rows effectively cancels the fetch for this 
        !          4744: statement.
        !          4745: Parameters
        !          4746: stmtp (IN) - a statement (application request) handle.
        !          4747: errhp (IN) - an error handle which can be passed to OCIErrorGet() for 
        !          4748: diagnostic information in the event of an error.
        !          4749: nrows (IN) - number of rows to be fetched from the current position.
        !          4750: orientation (IN) - for release 8.0, the only acceptable value is 
        !          4751: OCI_FETCH_NEXT, which is also the default value. 
        !          4752: mode (IN) - for release 8.0, beta-1, the following mode is defined.
        !          4753: OCI_DEFAULT - default mode
        !          4754: OCI_EOF_FETCH - indicates that it is the last fetch from the result set. 
        !          4755: If nrows is non-zero, setting this mode effectively cancels fetching after 
        !          4756: retrieving nrows, otherwise it cancels fetching immediately. 
        !          4757: Related Functions
        !          4758: OCIAttrGet()
        !          4759: 
        !          4760: 
        !          4761: 
        !          4762: 
        !          4763: 
        !          4764: OCIStmtGetBindInfo()
        !          4765: Name
        !          4766: OCI Get Bind Parameters
        !          4767: Purpose
        !          4768: Gets the bind and indicator variable names.
        !          4769: Syntax
        !          4770: sword OCIStmtGetBindInfo ( OCIStmt      *stmtp,
        !          4771:                      OCIError     *errhp,
        !          4772:                      ub4          size,
        !          4773:                      ub4          startloc,
        !          4774:                      sb4          *found,
        !          4775:                      OraText         *bvnp[],
        !          4776:                      ub1          bvnl[],
        !          4777:                      OraText         *invp[],
        !          4778:                      ub1          inpl[],
        !          4779:                      ub1          dupl[],
        !          4780:                      OCIBind      *hndl[] );
        !          4781: 
        !          4782: Comments
        !          4783: Gets the bind and indicator variable names. It returns the information for all 
        !          4784: the bind variables (even the duplicate ones) and sets the found parameter to 
        !          4785: the total number of bind variables and not just the number of distinct bind 
        !          4786: variables.
        !          4787: The statement must have been prepared with a call to OCIStmtPrepare() prior 
        !          4788: to this call. 
        !          4789: This call is processed locally.
        !          4790: Parameters
        !          4791: stmtp (IN) - the statement handle.
        !          4792: errhp (IN) - an error handle which can be passed to OCIErrorGet() for 
        !          4793: diagnostic information in the event of an error.
        !          4794: size (IN) - the number of elements in each array.
        !          4795: startloc (IN) - position of the  bind variable at which to start getting  bind 
        !          4796: information.
        !          4797: found (IN) - abs(found) gives the total number of bind variables in the 
        !          4798: statement irrespective of the start position. Positive value if the number of 
        !          4799: bind variables returned is less than the size provided, otherwise negative.
        !          4800: bvnp (OUT) - array of pointers to hold bind variable names.
        !          4801: bvnl (OUT) - array to hold the length of the each bvnp element.
        !          4802: invp (OUT) - array of pointers to hold indicator variable names.
        !          4803: inpl (OUT) - array of pointers to hold the length of the each invp element.
        !          4804: dupl (OUT) - an array whose element value is 0 or 1 depending on whether the 
        !          4805: bind position is duplicate of another.
        !          4806: hndl  (OUT) - an array which returns the bind handle if binds have been done 
        !          4807: for the bind position. No handle is returned for duplicates.
        !          4808: Related Functions
        !          4809: OCIStmtPrepare()
        !          4810: 
        !          4811: 
        !          4812: 
        !          4813: OCIStmtGetPieceInfo()
        !          4814: Name
        !          4815: OCI Get Piece Information
        !          4816: Purpose
        !          4817: Returns piece information for a piecewise operation.
        !          4818: Syntax
        !          4819: sword OCIStmtGetPieceInfo( CONST OCIStmt  *stmtp,
        !          4820:                          OCIError       *errhp,
        !          4821:                          dvoid          **hndlpp,
        !          4822:                          ub4            *typep,
        !          4823:                          ub1            *in_outp,
        !          4824:                          ub4            *iterp, 
        !          4825:                          ub4            *idxp,
        !          4826:                          ub1            *piecep );
        !          4827: 
        !          4828: Comments
        !          4829: When an execute/fetch call returns OCI_NEED_DATA to get/return a 
        !          4830: dynamic bind/define value or piece, OCIStmtGetPieceInfo() returns the 
        !          4831: relevant information: bind/define handle, iteration or index number and 
        !          4832: which piece.
        !          4833: See the section "Runtime Data Allocation and Piecewise Operations" on page 
        !          4834: 5-16 for more information about using OCIStmtGetPieceInfo().
        !          4835: Parameters
        !          4836: stmtp (IN) - the statement when executed returned OCI_NEED_DATA. 
        !          4837: errhp (OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          4838: diagnostic information in the event of an error. 
        !          4839: hndlpp (OUT) - returns a pointer to the bind or define handle of the bind or 
        !          4840: define whose runtime data is required or is being provided.
        !          4841: typep (OUT) - the type of the handle pointed to by hndlpp: OCI_HTYPE_BIND 
        !          4842: (for a bind handle) or OCI_HTYPE_DEFINE (for a define handle).
        !          4843: in_outp (OUT) - returns OCI_PARAM_IN if the data is required for an IN bind 
        !          4844: value. Returns OCI_PARAM_OUT if the data is available as an OUT bind 
        !          4845: variable or a define position value.
        !          4846: iterp (OUT) - returns the row number of a multiple row operation.
        !          4847: idxp (OUT) - the index of an array element of a PL/SQL array bind operation.
        !          4848: piecep (OUT) - returns one of the following defined values - 
        !          4849: OCI_ONE_PIECE, OCI_FIRST_PIECE, OCI_NEXT_PIECE and 
        !          4850: OCI_LAST_PIECE. The default value is always OCI_ONE_PIECE. 
        !          4851: Related Functions
        !          4852: OCIAttrGet(), OCIAttrGet(), OCIStmtExecute(), OCIStmtFetch(), 
        !          4853: OCIStmtSetPieceInfo()
        !          4854: 
        !          4855: 
        !          4856: 
        !          4857: 
        !          4858: OCIStmtPrepare()
        !          4859: Name
        !          4860: OCI Statement REQuest
        !          4861: Purpose
        !          4862: This call defines the SQL/PLSQL statement to be executed.
        !          4863: Syntax
        !          4864: sword OCIStmtPrepare ( OCIStmt      *stmtp,
        !          4865:                      OCIError     *errhp,
        !          4866:                      CONST OraText   *stmt, 
        !          4867:                      ub4          stmt_len,
        !          4868:                      ub4          language,
        !          4869:                      ub4          mode);
        !          4870: Comments
        !          4871: This call is used to prepare a SQL or PL/SQL statement for execution. The 
        !          4872: OCIStmtPrepare() call defines an application request. 
        !          4873: This is a purely local call. Data values for this statement initialized in 
        !          4874: subsequent bind calls will be stored in a bind handle which will hang off this 
        !          4875: statement handle.
        !          4876: This call does not create an association between this statement handle and any 
        !          4877: particular server.
        !          4878: See the section "Preparing Statements" on page 2-21 for more information 
        !          4879: about using this call.
        !          4880: Parameters
        !          4881: stmtp (IN) - a statement handle.
        !          4882: errhp (IN) - an error handle to retrieve diagnostic information.
        !          4883: stmt (IN) - SQL or PL/SQL statement to be executed. Must be a null-
        !          4884: terminated string. The pointer to the text of the statement must be available 
        !          4885: as long as the statement is executed.
        !          4886: stmt_len (IN) - length of the statement. Must not be zero.
        !          4887: language (IN) - V7, V8, or native syntax. Possible values are:
        !          4888: OCI_V7_SYNTAX - V7 ORACLE parsing syntax
        !          4889: OCI_V8_SYNTAX - V8 ORACLE parsing syntax
        !          4890: OCI_NTV_SYNTAX - syntax depending upon the version of the server. 
        !          4891: mode (IN) - the only defined mode is OCI_DEFAULT for default mode. 
        !          4892: Example
        !          4893: This example demonstrates the use of OCIStmtPrepare(), as well as the OCI 
        !          4894: application initialization calls.
        !          4895: Related Functions
        !          4896: OCIAttrGet(), OCIStmtExecute()
        !          4897: 
        !          4898: 
        !          4899: OCIStmtSetPieceInfo()
        !          4900: Name
        !          4901: OCI Set Piece Information
        !          4902: Purpose
        !          4903: Sets piece information for a piecewise operation.
        !          4904: Syntax
        !          4905: sword OCIStmtSetPieceInfo ( dvoid             *hndlp,
        !          4906:                           ub4               type,
        !          4907:                           OCIError          *errhp,
        !          4908:                           CONST dvoid       *bufp,
        !          4909:                           ub4               *alenp, 
        !          4910:                           ub1               piece,
        !          4911:                           CONST dvoid       *indp, 
        !          4912:                           ub2               *rcodep ); 
        !          4913: Comments
        !          4914: When an execute call returns OCI_NEED_DATA to get a dynamic IN/OUT 
        !          4915: bind value or piece, OCIStmtSetPieceInfo() sets the piece information: the 
        !          4916: buffer, the length, the indicator and which piece is currently being processed.
        !          4917: For more information about using OCIStmtSetPieceInfo() see the section 
        !          4918: "Runtime Data Allocation and Piecewise Operations" on page 5-16.
        !          4919: Parameters
        !          4920: hndlp (IN/OUT) - the bind/define handle.
        !          4921: type (IN) - type of the handle. 
        !          4922: errhp (OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          4923: diagnostic information in the event of an error.
        !          4924: bufp (IN/OUT) - bufp is a pointer to a storage containing the data value or 
        !          4925: the piece when it is an IN bind variable, otherwise bufp is a pointer to 
        !          4926: storage for getting a piece or a value for OUT binds and define variables. For
        !          4927: named data types or REFs, a pointer to the object or REF is returned.
        !          4928: alenp (IN/OUT) - the length of the piece or the value. 
        !          4929: piece (IN) - the piece parameter. The following are valid values: 
        !          4930: OCI_ONE_PIECE, OCI_FIRST_PIECE, OCI_NEXT_PIECE, or 
        !          4931: OCI_LAST_PIECE. 
        !          4932: The default value is OCI_ONE_PIECE. This parameter is used for IN bind 
        !          4933: variables only.
        !          4934: indp (IN/OUT) - indicator. A pointer to a sb2 value or pointer to an indicator 
        !          4935: structure for named data types (SQLT_NTY) and REFs (SQLT_REF), i.e., *indp 
        !          4936: is either an sb2 or a dvoid * depending upon the data type.
        !          4937: rcodep (IN/OUT) - return code. 
        !          4938: Related Functions
        !          4939: OCIAttrGet(), OCIAttrGet(), OCIStmtExecute(), OCIStmtFetch(), 
        !          4940: OCIStmtGetPieceInfo()
        !          4941: 
        !          4942: 
        !          4943: OCIFormatInit
        !          4944: Name
        !          4945: OCIFormat Package Initialize
        !          4946: Purpose
        !          4947: Initializes the OCIFormat package.
        !          4948: Syntax
        !          4949: sword OCIFormatInit(dvoid *hndl, OCIError *err);
        !          4950: Comments
        !          4951: This routine must be called before calling any other OCIFormat routine.
        !          4952: Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR
        !          4953: Parameters
        !          4954: hndl (IN/OUT) - OCI environment or session handle
        !          4955: err (IN/OUT) - OCI error handle
        !          4956: Related Functions
        !          4957: OCIFormatTerm()
        !          4958: 
        !          4959: 
        !          4960: OCIFormatString
        !          4961: Name
        !          4962: OCIFormat Package Format String
        !          4963: Purpose
        !          4964: Writes a text string into the supplied text buffer using the argument
        !          4965: list submitted to it and in accordance with the format string given.
        !          4966: Syntax
        !          4967: sword OCIFormatString(dvoid *hndl, OCIError *err, text *buffer,
        !          4968:                       sbig_ora bufferLength, sbig_ora *returnLength,
        !          4969:                       CONST OraText *formatString, ...);
        !          4970: Comments
        !          4971: The first call to this routine must be preceded by a call to the
        !          4972: OCIFormatInit routine that initializes the OCIFormat package
        !          4973: for use.  When this routine is no longer needed then terminate
        !          4974: the OCIFormat package by a call to the OCIFormatTerm routine.
        !          4975: Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR
        !          4976: Parameters
        !          4977: hndl         (IN/OUT) - OCI environment or session handle
        !          4978: err          (IN/OUT) - OCI error handle
        !          4979: buffer       (OUT)    - text buffer for the string
        !          4980: bufferLength (IN)     - length of the text buffer
        !          4981: returnLength (OUT)    - length of the formatted string
        !          4982: formatString (IN)     - format specification string
        !          4983: ...          (IN)     - variable argument list
        !          4984: Related Functions
        !          4985: 
        !          4986: 
        !          4987: OCIFormatTerm 
        !          4988: Name
        !          4989: OCIFormat Package Terminate
        !          4990: Purpose
        !          4991: Terminates the OCIFormat package.
        !          4992: Syntax
        !          4993: sword OCIFormatTerm(dvoid *hndl, OCIError *err);
        !          4994: Comments
        !          4995: It must be called after the OCIFormat package is no longer being used.
        !          4996: Returns OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR
        !          4997: Parameters
        !          4998: hndl (IN/OUT) - OCI environment or session handle
        !          4999: err (IN/OUT) - OCI error handle
        !          5000: Related Functions
        !          5001: OCIFormatInit()
        !          5002: 
        !          5003: 
        !          5004: OCIFormatTUb1
        !          5005: Name
        !          5006: OCIFormat Package ub1 Type
        !          5007: Purpose
        !          5008: Return the type value for the ub1 type.
        !          5009: Syntax
        !          5010: sword OCIFormatTUb1(void);
        !          5011: Comments
        !          5012: None
        !          5013: Parameters
        !          5014: None
        !          5015: Related Functions
        !          5016: None
        !          5017: 
        !          5018: 
        !          5019: OCIFormatTUb2
        !          5020: Name
        !          5021: OCIFormat Package ub2 Type
        !          5022: Purpose
        !          5023: Return the type value for the ub2 type.
        !          5024: Syntax
        !          5025: sword OCIFormatTUb2(void);
        !          5026: Comments
        !          5027: None
        !          5028: Parameters
        !          5029: None
        !          5030: Related Functions
        !          5031: None
        !          5032: 
        !          5033: 
        !          5034: OCIFormatTUb4
        !          5035: Name
        !          5036: OCIFormat Package ub4 Type
        !          5037: Purpose
        !          5038: Return the type value for the ub4 type.
        !          5039: Syntax
        !          5040: sword OCIFormatTUb4(void);
        !          5041: Comments
        !          5042: None
        !          5043: Parameters
        !          5044: None
        !          5045: Related Functions
        !          5046: None
        !          5047: 
        !          5048: 
        !          5049: OCIFormatTUword
        !          5050: Name
        !          5051: OCIFormat Package uword Type
        !          5052: Purpose
        !          5053: Return the type value for the uword type.
        !          5054: Syntax
        !          5055: sword OCIFormatTUword(void);
        !          5056: Comments
        !          5057: None
        !          5058: Parameters
        !          5059: None
        !          5060: Related Functions
        !          5061: None
        !          5062: 
        !          5063: 
        !          5064: OCIFormatTUbig_ora
        !          5065: Name
        !          5066: OCIFormat Package ubig_ora Type
        !          5067: Purpose
        !          5068: Return the type value for the ubig_ora type.
        !          5069: Syntax
        !          5070: sword OCIFormatTUbig_ora(void);
        !          5071: Comments
        !          5072: None
        !          5073: Parameters
        !          5074: None
        !          5075: Related Functions
        !          5076: None
        !          5077: 
        !          5078: 
        !          5079: OCIFormatTSb1
        !          5080: Name
        !          5081: OCIFormat Package sb1 Type
        !          5082: Purpose
        !          5083: Return the type value for the sb1 type.
        !          5084: Syntax
        !          5085: sword OCIFormatTSb1(void);
        !          5086: Comments
        !          5087: None
        !          5088: Parameters
        !          5089: None
        !          5090: Related Functions
        !          5091: None
        !          5092: 
        !          5093: 
        !          5094: OCIFormatTSb2
        !          5095: Name
        !          5096: OCIFormat Package sb2 Type
        !          5097: Purpose
        !          5098: Return the type value for the sb2 type.
        !          5099: Syntax
        !          5100: sword OCIFormatTSb2(void);
        !          5101: Comments
        !          5102: None
        !          5103: Parameters
        !          5104: None
        !          5105: Related Functions
        !          5106: None
        !          5107: 
        !          5108: 
        !          5109: OCIFormatTSb4
        !          5110: Name
        !          5111: OCIFormat Package sb4 Type
        !          5112: Purpose
        !          5113: Return the type value for the sb4 type.
        !          5114: Syntax
        !          5115: sword OCIFormatTSb4(void);
        !          5116: Comments
        !          5117: None
        !          5118: Parameters
        !          5119: None
        !          5120: Related Functions
        !          5121: None
        !          5122: 
        !          5123: 
        !          5124: OCIFormatTSword
        !          5125: Name
        !          5126: OCIFormat Package sword Type
        !          5127: Purpose
        !          5128: Return the type value for the sword type.
        !          5129: Syntax
        !          5130: sword OCIFormatTSword(void);
        !          5131: Comments
        !          5132: None
        !          5133: Parameters
        !          5134: None
        !          5135: Related Functions
        !          5136: None
        !          5137: 
        !          5138: 
        !          5139: OCIFormatTSbig_ora
        !          5140: Name
        !          5141: OCIFormat Package sbig_ora Type
        !          5142: Purpose
        !          5143: Return the type value for the sbig_ora type.
        !          5144: Syntax
        !          5145: sword OCIFormatTSbig_ora(void);
        !          5146: Comments
        !          5147: None
        !          5148: Parameters
        !          5149: None
        !          5150: Related Functions
        !          5151: None
        !          5152: 
        !          5153: 
        !          5154: OCIFormatTEb1
        !          5155: Name
        !          5156: OCIFormat Package eb1 Type
        !          5157: Purpose
        !          5158: Return the type value for the eb1 type.
        !          5159: Syntax
        !          5160: sword OCIFormatTEb1(void);
        !          5161: Comments
        !          5162: None
        !          5163: Parameters
        !          5164: None
        !          5165: Related Functions
        !          5166: None
        !          5167: 
        !          5168: 
        !          5169: OCIFormatTEb2
        !          5170: Name
        !          5171: OCIFormat Package eb2 Type
        !          5172: Purpose
        !          5173: Return the type value for the eb2 type.
        !          5174: Syntax
        !          5175: sword OCIFormatTEb2(void);
        !          5176: Comments
        !          5177: None
        !          5178: Parameters
        !          5179: None
        !          5180: Related Functions
        !          5181: None
        !          5182: 
        !          5183: 
        !          5184: OCIFormatTEb4
        !          5185: Name
        !          5186: OCIFormat Package eb4 Type
        !          5187: Purpose
        !          5188: Return the type value for the eb4 type.
        !          5189: Syntax
        !          5190: sword OCIFormatTEb4(void);
        !          5191: Comments
        !          5192: None
        !          5193: Parameters
        !          5194: None
        !          5195: Related Functions
        !          5196: None
        !          5197: 
        !          5198: 
        !          5199: OCIFormatTEword
        !          5200: Name
        !          5201: OCIFormat Package eword Type
        !          5202: Purpose
        !          5203: Return the type value for the eword type.
        !          5204: Syntax
        !          5205: sword OCIFormatTEword(void);
        !          5206: Comments
        !          5207: None
        !          5208: Parameters
        !          5209: None
        !          5210: Related Functions
        !          5211: None
        !          5212: 
        !          5213: 
        !          5214: OCIFormatTChar
        !          5215: Name
        !          5216: OCIFormat Package text Type
        !          5217: Purpose
        !          5218: Return the type value for the text type.
        !          5219: Syntax
        !          5220: sword OCIFormatTChar(void);
        !          5221: Comments
        !          5222: None
        !          5223: Parameters
        !          5224: None
        !          5225: Related Functions
        !          5226: None
        !          5227: 
        !          5228: 
        !          5229: OCIFormatTText
        !          5230: Name
        !          5231: OCIFormat Package *text Type
        !          5232: Purpose
        !          5233: Return the type value for the *text type.
        !          5234: Syntax
        !          5235: sword OCIFormatTText(void);
        !          5236: Comments
        !          5237: None
        !          5238: Parameters
        !          5239: None
        !          5240: Related Functions
        !          5241: None
        !          5242: 
        !          5243: 
        !          5244: OCIFormatTDouble
        !          5245: Name
        !          5246: OCIFormat Package double Type
        !          5247: Purpose
        !          5248: Return the type value for the double type.
        !          5249: Syntax
        !          5250: sword OCIFormatTDouble(void);
        !          5251: Comments
        !          5252: None
        !          5253: Parameters
        !          5254: None
        !          5255: Related Functions
        !          5256: None
        !          5257: 
        !          5258: 
        !          5259: OCIFormatDvoid
        !          5260: Name
        !          5261: OCIFormat Package dvoid Type
        !          5262: Purpose
        !          5263: Return the type value for the dvoid type.
        !          5264: Syntax
        !          5265: sword OCIFormatTDvoid(void);
        !          5266: Comments
        !          5267: None
        !          5268: Parameters
        !          5269: None
        !          5270: Related Functions
        !          5271: None
        !          5272: 
        !          5273: 
        !          5274: OCIFormatTEnd
        !          5275: Name
        !          5276: OCIFormat Package end Type
        !          5277: Purpose
        !          5278: Return the list terminator's "type".
        !          5279: Syntax
        !          5280: sword OCIFormatTEnd(void);
        !          5281: Comments
        !          5282: None
        !          5283: Parameters
        !          5284: None
        !          5285: Related Functions
        !          5286: None
        !          5287: 
        !          5288: 
        !          5289: OCISvcCtxToLda()
        !          5290: Name
        !          5291: OCI toggle SerVice context handle to Version 7 Lda_Def
        !          5292: Purpose
        !          5293: Toggles between a V8 service context handle and a V7 Lda_Def.
        !          5294: Syntax
        !          5295: sword OCISvcCtxToLda ( OCISvcCtx    *srvhp,
        !          5296:                      OCIError     *errhp,
        !          5297:                      Lda_Def      *ldap );
        !          5298: Comments
        !          5299: Toggles between an Oracle8 service context handle and an Oracle7 Lda_Def.
        !          5300: This function can only be called after a service context has been properly 
        !          5301: initialized.
        !          5302: Once the service context has been translated to an Lda_Def, it can be used in 
        !          5303: release 7.x OCI calls (e.g., obindps(), ofen()).
        !          5304: Note: If there are multiple service contexts which share the same server 
        !          5305: handle, only one can be in V7 mode at any time.
        !          5306: The action of this call can be reversed by passing the resulting Lda_Def to 
        !          5307: the OCILdaToSvcCtx() function.
        !          5308: Parameters
        !          5309: svchp (IN/OUT) - the service context handle. 
        !          5310: errhp (IN/OUT) - an error handle which can be passed to OCIErrorGet() for 
        !          5311: diagnostic information in the event of an error. 
        !          5312: ldap (IN/OUT) - a Logon Data Area for V7-style OCI calls which is initialized 
        !          5313: by this call. 
        !          5314: Related Functions
        !          5315: OCILdaToSvcCtx()
        !          5316: 
        !          5317: 
        !          5318: 
        !          5319: 
        !          5320: OCITransCommit()
        !          5321: Name
        !          5322: OCI TX (transaction) CoMmit
        !          5323: Purpose
        !          5324: Commits the transaction associated with a specified service context.
        !          5325: Syntax
        !          5326: sword OCITransCommit ( OCISvcCtx    *srvcp,
        !          5327:                      OCIError     *errhp,
        !          5328:                      ub4          flags );
        !          5329: Comments
        !          5330: The transaction currently associated with the service context is committed. If 
        !          5331: it is a distributed transaction that the server cannot commit, this call 
        !          5332: additionally retrieves the state of the transaction from the database to be 
        !          5333: returned to the user in the error handle.
        !          5334: If the application has defined multiple transactions, this function operates 
        !          5335: on the transaction currently associated with the service context. If the 
        !          5336: application is working with only the implicit local transaction created when 
        !          5337: database changes are made, that implicit transaction is committed.
        !          5338: If the application is running in the object mode, then the modified or updated 
        !          5339: objects in the object cache for this transaction are also committed.
        !          5340: The flags parameter is used for one-phase commit optimization in distributed 
        !          5341: transactions. If the transaction is non-distributed, the flags parameter is 
        !          5342: ignored, and OCI_DEFAULT can be passed as its value. OCI applications 
        !          5343: managing global transactions should pass a value of 
        !          5344: OCI_TRANS_TWOPHASE to the flags parameter for a two-phase commit. The 
        !          5345: default is one-phase commit.
        !          5346: Under normal circumstances, OCITransCommit() returns with a status 
        !          5347: indicating that the transaction has either been committed or rolled back. With 
        !          5348: distributed transactions, it is possible that the transaction is now in-doubt 
        !          5349: (i.e., neither committed nor aborted). In this case, OCITransCommit() 
        !          5350: attempts to retrieve the status of the transaction from the server. 
        !          5351: The status is returned.
        !          5352: Parameters
        !          5353: srvcp (IN) - the service context handle.
        !          5354: errhp (IN) - an error handle which can be passed to OCIErrorGet() for 
        !          5355: diagnostic information in the event of an error.
        !          5356: flags -see the "Comments" section above.
        !          5357: Related Functions
        !          5358: OCITransRollback()
        !          5359: 
        !          5360: 
        !          5361: 
        !          5362: 
        !          5363: OCITransDetach()
        !          5364: Name
        !          5365: OCI TX (transaction) DeTach
        !          5366: Purpose
        !          5367: Detaches a transaction.
        !          5368: Syntax
        !          5369: sword OCITransDetach ( OCISvcCtx    *srvcp,
        !          5370:                      OCIError     *errhp,
        !          5371:                      ub4          flags);
        !          5372: Comments
        !          5373: Detaches a global transaction from the service context handle. The transaction 
        !          5374: currently attached to the service context handle becomes inactive at the end 
        !          5375: of this call. The transaction may be resumed later by calling OCITransStart(), 
        !          5376: specifying  a flags value of OCI_TRANS_RESUME.
        !          5377: When a transaction is detached, the value which was specified in the timeout 
        !          5378: parameter of OCITransStart() when the transaction was started is used to 
        !          5379: determine the amount of time the branch can remain inactive before being 
        !          5380: deleted by the server's PMON process.
        !          5381: Note: The transaction can be resumed by a different process than the one 
        !          5382: that detached it, provided that the transaction has the same 
        !          5383: authorization.
        !          5384: Parameters
        !          5385: srvcp (IN) - the service context handle. 
        !          5386: errhp (IN) - an error handle which can be passed to OCIErrorGet() for 
        !          5387: diagnostic information in the event of an error.
        !          5388: flags (IN) - you must pass a value of OCI_DEFAULT for this parameter.
        !          5389: Related Functions
        !          5390: OCITransStart()
        !          5391: 
        !          5392: 
        !          5393: 
        !          5394: OCITransForget()
        !          5395: Name
        !          5396: OCI TX (transaction) ForGeT
        !          5397: Purpose
        !          5398: Causes the server to forget a heuristically completed global transaction.
        !          5399: Syntax
        !          5400: sword OCITransForget ( OCISvcCtx     *svchp, 
        !          5401:                      OCIError      *errhp,
        !          5402:                      ub4           flags);
        !          5403: 
        !          5404: Comments
        !          5405: 
        !          5406: Forgets a heuristically completed global transaction. The server deletes the 
        !          5407: status of the transaction from the system's pending transaction table.
        !          5408: The XID of the transaction to be forgotten is set as an attribute of the 
        !          5409: transaction handle (OCI_ATTR_XID).
        !          5410: Parameters
        !          5411: srvcp (IN) - the service context handle - the transaction is rolled back.
        !          5412: errhp (IN) - an error handle which can be passed to OCIErrorGet() for 
        !          5413: diagnostic information in the event of an error.
        !          5414: flags (IN) - you must pass OCI_DEFAULT for this parameter.
        !          5415: Related Functions
        !          5416: OCITransCommit(), OCITransRollback()
        !          5417: 
        !          5418: 
        !          5419: 
        !          5420: OCITransMultiPrepare() 
        !          5421: Name
        !          5422: OCI Trans(action) Multi-Branch Prepare
        !          5423: Purpose
        !          5424: Prepares a transaction with multiple branches in a single call.
        !          5425: Syntax
        !          5426: sword OCITransMultiPrepare ( OCISvcCtx    *svchp,
        !          5427:                              ub4           numBranches,
        !          5428:                              OCITrans     **txns,
        !          5429:                              OCIError     **errhp);
        !          5430: 
        !          5431: Comments
        !          5432: 
        !          5433: Prepares the specified global transaction for commit.
        !          5434: This call is valid only for distributed transactions.
        !          5435: This call is an advanced performance feature intended for use only in
        !          5436: situations where the caller is responsible for preparing all the branches
        !          5437: in a transaction. 
        !          5438: Parameters
        !          5439: srvcp (IN) - the service context handle. 
        !          5440: numBranches (IN) - This is the number of branches expected. It is also the
        !          5441: array size for the next two parameters.
        !          5442: txns (IN) - This is the array of transaction handles for the branches to
        !          5443: prepare. They should all have the OCI_ATTR_XID set. The global transaction
        !          5444: ID should be the same.
        !          5445: errhp (IN) - This is the array of error handles. If OCI_SUCCESS is not
        !          5446: returned, then these will indicate which branches received which errors.
        !          5447: Related Functions
        !          5448: OCITransPrepare()
        !          5449: 
        !          5450: 
        !          5451: OCITransPrepare()
        !          5452: Name
        !          5453: OCI TX (transaction) PREpare
        !          5454: Purpose
        !          5455: Prepares a transaction for commit.
        !          5456: Syntax
        !          5457: sword OCITransPrepare ( OCISvcCtx    *svchp, 
        !          5458:                       OCIError     *errhp,
        !          5459:                       ub4          flags);
        !          5460: 
        !          5461: Comments
        !          5462: 
        !          5463: Prepares the specified global transaction for commit.
        !          5464: This call is valid only for distributed transactions.
        !          5465: The call returns OCI_SUCCESS_WITH_INFO if the transaction has not made 
        !          5466: any changes. The error handle will indicate that the transaction is read-only. 
        !          5467: The flag parameter is not currently used. 
        !          5468: Parameters
        !          5469: srvcp (IN) - the service context handle. 
        !          5470: errhp (IN) - an error handle which can be passed to OCIErrorGet() for 
        !          5471: diagnostic information in the event of an error.
        !          5472: flags (IN) - you must pass OCI_DEFAULT for this parameter.
        !          5473: Related Functions
        !          5474: OCITransCommit(), OCITransForget()
        !          5475: 
        !          5476: 
        !          5477: 
        !          5478: 
        !          5479: OCITransRollback()
        !          5480: Name
        !          5481: OCI TX (transaction) RoLlback
        !          5482: Purpose
        !          5483: Rolls back the current transaction.
        !          5484: Syntax
        !          5485: sword OCITransRollback ( dvoid        *svchp, 
        !          5486:                        OCIError     *errhp,
        !          5487:                        ub4          flags );
        !          5488: Comments
        !          5489: The current transaction- defined as the set of statements executed since the 
        !          5490: last OCITransCommit() or since OCISessionBegin()-is rolled back.
        !          5491: If the application is running under object mode then the modified or updated 
        !          5492: objects in the object cache for this transaction are also rolled back.
        !          5493: An error is returned if an attempt is made to roll back a global transaction 
        !          5494: that is not currently active.
        !          5495: Parameters
        !          5496: svchp (IN) - a service context handle. The transaction currently set in the 
        !          5497: service context handle is rolled back.
        !          5498: errhp -(IN) - an error handle which can be passed to OCIErrorGet() for 
        !          5499: diagnostic information in the event of an error.
        !          5500: flags - you must pass a value of OCI_DEFAULT for this parameter.
        !          5501: Related Functions
        !          5502: OCITransCommit()
        !          5503: 
        !          5504: 
        !          5505: 
        !          5506: 
        !          5507: OCITransStart()
        !          5508: Name
        !          5509: OCI TX (transaction) STart
        !          5510: Purpose
        !          5511: Sets the beginning of a transaction.
        !          5512: Syntax
        !          5513: sword OCITransStart ( OCISvcCtx    *svchp, 
        !          5514:                     OCIError     *errhp, 
        !          5515:                     uword        timeout,
        !          5516:                     ub4          flags);
        !          5517: 
        !          5518: Comments
        !          5519: This function sets the beginning of a global or serializable transaction. The 
        !          5520: transaction context currently associated with the service context handle is 
        !          5521: initialized at the end of the call if the flags parameter specifies that a new 
        !          5522: transaction should be started.
        !          5523: The XID of the transaction is set as an attribute of the transaction handle 
        !          5524: (OCI_ATTR_XID)
        !          5525: Parameters
        !          5526: svchp (IN/OUT) - the service context handle. The transaction context in the 
        !          5527: service context handle is initialized at the end of the call if the flag 
        !          5528: specified a new transaction to be started.
        !          5529: errhp (IN/OUT) - The OCI error handle. If there is an error, it is recorded in 
        !          5530: err and this function returns OCI_ERROR. Diagnostic information can be 
        !          5531: obtained by calling OCIErrorGet().
        !          5532: timeout (IN) - the time, in seconds, to wait for a transaction to become 
        !          5533: available for resumption when OCI_TRANS_RESUME is specified. When 
        !          5534: OCI_TRANS_NEW is specified, this value is stored and may be used later by 
        !          5535: OCITransDetach().
        !          5536: flags (IN) - specifies whether a new transaction is being started or an 
        !          5537: existing transaction is being resumed. Also specifies serializiability or 
        !          5538: read-only status. More than a single value can be specified. By default, 
        !          5539: a read/write transaction is started. The flag values are:
        !          5540: OCI_TRANS_NEW - starts a new transaction branch. By default starts a 
        !          5541: tightly coupled and migratable branch.
        !          5542: OCI_TRANS_TIGHT - explicitly specifies a tightly coupled branch
        !          5543: OCI_TRANS_LOOSE - specifies a loosely coupled branch
        !          5544: OCI_TRANS_RESUME - resumes an existing transaction branch. 
        !          5545: OCI_TRANS_READONLY - start a readonly transaction
        !          5546: OCI_TRANS_SERIALIZABLE - start a serializable transaction
        !          5547: Related Functions
        !          5548: OCITransDetach()
        !          5549: 
        !          5550: 
        !          5551: ******************************************************************************/
        !          5552: 
        !          5553: /*****************************************************************************
        !          5554:                          ACTUAL PROTOTYPE DECLARATIONS
        !          5555: ******************************************************************************/
        !          5556: /*-----------------------Dynamic Callback Function Pointers------------------*/
        !          5557: typedef sb4 (*OCICallbackInBind)(/*_ dvoid *ictxp, OCIBind *bindp, ub4 iter,
        !          5558:                                    ub4 index, dvoid **bufpp, ub4 *alenp,
        !          5559:                                    ub1 *piecep, dvoid **indp _*/);
        !          5560:  
        !          5561: typedef sb4 (*OCICallbackOutBind)(/*_ dvoid *octxp, OCIBind *bindp, ub4 iter,
        !          5562:                                     ub4 index, dvoid **bufpp, ub4 **alenp,
        !          5563:                                     ub1 *piecep, dvoid **indp,
        !          5564:                                     ub2 **rcodep _*/);
        !          5565:  
        !          5566: typedef sb4 (*OCICallbackDefine)(/*_ dvoid *octxp, OCIDefine *defnp, ub4 iter,
        !          5567:                                    dvoid **bufpp, ub4 **alenp, ub1 *piecep,
        !          5568:                                    dvoid **indp, ub2 **rcodep _*/);
        !          5569: 
        !          5570: typedef sword (*OCIUserCallback)(/*_ dvoid *ctxp, dvoid *hndlp, ub4 type,
        !          5571:                                      ub4 fcode, ub4 when, sword returnCode,
        !          5572:                                      sb4 *errnop, va_list arglist _*/);
        !          5573: 
        !          5574: typedef sword (*OCIEnvCallbackType)(/*_ OCIEnv *env, ub4 mode,
        !          5575:                                        size_t xtramem_sz, dvoid *usrmemp,
        !          5576:                                        OCIUcb *ucbDesc _*/); 
        !          5577: 
        !          5578: typedef sb4 (*OCICallbackLobRead)(/*_ dvoid *ctxp,
        !          5579:                                       CONST dvoid *bufp,
        !          5580:                                       ub4 len,
        !          5581:                                       ub1 piece _*/);
        !          5582: 
        !          5583: /*
        !          5584:  * Called multiple times when the data is being read from the pipe
        !          5585:  * ctxp (IN) - is the context passed in by the user in OCILobRead call
        !          5586:  * bufp (IN) - the buffer containing the read data
        !          5587:  * len  (IN) - the length of the data in the buffer that is relevant
        !          5588:  * piece (IN) - one of the following, OCI_FIRST_PIECE, OCI_NEXT_PIECE
        !          5589:  */
        !          5590: 
        !          5591: typedef sb4 (*OCICallbackLobWrite)(/*_ dvoid *ctxp,
        !          5592:                                        dvoid *bufp,
        !          5593:                                        ub4 *lenp,
        !          5594:                                        ub1 *piece _*/);
        !          5595: 
        !          5596: /*
        !          5597:  * Called multiple times when the data is being written to the pipe
        !          5598:  * ctxp (IN) - is the context passed in by the user in OCILobRead call
        !          5599:  * bufp (IN/OUT) - the buffer into which the data to be written is copied
        !          5600:  * lenp  (OUT) - the length of the data in the buffer that is relevant
        !          5601:  * piece (OUT) - one of the following, OCI_NEXT_PIECE or OCI_LAST_PIECE
        !          5602:  */
        !          5603: 
        !          5604: /*--------------------------Failover Callback Structure ---------------------*/
        !          5605: typedef sb4 (*OCICallbackFailover)(/*_ dvoid *svcctx, dvoid *envctx,
        !          5606:                                        dvoid *fo_ctx, ub4 fo_type,
        !          5607:                                        ub4 fo_event _*/);
        !          5608: /* Called at failover time if client has registered it. */
        !          5609: typedef struct
        !          5610: {
        !          5611:   OCICallbackFailover callback_function;
        !          5612:   dvoid *fo_ctx;
        !          5613: } 
        !          5614: OCIFocbkStruct;
        !          5615: 
        !          5616: 
        !          5617: 
        !          5618: sword   OCIInitialize(/*_ ub4 mode, dvoid *ctxp,
        !          5619:                           dvoid *(*malocfp)(dvoid *ctxp, size_t size),
        !          5620:                           dvoid *(*ralocfp)(dvoid *ctxp, dvoid *memptr,
        !          5621:                                             size_t newsize),
        !          5622:                           void (*mfreefp)(dvoid *ctxp, dvoid *memptr) _*/);
        !          5623: 
        !          5624: sword   OCITerminate(ub4 mode);
        !          5625: 
        !          5626: sword   OCIEnvCreate (/*_ OCIEnv **envp, ub4 mode, dvoid *ctxp,
        !          5627:                  dvoid *(*malocfp)(dvoid *ctxp, size_t size),
        !          5628:                  dvoid *(*ralocfp)(dvoid *ctxp, dvoid *memptr, size_t newsize),
        !          5629:                  void   (*mfreefp)(dvoid *ctxp, dvoid *memptr),
        !          5630:                  size_t xtramem_sz, dvoid **usrmempp _*/);
        !          5631: 
        !          5632: sword   OCIFEnvCreate (/*_ OCIEnv **envp, ub4 mode, dvoid *ctxp,
        !          5633:                  dvoid *(*malocfp)(dvoid *ctxp, size_t size),
        !          5634:                  dvoid *(*ralocfp)(dvoid *ctxp, dvoid *memptr, size_t newsize),
        !          5635:                  void   (*mfreefp)(dvoid *ctxp, dvoid *memptr),
        !          5636:                  size_t xtramem_sz, dvoid **usrmempp, dvoid *fupg _*/);
        !          5637: 
        !          5638: sword   OCIHandleAlloc(/*_ CONST dvoid *parenth, dvoid **hndlpp, 
        !          5639:                            CONST ub4 type, CONST size_t xtramem_sz,
        !          5640:                            dvoid **usrmempp _*/);
        !          5641: 
        !          5642: sword   OCIHandleFree(/*_ dvoid *hndlp, CONST ub4 type _*/);
        !          5643: 
        !          5644: sword   OCIDescriptorAlloc(/*_ CONST dvoid *parenth, dvoid **descpp, 
        !          5645:                                CONST ub4 type, CONST size_t xtramem_sz, 
        !          5646:                                dvoid **usrmempp _*/);
        !          5647: 
        !          5648: sword   OCIDescriptorFree(/*_ dvoid *descp, CONST ub4 type _*/);
        !          5649: 
        !          5650: sword   OCIEnvInit(/*_ OCIEnv **envp, ub4 mode,
        !          5651:                        size_t xtramem_sz, dvoid **usrmempp _*/);
        !          5652: 
        !          5653: sword   OCIServerAttach(/*_ OCIServer *srvhp, OCIError *errhp,
        !          5654:                             CONST OraText *dblink, sb4 dblink_len, 
        !          5655:                             ub4 mode _*/);
        !          5656: 
        !          5657: sword   OCIServerDetach(/*_ OCIServer *srvhp, OCIError *errhp, ub4 mode _*/);
        !          5658: 
        !          5659: sword   OCISessionBegin(/*_ OCISvcCtx *svchp, OCIError *errhp,
        !          5660:                             OCISession *usrhp, ub4 credt, ub4 mode _*/);
        !          5661: 
        !          5662: sword   OCISessionEnd(/*_ OCISvcCtx *svchp, OCIError *errhp,
        !          5663:                           OCISession *usrhp, ub4 mode _*/);
        !          5664: 
        !          5665: sword OCILogon       (/*_ OCIEnv *envhp, OCIError *errhp, OCISvcCtx **svchp, 
        !          5666:                        CONST OraText *username, ub4 uname_len, 
        !          5667:                        CONST OraText *password, ub4 passwd_len, 
        !          5668:                        CONST OraText *dbname, ub4 dbname_len _*/);
        !          5669: 
        !          5670: sword OCILogoff      (/*_ OCISvcCtx *svchp, OCIError *errhp _*/);
        !          5671: 
        !          5672: sword OCIPasswordChange (/*_ OCISvcCtx *svchp, OCIError *errhp,
        !          5673:                            CONST OraText *user_name, ub4 usernm_len,
        !          5674:                            CONST OraText *opasswd, ub4 opasswd_len,
        !          5675:                            CONST OraText *npasswd, ub4 npasswd_len, 
        !          5676:                            ub4 mode _*/);
        !          5677: 
        !          5678: sword   OCIStmtPrepare(/*_ OCIStmt *stmtp, OCIError *errhp, CONST OraText *stmt,
        !          5679:                            ub4 stmt_len, ub4 language, ub4 mode _*/);
        !          5680: 
        !          5681: #if !defined(__STDC__) && !defined(__cplusplus)
        !          5682: sword OCIBindByPos   (/*_ OCIStmt *stmtp, OCIBind **bindp, OCIError *errhp,
        !          5683:                        ub4 position, dvoid *valuep, sb4 value_sz,
        !          5684:                        ub2 dty, dvoid *indp, ub2 *alenp, ub2 *rcodep,
        !          5685:                        ub4 maxarr_len, ub4 *curelep, ub4 mode _*/);
        !          5686: #endif /* __STDC__ */
        !          5687: 
        !          5688: #if !defined(__STDC__) && !defined(__cplusplus)
        !          5689: sword OCIBindByName  (/*_ OCIStmt *stmtp, OCIBind **bindp, OCIError *errhp,
        !          5690:                        CONST OraText *placeholder, sb4 placeh_len, 
        !          5691:                         dvoid *valuep, sb4 value_sz, ub2 dty, 
        !          5692:                         dvoid *indp, ub2 *alenp, ub2 *rcodep, 
        !          5693:                         ub4 maxarr_len, ub4 *curelep, ub4 mode _*/);
        !          5694: #endif /* __STDC__ */
        !          5695: 
        !          5696: sword   OCIBindObject(/*_ OCIBind *bindp, OCIError *errhp,
        !          5697:                           CONST OCIType *type, dvoid **pgvpp,
        !          5698:                           ub4 *pvszsp, dvoid **indpp, ub4 *indszp _*/);
        !          5699: 
        !          5700: sword   OCIBindDynamic(/*_ OCIBind *bindp, OCIError *errhp,
        !          5701:                            dvoid *ictxp, OCICallbackInBind icbfp,
        !          5702:                            dvoid *octxp, OCICallbackOutBind ocbfp _*/);
        !          5703: 
        !          5704: sword   OCIBindArrayOfStruct(/*_ OCIBind *bindp, OCIError *errhp, ub4 pvskip,
        !          5705:                                  ub4 indskip, ub4 alskip, ub4 rcskip _*/);
        !          5706: 
        !          5707: sword   OCIStmtGetPieceInfo(/*_ OCIStmt *stmtp, OCIError *errhp,
        !          5708:                                 dvoid **hndlpp, ub4 *typep, ub1 *in_outp,
        !          5709:                                 ub4 *iterp, ub4 *idxp, ub1 *piecep _*/);
        !          5710: 
        !          5711: #if !defined(__STDC__) && !defined(__cplusplus)
        !          5712: sword   OCIStmtSetPieceInfo(/*_ dvoid *hndlp, ub4 type, OCIError *errhp,
        !          5713:                                 CONST dvoid *bufp, ub4 *alenp, ub1 piece,
        !          5714:                                 CONST dvoid *indp, ub2 *rcodep _*/);
        !          5715: #endif /* __STDC__ */
        !          5716: 
        !          5717: sword   OCIStmtExecute(/*_ OCISvcCtx *svchp, OCIStmt *stmtp, OCIError *errhp,
        !          5718:                            ub4 iters, ub4 rowoff, CONST OCISnapshot *snap_in,
        !          5719:                            OCISnapshot *snap_out, ub4 mode _*/);
        !          5720: 
        !          5721: #if !defined(__STDC__) && !defined(__cplusplus)
        !          5722: sword OCIDefineByPos (/*_ OCIStmt *stmtp, OCIDefine **defnp, OCIError *errhp,
        !          5723:                        ub4 position, dvoid *valuep, sb4 value_sz, ub2 dty,
        !          5724:                        dvoid *indp, ub2 *rlenp, ub2 *rcodep, ub4 mode _*/);
        !          5725: #endif /* __STDC__ */
        !          5726: 
        !          5727: sword   OCIDefineObject(/*_ OCIDefine *defnp, OCIError *errhp,
        !          5728:                             CONST OCIType *type, dvoid **pgvpp,
        !          5729:                             ub4 *pvszsp, dvoid **indpp, ub4 *indszp _*/);
        !          5730: 
        !          5731: sword   OCIDefineDynamic(/*_ OCIDefine *defnp, OCIError *errhp,
        !          5732:                              dvoid *octxp, OCICallbackDefine ocbfp _*/);
        !          5733: 
        !          5734: sword   OCIDefineArrayOfStruct(/*_ OCIDefine *defnp, OCIError *errhp, 
        !          5735:                                  ub4 pvskip, ub4 indskip, ub4 rlskip, 
        !          5736:                                  ub4 rcskip _*/);
        !          5737: 
        !          5738: #if !defined(__STDC__) && !defined(__cplusplus)
        !          5739: sword   OCIStmtFetch(/*_ OCIStmt *stmtp, OCIError *errhp,
        !          5740:                          ub4 nrows, ub2 orientation, ub4 mode _*/);
        !          5741: #endif /* __STDC__ */
        !          5742: 
        !          5743: sword   OCIStmtGetBindInfo(/*_ OCIStmt *stmtp, OCIError *errhp, ub4 size, 
        !          5744:                                ub4 startloc, sb4 *found, 
        !          5745:                                OraText *bvnp[], ub1 bvnl[], OraText *invp[],
        !          5746:                                ub1 inpl[], ub1 dupl[], OCIBind *hndl[] _*/);
        !          5747: 
        !          5748: #if !defined(__STDC__) && !defined(__cplusplus)
        !          5749: sword   OCIDescribeAny(/*_ OCISvcCtx *svchp, OCIError *errhp,
        !          5750:                            dvoid *objptr, ub4 objnm_len, ub1 objptr_typ,
        !          5751:                            ub1 info_level, ub1 objtyp, OCIDescribe *dschp _*/);
        !          5752: #endif /* __STDC__ */
        !          5753: 
        !          5754: sword   OCIParamGet(/*_ CONST dvoid *hndlp, ub4 htype, OCIError *errhp,
        !          5755:                         dvoid **parmdpp, ub4 pos _*/);
        !          5756: 
        !          5757: sword   OCIParamSet(/*_ dvoid *hdlp, ub4 htyp, OCIError *errhp,
        !          5758:                         CONST dvoid *dscp, ub4 dtyp, ub4 pos _*/);
        !          5759: 
        !          5760: sword   OCITransStart(/*_ OCISvcCtx *svchp, OCIError *errhp,
        !          5761:                           uword timeout, ub4 flags _*/);
        !          5762: 
        !          5763: sword   OCITransDetach(/*_ OCISvcCtx *svchp, OCIError *errhp, ub4 flags _*/);
        !          5764: 
        !          5765: sword   OCITransCommit(/*_ OCISvcCtx *svchp, OCIError *errhp, ub4 flags _*/);
        !          5766: 
        !          5767: sword   OCITransRollback(/*_ OCISvcCtx *svchp, OCIError *errhp, ub4 flags _*/);
        !          5768: 
        !          5769: sword   OCITransPrepare (/*_ OCISvcCtx *svchp, OCIError *errhp, ub4 flags _*/);
        !          5770: 
        !          5771: sword   OCITransMultiPrepare (/*_ OCISvcCtx *svchp, ub4 numBranches, 
        !          5772:                                   OCITrans **txns, OCIError **errhp _*/);
        !          5773: 
        !          5774: sword   OCITransForget ( /*_ OCISvcCtx *svchp, OCIError *errhp, ub4 flags _*/);
        !          5775: 
        !          5776: sword   OCIErrorGet   ( /*_ dvoid *hndlp, ub4 recordno, OraText *sqlstate,
        !          5777:                            sb4 *errcodep, OraText *bufp, ub4 bufsiz, 
        !          5778:                            ub4 type _*/ );
        !          5779: 
        !          5780: sword   OCILobAppend  ( /*_ OCISvcCtx *svchp, OCIError *errhp, 
        !          5781:                             OCILobLocator *dst_locp,
        !          5782:                             OCILobLocator *src_locp _*/ );
        !          5783: 
        !          5784: sword   OCILobAssign  ( /*_ OCIEnv *envhp, OCIError *errhp, 
        !          5785:                             CONST OCILobLocator *src_locp, 
        !          5786:                             OCILobLocator **dst_locpp _*/ );
        !          5787: 
        !          5788: sword   OCILobCharSetForm  ( /*_ OCIEnv *envhp, OCIError *errhp, 
        !          5789:                                  CONST OCILobLocator *locp, 
        !          5790:                                  ub1 *csfrm _*/ );
        !          5791: 
        !          5792: sword   OCILobCharSetId ( /*_ OCIEnv *envhp, OCIError *errhp, 
        !          5793:                               CONST OCILobLocator *locp, ub2 *csid _*/ );
        !          5794: 
        !          5795: sword   OCILobCopy  ( /*_ OCISvcCtx *svchp, OCIError *errhp, 
        !          5796:                           OCILobLocator *dst_locp,
        !          5797:                          OCILobLocator *src_locp, 
        !          5798:                           ub4 amount, ub4 dst_offset, 
        !          5799:                           ub4 src_offset _*/ );
        !          5800: 
        !          5801: #if !defined(__STDC__) && !defined(__cplusplus)
        !          5802: sword OCILobCreateTemporary(/*_ OCISvcCtx          *svchp,
        !          5803:                             OCIError           *errhp,
        !          5804:                             OCILobLocator      *locp,
        !          5805:                             ub2                 csid,
        !          5806:                             ub1                 csfrm,
        !          5807:                             ub1                 lobtype,
        !          5808:                             boolean             cache,
        !          5809:                             OCIDuration         duration _*/);
        !          5810: #endif /* __STDC__ */
        !          5811: 
        !          5812: sword OCILobClose( /*_ OCISvcCtx        *svchp,
        !          5813:                        OCIError         *errhp,
        !          5814:                        OCILobLocator    *locp _*/);
        !          5815: 
        !          5816: 
        !          5817: sword   OCILobDisableBuffering ( /*_ OCISvcCtx      *svchp,
        !          5818:                                      OCIError       *errhp,
        !          5819:                                      OCILobLocator  *locp _*/ );
        !          5820: 
        !          5821: sword   OCILobEnableBuffering ( /*_ OCISvcCtx      *svchp,
        !          5822:                                     OCIError       *errhp,
        !          5823:                                     OCILobLocator  *locp _*/ );
        !          5824: 
        !          5825: sword   OCILobErase  ( /*_ OCISvcCtx *svchp, OCIError *errhp, 
        !          5826:                            OCILobLocator *locp,
        !          5827:                            ub4 *amount, ub4 offset _*/ );
        !          5828: 
        !          5829: sword   OCILobFileClose  ( /*_ OCISvcCtx *svchp, OCIError *errhp, 
        !          5830:                                OCILobLocator *filep _*/ );
        !          5831: 
        !          5832: sword   OCILobFileCloseAll (/*_ OCISvcCtx *svchp, OCIError *errhp _*/);
        !          5833: 
        !          5834: sword   OCILobFileExists   (/*_ OCISvcCtx *svchp, OCIError *errhp, 
        !          5835:                              OCILobLocator *filep,
        !          5836:                              boolean *flag _*/);
        !          5837:  
        !          5838: sword   OCILobFileGetName  ( /*_ OCIEnv *envhp, OCIError *errhp, 
        !          5839:                                  CONST OCILobLocator *filep,
        !          5840:                                  OraText *dir_alias, ub2 *d_length, 
        !          5841:                                  OraText *filename, ub2 *f_length _*/ );
        !          5842:                             
        !          5843: sword   OCILobFileIsOpen  (/*_ OCISvcCtx *svchp, OCIError *errhp, 
        !          5844:                                OCILobLocator *filep,
        !          5845:                                boolean *flag _*/);
        !          5846: 
        !          5847: #if !defined(__STDC__) && !defined(__cplusplus)
        !          5848: sword   OCILobFileOpen  ( /*_ OCISvcCtx *svchp, OCIError *errhp, 
        !          5849:                             OCILobLocator *filep, ub1 mode _*/ );
        !          5850: #endif /* __STDC__ */
        !          5851: 
        !          5852: #if !defined(__STDC__) && !defined(__cplusplus)
        !          5853: sword   OCILobFileSetName  ( /*_ OCIEnv *envhp, OCIError *errhp, 
        !          5854:                                  OCILobLocator **filepp, 
        !          5855:                                  CONST OraText *dir_alias, ub2 d_length, 
        !          5856:                                  CONST OraText *filename, ub2 f_length _*/ );
        !          5857: #endif /* __STDC__ */
        !          5858: 
        !          5859: sword   OCILobFlushBuffer ( /*_ OCISvcCtx       *svchp,
        !          5860:                                 OCIError        *errhp,
        !          5861:                                 OCILobLocator   *locp,
        !          5862:                                 ub4              flag _*/ );
        !          5863: 
        !          5864: sword OCILobFreeTemporary(/*_ OCISvcCtx          *svchp,
        !          5865:                               OCIError           *errhp,
        !          5866:                               OCILobLocator      *locp _*/);
        !          5867: 
        !          5868: 
        !          5869: sword OCILobGetChunkSize(/*_ OCISvcCtx         *svchp,
        !          5870:                              OCIError          *errhp,
        !          5871:                              OCILobLocator     *locp,
        !          5872:                              ub4               *chunksizep _*/);
        !          5873: 
        !          5874: sword   OCILobGetLength  ( /*_ OCISvcCtx *svchp, OCIError *errhp, 
        !          5875:                                OCILobLocator *locp,
        !          5876:                               ub4 *lenp _*/ );
        !          5877: 
        !          5878: sword   OCILobIsEqual  ( /*_ OCIEnv *envhp, CONST OCILobLocator *x, 
        !          5879:                              CONST OCILobLocator *y, boolean *is_equal _*/ );
        !          5880: 
        !          5881: sword OCILobIsOpen(/*_ OCISvcCtx     *svchp,
        !          5882:                        OCIError      *errhp,
        !          5883:                        OCILobLocator *locp,
        !          5884:                        boolean       *flag _*/);
        !          5885: 
        !          5886: sword OCILobIsTemporary(/*_ OCIEnv            *envp,
        !          5887:                             OCIError          *errhp,
        !          5888:                             OCILobLocator     *locp,
        !          5889:                             boolean           *is_temporary _*/);
        !          5890: 
        !          5891: sword   OCILobLoadFromFile  ( /*_ OCISvcCtx *svchp, OCIError *errhp, 
        !          5892:                                   OCILobLocator *dst_locp,
        !          5893:                                          OCILobLocator *src_filep, 
        !          5894:                                   ub4 amount, ub4 dst_offset, 
        !          5895:                                   ub4 src_offset _*/ );
        !          5896: 
        !          5897: sword   OCILobLocatorAssign  ( /*_ OCISvcCtx *svchp, OCIError *errhp, 
        !          5898:                             CONST OCILobLocator *src_locp, 
        !          5899:                             OCILobLocator **dst_locpp _*/ );
        !          5900: 
        !          5901: 
        !          5902: sword   OCILobLocatorIsInit ( /*_ OCIEnv *envhp, OCIError *errhp, 
        !          5903:                                 CONST OCILobLocator *locp, 
        !          5904:                                 boolean *is_initialized _*/ );
        !          5905: #if !defined(__STDC__) && !defined(__cplusplus)
        !          5906: sword   OCILobOpen(/*_ OCISvcCtx        *svchp,
        !          5907:                        OCIError         *errhp,
        !          5908:                        OCILobLocator    *locp,
        !          5909:                        ub1               mode _*/);
        !          5910: #endif /* __STDC__ */
        !          5911: 
        !          5912: #if !defined(__STDC__) && !defined(__cplusplus)
        !          5913: sword   OCILobRead  ( /*_ OCISvcCtx *svchp, OCIError *errhp, 
        !          5914:                           OCILobLocator *locp,
        !          5915:                           ub4 *amtp, ub4 offset, dvoid *bufp, ub4 bufl, 
        !          5916:                           dvoid *ctxp, 
        !          5917:                           sb4 (*cbfp)( dvoid *ctxp, 
        !          5918:                                        CONST dvoid *bufp, 
        !          5919:                                        ub4 len, 
        !          5920:                                        ub1 piece),
        !          5921:                           ub2 csid, ub1 csfrm _*/ );
        !          5922: #endif /* __STDC__ */
        !          5923: 
        !          5924: sword   OCILobTrim  ( /*_ OCISvcCtx *svchp, OCIError *errhp, 
        !          5925:                           OCILobLocator *locp,
        !          5926:                           ub4 newlen _*/ );
        !          5927: 
        !          5928: #if !defined(__STDC__) && !defined(__cplusplus)
        !          5929: sword   OCILobWrite  ( /*_ OCISvcCtx *svchp, OCIError *errhp, 
        !          5930:                          OCILobLocator *locp,
        !          5931:                          ub4 *amtp, ub4 offset, dvoid *bufp, ub4 buflen, 
        !          5932:                          ub1 piece, dvoid *ctxp, 
        !          5933:                          sb4 (*cbfp)(dvoid *ctxp, 
        !          5934:                                      dvoid *bufp, 
        !          5935:                                      ub4 *len, 
        !          5936:                                      ub1 *piece),
        !          5937:                          ub2 csid, ub1 csfrm _*/ );
        !          5938: #endif /* __STDC__ */
        !          5939: 
        !          5940: #if !defined(__STDC__) && !defined(__cplusplus)
        !          5941: sword OCILobWriteAppend(/*_
        !          5942: OCISvcCtx         *svchp,
        !          5943: OCIError          *errhp,
        !          5944: OCILobLocator     *lobp,
        !          5945: ub4              *amtp,
        !          5946: dvoid            *bufp,
        !          5947: ub4               bufl,
        !          5948: ub1               piece,
        !          5949: dvoid            *ctxp,
        !          5950: sb4             (*cbfp)(dvoid  *ctxp,
        !          5951:                         dvoid  *bufp,
        !          5952:                         ub4    *len,
        !          5953:                         ub1    *piece),
        !          5954: ub2               csid,
        !          5955: ub1               csfrm _*/);
        !          5956: #endif /* __STDC__ */
        !          5957: 
        !          5958: sword   OCIBreak ( /*_ dvoid *hndlp, OCIError *errhp _*/ );
        !          5959: 
        !          5960: sword   OCIReset ( /*_ dvoid *hndlp, OCIError *errhp _*/ );
        !          5961: 
        !          5962: #if !defined(__STDC__) && !defined(__cplusplus)
        !          5963: sword   OCIServerVersion  ( /*_ dvoid *hndlp, OCIError *errhp, OraText *bufp, 
        !          5964:                                 ub4 bufsz, ub1 hndltype _*/ );
        !          5965: #endif /* __STDC__ */
        !          5966: 
        !          5967: sword   OCIAttrGet ( /*_ CONST dvoid *trgthndlp, ub4 trghndltyp, 
        !          5968:                          dvoid *attributep, ub4 *sizep, ub4 attrtype, 
        !          5969:                          OCIError *errhp _*/ );
        !          5970: 
        !          5971: sword   OCIAttrSet ( /*_ dvoid *trgthndlp, ub4 trghndltyp, dvoid *attributep,
        !          5972:                          ub4 size, ub4 attrtype, OCIError *errhp _*/ );
        !          5973: 
        !          5974: sword   OCISvcCtxToLda ( /*_ OCISvcCtx *svchp, OCIError *errhp, 
        !          5975:                              Lda_Def *ldap _*/ );
        !          5976: 
        !          5977: sword   OCILdaToSvcCtx ( /*_ OCISvcCtx **svchpp, OCIError *errhp, 
        !          5978:                              Lda_Def *ldap _*/ );
        !          5979: 
        !          5980: sword   OCIResultSetToStmt ( /*_ OCIResult *rsetdp, OCIError *errhp _*/ );
        !          5981: 
        !          5982: 
        !          5983: sword  OCIUserCallbackRegister(/*_ dvoid *hndlp, ub4 type, dvoid *ehndlp,
        !          5984:                                     OCIUserCallback callback, dvoid *ctxp,
        !          5985:                                     ub4 fcode, ub4 when, OCIUcb *ucbDesc _*/);
        !          5986: 
        !          5987: sword  OCIUserCallbackGet(/*_ dvoid *hndlp, ub4 type, dvoid *ehndlp,
        !          5988:                                ub4 fcode, ub4 when, OCIUserCallback *callbackp,
        !          5989:                                dvoid **ctxpp, OCIUcb *ucbDesc _*/);
        !          5990: 
        !          5991: sword   OCISharedLibInit(/*_ dvoid *metaCtx, dvoid *libCtx, ub4 argfmt,
        !          5992:                              sword argc, dvoid *argv[],
        !          5993:                              OCIEnvCallbackType envCallback _*/);
        !          5994: 
        !          5995: sword   OCISecurityInitialize (/*_ OCISecurity *osshandle,
        !          5996:                                  OCIError *error_handle _*/);
        !          5997: 
        !          5998: sword   OCISecurityTerminate (/*_ OCISecurity *osshandle,
        !          5999:                                OCIError *error_handle _*/);
        !          6000: 
        !          6001: sword OCISecurityOpenWallet(/*_ OCISecurity *osshandle,
        !          6002:                              OCIError *error_handle,
        !          6003:                              size_t wrllen,
        !          6004:                              OraText *wallet_resource_locator,
        !          6005:                              size_t pwdlen,
        !          6006:                              OraText *password,
        !          6007:                              nzttWallet *wallet _*/);
        !          6008: 
        !          6009: sword OCISecurityCloseWallet(/*_ OCISecurity *osshandle,
        !          6010:                               OCIError *error_handle,
        !          6011:                               nzttWallet *wallet _*/);
        !          6012: 
        !          6013: sword OCISecurityCreateWallet(/*_ OCISecurity *osshandle,
        !          6014:                                OCIError *error_handle,
        !          6015:                                size_t wrllen,
        !          6016:                                OraText *wallet_resource_locator,
        !          6017:                                size_t pwdlen,
        !          6018:                                OraText *password,
        !          6019:                                nzttWallet *wallet _*/);
        !          6020: 
        !          6021: sword OCISecurityDestroyWallet(/*_ OCISecurity *osshandle,
        !          6022:                                 OCIError *error_handle,
        !          6023:                                 size_t wrllen,
        !          6024:                                 OraText *wallet_resource_locator,
        !          6025:                                 size_t pwdlen,
        !          6026:                                 OraText *password _*/);
        !          6027: 
        !          6028: sword OCISecurityStorePersona(/*_ OCISecurity *osshandle,
        !          6029:                                OCIError *error_handle,
        !          6030:                                nzttPersona **persona,
        !          6031:                                nzttWallet *wallet _*/);
        !          6032: 
        !          6033: sword OCISecurityOpenPersona(/*_ OCISecurity *osshandle,
        !          6034:                               OCIError *error_handle,
        !          6035:                               nzttPersona *persona _*/);
        !          6036: 
        !          6037: sword OCISecurityClosePersona(/*_ OCISecurity *osshandle,
        !          6038:                                OCIError *error_handle,
        !          6039:                                nzttPersona *persona _*/);
        !          6040: 
        !          6041: sword OCISecurityRemovePersona(/*_ OCISecurity *osshandle,
        !          6042:                                 OCIError *error_handle,
        !          6043:                                 nzttPersona **persona _*/);
        !          6044: 
        !          6045: sword OCISecurityCreatePersona(/*_ OCISecurity *osshandle,
        !          6046:                                 OCIError *error_handle,
        !          6047:                                 nzttIdentType identity_type,
        !          6048:                                 nzttCipherType cipher_type,
        !          6049:                                 nzttPersonaDesc *desc,
        !          6050:                                 nzttPersona **persona _*/);
        !          6051: 
        !          6052: sword OCISecuritySetProtection(/*_ OCISecurity *osshandle,
        !          6053:                                 OCIError *error_handle,
        !          6054:                                 nzttPersona *persona,
        !          6055:                                 nzttcef crypto_engine_function,
        !          6056:                                 nztttdufmt data_unit_format,
        !          6057:                                 nzttProtInfo *protection_info _*/);
        !          6058: 
        !          6059: sword OCISecurityGetProtection(/*_ OCISecurity *osshandle,
        !          6060:                                 OCIError *error_handle,
        !          6061:                                 nzttPersona *persona,
        !          6062:                                 nzttcef crypto_engine_function,
        !          6063:                                 nztttdufmt * data_unit_format_ptr,
        !          6064:                                 nzttProtInfo *protection_info _*/);
        !          6065: 
        !          6066: sword OCISecurityRemoveIdentity(/*_ OCISecurity *osshandle,
        !          6067:                                  OCIError *error_handle,
        !          6068:                                  nzttIdentity **identity_ptr _*/);
        !          6069: 
        !          6070: sword OCISecurityCreateIdentity(/*_ OCISecurity *osshandle,
        !          6071:                                  OCIError *error_handle,
        !          6072:                                  nzttIdentType type,
        !          6073:                                  nzttIdentityDesc *desc,
        !          6074:                                  nzttIdentity **identity_ptr _*/);
        !          6075: 
        !          6076: sword OCISecurityAbortIdentity(/*_ OCISecurity *osshandle,
        !          6077:                                 OCIError *error_handle,
        !          6078:                                 nzttIdentity **identity_ptr _*/);
        !          6079: 
        !          6080: sword OCISecurityFreeIdentity(/*_ OCISecurity *osshandle,
        !          6081:                                  OCIError *error_handle,
        !          6082:                                  nzttIdentity **identity_ptr _*/);
        !          6083: 
        !          6084: sword OCISecurityStoreTrustedIdentity(/*_ OCISecurity *osshandle,
        !          6085:                                        OCIError *error_handle,
        !          6086:                                        nzttIdentity **identity_ptr,
        !          6087:                                        nzttPersona *persona _*/);
        !          6088: 
        !          6089: sword OCISecuritySign(/*_ OCISecurity *osshandle,
        !          6090:                        OCIError *error_handle,
        !          6091:                        nzttPersona *persona,
        !          6092:                        nzttces signature_state,
        !          6093:                        size_t input_length,
        !          6094:                        ub1 *input,
        !          6095:                        nzttBufferBlock *buffer_block _*/);
        !          6096: 
        !          6097: sword OCISecuritySignExpansion(/*_ OCISecurity *osshandle,
        !          6098:                                 OCIError *error_handle,
        !          6099:                                 nzttPersona *persona,
        !          6100:                                 size_t inputlen,
        !          6101:                                 size_t *signature_length _*/);
        !          6102: 
        !          6103: sword OCISecurityVerify(/*_ OCISecurity *osshandle,
        !          6104:                          OCIError *error_handle,
        !          6105:                          nzttPersona *persona,
        !          6106:                          nzttces signature_state,
        !          6107:                          size_t siglen,
        !          6108:                          ub1 *signature,
        !          6109:                          nzttBufferBlock *extracted_message,
        !          6110:                          boolean *verified,
        !          6111:                          boolean *validated,
        !          6112:                          nzttIdentity **signing_party_identity _*/);
        !          6113: 
        !          6114: sword OCISecurityValidate(/*_ OCISecurity *osshandle,
        !          6115:                            OCIError *error_handle,
        !          6116:                            nzttPersona *persona,
        !          6117:                            nzttIdentity *identity,
        !          6118:                            boolean *validated _*/);
        !          6119: 
        !          6120: sword OCISecuritySignDetached(/*_ OCISecurity *osshandle,
        !          6121:                                OCIError *error_handle,
        !          6122:                                nzttPersona *persona,
        !          6123:                                nzttces signature_state,
        !          6124:                                size_t input_length,
        !          6125:                                ub1 * input,
        !          6126:                                nzttBufferBlock *signature _*/);
        !          6127: 
        !          6128: sword OCISecuritySignDetExpansion(/*_ OCISecurity *osshandle,
        !          6129:                                    OCIError    *error_handle,
        !          6130:                                    nzttPersona *persona,
        !          6131:                                    size_t       input_length,
        !          6132:                                    size_t *required_buffer_length _*/);
        !          6133: 
        !          6134: sword OCISecurityVerifyDetached(/*_ OCISecurity *osshandle,
        !          6135:                                  OCIError *error_handle,
        !          6136:                                  nzttPersona *persona,
        !          6137:                                  nzttces signature_state,
        !          6138:                                  size_t data_length,
        !          6139:                                  ub1 *data,
        !          6140:                                  size_t siglen,
        !          6141:                                  ub1 *signature,
        !          6142:                                  boolean *verified,
        !          6143:                                  boolean *validated,
        !          6144:                                  nzttIdentity **signing_party_identity _*/);
        !          6145: 
        !          6146: sword OCISecurity_PKEncrypt(/*_ OCISecurity *osshandle,
        !          6147:                              OCIError *error_handle,
        !          6148:                              nzttPersona *persona,
        !          6149:                              size_t number_of_recipients,
        !          6150:                              nzttIdentity *recipient_list,
        !          6151:                              nzttces encryption_state,
        !          6152:                              size_t input_length,
        !          6153:                              ub1 *input,
        !          6154:                              nzttBufferBlock *encrypted_data _*/);
        !          6155: 
        !          6156: sword OCISecurityPKEncryptExpansion(/*_ OCISecurity *osshandle,
        !          6157:                                      OCIError *error_handle,
        !          6158:                                      nzttPersona *persona,
        !          6159:                                      size_t number_recipients,
        !          6160:                                      size_t input_length,
        !          6161:                                      size_t *buffer_length_required _*/);
        !          6162: 
        !          6163: sword OCISecurityPKDecrypt(/*_ OCISecurity *osshandle,
        !          6164:                             OCIError *error_handle,
        !          6165:                             nzttPersona *persona,
        !          6166:                             nzttces encryption_state,
        !          6167:                             size_t input_length,
        !          6168:                             ub1 *input,
        !          6169:                             nzttBufferBlock *encrypted_data _*/);
        !          6170: 
        !          6171: sword OCISecurityEncrypt(/*_ OCISecurity *osshandle,
        !          6172:                           OCIError *error_handle,
        !          6173:                           nzttPersona *persona,
        !          6174:                           nzttces encryption_state,
        !          6175:                           size_t input_length,
        !          6176:                           ub1 *input,
        !          6177:                           nzttBufferBlock *encrypted_data _*/);
        !          6178: 
        !          6179: sword OCISecurityEncryptExpansion(/*_ OCISecurity *osshandle,
        !          6180:                                    OCIError *error_handle,
        !          6181:                                    nzttPersona *persona,
        !          6182:                                    size_t input_length,
        !          6183:                                    size_t *encrypted_data_length _*/);
        !          6184: 
        !          6185: sword OCISecurityDecrypt(/*_ OCISecurity *osshandle,
        !          6186:                           OCIError *error_handle,
        !          6187:                           nzttPersona *persona,
        !          6188:                           nzttces decryption_state,
        !          6189:                           size_t input_length,
        !          6190:                           ub1 *input,
        !          6191:                           nzttBufferBlock *decrypted_data _*/);
        !          6192: 
        !          6193: sword OCISecurityEnvelope(/*_ OCISecurity *osshandle,
        !          6194:                            OCIError *error_handle,
        !          6195:                            nzttPersona *persona,
        !          6196:                            size_t number_of_recipients,
        !          6197:                            nzttIdentity *identity,
        !          6198:                            nzttces encryption_state,
        !          6199:                            size_t input_length,
        !          6200:                            ub1 *input,
        !          6201:                            nzttBufferBlock *enveloped_data _*/);
        !          6202: 
        !          6203: sword OCISecurityDeEnvelope(/*_ OCISecurity *osshandle,
        !          6204:                                 OCIError *error_handle,
        !          6205:                                 nzttPersona *persona,
        !          6206:                                 nzttces decryption_state,
        !          6207:                                 size_t input_length,
        !          6208:                                 ub1 *input,
        !          6209:                                 nzttBufferBlock *output_message,
        !          6210:                                 boolean *verified,
        !          6211:                                 boolean *validated,
        !          6212:                                 nzttIdentity **sender_identity _*/);
        !          6213: 
        !          6214: sword OCISecurityKeyedHash(/*_ OCISecurity *osshandle,
        !          6215:                             OCIError *error_handle,
        !          6216:                             nzttPersona *persona,
        !          6217:                             nzttces hash_state,
        !          6218:                             size_t input_length,
        !          6219:                             ub1 *input,
        !          6220:                             nzttBufferBlock *keyed_hash _*/);
        !          6221: 
        !          6222: sword OCISecurityKeyedHashExpansion(/*_ OCISecurity *osshandle,
        !          6223:                                      OCIError *error_handle,
        !          6224:                                      nzttPersona *persona,
        !          6225:                                      size_t input_length,
        !          6226:                                      size_t *required_buffer_length _*/);
        !          6227: 
        !          6228: sword OCISecurityHash(/*_ OCISecurity *osshandle,
        !          6229:                        OCIError *error_handle,
        !          6230:                        nzttPersona *persona,
        !          6231:                        nzttces hash_state,
        !          6232:                        size_t input,
        !          6233:                        ub1 *input_length,
        !          6234:                        nzttBufferBlock *hash _*/);
        !          6235: 
        !          6236: sword OCISecurityHashExpansion(/*_ OCISecurity *osshandle,
        !          6237:                                 OCIError *error_handle,
        !          6238:                                 nzttPersona *persona,
        !          6239:                                 size_t input_length,
        !          6240:                                 size_t *required_buffer_length _*/);
        !          6241: 
        !          6242: sword OCISecuritySeedRandom(/*_ OCISecurity *osshandle,
        !          6243:                              OCIError *error_handle,
        !          6244:                              nzttPersona *persona,
        !          6245:                              size_t seed_length,
        !          6246:                              ub1 *seed _*/);
        !          6247: 
        !          6248: sword OCISecurityRandomBytes(/*_ OCISecurity *osshandle,
        !          6249:                               OCIError *error_handle,
        !          6250:                               nzttPersona *persona,
        !          6251:                               size_t number_of_bytes_desired,
        !          6252:                               nzttBufferBlock *random_bytes _*/);
        !          6253: 
        !          6254: sword OCISecurityRandomNumber(/*_ OCISecurity *osshandle,
        !          6255:                                OCIError *error_handle,
        !          6256:                                nzttPersona *persona,
        !          6257:                                uword *random_number_ptr _*/);
        !          6258: 
        !          6259: sword OCISecurityInitBlock(/*_ OCISecurity *osshandle,
        !          6260:                             OCIError *error_handle,
        !          6261:                             nzttBufferBlock *buffer_block _*/);
        !          6262: 
        !          6263: sword OCISecurityReuseBlock(/*_ OCISecurity *osshandle,
        !          6264:                              OCIError *error_handle,
        !          6265:                              nzttBufferBlock *buffer_block _*/);
        !          6266: 
        !          6267: sword OCISecurityPurgeBlock(/*_ OCISecurity *osshandle,
        !          6268:                              OCIError *error_handle,
        !          6269:                              nzttBufferBlock *buffer_block _*/);
        !          6270: 
        !          6271: sword OCISecuritySetBlock(/*_ OCISecurity *osshandle,
        !          6272:                            OCIError *error_handle,
        !          6273:                            uword flags_to_set,
        !          6274:                            size_t buffer_length,
        !          6275:                            size_t used_buffer_length,
        !          6276:                            ub1 *buffer,
        !          6277:                            nzttBufferBlock *buffer_block _*/);
        !          6278: 
        !          6279: sword OCISecurityGetIdentity(/*_ OCISecurity  *osshandle,
        !          6280:                               OCIError       *error_handle,
        !          6281:                               size_t          namelen,
        !          6282:                               OraText           *distinguished_name,
        !          6283:                               nzttIdentity  **identity _*/);
        !          6284: 
        !          6285: sword OCIAQEnq(/*_ OCISvcCtx *svchp, OCIError *errhp, OraText *queue_name,
        !          6286:                      OCIAQEnqOptions *enqopt, OCIAQMsgProperties *msgprop, 
        !          6287:                      OCIType *payload_tdo,dvoid **payload, dvoid **payload_ind,
        !          6288:                     OCIRaw **msgid, ub4 flags _*/);
        !          6289: 
        !          6290: sword OCIAQDeq(/*_ OCISvcCtx *svchp, OCIError *errhp, OraText *queue_name,
        !          6291:                     OCIAQDeqOptions *deqopt, OCIAQMsgProperties *msgprop, 
        !          6292:                      OCIType *payload_tdo,dvoid **payload, dvoid **payload_ind,
        !          6293:                     OCIRaw **msgid, ub4 flags _*/);
        !          6294: 
        !          6295: sword OCIAQListen(/*_ OCISvcCtx *svchp, OCIError *errhp, 
        !          6296:                      OCIAQAgent **agent_list, ub4 num_agents,
        !          6297:                      sb4 wait, OCIAQAgent **agent,
        !          6298:                      ub4 flags _*/);
        !          6299: 
        !          6300: sword OCIExtractInit(/*_ dvoid *hndl, OCIError *err _*/);
        !          6301: 
        !          6302: sword OCIExtractTerm(/*_ dvoid *hndl, OCIError *err _*/);
        !          6303: 
        !          6304: sword OCIExtractReset(/*_ dvoid *hndl, OCIError *err _*/);
        !          6305: 
        !          6306: sword OCIExtractSetNumKeys(/*_ dvoid *hndl, OCIError *err, uword numkeys _*/);
        !          6307: 
        !          6308: sword OCIExtractSetKey(/*_ dvoid *hndl, OCIError *err, CONST OraText *name, 
        !          6309:                            ub1 type, ub4 flag, CONST dvoid *defval, 
        !          6310:                            CONST sb4 *intrange, 
        !          6311:                            CONST OraText *CONST *strlist _*/);
        !          6312: 
        !          6313: sword OCIExtractFromFile(/*_ dvoid *hndl, OCIError *err, ub4 flag, 
        !          6314:                              OraText *filename _*/);
        !          6315: 
        !          6316: sword OCIExtractFromStr(/*_ dvoid *hndl, OCIError *err, ub4 flag, 
        !          6317:                                OraText *input _*/);
        !          6318: 
        !          6319: sword OCIExtractToInt(/*_ dvoid *hndl, OCIError *err, OraText *keyname, 
        !          6320:                           uword valno, sb4 *retval _*/);
        !          6321: 
        !          6322: sword OCIExtractToBool(/*_ dvoid *hndl, OCIError *err, OraText *keyname, 
        !          6323:                            uword valno, ub1 *retval _*/);
        !          6324: 
        !          6325: sword OCIExtractToStr(/*_ dvoid *hndl, OCIError *err, OraText *keyname, 
        !          6326:                           uword valno, OraText *retval, uword buflen _*/);
        !          6327: 
        !          6328: sword OCIExtractToOCINum(/*_ dvoid *hndl, OCIError *err, OraText *keyname, 
        !          6329:                              uword valno, OCINumber *retval _*/);
        !          6330: 
        !          6331: sword OCIExtractToList(/*_ dvoid *hndl, OCIError *err, uword *numkeys _*/);
        !          6332: 
        !          6333: sword OCIExtractFromList(/*_ dvoid *hndl, OCIError *err, uword index, 
        !          6334:                              OraText **name, ub1 *type, uword *numvals, 
        !          6335:                              dvoid ***values _*/);
        !          6336: 
        !          6337: /* Memory Related Service Interfaces */
        !          6338: 
        !          6339: sword OCIMemoryAlloc(/*_ dvoid *hdl, OCIError *err, dvoid **mem,
        !          6340:                OCIDuration dur, ub4 size, ub4 flags _*/);
        !          6341:  
        !          6342: sword OCIMemoryResize(/*_ dvoid *hdl, OCIError *err, dvoid **mem,
        !          6343:                         ub4 newsize, ub4 flags _*/);
        !          6344: 
        !          6345: sword OCIMemoryFree(/*_ dvoid *hdl, OCIError *err, dvoid *mem _*/);
        !          6346: 
        !          6347: sword OCIContextSetValue(/*_ dvoid *hdl, OCIError *err, OCIDuration duration,
        !          6348:                         ub1 *key, ub1 keylen, dvoid *ctx_value _*/);
        !          6349:  
        !          6350: sword OCIContextGetValue(/*_ dvoid *hdl, OCIError *err, ub1 *key,
        !          6351:                         ub1 keylen, dvoid **ctx_value _*/);
        !          6352:  
        !          6353: sword OCIContextClearValue(/*_ dvoid *hdl, OCIError *err, ub1 *key, 
        !          6354:                         ub1 keylen _*/);
        !          6355:  
        !          6356: sword OCIContextGenerateKey(/*_ dvoid *hdl, OCIError *err, ub4 *key _*/);
        !          6357: 
        !          6358: sword OCIMemorySetCurrentIDs(/*_ dvoid *hdl, OCIError *err, 
        !          6359:         ub4 curr_session_id, ub4 curr_trans_id, ub4 curr_stmt_id _*/);
        !          6360:  
        !          6361: sword OCIPicklerTdsCtxInit(/*_ OCIEnv *env, OCIError *err, 
        !          6362:                        OCIPicklerTdsCtx **tdsc _*/);
        !          6363:  
        !          6364: sword OCIPicklerTdsCtxFree(/*_ OCIEnv *env, OCIError *err, 
        !          6365:                        OCIPicklerTdsCtx *tdsc _*/);
        !          6366:  
        !          6367: sword OCIPicklerTdsInit(/*_ OCIEnv *env, OCIError *err, OCIPicklerTdsCtx *tdsc,
        !          6368:                        OCIPicklerTds **tdsh _*/);
        !          6369:  
        !          6370: sword OCIPicklerTdsFree(/*_ OCIEnv *env, OCIError *err, 
        !          6371:                        OCIPicklerTds *tdsh _*/);
        !          6372:  
        !          6373: sword OCIPicklerTdsCreateElementNumber(/*_ OCIEnv *env, OCIError *err,
        !          6374:                                            OCIPicklerTds *tdsh, ub1 prec,
        !          6375:                                            sb1 scale, 
        !          6376:                                            OCIPicklerTdsElement *elt _*/);
        !          6377:  
        !          6378: sword OCIPicklerTdsCreateElementChar(/*_ OCIEnv *env, OCIError *err,
        !          6379:                                          OCIPicklerTds *tdsh, ub2 len, 
        !          6380:                                          OCIPicklerTdsElement *elt _*/);
        !          6381:  
        !          6382: sword OCIPicklerTdsCreateElementVarchar(/*_ OCIEnv *env, OCIError *err,
        !          6383:                                             OCIPicklerTds *tdsh, ub2 len, 
        !          6384:                                             OCIPicklerTdsElement *elt _*/);
        !          6385: 
        !          6386: sword OCIPicklerTdsCreateElementRaw(/*_ OCIEnv *env, OCIError *err,
        !          6387:                                         OCIPicklerTds *tdsh, ub2 len, 
        !          6388:                                         OCIPicklerTdsElement *elt _*/);
        !          6389:  
        !          6390: sword OCIPicklerTdsCreateElement(/*_ OCIEnv *env, OCIError *err,
        !          6391:                                 OCIPicklerTds *tdsh, OCITypeCode dty, 
        !          6392:                                OCIPicklerTdsElement *elt _*/);
        !          6393:  
        !          6394: sword OCIPicklerTdsAddAttr(/*_ OCIEnv *env, OCIError *err,
        !          6395:                                OCIPicklerTds *tdsh, 
        !          6396:                                OCIPicklerTdsElement elt _*/);
        !          6397:  
        !          6398: sword OCIPicklerTdsGenerate(/*_ OCIEnv *env, OCIError *err,
        !          6399:                                 OCIPicklerTds *tdsh _*/);
        !          6400:  
        !          6401: sword OCIPicklerTdsGetAttr(/*_ OCIEnv *env, OCIError *err,
        !          6402:                                 CONST OCIPicklerTds *tdsh, ub1  attrno,
        !          6403:                                 OCITypeCode *typ, ub2  *len _*/);
        !          6404:  
        !          6405: sword OCIPicklerFdoInit(/*_ OCIEnv *env, OCIError *err,
        !          6406:                                 OCIPicklerFdo **fdoh _*/);
        !          6407:  
        !          6408: sword OCIPicklerFdoFree(/*_ OCIEnv *env, OCIError *err,
        !          6409:                                 OCIPicklerFdo *fdoh _*/);
        !          6410:  
        !          6411: sword OCIPicklerImageInit(/*_ OCIEnv *env, OCIError *err,
        !          6412:                               OCIPicklerFdo *fdoh, OCIPicklerTds *tdsh,
        !          6413:                               OCIPicklerImage **imgh _*/);
        !          6414:  
        !          6415: sword OCIPicklerImageFree(/*_ OCIEnv *env, OCIError *err,
        !          6416:                                 OCIPicklerImage *imgh _*/);
        !          6417:  
        !          6418: sword OCIPicklerImageAddScalar(/*_ OCIEnv *env, OCIError *err,
        !          6419:                                    OCIPicklerImage *imgh, dvoid *scalar, 
        !          6420:                                    ub4 len _*/);
        !          6421:  
        !          6422: sword OCIPicklerImageAddNullScalar(/*_ OCIEnv *env, OCIError *err,
        !          6423:                                 OCIPicklerImage *imgh _*/);
        !          6424:  
        !          6425: sword OCIPicklerImageGenerate(/*_ OCIEnv *env, OCIError *err,
        !          6426:                                 OCIPicklerImage *imgh _*/);
        !          6427:  
        !          6428: sword OCIPicklerImageGetScalarSize(/*_ OCIEnv *env, OCIError *err,
        !          6429:                                 OCIPicklerImage *imgh, 
        !          6430:                                ub4  attrno, ub4  *size _*/);
        !          6431:  
        !          6432: sword OCIPicklerImageGetScalar(/*_ OCIEnv *env, OCIError *err,
        !          6433:                                 OCIPicklerImage *imgh, ub4  attrno, 
        !          6434:                                dvoid *buf, ub4  *len, OCIInd *ind _*/);
        !          6435: 
        !          6436: sword OCIPicklerImageCollBegin(/*_ OCIEnv *env, OCIError *err,
        !          6437:                 OCIPicklerImage *imgh, CONST OCIPicklerTds *colltdsh _*/);
        !          6438:  
        !          6439: sword OCIPicklerImageCollAddScalar(/*_  OCIEnv *env, OCIError *err,
        !          6440:                 OCIPicklerImage *imgh, dvoid *scalar,
        !          6441:                 ub4 buflen, OCIInd ind _*/);
        !          6442:  
        !          6443: sword OCIPicklerImageCollEnd(/*_ OCIEnv *env, OCIError *err,
        !          6444:                 OCIPicklerImage *imgh _*/);
        !          6445:  
        !          6446: /* should take svcctx for locator stuff */
        !          6447: sword OCIPicklerImageCollBeginScan(/*_ OCIEnv *env, OCIError *err,
        !          6448:                 OCIPicklerImage *imgh, CONST OCIPicklerTds *coll_tdsh,
        !          6449:                 ub4 attrnum, ub4 startidx, OCIInd *ind _*/);
        !          6450:  
        !          6451: sword OCIPicklerImageCollGetScalarSize(/*_ OCIEnv *env, OCIError *err,
        !          6452:                 CONST OCIPicklerTds *coll_tdsh, ub4 *size _*/);
        !          6453:  
        !          6454: sword OCIPicklerImageCollGetScalar(/*_ OCIEnv *env, OCIError *err,
        !          6455:                                        OCIPicklerImage *imgh, dvoid *buf,
        !          6456:                                        ub4 *buflen, OCIInd *ind _*/);
        !          6457:  
        !          6458: sword OCIFormatInit(/*_ dvoid *hndl, OCIError *err _*/);
        !          6459: 
        !          6460: sword OCIFormatString(/*_ dvoid *hndl, OCIError *err, OraText *buffer,
        !          6461:                           sbig_ora bufferLength, sbig_ora *returnLength,
        !          6462:                           CONST OraText *formatString, ... _*/);
        !          6463: 
        !          6464: sword OCIFormatTerm(/*_ dvoid *hndl, OCIError *err _*/);
        !          6465: 
        !          6466: sword OCIFormatTUb1(/*_ void _*/);
        !          6467: sword OCIFormatTUb2(/*_ void _*/);
        !          6468: sword OCIFormatTUb4(/*_ void _*/);
        !          6469: sword OCIFormatTUword(/*_ void _*/);
        !          6470: sword OCIFormatTUbig_ora(/*_ void _*/);
        !          6471: sword OCIFormatTSb1(/*_ void _*/);
        !          6472: sword OCIFormatTSb2(/*_ void _*/);
        !          6473: sword OCIFormatTSb4(/*_ void _*/);
        !          6474: sword OCIFormatTSword(/*_ void _*/);
        !          6475: sword OCIFormatTSbig_ora(/*_ void _*/);
        !          6476: sword OCIFormatTEb1(/*_ void _*/);
        !          6477: sword OCIFormatTEb2(/*_ void _*/);
        !          6478: sword OCIFormatTEb4(/*_ void _*/);
        !          6479: sword OCIFormatTEword(/*_ void _*/);
        !          6480: sword OCIFormatTChar(/*_ void _*/);
        !          6481: sword OCIFormatTText(/*_ void _*/);
        !          6482: sword OCIFormatTDouble(/*_ void _*/);
        !          6483: sword OCIFormatTDvoid(/*_ void _*/);
        !          6484: sword OCIFormatTEnd(/*_ void _*/);
        !          6485: 
        !          6486: sword OCIFileClose (/*_ dvoid  *hndl, OCIError *err, OCIFileObject *filep _*/);
        !          6487: 
        !          6488: 
        !          6489: sword OCIFileExists (/*_ dvoid  *hndl, OCIError *err, OraText *filename,
        !          6490:                      OraText *path, ub1 *flag _*/ );
        !          6491: 
        !          6492: sword OCIFileFlush(/*_ dvoid *hndl, OCIError *err, OCIFileObject *filep _*/ );
        !          6493: 
        !          6494: sword OCIFileGetLength(/*_ dvoid *hndl, OCIError *err, OraText *filename,
        !          6495:                         OraText *path, ubig_ora *lenp _*/ );
        !          6496: 
        !          6497: sword OCIFileInit (/*_ dvoid *hndl, OCIError *err _*/);
        !          6498: 
        !          6499: sword OCIFileOpen (/*_ dvoid *hndl, OCIError *err, OCIFileObject **filep,
        !          6500:                     OraText *filename, OraText *path, ub4 mode, ub4 create, 
        !          6501:                     ub4 type _*/);
        !          6502: 
        !          6503: sword OCIFileRead (/*_ dvoid *hndl, OCIError *err, OCIFileObject *filep,
        !          6504:                     dvoid *bufp, ub4 bufl, ub4 *bytesread _*/);
        !          6505: 
        !          6506: sword OCIFileSeek (/*_ dvoid *hndl, OCIError *err, OCIFileObject *filep,
        !          6507:                      uword origin, ubig_ora offset, sb1 dir _*/);
        !          6508: 
        !          6509: sword OCIFileTerm (/*_ dvoid *hndl, OCIError *err _*/);
        !          6510: 
        !          6511: sword OCIFileWrite (/*_ dvoid *hndl, OCIError *err, OCIFileObject   *filep,
        !          6512:                      dvoid *bufp, ub4 buflen, ub4 *byteswritten _*/);
        !          6513: 
        !          6514: 
        !          6515: /*-------------------------- Extensions to XA interface ---------------------*/
        !          6516: /* ------------------------- xaosvch ----------------------------------------*/
        !          6517: /*
        !          6518:    NAME
        !          6519:      xaosvch  -  XA Oracle get SerViCe Handle
        !          6520:    DESCRIPTION
        !          6521:      Given a database name return the service handle that is used by the
        !          6522:      XA library
        !          6523:    NOTE
        !          6524:      This macro has been provided for backward compatibilty with 8.0.2
        !          6525: */
        !          6526: OCISvcCtx *xaosvch(/*_ OraText *dbname _*/);
        !          6527: 
        !          6528: /* ------------------------- xaoSvcCtx --------------------------------------*/
        !          6529: /*
        !          6530:    NAME
        !          6531:      xaoSvcCtx  -  XA Oracle get SerViCe ConTeXt
        !          6532:    DESCRIPTION
        !          6533:      Given a database name return the service handle that is used by the
        !          6534:      XA library
        !          6535:    NOTE
        !          6536:      This routine has been provided for APs to get access to the service
        !          6537:      handle that XA library uses. Without this routine APs must use SQLLIB
        !          6538:      routine sqlld2 to get access to the Logon data area registered by the
        !          6539:      XA library
        !          6540: */
        !          6541: OCISvcCtx *xaoSvcCtx(/*_ OraText *dbname _*/);
        !          6542: 
        !          6543: /* ------------------------- xaoEnv -----------------------------------------*/
        !          6544: /*
        !          6545:    NAME
        !          6546:      xaoEnv  -  XA Oracle get ENvironment Handle
        !          6547:    DESCRIPTION
        !          6548:      Given a database name return the environment handle that is used by the
        !          6549:      XA library
        !          6550:    NOTE
        !          6551:      This routine has been provided for APs to get access to the environment
        !          6552:      handle that XA library uses. Without this routine APs must use SQLLIB
        !          6553:      routine sqlld2 to get access to the Logon data area registered by the
        !          6554:      XA library
        !          6555: */
        !          6556: OCIEnv *xaoEnv(/*_ OraText *dbname _*/);
        !          6557: 
        !          6558: /* ------------------------- xaosterr ---------------------------------------*/
        !          6559: /*
        !          6560:    NAME
        !          6561:      xaosterr  -  XA Oracle get xa STart ERRor code
        !          6562:    DESCRIPTION
        !          6563:      Given an oracle error code return the XA error code
        !          6564:  */
        !          6565: int xaosterr(/*_ OCISvcCtx *svch, sb4 error _*/);
        !          6566: /*-------------------------- End Extensions ---------------------------------*/
        !          6567: 
        !          6568: /*---------------------- Extensions to NLS cartridge service ----------------*/
        !          6569: /* ----------------------- OCINlsGetInfo ------------------------------------*/
        !          6570: /*
        !          6571:    NAME
        !          6572:      OCINlsGetInfo - Get NLS info from OCI environment handle
        !          6573:    REMARKS
        !          6574:      This function generates language information specified by item from OCI 
        !          6575:      environment handle envhp into an array pointed to by buf within size 
        !          6576:      limitation as buflen.
        !          6577:    RETURNS
        !          6578:      OCI_SUCCESS, OCI_INVALID_HANDLE, or OCI_ERROR on wrong item.
        !          6579:    envhp(IN/OUT)
        !          6580:      OCI environment handle.
        !          6581:    errhp(IN/OUT)
        !          6582:      The OCI error handle. If there is an error, it is record in errhp and 
        !          6583:      this function returns a NULL pointer. Diagnostic information can be 
        !          6584:      obtained by calling OCIErrorGet().
        !          6585:    buf(OUT)
        !          6586:      Pointer to the destination buffer.
        !          6587:    buflen(IN)
        !          6588:      The size of destination buffer. The maximum length for each information
        !          6589:      is 32 bytes.
        !          6590:    item(IN)
        !          6591:      It specifies to get which item in OCI environment handle and can be one
        !          6592:      of following values:
        !          6593:        OCI_NLS_DAYNAME1 : Native name for Monday.
        !          6594:        OCI_NLS_DAYNAME2 : Native name for Tuesday.
        !          6595:        OCI_NLS_DAYNAME3 : Native name for Wednesday.
        !          6596:        OCI_NLS_DAYNAME4 : Native name for Thursday.
        !          6597:        OCI_NLS_DAYNAME5 : Native name for Friday.
        !          6598:        OCI_NLS_DAYNAME6 : Native name for for Saturday.
        !          6599:        OCI_NLS_DAYNAME7 : Native name for for Sunday.
        !          6600:        OCI_NLS_ABDAYNAME1 : Native abbreviated name for Monday.
        !          6601:        OCI_NLS_ABDAYNAME2 : Native abbreviated name for Tuesday.
        !          6602:        OCI_NLS_ABDAYNAME3 : Native abbreviated name for Wednesday.
        !          6603:        OCI_NLS_ABDAYNAME4 : Native abbreviated name for Thursday.
        !          6604:        OCI_NLS_ABDAYNAME5 : Native abbreviated name for Friday.
        !          6605:        OCI_NLS_ABDAYNAME6 : Native abbreviated name for for Saturday.
        !          6606:        OCI_NLS_ABDAYNAME7 : Native abbreviated name for for Sunday.
        !          6607:        OCI_NLS_MONTHNAME1 : Native name for January.
        !          6608:        OCI_NLS_MONTHNAME2 : Native name for February.
        !          6609:        OCI_NLS_MONTHNAME3 : Native name for March.
        !          6610:        OCI_NLS_MONTHNAME4 : Native name for April.
        !          6611:        OCI_NLS_MONTHNAME5 : Native name for May.
        !          6612:        OCI_NLS_MONTHNAME6 : Native name for June.
        !          6613:        OCI_NLS_MONTHNAME7 : Native name for July.
        !          6614:        OCI_NLS_MONTHNAME8 : Native name for August.
        !          6615:        OCI_NLS_MONTHNAME9 : Native name for September.
        !          6616:        OCI_NLS_MONTHNAME10 : Native name for October.
        !          6617:        OCI_NLS_MONTHNAME11 : Native name for November.
        !          6618:        OCI_NLS_MONTHNAME12 : Native name for December.
        !          6619:        OCI_NLS_ABMONTHNAME1 : Native abbreviated name for January.
        !          6620:        OCI_NLS_ABMONTHNAME2 : Native abbreviated name for February.
        !          6621:        OCI_NLS_ABMONTHNAME3 : Native abbreviated name for March.
        !          6622:        OCI_NLS_ABMONTHNAME4 : Native abbreviated name for April.
        !          6623:        OCI_NLS_ABMONTHNAME5 : Native abbreviated name for May.
        !          6624:        OCI_NLS_ABMONTHNAME6 : Native abbreviated name for June.
        !          6625:        OCI_NLS_ABMONTHNAME7 : Native abbreviated name for July.
        !          6626:        OCI_NLS_ABMONTHNAME8 : Native abbreviated name for August.
        !          6627:        OCI_NLS_ABMONTHNAME9 : Native abbreviated name for September.
        !          6628:        OCI_NLS_ABMONTHNAME10 : Native abbreviated name for October.
        !          6629:        OCI_NLS_ABMONTHNAME11 : Native abbreviated name for November.
        !          6630:        OCI_NLS_ABMONTHNAME12 : Native abbreviated name for December.
        !          6631:        OCI_NLS_YES : Native string for affirmative response.
        !          6632:        OCI_NLS_NO : Native negative response. 
        !          6633:        OCI_NLS_AM : Native equivalent string of AM.
        !          6634:        OCI_NLS_PM : Native equivalent string of PM.
        !          6635:        OCI_NLS_AD : Native equivalent string of AD.
        !          6636:        OCI_NLS_BC : Native equivalent string of BC.
        !          6637:        OCI_NLS_DECIMAL : decimal character.
        !          6638:        OCI_NLS_GROUP : group separator.
        !          6639:        OCI_NLS_DEBIT : Native symbol of debit.
        !          6640:        OCI_NLS_CREDIT : Native sumbol of credit.
        !          6641:        OCI_NLS_DATEFORMAT : Oracle date format.
        !          6642:        OCI_NLS_INT_CURRENCY: International currency symbol.
        !          6643:        OCI_NLS_LOC_CURRENCY : Locale currency symbol.
        !          6644:        OCI_NLS_LANGUAGE : Language name.
        !          6645:        OCI_NLS_ABLANGUAGE : Abbreviation for language name.
        !          6646:        OCI_NLS_TERRITORY : Territory name.
        !          6647:        OCI_NLS_CHARACTER_SET : Character set name.
        !          6648:        OCI_NLS_LINGUISTIC : Linguistic name.
        !          6649:        OCI_NLS_CALENDAR : Calendar name.
        !          6650:        OCI_NLS_DUAL_CURRENCY : Dual currency symbol.
        !          6651: */
        !          6652: sword OCINlsGetInfo(/*_ dvoid *envhp, OCIError *errhp, OraText *buf,
        !          6653:                     size_t buflen, ub2 item _*/);
        !          6654: 
        !          6655: 
        !          6656: /* -------------------- OCIMultiByteToWideChar ------------------------------*/
        !          6657: /*
        !          6658:    NAME
        !          6659:      OCIMultiByteToWideChar - Convert a null terminated multibyte string into 
        !          6660:                               wchar
        !          6661:    REMARKS
        !          6662:      This routine converts an entire null-terminated string into the wchar 
        !          6663:      format. The wchar output buffer will be null-terminated.
        !          6664:    RETURNS
        !          6665:      OCI_SUCCESS, OCI_INVALID_HANDLE or OCI_ERROR
        !          6666:    envhp(IN/OUT)
        !          6667:      OCI environment handle to determine the character set of string.
        !          6668:    dst (OUT)
        !          6669:      Destination buffer for wchar.
        !          6670:    src (IN)
        !          6671:      Source string to be converted.
        !          6672:    rsize (OUT)
        !          6673:      Number of characters converted including null-terminator.
        !          6674:      If it is a NULL pointer, no number return
        !          6675: */
        !          6676: sword OCIMultiByteToWideChar(/*_ dvoid *envhp, OCIWchar *dst, CONST OraText *src,
        !          6677:                              size_t *rsize _*/);
        !          6678: 
        !          6679: 
        !          6680: /* --------------------- OCIMultiByteInSizeToWideChar -----------------------*/
        !          6681: /*
        !          6682:    NAME
        !          6683:      OCIMultiByteInSizeToWideChar - Convert a mulitbyte string in length into
        !          6684:                                     wchar
        !          6685:    REMARKS
        !          6686:      This routine converts part of string into the wchar format. It will
        !          6687:      convert as many complete characters as it can until it reaches output
        !          6688:      buffer size or input buffer size or it reaches a null-terminator in
        !          6689:      source string. The output buffer will be null-terminated if space permits.
        !          6690:      If dstsz is zero, this function will only return number of characters not
        !          6691:      including ending null terminator for converted string.
        !          6692:    RETURNS
        !          6693:      OCI_SUCCESS, OCI_INVALID_HANDLE or OCI_ERROR
        !          6694:    envhp(IN/OUT)
        !          6695:      OCI environment handle to determine the character set of string.
        !          6696:    dst (OUT)
        !          6697:      Pointer to a destination buffer for wchar. It can be NULL pointer when
        !          6698:      dstsz is zero.
        !          6699:    dstsz(IN)
        !          6700:      Destination buffer size in character. If it is zero, this function just
        !          6701:      returns number of characters will be need for the conversion.
        !          6702:    src (IN)
        !          6703:      Source string to be converted.
        !          6704:    srcsz(IN)
        !          6705:      Length of source string in byte.
        !          6706:    rsize(OUT)
        !          6707:      Number of characters written into destination buffer, or number of
        !          6708:      characters for converted string is dstsz is zero.
        !          6709:      If it is NULL pointer, nothing to return.
        !          6710: */
        !          6711: sword OCIMultiByteInSizeToWideChar(/*_ dvoid *envhp, OCIWchar *dst,
        !          6712:                                   size_t dstsz, CONST OraText *src, 
        !          6713:                                   size_t srcsz, size_t *rsize _*/);
        !          6714: 
        !          6715: 
        !          6716: /* ---------------------- OCIWideCharToMultiByte ----------------------------*/
        !          6717: /*
        !          6718:    NAME
        !          6719:      OCIWideCharToMultiByte - Convert a null terminated wchar string into
        !          6720:                               multibyte
        !          6721:    REMARKS
        !          6722:      This routine converts an entire null-terminated wide character string into
        !          6723:      multi-byte string. The output buffer will be null-terminated.
        !          6724:    RETURNS
        !          6725:      OCI_SUCCESS, OCI_INVALID_HANDLE or OCI_ERROR
        !          6726:    envhp(IN/OUT)
        !          6727:      OCI environment handle to determine the character set of string.
        !          6728:    dst (OUT)
        !          6729:      Destination buffer for multi-byte string.
        !          6730:    src (IN)
        !          6731:      Source wchar string to be converted.
        !          6732:    rsize (OUT)
        !          6733:      Number of bytes written into the destination buffer.
        !          6734:      If it is NULL pointer, nothing to return.
        !          6735: */
        !          6736: sword OCIWideCharToMultiByte(/*_ dvoid *envhp, OraText *dst, 
        !          6737:                                  CONST OCIWchar *src, size_t *rsize _*/);
        !          6738: 
        !          6739: 
        !          6740: /* ---------------------- OCIWideCharInSizeToMultiByte ----------------------*/
        !          6741: /*
        !          6742:    NAME
        !          6743:      OCIWideCharInSizeToMultiByte - Convert a wchar string in length into 
        !          6744:                                     mulitbyte
        !          6745:    REMARKS
        !          6746:      This routine converts part of wchar string into the multi-byte format.
        !          6747:      It will convert as many complete characters as it can until it reaches
        !          6748:      output buffer size or input buffer size or it reaches a null-terminator
        !          6749:      in source string. The output buffer will be null-terminated if space
        !          6750:      permits. If dstsz is zero, the function just returns the size of byte not 
        !          6751:      including ending null-terminator need to store the converted string.
        !          6752:    RETURNS
        !          6753:      OCI_SUCCESS, OCI_INVALID_HANDLE or OCI_ERROR
        !          6754:    envhp(IN/OUT)
        !          6755:      OCI environment handle to determine the character set of string.
        !          6756:    dst (OUT)
        !          6757:      Destination buffer for multi-byte. It can be NULL pointer if dstsz is zero.
        !          6758:    dstsz(IN)
        !          6759:      Destination buffer size in byte. If it is zero, it just returns the size
        !          6760:      of bytes need for converted string.
        !          6761:    src (IN)
        !          6762:      Source wchar string to be converted.
        !          6763:    srcsz(IN)
        !          6764:      Length of source string in character.
        !          6765:    rsize(OUT)
        !          6766:      Number of bytes written into destination buffer, or number of bytes need
        !          6767:      to store the converted string if dstsz is zero.
        !          6768:      If it is NULL pointer, nothing to return.
        !          6769: */
        !          6770: sword OCIWideCharInSizeToMultiByte(/*_ dvoid *envhp, OraText *dst,
        !          6771:                                     size_t dstsz, CONST OCIWchar *src,
        !          6772:                                     size_t srcsz, size_t *rsize _*/);
        !          6773: 
        !          6774: 
        !          6775: 
        !          6776: /* ----------------------- OCIWideCharIsAlnum -------------------------------*/
        !          6777: /*
        !          6778:    NAME
        !          6779:      OCIWideCharIsAlnum - test whether wc is a letter or decimal digit
        !          6780:    REMARKS
        !          6781:      It tests whether wc is a letter or decimal digit.
        !          6782:    RETURNS
        !          6783:      TRUE or FLASE.
        !          6784:    envhp(IN/OUT)
        !          6785:      OCI environment handle to determine the character set .
        !          6786:    wc(IN)
        !          6787:      Wchar for testing.
        !          6788: */
        !          6789: boolean OCIWideCharIsAlnum(/*_ dvoid *envhp, OCIWchar wc _*/);
        !          6790: 
        !          6791: 
        !          6792: /* ----------------------- OCIWideCharIsAlpha -------------------------------*/
        !          6793: /*
        !          6794:    NAME
        !          6795:      OCIWideCharIsAlpha - test whether wc is an alphabetic letter
        !          6796:    REMARKS
        !          6797:      It tests whether wc is an alphabetic letter
        !          6798:    RETURNS
        !          6799:      TRUE or FLASE.
        !          6800:    envhp(IN/OUT)
        !          6801:      OCI environment handle to determine the character set .
        !          6802:    wc(IN)
        !          6803:      Wchar for testing.
        !          6804: */
        !          6805: boolean OCIWideCharIsAlpha(/*_ dvoid *envhp, OCIWchar wc _*/);
        !          6806: 
        !          6807: 
        !          6808: /* --------------------- OCIWideCharIsCntrl ---------------------------------*/
        !          6809: /*
        !          6810:    NAME
        !          6811:      OCIWideCharIsCntrl - test whether wc is a control character
        !          6812:    REMARKS
        !          6813:      It tests whether wc is a control character.
        !          6814:    RETURNS
        !          6815:      TRUE or FLASE.
        !          6816:    envhp(IN/OUT)
        !          6817:      OCI environment handle to determine the character set .
        !          6818:    wc(IN)
        !          6819:      Wchar for testing.
        !          6820: */
        !          6821: boolean OCIWideCharIsCntrl(/*_ dvoid *envhp, OCIWchar wc _*/);
        !          6822: 
        !          6823: 
        !          6824: /* ----------------------- OCIWideCharIsDigit -------------------------------*/
        !          6825: /*
        !          6826:    NAME
        !          6827:      OCIWideCharIsDigit - test whether wc is a decimal digit character
        !          6828:    REMARKS
        !          6829:      It tests whether wc is a decimal digit character.
        !          6830:    RETURNS
        !          6831:      TRUE or FLASE.
        !          6832:    envhp(IN/OUT)
        !          6833:      OCI environment handle to determine the character set .
        !          6834:    wc(IN)
        !          6835:      Wchar for testing.
        !          6836: */
        !          6837: boolean OCIWideCharIsDigit(/*_ dvoid *envhp, OCIWchar wc _*/);
        !          6838: 
        !          6839: 
        !          6840: /* ----------------------- OCIWideCharIsGraph -------------------------------*/
        !          6841: /*
        !          6842:    NAME
        !          6843:      OCIWideCharIsGraph - test whether wc is a graph character
        !          6844:    REMARKS
        !          6845:      It tests whether wc is a graph character. A graph character is character
        !          6846:      with a visible representation and normally includes alphabetic letter,
        !          6847:      decimal digit, and punctuation.
        !          6848:    RETURNS
        !          6849:      TRUE or FLASE.
        !          6850:    envhp(IN/OUT)
        !          6851:      OCI environment handle to determine the character set .
        !          6852:    wc(IN)
        !          6853:      Wchar for testing.
        !          6854: */
        !          6855: boolean OCIWideCharIsGraph(/*_ dvoid *envhp, OCIWchar wc _*/);
        !          6856: 
        !          6857: 
        !          6858: /* ----------------------- OCIWideCharIsLower -------------------------------*/
        !          6859: /*
        !          6860:    NAME
        !          6861:      OCIWideCharIsLower - test whether wc is a lowercase letter
        !          6862:    REMARKS
        !          6863:      It tests whether wc is a lowercase letter.
        !          6864:    RETURNS
        !          6865:      TRUE or FLASE.
        !          6866:    envhp(IN/OUT)
        !          6867:      OCI environment handle to determine the character set .
        !          6868:    wc(IN)
        !          6869:      Wchar for testing.
        !          6870: */
        !          6871: boolean OCIWideCharIsLower(/*_ dvoid *envhp, OCIWchar wc _*/);
        !          6872: 
        !          6873: 
        !          6874: /* ----------------------- OCIWideCharIsPrint -------------------------------*/
        !          6875: /*
        !          6876:    NAME
        !          6877:      OCIWideCharIsPrint - test whether wc is a printable character
        !          6878:    REMARKS
        !          6879:      It tests whether wc is a printable character.
        !          6880:    RETURNS
        !          6881:      TRUE or FLASE.
        !          6882:    envhp(IN/OUT)
        !          6883:      OCI environment handle to determine the character set .
        !          6884:    wc(IN)
        !          6885:      Wchar for testing.
        !          6886: */
        !          6887: boolean OCIWideCharIsPrint(/*_ dvoid *envhp, OCIWchar wc _*/);
        !          6888: 
        !          6889: 
        !          6890: /* ----------------------- OCIWideCharIsPunct -------------------------------*/
        !          6891: /*
        !          6892:    NAME
        !          6893:      OCIWideCharIsPunct - test whether wc is a punctuation character
        !          6894:    REMARKS
        !          6895:      It tests whether wc is a punctuation character.
        !          6896:    RETURNS
        !          6897:      TRUE or FLASE.
        !          6898:    envhp(IN/OUT)
        !          6899:      OCI environment handle to determine the character set .
        !          6900:    wc(IN)
        !          6901:      Wchar for testing.
        !          6902: */
        !          6903: boolean OCIWideCharIsPunct(/*_ dvoid *envhp, OCIWchar wc _*/);
        !          6904: 
        !          6905: 
        !          6906: /* ----------------------- OCIWideCharIsSpace -------------------------------*/
        !          6907: /*
        !          6908:    NAME
        !          6909:      OCIWideCharIsSpace - test whether wc is a space character
        !          6910:    REMARKS
        !          6911:      It tests whether wc is a space character. A space character only causes
        !          6912:      white space in displayed text(for example, space, tab, carriage return,
        !          6913:      newline, vertical tab or form feed).
        !          6914:    RETURNS
        !          6915:      TRUE or FLASE.
        !          6916:    envhp(IN/OUT)
        !          6917:      OCI environment handle to determine the character set .
        !          6918:    wc(IN)
        !          6919:      Wchar for testing.
        !          6920: */
        !          6921: boolean OCIWideCharIsSpace(/*_ dvoid *envhp, OCIWchar wc _*/);
        !          6922: 
        !          6923: 
        !          6924: /* ----------------------- OCIWideCharIsUpper -------------------------------*/
        !          6925: /*
        !          6926:    NAME
        !          6927:      OCIWideCharIsUpper - test whether wc is a uppercase letter
        !          6928:    REMARKS
        !          6929:      It tests whether wc is a uppercase letter.
        !          6930:    RETURNS
        !          6931:      TRUE or FLASE.
        !          6932:    envhp(IN/OUT)
        !          6933:      OCI environment handle to determine the character set .
        !          6934:    wc(IN)
        !          6935:      Wchar for testing.
        !          6936: */
        !          6937: boolean OCIWideCharIsUpper(/*_ dvoid *envhp, OCIWchar wc _*/);
        !          6938: 
        !          6939: 
        !          6940: /*----------------------- OCIWideCharIsXdigit -------------------------------*/
        !          6941: /*
        !          6942:    NAME
        !          6943:      OCIWideCharIsXdigit - test whether wc is a hexadecimal digit
        !          6944:    REMARKS
        !          6945:      It tests whether wc is a hexadecimal digit ( 0-9, A-F, a-f ).
        !          6946:    RETURNS
        !          6947:      TRUE or FLASE.
        !          6948:    envhp(IN/OUT)
        !          6949:      OCI environment handle to determine the character set .
        !          6950:    wc(IN)
        !          6951:      Wchar for testing.
        !          6952: */
        !          6953: boolean OCIWideCharIsXdigit(/*_ dvoid *envhp, OCIWchar wc _*/);
        !          6954: 
        !          6955: 
        !          6956: /* --------------------- OCIWideCharIsSingleByte ----------------------------*/
        !          6957: /*
        !          6958:    NAME
        !          6959:      OCIWideCharIsSingleByte - test whether wc is a single-byte character
        !          6960:    REMARKS
        !          6961:      It tests whether wc is a single-byte character when converted into
        !          6962:      multi-byte.
        !          6963:    RETURNS
        !          6964:      TRUE or FLASE.
        !          6965:    envhp(IN/OUT)
        !          6966:      OCI environment handle to determine the character set .
        !          6967:    wc(IN)
        !          6968:      Wchar for testing.
        !          6969: */
        !          6970: boolean OCIWideCharIsSingleByte(/*_ dvoid *envhp, OCIWchar wc _*/);
        !          6971: 
        !          6972: 
        !          6973: /* ----------------------- OCIWideCharToLower -------------------------------*/
        !          6974: /*
        !          6975:    NAME
        !          6976:      OCIWideCharToLower - Convert a wchar into the lowercase
        !          6977:    REMARKS
        !          6978:      If there is a lower-case character mapping for wc in the specified locale,
        !          6979:      it will return the lower-case in wchar, else return wc itself.
        !          6980:    RETURNS
        !          6981:      A wchar
        !          6982:    envhp(IN/OUT)
        !          6983:      OCI environment handle to determine the character set .
        !          6984:    wc(IN)
        !          6985:      Wchar for lowercase mapping.
        !          6986: */
        !          6987: OCIWchar OCIWideCharToLower(/*_ dvoid *envhp, OCIWchar wc _*/);
        !          6988: 
        !          6989: 
        !          6990: /* ----------------------- OCIWideCharToUpper -------------------------------*/
        !          6991: /*
        !          6992:    NAME
        !          6993:      OCIWideCharToUpper - Convert a wchar into the uppercase
        !          6994:    REMARKS
        !          6995:      If there is a upper-case character mapping for wc in the specified locale,
        !          6996:      it will return the upper-case in wchar, else return wc itself.
        !          6997:    RETURNS
        !          6998:      A wchar
        !          6999:    envhp(IN/OUT)
        !          7000:      OCI environment handle to determine the character set .
        !          7001:    wc(IN)
        !          7002:      Wchar for uppercase mapping.
        !          7003: */
        !          7004: OCIWchar OCIWideCharToUpper(/*_ dvoid *envhp, OCIWchar wc _*/);
        !          7005: 
        !          7006: 
        !          7007: /* ----------------------- OCIWideCharStrcmp --------------------------------*/
        !          7008: /*
        !          7009:    NAME
        !          7010:      OCIWideCharStrcmp - compare two null terminated wchar string
        !          7011:    REMARKS
        !          7012:      It compares two wchar string in binary ( based on wchar encoding value ),
        !          7013:      linguistic, or case-insensitive.
        !          7014:    RETURNS
        !          7015:      0, if wstr1 == wstr2.
        !          7016:      Positive, if wstr1 > wstr2.
        !          7017:      Negative, if wstr1 < wstr2.
        !          7018:    envhp(IN/OUT)
        !          7019:      OCI environment handle to determine the character set.
        !          7020:    wstr1(IN)
        !          7021:      Pointer to a null-terminated wchar string.
        !          7022:    wstr2(IN)
        !          7023:      Pointer to a null-terminated wchar string.
        !          7024:    flag(IN)
        !          7025:      It is used to decide the comparison method. It can be taken one of the
        !          7026:      following values:
        !          7027:        OCI_NLS_BINARY : for the binary comparison, this is default value.
        !          7028:        OCI_NLS_LINGUISTIC : for linguistic comparison specified in the locale.
        !          7029:      This flag can be ORed with OCI_NLS_CASE_INSENSITIVE for case-insensitive
        !          7030:      comparison.
        !          7031: */
        !          7032: int OCIWideCharStrcmp(/*_ dvoid *envhp, CONST OCIWchar *wstr1, 
        !          7033:                 CONST OCIWchar *wstr2, int flag _*/);
        !          7034: 
        !          7035: 
        !          7036: /* ----------------------- OCIWideCharStrncmp -------------------------------*/
        !          7037: /*
        !          7038:    NAME
        !          7039:      OCIWideCharStrncmp - compare twe wchar string in length
        !          7040:    REMARKS
        !          7041:      This function is similar to OCIWideCharStrcmp(), except that at most len1
        !          7042:      characters from wstr1 and len2 characters from wstr1 are compared. The
        !          7043:      null-terminator will be taken into the comparison.
        !          7044:    RETURNS
        !          7045:      0, if wstr1 = wstr2
        !          7046:      Positive, if wstr1 > wstr2
        !          7047:      Negative, if wstr1 < wstr2
        !          7048:    envhp(IN/OUT)
        !          7049:      OCI environment handle to determine the character set .
        !          7050:    wstr1(IN)
        !          7051:      Pointer to the first wchar string
        !          7052:    len1(IN)
        !          7053:      The length for the first string for comparison
        !          7054:    wstr2(IN)
        !          7055:      Pointer to the second wchar string
        !          7056:    len2(IN)
        !          7057:      The length for the second string for comparison.
        !          7058:    flag(IN)
        !          7059:      It is used to decide the comparison method. It can be taken one of the
        !          7060:      following values:
        !          7061:        OCI_NLS_BINARY : for the binary comparison, this is default value.
        !          7062:        OCI_NLS_LINGUISTIC : for linguistic comparison specified in the locale.
        !          7063:      This flag can be ORed with OCI_NLS_CASE_INSENSITIVE for case-insensitive 
        !          7064:      comparison.
        !          7065: */
        !          7066: int OCIWideCharStrncmp(/*_ dvoid *envhp, CONST OCIWchar *wstr1, size_t len1,
        !          7067:                  CONST OCIWchar *wstr2, size_t len2, int flag _*/);
        !          7068: 
        !          7069: 
        !          7070: /* ----------------------- OCIWideCharStrcat --------------------------------*/
        !          7071: /*
        !          7072:    NAME
        !          7073:      OCIWideCharStrcat - concatenate two wchar strings
        !          7074:    REMARKS
        !          7075:      This function appends a copy of the wchar string pointed to by wsrcstr,
        !          7076:      including the null-terminator to the end of wchar string pointed to by
        !          7077:      wdststr. It returns the number of character in the result string not
        !          7078:      including the ending null-terminator.
        !          7079:    RETURNS
        !          7080:      number of characters in the result string not including the ending
        !          7081:      null-terminator.
        !          7082:    envhp(IN/OUT)
        !          7083:      OCI environment handle to determine the character set .
        !          7084:    wdststr(IN/OUT)
        !          7085:      Pointer to the destination wchar string for appending.
        !          7086:    wsrcstr(IN)
        !          7087:      Pointer to the source wchar string to append.
        !          7088: */
        !          7089: size_t OCIWideCharStrcat(/*_ dvoid *envhp, OCIWchar *wdststr,
        !          7090:                          CONST OCIWchar *wsrcstr _*/);
        !          7091: 
        !          7092: 
        !          7093: /* ----------------------- OCIWideCharStrchr --------------------------------*/
        !          7094: /*
        !          7095:    NAME
        !          7096:      OCIWideCharStrchr - Search the first occurrence of wchar in a wchar string
        !          7097:    REMARKS
        !          7098:      This function searchs for the first occurrence of wc in the wchar string
        !          7099:      pointed to by wstr. It returns a pointer to the whcar if successful, or
        !          7100:      a null pointer.
        !          7101:    RETURNS
        !          7102:      wchar pointer if successful, otherwise a null pointer.
        !          7103:    envhp(IN/OUT)
        !          7104:      OCI environment handle to determine the character set .
        !          7105:    wstr(IN)
        !          7106:      Pointer to the wchar string to search
        !          7107:    wc(IN)
        !          7108:      Wchar to search for.
        !          7109: */
        !          7110: OCIWchar *OCIWideCharStrchr(/*_ dvoid *envhp, CONST OCIWchar *wstr,
        !          7111:                             OCIWchar wc _*/);
        !          7112: 
        !          7113: 
        !          7114: /* ----------------------- OCIWideCharStrcpy --------------------------------*/
        !          7115: /*
        !          7116:    NAME
        !          7117:      OCIWideCharStrcpy - copy a wchar string
        !          7118:    REMARKS
        !          7119:      This function copies the wchar string pointed to by wsrcstr, including the 
        !          7120:      null-terminator, into the array pointed to by wdststr. It returns the
        !          7121:      number of character copied not including the ending null-terminator.
        !          7122:    RETURNS
        !          7123:      number of characters copied not including the ending null-terminator.
        !          7124:    envhp(IN/OUT)
        !          7125:      OCI environment handle to determine the character set .
        !          7126:    wdststr(OUT)
        !          7127:      Pointer to the destination wchar buffer.
        !          7128:    wsrcstr(IN)
        !          7129:      Pointer to the source wchar string.
        !          7130: */
        !          7131: size_t OCIWideCharStrcpy(/*_ dvoid *envhp, OCIWchar *wdststr,
        !          7132:                          CONST OCIWchar *wsrcstr _*/);
        !          7133: 
        !          7134: 
        !          7135: /* ----------------------- OCIWideCharStrlen --------------------------------*/
        !          7136: /*
        !          7137:    NAME
        !          7138:      OCIWideCharStrlen - Return number of character in a wchar string
        !          7139:    REMARKS
        !          7140:      This function computes the number of characters in the wchar string
        !          7141:      pointed to by wstr, not including the null-terminator, and returns
        !          7142:     this number. 
        !          7143:    RETURNS
        !          7144:      number of characters not including ending null-terminator.
        !          7145:    envhp(IN/OUT)
        !          7146:      OCI environment handle to determine the character set .
        !          7147:    wstr(IN)
        !          7148:      Pointer to the source wchar string.
        !          7149: */
        !          7150: size_t OCIWideCharStrlen(/*_ dvoid *envhp, CONST OCIWchar *wstr _*/);
        !          7151: 
        !          7152: 
        !          7153: /* ----------------------- OCIWideCharStrncat -------------------------------*/
        !          7154: /*
        !          7155:    NAME
        !          7156:      OCIWideCharStrncat - Concatenate wchar string in length
        !          7157:    REMARKS
        !          7158:      This function is similar to OCIWideCharStrcat(), except that at most n
        !          7159:      characters from wsrcstr are appended to wdststr. Note that the
        !          7160:      null-terminator in wsrcstr will stop appending. wdststr will be
        !          7161:      null-terminated.. 
        !          7162:    RETURNS
        !          7163:      Number of characters in the result string not including the ending
        !          7164:      null-terminator.
        !          7165:    envhp(IN/OUT)
        !          7166:      OCI environment handle to determine the character set .
        !          7167:    wdststr(IN/OUT)
        !          7168:      Pointer to the destination wchar string for appending.
        !          7169:    wsrcstr(IN)
        !          7170:      Pointer to the source wchar string to append.
        !          7171:    n(IN)
        !          7172:      Number of characters from wsrcstr to append.
        !          7173: */
        !          7174: size_t OCIWideCharStrncat(/*_ dvoid *envhp, OCIWchar *wdststr,
        !          7175:                           CONST OCIWchar *wsrcstr, size_t n _*/);
        !          7176: 
        !          7177: 
        !          7178: /* ----------------------- OCIWideCharStrncpy -------------------------------*/
        !          7179: /*
        !          7180:    NAME
        !          7181:      OCIWideCharStrncpy - Copy wchar string in length
        !          7182:    REMARKS
        !          7183:      This function is similar to OCIWideCharStrcpy(), except that at most n
        !          7184:      characters are copied from the array pointed to by wsrcstr to the array
        !          7185:      pointed to by wdststr. Note that the null-terminator in wdststr will
        !          7186:      stop coping and result string will be null-terminated.
        !          7187:    RETURNS
        !          7188:      number of characters copied not including the ending null-terminator.
        !          7189:    envhp(IN/OUT)
        !          7190:      OCI environment handle to determine the character set .
        !          7191:    wdststr(OUT)
        !          7192:      Pointer to the destination wchar buffer.
        !          7193:    wsrcstr(IN)
        !          7194:      Pointer to the source wchar string.
        !          7195:    n(IN)
        !          7196:      Number of characters from wsrcstr to copy.
        !          7197: */
        !          7198: size_t OCIWideCharStrncpy(/*_ dvoid *envhp, OCIWchar *wdststr,
        !          7199:                           CONST OCIWchar *wsrcstr, size_t n _*/);
        !          7200: 
        !          7201: 
        !          7202: /* ----------------------- OCIWideCharStrrchr -------------------------------*/
        !          7203: /*
        !          7204:    NAME
        !          7205:      OCIWideCharStrrchr - search the last occurrence of a wchar in wchar string
        !          7206:    REMARKS
        !          7207:      This function searchs for the last occurrence of wc in the wchar string
        !          7208:      pointed to by wstr. It returns a pointer to the whcar if successful, or
        !          7209:      a null pointer.
        !          7210:    RETURNS
        !          7211:      wchar pointer if successful, otherwise a null pointer.
        !          7212:    envhp(IN/OUT)
        !          7213:      OCI environment handle to determine the character set .
        !          7214:    wstr(IN)
        !          7215:      Pointer to the wchar string to search
        !          7216:    wc(IN)
        !          7217:      Wchar to search for.
        !          7218: */
        !          7219: OCIWchar *OCIWideCharStrrchr(/*_ dvoid *envhp, CONST OCIWchar *wstr,
        !          7220:                              OCIWchar wc _*/);
        !          7221: 
        !          7222: 
        !          7223: /* --------------------- OCIWideCharStrCaseConversion -----------------------*/
        !          7224: /*
        !          7225:    NAME
        !          7226:      OCIWideCharStrCaseConversion - convert a wchar string into lowercase or
        !          7227:                                     uppercase
        !          7228:    REMARKS
        !          7229:      This function convert the wide char string pointed to by wsrcstr into the
        !          7230:      uppercase or lowercase specified by flag and copies the result into the
        !          7231:      array pointed to by wdststr. The result string will be null-terminated.
        !          7232:    RETURNS
        !          7233:      number of characters for result string not including null-terminator.
        !          7234:    envhp(IN/OUT)
        !          7235:      OCI environment handle.
        !          7236:    wdststr(OUT)
        !          7237:      Pointer to destination array.
        !          7238:    wsrcstr(IN)
        !          7239:      Pointer to source string.
        !          7240:    flag(IN)
        !          7241:      Specify the case to convert:
        !          7242:        OCI_NLS_UPPERCASE : convert to uppercase.
        !          7243:        OCI_NLS_LOWERCASE: convert to lowercase.
        !          7244:      This flag can be ORed with OCI_NLS_LINGUISTIC to specify that the
        !          7245:      linguistic setting in the locale will be used for case conversion.
        !          7246: */
        !          7247: size_t OCIWideCharStrCaseConversion(/*_ dvoid *envhp, OCIWchar *wdststr,
        !          7248:                                     CONST OCIWchar *wsrcstr, ub4 flag _*/);
        !          7249: 
        !          7250: 
        !          7251: /*---------------------- OCIWideCharDisplayLength ---------------------------*/
        !          7252: /*
        !          7253:    NAME
        !          7254:      OCIWideCharDisplayLength - Calculate the display length for a wchar
        !          7255:    REMARKS
        !          7256:      This function determines the number of column positions required for wc
        !          7257:      in display. It returns number of column positions, or 0 if wc is 
        !          7258:      null-terminator.
        !          7259:    RETURNS
        !          7260:      Number of display positions.
        !          7261:    envhp(IN/OUT)
        !          7262:      OCI environment handle to determine the character set .
        !          7263:    wc(IN)
        !          7264:      Wchar character.
        !          7265: */
        !          7266: size_t OCIWideCharDisplayLength(/*_ dvoid *envhp, OCIWchar wc  _*/);
        !          7267: 
        !          7268: 
        !          7269: /*---------------------- OCIWideCharMultiByteLength -------------------------*/
        !          7270: /*
        !          7271:    NAME
        !          7272:      OCIWideCharMultiByteLength - Determine byte size in multi-byte encoding
        !          7273:    REMARKS
        !          7274:      This function determines the number of byte required for wc in multi-byte
        !          7275:      encoding. It returns number of bytes in multi-byte for wc.
        !          7276:    RETURNS
        !          7277:      Number of bytes.
        !          7278:    envhp(IN/OUT)
        !          7279:      OCI environment handle to determine the character set .
        !          7280:    wc(IN)
        !          7281:      Wchar character.
        !          7282: */
        !          7283: size_t OCIWideCharMultiByteLength(/*_ dvoid *envhp, OCIWchar wc _*/);
        !          7284: 
        !          7285: 
        !          7286: /* ----------------------- OCIMultiByteStrcmp -------------------------------*/
        !          7287: /*
        !          7288:    NAME
        !          7289:      OCIMultiByteStrcmp - Compare two multi-byte strings
        !          7290:    REMARKS
        !          7291:      It compares two multi-byte strings in binary ( based on encoding value ),
        !          7292:      linguistic, or case-insensitive.
        !          7293:    RETURNS
        !          7294:      0, if str1 == str2.
        !          7295:      Positive, if str1 > str2.
        !          7296:      Negative, if str1 < str2.
        !          7297:    envhp(IN/OUT)
        !          7298:      OCI environment handle to determine the character set.
        !          7299:    str1(IN)
        !          7300:      Pointer to a null-terminated string.
        !          7301:    str2(IN)
        !          7302:      Pointer to a null-terminated string.
        !          7303:    flag(IN)
        !          7304:      It is used to decide the comparison method. It can be taken one of the
        !          7305:      following values:
        !          7306:        OCI_NLS_BINARY: for the binary comparison, this is default value.
        !          7307:        OCI_NLS_LINGUISTIC: for linguistic comparison specified in the locale.
        !          7308:      This flag can be ORed with OCI_NLS_CASE_INSENSITIVE for case-insensitive 
        !          7309:      comparison.
        !          7310: */
        !          7311: int OCIMultiByteStrcmp(/*_ dvoid *envhp, CONST OraText *str1,
        !          7312:                        CONST OraText *str2, int flag _*/);
        !          7313: 
        !          7314: 
        !          7315: /*----------------------- OCIMultiByteStrncmp -------------------------------*/
        !          7316: /*
        !          7317:    NAME
        !          7318:      OCIMultiByteStrncmp - compare two strings in length
        !          7319:    REMARKS
        !          7320:      This function is similar to OCIMultiBytestrcmp(), except that at most len1 bytes
        !          7321:      from str1 and len2 bytes from str2 are compared. The null-terminator will
        !          7322:      be taken into the comparison.
        !          7323:    RETURNS
        !          7324:      0, if str1 = str2
        !          7325:      Positive, if str1 > str2
        !          7326:      Negative, if str1 < str2
        !          7327:    envhp(IN/OUT)
        !          7328:      OCI environment handle to determine the character set.
        !          7329:    str1(IN)
        !          7330:      Pointer to the first string
        !          7331:    len1(IN)
        !          7332:      The length for the first string for comparison
        !          7333:    str2(IN)
        !          7334:      Pointer to the second string
        !          7335:    len2(IN)
        !          7336:      The length for the second string for comparison.
        !          7337:    flag(IN)
        !          7338:      It is used to decide the comparison method. It can be taken one of the
        !          7339:      following values:
        !          7340:        OCI_NLS_BINARY: for the binary comparison, this is default value.
        !          7341:        OCI_NLS_LINGUISTIC: for linguistic comparison specified in the locale.
        !          7342:      This flag can be ORed with OCI_NLS_CASE_INSENSITIVE for case-insensitive 
        !          7343:      comparison.
        !          7344: */
        !          7345: int OCIMultiByteStrncmp(/*_ dvoid *envhp, CONST OraText *str1, size_t len1,
        !          7346:                         OraText *str2, size_t len2, int flag _*/);
        !          7347: 
        !          7348: 
        !          7349: /*----------------------- OCIMultiByteStrcat --------------------------------*/
        !          7350: /*
        !          7351:    NAME
        !          7352:      OCIMultiByteStrcat - concatenate multibyte strings
        !          7353:    REMARKS
        !          7354:      This function appends a copy of the multi-byte string pointed to by
        !          7355:      srcstr, including the null-terminator to the end of string pointed to by
        !          7356:      dststr. It returns the number of bytes in the result string not including
        !          7357:      the ending null-terminator.
        !          7358:    RETURNS
        !          7359:      number of bytes in the result string not including the ending
        !          7360:      null-terminator.
        !          7361:    envhp(IN/OUT)
        !          7362:      Pointer to OCI environment handle
        !          7363:    dststr(IN/OUT)
        !          7364:      Pointer to the destination multi-byte string for appending.
        !          7365:    srcstr(IN)
        !          7366:      Pointer to the source string to append.
        !          7367: */
        !          7368: size_t OCIMultiByteStrcat(/*_ dvoid *envhp, OraText *dststr,
        !          7369:                           CONST OraText *srcstr _*/);
        !          7370: 
        !          7371: 
        !          7372: /*------------------------- OCIMultiByteStrcpy ------------------------------*/
        !          7373: /*
        !          7374:    NAME
        !          7375:      OCIMultiByteStrcpy - copy multibyte string
        !          7376:    REMARKS
        !          7377:      This function copies the multi-byte string pointed to by srcstr,
        !          7378:      including the null-terminator, into the array pointed to by dststr. It
        !          7379:      returns the number of bytes copied not including the ending 
        !          7380:      null-terminator.
        !          7381:    RETURNS
        !          7382:      number of bytes copied not including the ending null-terminator.
        !          7383:    envhp(IN/OUT)
        !          7384:      Pointer to the OCI environment handle.
        !          7385:    srcstr(OUT)
        !          7386:      Pointer to the destination buffer.
        !          7387:    dststr(IN)
        !          7388:      Pointer to the source multi-byte string.
        !          7389: */
        !          7390: size_t OCIMultiByteStrcpy(/*_ dvoid *envhp, OraText *dststr,
        !          7391:                           CONST OraText *srcstr _*/);
        !          7392: 
        !          7393: 
        !          7394: /*----------------------- OCIMultiByteStrlen --------------------------------*/
        !          7395: /*
        !          7396:    NAME
        !          7397:      OCIMultiByteStrlen - Calculate multibyte string length
        !          7398:    REMARKS
        !          7399:      This function computes the number of bytes in the multi-byte string
        !          7400:      pointed to by str, not including the null-terminator, and returns this
        !          7401:      number. 
        !          7402:    RETURNS
        !          7403:      number of bytes not including ending null-terminator.
        !          7404:    str(IN)
        !          7405:      Pointer to the source multi-byte string.
        !          7406: */
        !          7407: size_t OCIMultiByteStrlen(/*_ dvoid *envhp, CONST OraText *str _*/);
        !          7408: 
        !          7409: 
        !          7410: /*----------------------- OCIMultiByteStrncat -------------------------------*/
        !          7411: /*
        !          7412:    NAME
        !          7413:      OCIMultiByteStrncat - concatenate string in length
        !          7414:    REMARKS
        !          7415:      This function is similar to OCIMultiBytestrcat(), except that at most n
        !          7416:      bytes from srcstr are appended to dststr. Note that the null-terminator in
        !          7417:      srcstr will stop appending and the function will append as many character
        !          7418:      as possible within n bytes. dststr will be null-terminated. 
        !          7419:    RETURNS
        !          7420:      Number of bytes in the result string not including the ending
        !          7421:      null-terminator.
        !          7422:    envhp(IN/OUT)
        !          7423:      Pointer to OCI environment handle.
        !          7424:    srcstr(IN/OUT)
        !          7425:      Pointer to the destination multi-byte string for appending.
        !          7426:    dststr(IN)
        !          7427:      Pointer to the source multi-byte string to append.
        !          7428:    n(IN)
        !          7429:      Number of bytes from srcstr to append.
        !          7430: */
        !          7431: size_t OCIMultiByteStrncat(/*_ dvoid *envhp, OraText *dststr,
        !          7432:                            CONST OraText *srcstr, size_t n _*/);
        !          7433: 
        !          7434: 
        !          7435: /*----------------------- OCIMultiByteStrncpy -------------------------------*/
        !          7436: /*
        !          7437:    NAME
        !          7438:      OCIMultiByteStrncpy - copy multibyte string in length
        !          7439:    REMARKS
        !          7440:      This function is similar to OCIMultiBytestrcpy(), except that at most n
        !          7441:      bytes are copied from the array pointed to by srcstr to the array pointed
        !          7442:      to by dststr. Note that the null-terminator in srcstr will stop coping and
        !          7443:      the function will copy as many character as possible within n bytes. The 
        !          7444:      result string will be null-terminated.
        !          7445:    RETURNS
        !          7446:      number of bytes copied not including the ending null-terminator.
        !          7447:    envhp(IN/OUT)
        !          7448:      Pointer to a OCI environment handle.
        !          7449:    dststr(IN)
        !          7450:      Pointer to the source multi-byte string.
        !          7451:    srcstr(OUT)
        !          7452:      Pointer to the destination buffer.
        !          7453:    n(IN)
        !          7454:      Number of bytes from srcstr to copy.
        !          7455: */
        !          7456: size_t OCIMultiByteStrncpy(/*_ dvoid *envhp, OraText *dststr,
        !          7457:                            CONST OraText *srcstr, size_t n _*/);
        !          7458: 
        !          7459: 
        !          7460: /*----------------------- OCIMultiByteStrnDisplayLength ---------------------*/
        !          7461: /*
        !          7462:    NAME
        !          7463:      OCIMultiByteStrnDisplayLength - calculate the display length for a
        !          7464:                                      multibyt string
        !          7465:    REMARKS
        !          7466:      This function returns the number of display positions occupied by the 
        !          7467:      complete characters within the range of n bytes.
        !          7468:    RETURNS
        !          7469:      number of display positions.
        !          7470:    envhp(IN/OUT)
        !          7471:      OCI environment handle.
        !          7472:    str(IN)
        !          7473:      Pointer to a multi-byte string.
        !          7474:    n(IN)
        !          7475:      Number of bytes to examine.
        !          7476: */
        !          7477: size_t OCIMultiByteStrnDisplayLength(/*_ dvoid *envhp, CONST OraText *str1,
        !          7478:                                      size_t n _*/);
        !          7479: 
        !          7480: 
        !          7481: /*---------------------- OCIMultiByteStrCaseConversion  ---------------------*/
        !          7482: /*
        !          7483:    NAME
        !          7484:      OCIMultiByteStrCaseConversion
        !          7485:    REMARKS
        !          7486:      This function convert the multi-byte string pointed to by srcstr into the
        !          7487:      uppercase or lowercase specified by flag and copies the result into the
        !          7488:      array pointed to by dststr. The result string will be null-terminated.
        !          7489:    RETURNS
        !          7490:      number of bytes for result string not including null-terminator.
        !          7491:    envhp(IN/OUT)
        !          7492:      OCI environment handle.
        !          7493:    dststr(OUT)
        !          7494:      Pointer to destination array.
        !          7495:    srcstr(IN)
        !          7496:      Pointer to source string.
        !          7497:    flag(IN)
        !          7498:      Specify the case to convert:
        !          7499:        OCI_NLS_UPPERCASE: convert to uppercase.
        !          7500:        OCI_NLS_LOWERCASE: convert to lowercase.
        !          7501:      This flag can be ORed with OCI_NLS_LINGUISTIC to specify that the 
        !          7502:      linguistic setting in the locale will be used for case conversion.
        !          7503: */
        !          7504: size_t OCIMultiByteStrCaseConversion(/*_ dvoid *envhp, OraText *dststr,
        !          7505:                                      CONST OraText *srcstr, ub4 flag _*/);
        !          7506: 
        !          7507: 
        !          7508: /*------------------------- OCICharSetToUnicode -----------------------------*/
        !          7509: /*
        !          7510:    NAME
        !          7511:      OCICharSetToUnicode - convert multibyte string into Unicode as UCS2
        !          7512:    REMARKS
        !          7513:      This function converts a multi-byte string pointed to by src to Unicode 
        !          7514:      into the array pointed to by dst. The conversion will stop when it reach
        !          7515:      to the source limitation or destination limitation. 
        !          7516:      The function will return number of characters converted into Unicode.
        !          7517:      If dstlen is zero, it will just return the number of characters for the
        !          7518:      result without real conversion.
        !          7519:    RETURNS
        !          7520:      OCI_SUCCESS, OCI_INVALID_HANDLE or OCI_ERROR
        !          7521:    envhp(IN/OUT)
        !          7522:      Pointer to an OCI environment handle
        !          7523:    dst(OUT)
        !          7524:      Pointer to a destination buffer
        !          7525:    dstlen(IN)
        !          7526:      Size of destination buffer in character
        !          7527:    src(IN)
        !          7528:      Pointer to multi-byte source string.
        !          7529:    srclen(IN)
        !          7530:      Size of source string in bytes.
        !          7531:    rsize(OUT)
        !          7532:      Number of characters converted.
        !          7533:      If it is a NULL pointer, nothing to return.
        !          7534: */
        !          7535: sword OCICharSetToUnicode(/*_ dvoid *envhp, ub2 *dst, size_t dstlen,
        !          7536:                         CONST OraText *src, size_t  srclen, size_t *rsize _*/);
        !          7537: 
        !          7538: 
        !          7539: /*------------------------- OCIUnicodeToCharSet -----------------------------*/
        !          7540: /*
        !          7541:    NAME
        !          7542:      OCIUnicodeToCharSet - convert Unicode into multibyte
        !          7543:    REMARKS
        !          7544:      This function converts a Unicode string pointed to by src to multi-byte
        !          7545:      into the array pointed to by dst. The conversion will stop when it reach
        !          7546:      to the source limitation or destination limitation. The function will
        !          7547:      return number of bytes converted into multi-byte. If dstlen is zero, it
        !          7548:      will just return the number of bytes for the result without real 
        !          7549:      conversion. If a Unicode character is not convertible for the character
        !          7550:      set specified in OCI environment handle, a replacement character will be
        !          7551:      used for it. In this case, OCICharSetConversionIsReplacementUsed() will
        !          7552:      return ture.
        !          7553:    RETURNS
        !          7554:      OCI_SUCCESS, OCI_INVALID_HANDLE or OCI_ERROR
        !          7555:    envhp(IN/OUT)
        !          7556:      Pointer to an OCI environment handle.
        !          7557:    dst(OUT)
        !          7558:      Pointer to a destination buffer.
        !          7559:    dstlen(IN)
        !          7560:      Size of destination buffer in byte.
        !          7561:    src(IN)
        !          7562:      Pointer to a Unicode string.
        !          7563:    srclen(IN)
        !          7564:      Size of source string in characters.
        !          7565:    rsize(OUT)
        !          7566:      Number of bytes converted.
        !          7567:      If it is a NULL pointer, nothing to return.
        !          7568: */
        !          7569: sword OCIUnicodeToCharSet(/*_ dvoid *envhp, OraText *dst, size_t dstlen, 
        !          7570:                            CONST ub2 *src, size_t srclen, size_t *rsize _*/);
        !          7571: 
        !          7572: 
        !          7573: /* ------------------- OCICharsetConversionIsReplacementUsed ----------------*/
        !          7574: /*
        !          7575:    NAME
        !          7576:      OCICharsetConversionIsReplacementUsed - chech if replacement is used in 
        !          7577:                                              conversion
        !          7578:    REMARKS
        !          7579:      This function indicates whether or not the replacement character was used
        !          7580:      for nonconvertible characters in character set conversion in last invoke
        !          7581:      of OCICharsetUcs2ToMb().
        !          7582:    RETURNS
        !          7583:      TRUE is the replacement character was used in last OCICharsetUcs2ToMb()
        !          7584:      invoking, else FALSE.
        !          7585:    envhp(IN/OUT)
        !          7586:      OCI environment handle. This should be the first handle passed to 
        !          7587:      OCICharsetUcs2ToMb().
        !          7588: */
        !          7589: boolean OCICharSetConversionIsReplacementUsed(/*_ dvoid *envhp _*/);
        !          7590: 
        !          7591: 
        !          7592: /*------------------------- OCIMessageOpen ----------------------------------*/
        !          7593: /*
        !          7594:    NAME
        !          7595:      OCIMessageOpen - open a locale message file
        !          7596:    REMARKS
        !          7597:      This function opens a message handle for facility of product in a language
        !          7598:      pointed to by envhp. It first try to open the message file corresponding
        !          7599:      to envhp for the facility. If it successes, it will use that file to
        !          7600:      initialize a message handle, else it will use the default message file
        !          7601:      which is for American language for the facility. The function return a
        !          7602:      pointer pointed to a message handle into msghp parameter.
        !          7603:    RETURNS
        !          7604:      OCI_SUCCESS, OCI_INVALID_HANDLE or OCI_ERROR
        !          7605:    envhp(IN/OUT)
        !          7606:      A pointer to OCI environment handle for message language.
        !          7607:    errhp(IN/OUT)
        !          7608:      The OCI error handle. If there is an error, it is record in errhp and this
        !          7609:      function returns a NULL pointer. Diagnostic information can be obtained by
        !          7610:      calling OCIErrorGet().
        !          7611:    msghp(OUT)
        !          7612:      a message handle for return
        !          7613:    product(IN)
        !          7614:      A pointer to a product name. Product name is used to locate the directory
        !          7615:      for message in a system dependent way. For example, in Solaris, the
        !          7616:      directory of message files for the product `rdbms' is
        !          7617:      `${ORACLE_HOME}/rdbms'.
        !          7618:    facility(IN)
        !          7619:      A pointer to a facility name in the product. It is used to construct a
        !          7620:      message file name. A message file name follows the conversion with 
        !          7621:      facility as prefix. For example, the message file name for facility
        !          7622:      `img' in American language will be `imgus.msb' where `us' is the 
        !          7623:      abbreviation of American language and `msb' as message binary file 
        !          7624:      extension.
        !          7625:    dur(IN)
        !          7626:      Duration for memory allocation for the return message handle. It can be
        !          7627:      the following values:
        !          7628:         OCI_DURATION_CALL
        !          7629:         OCI_DURATION_STATEMENT
        !          7630:         OCI_DURATION_SESSION
        !          7631:         OCI_DURATION_TRANSACTION
        !          7632:      For the detail description, please refer to Memory Related Service
        !          7633:      Interfaces section.
        !          7634: */
        !          7635: sword OCIMessageOpen(/*_ dvoid *envhp, OCIError *errhp, OCIMsg **msghp,
        !          7636:                       CONST OraText *product, CONST OraText *facility, 
        !          7637:                       OCIDuration dur _*/);
        !          7638:  
        !          7639: 
        !          7640: /*------------------------- OCIMessageGet -----------------------------------*/
        !          7641: /*
        !          7642:    NAME
        !          7643:      OCIMessageGet - get a locale message from a message handle
        !          7644:    REMARKS
        !          7645:      This function will get message with message number identified by msgno and
        !          7646:      if buflen is not zero, the function will copy the message into the buffer
        !          7647:      pointed to by msgbuf. If buflen is zero, the message will be copied into
        !          7648:      a message buffer inside the message handle pointed to by msgh. For both
        !          7649:      cases. it will return the pointer to the null-terminated message string.
        !          7650:      If it cannot get the message required, it will return a NULL pointer.
        !          7651:    RETURNS
        !          7652:      A pointer to a null-terminated message string on success, otherwise a NULL
        !          7653:      pointer.
        !          7654:    msgh(IN/OUT)
        !          7655:      Pointer to a message handle which was previously opened by OCIMessageOpen().
        !          7656:    msgno(IN)
        !          7657:      The message number for getting message.
        !          7658:    msgbuf(OUT)
        !          7659:      Pointer to a destination buffer to the message retrieved. If buflen is
        !          7660:      zero, it can be NULL pointer.
        !          7661:    buflen(IN)
        !          7662:      The size of the above destination buffer.
        !          7663: */
        !          7664: OraText *OCIMessageGet(/*_ OCIMsg *msgh, ub4 msgno, OraText *msgbuf,
        !          7665:                         size_t buflen _*/);
        !          7666: 
        !          7667: 
        !          7668: /*------------------------- OCIMessageClose ---------------------------------*/
        !          7669: /*
        !          7670:    NAME
        !          7671:      OCIMessageClose - close a message handle
        !          7672:    REMARKS
        !          7673:      This function closes a message handle pointed to by msgh and frees any
        !          7674:      memory associated with this handle.
        !          7675:    RETURNS
        !          7676:      OCI_SUCCESS, OCI_INVALID_HANDLE or OCI_ERROR
        !          7677:    envhp(IN/OUT)
        !          7678:      A pointer to OCI environment handle for message language.
        !          7679:    errhp(IN/OUT)
        !          7680:      The OCI error handle. If there is an error, it is record in errhp and this
        !          7681:      function returns a NULL pointer. Diagnostic information can be obtained by
        !          7682:      calling OCIErrorGet().
        !          7683:    msghp(IN/OUT)
        !          7684:      A pointer to a message handle which was previously opened by
        !          7685:      OCIMessageOpen().
        !          7686: */
        !          7687: sword OCIMessageClose(/*_ dvoid *envhp, OCIError *errhp, OCIMsg *msghp _*/);
        !          7688: 
        !          7689: /*--------------- End of Extensions to NLS cartridge service ----------------*/
        !          7690: 
        !          7691: /*----------------- Extensions to OCI Thread interface ---------------------*/
        !          7692: /*****************************************************************************
        !          7693:                               DESCRIPTION
        !          7694: ******************************************************************************
        !          7695: 1 Threads Interface
        !          7696: 
        !          7697: The OCIThread package provides a number of commonly used threading
        !          7698: primitives for use by Oracle customers.  It offers a portable interface to
        !          7699: threading capabilities native to various platforms.  It does not implement
        !          7700: threading on platforms which do not have native threading capability.
        !          7701: 
        !          7702: OCIThread does not provide a portable implementation of multithreaded 
        !          7703: facilities.  It only serves as a set of portable covers for native 
        !          7704: multithreaded facilities.  Therefore, platforms that do not have native 
        !          7705: support for multi-threading will only be able to support a limited 
        !          7706: implementation of OCIThread.  As a result, products that rely on all of 
        !          7707: OCIThread's functionality will not port to all platforms.  Products that must 
        !          7708: port to all platforms must use only a subset of OCIThread's functionality.  
        !          7709: This issue is discussed further in later sections of this document.
        !          7710: 
        !          7711: The OCIThread API is split into four main parts.  Each part is described
        !          7712: briefly here.  The following subsections describe each in greater detail.
        !          7713: 
        !          7714:  1. Initialization and Termination Calls
        !          7715: 
        !          7716:      These calls deal with the initialization and termination of OCIThread.
        !          7717:      Initialization of OCIThread initializes the OCIThread context which is
        !          7718:      a member of the OCI environment or session handle.  This context is 
        !          7719:      required for other OCIThread calls.
        !          7720: 
        !          7721:  2. Passive Threading Primitives
        !          7722: 
        !          7723:      The passive threading primitives include primitives to manipulate mutual
        !          7724:      exclusion (mutex) locks, thread ID's, and thread-specific data keys.
        !          7725: 
        !          7726:      The reason that these primitives are described as 'passive' is that while
        !          7727:      their specifications allow for the existence of multiple threads, they do
        !          7728:      not require it.  This means that it is possible for these primitives to
        !          7729:      be implemented according to specification in both single-threaded and
        !          7730:      multi-threaded environments.
        !          7731: 
        !          7732:      As a result, OCIThread clients that use only these primitives will not
        !          7733:      require the existence of multiple threads in order to work correctly,
        !          7734:      i.e., they will be able to work in single-threaded environments without 
        !          7735:      branching code.
        !          7736: 
        !          7737:  3. Active Threading Primitives
        !          7738: 
        !          7739:      Active threading primitives include primitives dealing with the creation,
        !          7740:      termination, and other manipulation of threads.
        !          7741: 
        !          7742:      The reason that these primitives are described as 'active' is that they
        !          7743:      can only be used in true multi-threaded environments.  Their
        !          7744:      specifications explicitly require that it be possible to have multiple
        !          7745:      threads.  If you need to determine at runtime whether or not you are in a
        !          7746:      multi-threaded environment, call OCIThreadIsMulti() before calling an
        !          7747:      OCIThread active primitive.
        !          7748: 
        !          7749: 
        !          7750: 1.1 Initialization & Termination
        !          7751: ==================================
        !          7752: 
        !          7753: The types and functions described in this section are associated with the
        !          7754: initialization and termination of the OCIThread package.  OCIThread must
        !          7755: be properly initialized before any of its functionality can be used.
        !          7756: OCIThread's process initialization function, 'OCIThreadProcessInit()',
        !          7757: must be called with care; see below.
        !          7758: 
        !          7759: The observed behavior of the initialization and termination functions is the
        !          7760: same regardless of whether OCIThread is in single-threaded or multi-threaded
        !          7761: environment.  It is OK to call the initialization functions from both generic
        !          7762: and operating system specific (OSD) code.
        !          7763: 
        !          7764: 1.1.1 Types
        !          7765: 
        !          7766:   OCIThreadContext - OCIThread Context
        !          7767:   -------------------------------------
        !          7768: 
        !          7769:     Most calls to OCIThread functions take the OCI environment or session 
        !          7770:     handle as a parameter.  The OCIThread context is part of the OCI 
        !          7771:     environment or session handle and it must be initialized by calling 
        !          7772:     'OCIThreadInit()'.  Termination of the OCIThread context occurs by calling
        !          7773:     'OCIThreadTerm()'.
        !          7774: 
        !          7775:     The OCIThread context is a private data structure.  Clients must NEVER
        !          7776:     attempt to examine the contents of the context.
        !          7777: 
        !          7778: 1.1.2  OCIThreadProcessInit
        !          7779: 
        !          7780:   OCIThreadProcessInit - OCIThread Process INITialization
        !          7781:   --------------------------------------------------------
        !          7782: 
        !          7783:     Description
        !          7784: 
        !          7785:       This function should be called to perform OCIThread process
        !          7786:       initialization.
        !          7787: 
        !          7788:     Prototype
        !          7789: 
        !          7790:       void OCIThreadProcessInit();
        !          7791: 
        !          7792:     Returns
        !          7793: 
        !          7794:       Nothing.
        !          7795: 
        !          7796:     Notes
        !          7797: 
        !          7798:       Whether or not this function needs to be called depends on how OCI
        !          7799:       Thread is going to be used.
        !          7800: 
        !          7801:         * In a single-threaded application, calling this function is optional.
        !          7802:           If it is called at all, the first call to it must occur before calls
        !          7803:           to any other OCIThread functions.  Subsequent calls can be made
        !          7804:           without restriction; they will not have any effect.
        !          7805: 
        !          7806:         * In a multi-threaded application, this function MUST be called.  The
        !          7807:           first call to it MUST occur 'strictly before' any other OCIThread
        !          7808:           calls; i.e., no other calls to OCIThread functions (including other
        !          7809:           calls to this one) can be concurrent with the first call.
        !          7810:           Subsequent calls to this function can be made without restriction;
        !          7811:           they will not have any effect.
        !          7812: 
        !          7813: 
        !          7814: 1.1.3 OCIThreadInit
        !          7815: 
        !          7816:   OCIThreadInit - OCIThread INITialize
        !          7817:   -------------------------------------
        !          7818: 
        !          7819:     Description
        !          7820: 
        !          7821:       This initializes OCIThread context.
        !          7822: 
        !          7823:     Prototype
        !          7824: 
        !          7825:       sword OCIThreadInit(dvoid *hndl, OCIError *err);
        !          7826: 
        !          7827:         hndl(IN/OUT): The OCI environment or session handle.
        !          7828: 
        !          7829:         err(IN/OUT): The OCI error handle.  If there is an error and OCI_ERROR
        !          7830:                      is returned, the error is recorded in err and diagnostic 
        !          7831:                      information can be obtained by calling OCIErrorGet().
        !          7832: 
        !          7833:     Returns
        !          7834: 
        !          7835:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          7836: 
        !          7837:     Notes
        !          7838: 
        !          7839:       It is illegal for OCIThread clients to try an examine the memory
        !          7840:       pointed to by the returned pointer.
        !          7841: 
        !          7842:       It is safe to make concurrent calls to 'OCIThreadInit()'.  Unlike
        !          7843:       'OCIThreadProcessInit()',  there is no need to have a first call
        !          7844:       that occurs before all the others.
        !          7845: 
        !          7846:       The first time 'OCIThreadInit()' is called, it initilaizes the OCI
        !          7847:       Thread context.  It also saves a pointer to the context in some system
        !          7848:       dependent manner.  Subsequent calls to 'OCIThreadInit()' will return
        !          7849:       the same context.
        !          7850: 
        !          7851:       Each call to 'OCIThreadInit()' must eventually be matched by a call to
        !          7852:       'OCIThreadTerm()'.
        !          7853: 
        !          7854:   OCIThreadTerm - OCIThread TERMinate
        !          7855:   ------------------------------------
        !          7856: 
        !          7857:     Description
        !          7858: 
        !          7859:       This should be called to release the OCIThread context.  It should be
        !          7860:       called exactly once for each call made to 'OCIThreadInit()'.
        !          7861: 
        !          7862:     Prototype
        !          7863: 
        !          7864:       sword OCIThreadTerm(dvoid *hndl, OCIError *err);
        !          7865: 
        !          7866:         hndl(IN/OUT): The OCI environment or session handle.
        !          7867: 
        !          7868:         err(IN/OUT): The OCI error handle.  If there is an error and OCI_ERROR
        !          7869:                      is returned, the error is recorded in err and diagnostic 
        !          7870:                      information can be obtained by calling OCIErrorGet().
        !          7871: 
        !          7872:     Returns
        !          7873: 
        !          7874:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          7875: 
        !          7876:     Notes
        !          7877: 
        !          7878:       It is safe to make concurrent calls to 'OCIThreadTerm()'.
        !          7879: 
        !          7880:       'OCIThreadTerm()' will not do anything until it has been called as
        !          7881:       many times as 'OCIThreadInit()' has been called.  When that happens,
        !          7882:       it terminates the OCIThread layer and frees the memory allocated for
        !          7883:       the context.  Once this happens, the context should not be re-used.
        !          7884:       It will be necessary to obtain a new one by calling 'OCIThreadInit()'.
        !          7885: 
        !          7886: 
        !          7887:   OCIThreadIsMulti - OCIThread Is Multi-Threaded?
        !          7888:   ------------------------------------------------
        !          7889: 
        !          7890:     Description
        !          7891: 
        !          7892:       This tells the caller whether the application is running in a
        !          7893:       multi-threaded environment or a single-threaded environment.
        !          7894: 
        !          7895:     Prototype
        !          7896:       boolean OCIThreadIsMulti(void);
        !          7897: 
        !          7898:     Returns
        !          7899: 
        !          7900:       TRUE if the environment is multi-threaded;
        !          7901:       FALSE if the environment is single-threaded.
        !          7902: 
        !          7903: 
        !          7904: 1.2 Passive Threading Primitives
        !          7905: ==================================
        !          7906: 
        !          7907: 1.2.1 Types
        !          7908: 
        !          7909: The passive threading primitives deal with the manipulation of mutex, 
        !          7910: thread ID's, and thread-specific data.  Since the specifications of these 
        !          7911: primitives do not require the existence of multiple threads, they can be 
        !          7912: used both on multithreaded and single-threaded platforms.
        !          7913: 
        !          7914: 1.2.1.1  OCIThreadMutex - OCIThread Mutual Exclusion Lock
        !          7915: -----------------------------------------------------------
        !          7916: 
        !          7917:   The type 'OCIThreadMutex' is used to represent a mutual exclusion lock
        !          7918:   (mutex).  A mutex is typically used for one of two purposes: (i) to
        !          7919:   ensure that only one thread accesses a given set of data at a time, or
        !          7920:   (ii) to ensure that only one thread executes a given critical section of
        !          7921:   code at a time.
        !          7922: 
        !          7923:   Mutexes pointer can be declared as parts of client structures or as 
        !          7924:   stand-alone variables.  Before they can be used, they must be initialized 
        !          7925:   using 'OCIThreadMutexInit()'.  Once they are no longer needed, they must be
        !          7926:   destroyed using 'OCIThreadMutexDestroy()'.  A mutex pointer must NOT be 
        !          7927:   used after it is destroyed.
        !          7928: 
        !          7929:   A thread can acquire a mutex by using either 'OCIThreadMutexAcquire()' or
        !          7930:   'OCIThreadMutexTry()'.  They both ensure that only one thread at a time is
        !          7931:   allowed to hold a given mutex.  A thread that holds a mutex can release it
        !          7932:   by calling 'OCIThreadMutexRelease()'.
        !          7933: 
        !          7934: 
        !          7935: 1.2.1.2  OCIThreadKey - OCIThread Key for Thread-Specific Data
        !          7936: ----------------------------------------------------------------
        !          7937: 
        !          7938:   A key can be thought of as a process-wide variable that has a
        !          7939:   thread-specific value.  What this means is that all the threads in a
        !          7940:   process can use any given key.  However, each thread can examine or modify
        !          7941:   that key independently of the other threads.  The value that a thread sees
        !          7942:   when it examines the key will always be the same as the value that it last
        !          7943:   set for the key.  It will not see any values set for the key by the other
        !          7944:   threads.
        !          7945: 
        !          7946:   The type of the value held by a key is a 'dvoid *' generic pointer.
        !          7947: 
        !          7948:   Keys can be created using 'OCIThreadKeyInit()'.  When a key is created, its
        !          7949:   value is initialized to 'NULL' for all threads.
        !          7950: 
        !          7951:   A thread can set a key's value using 'OCIThreadKeySet()'.  A thread can
        !          7952:   get a key's value using 'OCIThreadKeyGet()'.
        !          7953: 
        !          7954:   The OCIThread key functions will save and retrieve data SPECIFIC TO THE
        !          7955:   THREAD.  When clients maintain a pool of threads and assign the threads to
        !          7956:   different tasks, it *may not* be appropriate for a task to use OCIThread
        !          7957:   key functions to save data associated with it.  Here is a scenario of how
        !          7958:   things can fail: A thread is assigned to execute the initialization of a
        !          7959:   task.  During the initialization, the task stored some data related to it
        !          7960:   in the thread using OCIThread key functions.  After the initialization,
        !          7961:   the thread is returned back to the threads pool.  Later, the threads pool
        !          7962:   manager assigned another thread to perform some operations on the task,
        !          7963:   and the task needs to retrieve those data it stored earlier in
        !          7964:   initialization.  Since the task is running in another thread, it will not
        !          7965:   be able to retrieve the same data back!  Applications that use thread
        !          7966:   pools should be aware of this and be cautious when using OCIThread key
        !          7967:   functions.
        !          7968: 
        !          7969: 
        !          7970: 1.2.1.3  OCIThreadKeyDestFunc - OCIThread Key Destructor Function Type
        !          7971: ------------------------------------------------------------------------
        !          7972: 
        !          7973:   This is the type of a pointer to a key's destructor routine.  Keys can be
        !          7974:   associated with a destructor routine when they are created (see
        !          7975:   'OCIThreadKeyInit()').
        !          7976: 
        !          7977:   A key's destructor routine will be called whenever a thread that has a
        !          7978:   non-NULL value for the key terminates.
        !          7979: 
        !          7980:   The destructor routine returns nothing and takes one parameter.  The
        !          7981:   parameter will be the value that was set for key when the thread
        !          7982:   terminated.
        !          7983: 
        !          7984:   The destructor routine is guaranteed to be called on a thread's value
        !          7985:   in the key after the termination of the thread and before process
        !          7986:   termination.  No more precise guarantee can be made about the timing
        !          7987:   of the destructor routine call; thus no code in the process may assume
        !          7988:   any post-condition of the destructor routine.  In particular, the
        !          7989:   destructor is not guaranteed to execute before a join call on the
        !          7990:   terminated thread returns.
        !          7991: 
        !          7992: 
        !          7993: 1.2.1.4  OCIThreadId - OCIThread Thread ID
        !          7994: --------------------------------------------
        !          7995: 
        !          7996:   Type 'OCIThreadId' is the type that will be used to identify a thread.
        !          7997:   At any given time, no two threads will ever have the same 'OCIThreadId'.
        !          7998:   However, 'OCIThreadId' values can be recycled; i.e., once a thread dies,
        !          7999:   a new thread may be created that has the same 'OCIThreadId' as the one
        !          8000:   that died.  In particular, the thread ID must uniquely identify a thread
        !          8001:   T within a process, and it must be consistent and valid in all threads U
        !          8002:   of the process for which it can be guaranteed that T is running
        !          8003:   concurrently with U.  The thread ID for a thread T must be retrievable
        !          8004:   within thread T.  This will be done via OCIThreadIdGet().
        !          8005: 
        !          8006:   The 'OCIThreadId' type supports the concept of a NULL thread ID: the NULL
        !          8007:   thread ID will never be the same as the ID of an actual thread.
        !          8008: 
        !          8009: 
        !          8010: 
        !          8011: 1.2.2 Function prototypes for passive primitives
        !          8012: --------------------------------------------------
        !          8013: 
        !          8014: 1.2.2.1 Mutex functions
        !          8015: -------------------------
        !          8016: 
        !          8017:   OCIThreadMutexInit - OCIThread MuteX Initialize
        !          8018:   -----------------------------------------------
        !          8019: 
        !          8020:     Description
        !          8021: 
        !          8022:       This allocate and initializes a mutex.  All mutexes must be 
        !          8023:       initialized prior to use.
        !          8024: 
        !          8025:     Prototype
        !          8026: 
        !          8027:       sword OCIThreadMutexInit(dvoid *hndl, OCIError *err, 
        !          8028:                                OCIThreadMutex **mutex);
        !          8029: 
        !          8030:         hndl(IN/OUT): The OCI environment or session handle.
        !          8031: 
        !          8032:         err(IN/OUT): The OCI error handle.  If there is an error and OCI_ERROR
        !          8033:                      is returned, the error is recorded in err and diagnostic 
        !          8034:                      information can be obtained by calling OCIErrorGet().
        !          8035: 
        !          8036:         mutex(OUT):  The mutex to initialize.
        !          8037: 
        !          8038:     Returns
        !          8039: 
        !          8040:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          8041: 
        !          8042:     Notes
        !          8043: 
        !          8044:       Multiple threads must not initialize the same mutex simultaneously.
        !          8045:       Also, a mutex must not be reinitialized until it has been destroyed (see
        !          8046:       'OCIThreadMutexDestroy()').
        !          8047: 
        !          8048:   OCIThreadMutexDestroy - OCIThread MuteX Destroy
        !          8049:   -----------------------------------------------
        !          8050: 
        !          8051:     Description
        !          8052: 
        !          8053:       This destroys and deallocate a mutex.  Each mutex must be destroyed 
        !          8054:       once it is no longer needed.
        !          8055: 
        !          8056:     Prototype
        !          8057: 
        !          8058:       sword OCIThreadMutexDestroy(dvoid *hndl, OCIError *err,
        !          8059:                                   OCIThreadMutex **mutex);
        !          8060: 
        !          8061:         hndl(IN/OUT): The OCI environment or session handle.
        !          8062: 
        !          8063:         err(IN/OUT): The OCI error handle.  If there is an error and OCI_ERROR
        !          8064:                      is returned, the error is recorded in err and diagnostic 
        !          8065:                      information can be obtained by calling OCIErrorGet().
        !          8066: 
        !          8067:         mutex(IN/OUT):   The mutex to destroy.
        !          8068: 
        !          8069:     Returns
        !          8070: 
        !          8071:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          8072: 
        !          8073:     Notes
        !          8074: 
        !          8075:       It is not legal to destroy a mutex that is uninitialized or is currently
        !          8076:       held by a thread.  The destruction of a mutex must not occur concurrently
        !          8077:       with any other operations on the mutex.  A mutex must not be used after
        !          8078:       it has been destroyed.
        !          8079: 
        !          8080: 
        !          8081:   OCIThreadMutexAcquire - OCIThread MuteX Acquire
        !          8082:   -----------------------------------------------
        !          8083: 
        !          8084:     Description
        !          8085: 
        !          8086:       This acquires a mutex for the thread in which it is called.  If the mutex
        !          8087:       is held by another thread, the calling thread is blocked until it can
        !          8088:       acquire the mutex.
        !          8089: 
        !          8090:     Prototype
        !          8091: 
        !          8092:      sword OCIThreadMutexAcquire(dvoid *hndl, OCIError *err,
        !          8093:                                  OCIThreadMutex *mutex);
        !          8094: 
        !          8095:         hndl(IN/OUT): The OCI environment or session handle.
        !          8096: 
        !          8097:         err(IN/OUT): The OCI error handle.  If there is an error, it is 
        !          8098:                      recorded in err and this function returns OCI_ERROR.  
        !          8099:                      Diagnostic information can be obtained by calling 
        !          8100:                      OCIErrorGet().
        !          8101: 
        !          8102:         mutex(IN/OUT):   The mutex to acquire.
        !          8103: 
        !          8104:     Returns
        !          8105: 
        !          8106:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          8107: 
        !          8108:     Notes
        !          8109: 
        !          8110:       It is illegal to attempt to acquire an uninitialized mutex.
        !          8111: 
        !          8112:       This function's behavior is undefined if it is used by a thread to
        !          8113:       acquire a mutex that is already held by that thread.
        !          8114: 
        !          8115: 
        !          8116: 
        !          8117:   OCIThreadMutexRelease - OCIThread MuteX Release
        !          8118:   -----------------------------------------------
        !          8119: 
        !          8120:     Description
        !          8121: 
        !          8122:       This releases a mutex.  If there are any threads blocked on the mutex,
        !          8123:       one of them will acquire it and become unblocked.
        !          8124: 
        !          8125:     Prototype
        !          8126: 
        !          8127:       sword OCIThreadMutexRelease(dvoid *hndl, OCIError *err,
        !          8128:                                   OCIThreadMutex *mutex);
        !          8129: 
        !          8130:         hndl(IN/OUT): The OCI environment or session handle.
        !          8131: 
        !          8132:         err(IN/OUT): The OCI error handle.  If there is an error and OCI_ERROR
        !          8133:                      is returned, the error is recorded in err and diagnostic 
        !          8134:                      information can be obtained by calling OCIErrorGet().
        !          8135: 
        !          8136:         mutex(IN/OUT):   The mutex to release.
        !          8137: 
        !          8138:     Returns
        !          8139: 
        !          8140:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          8141: 
        !          8142:     Notes
        !          8143: 
        !          8144:       It is illegal to attempt to release an uninitialized mutex.  It is also
        !          8145:       illegal for a thread to release a mutex that it does not hold.
        !          8146: 
        !          8147: 
        !          8148:   OCIThreadKeyInit - OCIThread KeY Initialize
        !          8149:   -------------------------------------------
        !          8150: 
        !          8151:     Description
        !          8152: 
        !          8153:       This creates a key.  Each call to this routine allocate and generates 
        !          8154:       a new key that is distinct from all other keys.
        !          8155: 
        !          8156:     Prototype
        !          8157: 
        !          8158:       sword OCIThreadKeyInit(dvoid *hndl, OCIError *err, OCIThreadKey **key,
        !          8159:                              OCIThreadKeyDestFunc destFn);
        !          8160: 
        !          8161:         hndl(IN/OUT): The OCI environment or session handle.
        !          8162: 
        !          8163:         err(IN/OUT): The OCI error handle.  If there is an error and OCI_ERROR
        !          8164:                      is returned, the error is recorded in err and diagnostic 
        !          8165:                      information can be obtained by calling OCIErrorGet().
        !          8166: 
        !          8167:         key(OUT):    The 'OCIThreadKey' in which to create the new key.
        !          8168: 
        !          8169:         destFn(IN):  The destructor for the key.  NULL is permitted.
        !          8170: 
        !          8171:     Returns
        !          8172: 
        !          8173:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          8174: 
        !          8175:     Notes
        !          8176: 
        !          8177:       Once this function executes successfully, a pointer to an allocated and 
        !          8178:       initialized key is return.  That key can be used with 'OCIThreadKeyGet()'
        !          8179:       and 'OCIThreadKeySet()'.  The initial value of the key will be 'NULL' for
        !          8180:       all threads.
        !          8181: 
        !          8182:       It is illegal for this function to be called more than once to create the
        !          8183:       same key (i.e., to be called more than once with the same value for the
        !          8184:       'key' parameter).
        !          8185: 
        !          8186:       If the 'destFn' parameter is not NULL, the routine pointed to by 'destFn'
        !          8187:       will be called whenever a thread that has a non-NULL value for the key
        !          8188:       terminates.  The routine will be called with one parameter.  The
        !          8189:       parameter will be the key's value for the thread at the time at which the
        !          8190:       thread terminated.
        !          8191:       If the key does not need a destructor function, pass NULL for 'destFn'.
        !          8192: 
        !          8193: 
        !          8194:   OCIThreadKeyDestroy - OCIThread KeY DESTROY
        !          8195:   -------------------------------------------
        !          8196: 
        !          8197:    Description
        !          8198: 
        !          8199:      Destroy and deallocate the key pointed to by 'key'.
        !          8200: 
        !          8201:     Prototype
        !          8202: 
        !          8203:       sword OCIThreadKeyDestroy(dvoid *hndl, OCIError *err, 
        !          8204:                                 OCIThreadKey **key);
        !          8205: 
        !          8206:         hndl(IN/OUT): The OCI environment or session handle.
        !          8207: 
        !          8208:         err(IN/OUT): The OCI error handle.  If there is an error and OCI_ERROR
        !          8209:                      is returned, the error is recorded in err and diagnostic 
        !          8210:                      information can be obtained by calling OCIErrorGet().
        !          8211: 
        !          8212:         key(IN/OUT):  The 'OCIThreadKey' in which to destroy the key.
        !          8213:  
        !          8214:     Returns
        !          8215: 
        !          8216:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          8217: 
        !          8218:     Notes
        !          8219: 
        !          8220:       This is different from the destructor function callback passed to the
        !          8221:       key create routine.  This new destroy function 'OCIThreadKeyDestroy' is 
        !          8222:       used to terminate any resources OCI THREAD acquired when it created 
        !          8223:       'key'.  [The 'OCIThreadKeyDestFunc' callback type is a key VALUE 
        !          8224:       destructor; it does in no way operate on the key itself.]
        !          8225: 
        !          8226:       This must be called once the user has finished using the key.  Not
        !          8227:       calling the key destroy function may result in memory leaks.
        !          8228: 
        !          8229: 
        !          8230: 
        !          8231: 
        !          8232: 1.2.2.2 Thread Key operations
        !          8233: -------------------------------
        !          8234: 
        !          8235:   OCIThreadKeyGet - OCIThread KeY Get value
        !          8236:   -----------------------------------------
        !          8237: 
        !          8238:     Description
        !          8239: 
        !          8240:       This gets the calling thread's current value for a key.
        !          8241: 
        !          8242:     Prototype
        !          8243: 
        !          8244:       sword OCIThreadKeyGet(dvoid *hndl, OCIError *err, OCIThreadKey *key,
        !          8245:                             dvoid **pValue);
        !          8246: 
        !          8247:         hndl(IN/OUT): The OCI environment or session handle.
        !          8248: 
        !          8249:         err(IN/OUT): The OCI error handle.  If there is an error and OCI_ERROR
        !          8250:                      is returned, the error is recorded in err and diagnostic 
        !          8251:                      information can be obtained by calling OCIErrorGet().
        !          8252: 
        !          8253:         key(IN):          The key.
        !          8254: 
        !          8255:         pValue(IN/OUT):   The location in which to place the thread-specific
        !          8256:                           key value.
        !          8257: 
        !          8258:     Returns
        !          8259: 
        !          8260:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          8261: 
        !          8262:     Notes
        !          8263: 
        !          8264:       It is illegal to use this function on a key that has not been created
        !          8265:       using 'OCIThreadKeyInit()'.
        !          8266: 
        !          8267:       If the calling thread has not yet assigned a value to the key, 'NULL' is
        !          8268:       placed in the location pointed to by 'pValue'.
        !          8269: 
        !          8270: 
        !          8271:   OCIThreadKeySet - OCIThread KeY Set value
        !          8272:   -----------------------------------------
        !          8273: 
        !          8274:     Description
        !          8275: 
        !          8276:       This sets the calling thread's value for a key.
        !          8277: 
        !          8278:     Prototype
        !          8279: 
        !          8280:       sword OCIThreadKeySet(dvoid *hndl, OCIError *err, OCIThreadKey *key,
        !          8281:                             dvoid *value);
        !          8282: 
        !          8283:         hndl(IN/OUT): The OCI environment or session handle.
        !          8284: 
        !          8285:         err(IN/OUT): The OCI error handle.  If there is an error and OCI_ERROR
        !          8286:                      is returned, the error is recorded in err and diagnostic 
        !          8287:                      information can be obtained by calling OCIErrorGet().
        !          8288: 
        !          8289:         key(IN/OUT): The key.
        !          8290: 
        !          8291:         value(IN):   The thread-specific value to set in the key.
        !          8292: 
        !          8293:     Returns
        !          8294: 
        !          8295:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          8296: 
        !          8297:     Notes
        !          8298: 
        !          8299:       It is illegal to use this function on a key that has not been created
        !          8300:       using 'OCIThreadKeyInit()'.
        !          8301: 
        !          8302: 1.2.2.3  Thread Id
        !          8303: --------------------
        !          8304: 
        !          8305:   OCIThreadIdInit - OCIThread Thread Id INITialize
        !          8306:   --------------------------------------------------
        !          8307: 
        !          8308:     Description
        !          8309: 
        !          8310:       Allocate and initialize the thread id 'tid'.
        !          8311: 
        !          8312:     Prototype
        !          8313: 
        !          8314:       sword OCIThreadIdInit(dvoid *hndl, OCIError *err, OCIThreadId **tid);
        !          8315: 
        !          8316:         hndl(IN/OUT): The OCI environment or session handle.
        !          8317: 
        !          8318:         err(IN/OUT): The OCI error handle.  If there is an error and OCI_ERROR
        !          8319:                      is returned, the error is recorded in err and diagnostic 
        !          8320:                      information can be obtained by calling OCIErrorGet().
        !          8321: 
        !          8322:         tid (OUT):   Pointer to the thread ID to initialize.
        !          8323: 
        !          8324:     Returns
        !          8325: 
        !          8326:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          8327: 
        !          8328: 
        !          8329:   OCIThreadIdDestroy - OCIThread Thread Id DESTROY
        !          8330:   --------------------------------------------------
        !          8331: 
        !          8332:     Description
        !          8333: 
        !          8334:       Destroy and deallocate the thread id 'tid'.
        !          8335: 
        !          8336:     Prototype
        !          8337: 
        !          8338:       sword OCIThreadIdDestroy(dvoid *hndl, OCIError *err, OCIThreadId **tid);
        !          8339: 
        !          8340:         hndl(IN/OUT): The OCI environment or session handle.
        !          8341: 
        !          8342:         err(IN/OUT): The OCI error handle.  If there is an error and OCI_ERROR
        !          8343:                      is returned, the error is recorded in err and diagnostic 
        !          8344:                      information can be obtained by calling OCIErrorGet().
        !          8345: 
        !          8346:         tid(IN/OUT):        Pointer to the thread ID to destroy.
        !          8347: 
        !          8348:     Returns
        !          8349: 
        !          8350:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          8351: 
        !          8352:     Note
        !          8353: 
        !          8354:       'tid' should be initialized by OCIThreadIdInit().
        !          8355: 
        !          8356: 
        !          8357:   OCIThreadIdSet - OCIThread Thread Id Set
        !          8358:   -----------------------------------------
        !          8359: 
        !          8360:     Description
        !          8361: 
        !          8362:       This sets one 'OCIThreadId' to another.
        !          8363: 
        !          8364:     Prototype
        !          8365: 
        !          8366:       sword OCIThreadIdSet(dvoid *hndl, OCIError *err, 
        !          8367:                            OCIThreadId *tidDest,
        !          8368:                            OCIThreadId *tidSrc);
        !          8369: 
        !          8370:         hndl(IN/OUT): The OCI environment or session handle.
        !          8371: 
        !          8372:         err(IN/OUT): The OCI error handle.  If there is an error and OCI_ERROR
        !          8373:                      is returned, the error is recorded in err and diagnostic 
        !          8374:                      information can be obtained by calling OCIErrorGet().
        !          8375: 
        !          8376:         tidDest(OUT):   This should point to the location of the 'OCIThreadId'
        !          8377:                         to be set to.
        !          8378: 
        !          8379:         tidSrc(IN):     This should point to the 'OCIThreadId' to set from.
        !          8380: 
        !          8381:     Returns
        !          8382: 
        !          8383:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          8384: 
        !          8385:     Notes
        !          8386: 
        !          8387:       'tid' should be initialized by OCIThreadIdInit().
        !          8388: 
        !          8389: 
        !          8390:   OCIThreadIdSetNull - OCIThread Thread Id Set Null
        !          8391:   ---------------------------------------------------------
        !          8392: 
        !          8393:     Description
        !          8394: 
        !          8395:       This sets the NULL thread ID to a given 'OCIThreadId'.
        !          8396: 
        !          8397:     Prototype
        !          8398: 
        !          8399:       sword OCIThreadIdSetNull(dvoid *hndl, OCIError *err,
        !          8400:                                OCIThreadId *tid);
        !          8401: 
        !          8402:         hndl(IN/OUT): The OCI environment or session handle.
        !          8403: 
        !          8404:         err(IN/OUT): The OCI error handle.  If there is an error, it is 
        !          8405:                      recorded in err and this function returns OCI_ERROR.  
        !          8406:                      Diagnostic information can be obtained by calling 
        !          8407:                      OCIErrorGet().
        !          8408: 
        !          8409:         tid(OUT):    This should point to the 'OCIThreadId' in which to put
        !          8410:                      the NULL thread ID.
        !          8411: 
        !          8412:     Returns
        !          8413: 
        !          8414:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          8415: 
        !          8416:     Notes
        !          8417: 
        !          8418:       'tid' should be initialized by OCIThreadIdInit().
        !          8419: 
        !          8420: 
        !          8421:   OCIThreadIdGet - OCIThread Thread Id Get
        !          8422:   ------------------------------------------
        !          8423: 
        !          8424:     Description
        !          8425: 
        !          8426:       This retrieves the 'OCIThreadId' of the thread in which it is called.
        !          8427: 
        !          8428:     Prototype
        !          8429: 
        !          8430:       sword OCIThreadIdGet(dvoid *hndl, OCIError *err,
        !          8431:                            OCIThreadId *tid);
        !          8432: 
        !          8433:         hndl(IN/OUT): The OCI environment or session handle.
        !          8434: 
        !          8435:         err(IN/OUT): The OCI error handle.  If there is an error and OCI_ERROR
        !          8436:                      is returned, the error is recorded in err and diagnostic 
        !          8437:                      information can be obtained by calling OCIErrorGet().
        !          8438: 
        !          8439:         tid(OUT):    This should point to the location in which to place the
        !          8440:                      ID of the calling thread.
        !          8441: 
        !          8442:     Returns
        !          8443: 
        !          8444:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          8445: 
        !          8446:     Notes
        !          8447: 
        !          8448:       'tid' should be initialized by OCIThreadIdInit().
        !          8449: 
        !          8450:       When OCIThread is used in a single-threaded environment,
        !          8451:       OCIThreadIdGet() will always place the same value in the location
        !          8452:       pointed to by 'tid'.  The exact value itself is not important.  The
        !          8453:       important thing is that it is not the same as the NULL thread ID and
        !          8454:       that it is always the same value.
        !          8455: 
        !          8456: 
        !          8457:   OCIThreadIdSame - OCIThread Thread Ids Same?
        !          8458:   ----------------------------------------------
        !          8459: 
        !          8460:     Description
        !          8461: 
        !          8462:       This determines whether or not two 'OCIThreadId's represent the same
        !          8463:       thread.
        !          8464: 
        !          8465:     Prototype
        !          8466: 
        !          8467:       sword OCIThreadIdSame(dvoid *hndl, OCIError *err,
        !          8468:                             OCIThreadId *tid1, OCIThreadId *tid2,
        !          8469:                             boolean *result);
        !          8470: 
        !          8471:         hndl(IN/OUT): The OCI environment or session handle.
        !          8472: 
        !          8473:         err(IN/OUT): The OCI error handle.  If there is an error and OCI_ERROR
        !          8474:                      is returned, the error is recorded in err and diagnostic 
        !          8475:                      information can be obtained by calling OCIErrorGet().
        !          8476: 
        !          8477:         tid1(IN):   Pointer to the first 'OCIThreadId'.
        !          8478: 
        !          8479:         tid2(IN):   Pointer to the second 'OCIThreadId'.
        !          8480:        
        !          8481:        result(IN/OUT): Pointer to the result.
        !          8482: 
        !          8483:     Returns
        !          8484: 
        !          8485:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          8486: 
        !          8487:     Notes
        !          8488: 
        !          8489:       If 'tid1' and 'tid2' represent the same thread, 'result' is set to TRUE.
        !          8490:       Otherwise, 'result' is set to FALSE.
        !          8491: 
        !          8492:       'result' is set to TRUE if both 'tid1' and 'tid2' are the NULL thread ID.
        !          8493: 
        !          8494:       'ti1d' and 'tid2' should be initialized by OCIThreadIdInit().
        !          8495: 
        !          8496: 
        !          8497:   OCIThreadIdNull - OCIThread Thread Id NULL?
        !          8498:   ---------------------------------------------
        !          8499: 
        !          8500:     Description
        !          8501: 
        !          8502:       This determines whether or not a given 'OCIThreadId' is the NULL thread
        !          8503:       ID.
        !          8504: 
        !          8505:     Prototype
        !          8506: 
        !          8507:       sword OCIThreadIdNull(dvoid *hndl, OCIError *err,
        !          8508:                             OCIThreadId *tid,
        !          8509:                             boolean *result);
        !          8510: 
        !          8511:         hndl(IN/OUT): The OCI environment or session handle.
        !          8512: 
        !          8513:         err(IN/OUT): The OCI error handle.  If there is an error and OCI_ERROR
        !          8514:                      is returned, the error is recorded in err and diagnostic 
        !          8515:                      information can be obtained by calling OCIErrorGet().
        !          8516: 
        !          8517:         tid(IN):    Pointer to the 'OCIThreadId' to check.
        !          8518: 
        !          8519:        result(IN/OUT): Pointer to the result.
        !          8520: 
        !          8521:     Returns
        !          8522: 
        !          8523:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          8524: 
        !          8525:     Notes
        !          8526: 
        !          8527:       If 'tid' is the NULL thread ID, 'result' is set to TRUE.  Otherwise, 
        !          8528:       'result' is set to FALSE.
        !          8529: 
        !          8530:       'tid' should be initialized by OCIThreadIdInit().
        !          8531: 
        !          8532: 
        !          8533: 1.3 Active Threading Primitives
        !          8534: =================================
        !          8535: 
        !          8536: The active threading primitives deal with the manipulation of actual
        !          8537: threads.  Because the specifications of most of these primitives require
        !          8538: that it be possible to have multiple threads, they work correctly only in
        !          8539: the enabled OCIThread; In the disabled OCIThread, they always return
        !          8540: failure.  The exception is OCIThreadHandleGet(); it may be called in a 
        !          8541: single-threaded environment, in which case it will have no effect.
        !          8542: 
        !          8543: Active primitives should only be called by code running in a multi-threaded
        !          8544: environment.  You can call OCIThreadIsMulti() to determine whether the 
        !          8545: environment is multi-threaded or single-threaded.
        !          8546: 
        !          8547: 
        !          8548: 1.3.1  Types
        !          8549: --------------
        !          8550: 
        !          8551: 1.3.1.1    OCIThreadHandle - OCIThread Thread Handle
        !          8552: ------------------------------------------------------
        !          8553: 
        !          8554:   Type 'OCIThreadHandle' is used to manipulate a thread in the active
        !          8555:   primitives:  OCIThreadJoin()and OCIThreadClose().  A thread handle opened by
        !          8556:   OCIThreadCreate() must be closed in a matching call to
        !          8557:   OCIThreadClose().  A thread handle is invalid after the call to
        !          8558:   OCIThreadClose().
        !          8559: 
        !          8560:   The distinction between a thread ID and a thread handle in OCIThread usage
        !          8561:   follows the distinction between the thread ID and the thread handle on
        !          8562:   Windows NT.  On many platforms, the underlying native types are the same.
        !          8563: 
        !          8564: 
        !          8565: 1.3.2  Functions
        !          8566: ------------------
        !          8567: 
        !          8568:   OCIThreadHndInit - OCIThread HaNDle Initialize
        !          8569:   ----------------------------------------------
        !          8570: 
        !          8571:     Description
        !          8572: 
        !          8573:       Allocate and initialize the thread handle.
        !          8574: 
        !          8575:     Prototype
        !          8576: 
        !          8577:       sword OCIThreadHndInit(dvoid *hndl, OCIError *err, 
        !          8578:                              OCIThreadHandle **thnd);
        !          8579: 
        !          8580:         hndl(IN/OUT): The OCI environment or session handle.
        !          8581: 
        !          8582:         err(IN/OUT): The OCI error handle.  If there is an error and OCI_ERROR
        !          8583:                      is returned, the error is recorded in err and diagnostic 
        !          8584:                      information can be obtained by calling OCIErrorGet().
        !          8585: 
        !          8586:         thnd(OUT):   The address of pointer to the thread handle to initialize.
        !          8587: 
        !          8588:     Returns
        !          8589: 
        !          8590:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          8591: 
        !          8592: 
        !          8593:   OCIThreadHndDestroy - OCIThread HaNDle Destroy
        !          8594:   ----------------------------------------------
        !          8595: 
        !          8596:     Description
        !          8597: 
        !          8598:       Destroy and deallocate the thread handle.
        !          8599: 
        !          8600:     Prototype
        !          8601: 
        !          8602:       sword OCIThreadHndDestroy(dvoid *hndl, OCIError *err, 
        !          8603:                                 OCIThreadHandle **thnd);
        !          8604: 
        !          8605:         hndl(IN/OUT): The OCI environment or session handle.
        !          8606: 
        !          8607:         err(IN/OUT): The OCI error handle.  If there is an error and OCI_ERROR
        !          8608:                      is returned, the error is recorded in err and diagnostic 
        !          8609:                      information can be obtained by calling OCIErrorGet().
        !          8610: 
        !          8611:         thnd(IN/OUT):  The address of pointer to the thread handle to destroy.
        !          8612: 
        !          8613:     Returns
        !          8614: 
        !          8615:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          8616: 
        !          8617:     Notes
        !          8618: 
        !          8619:       'thnd' should be initialized by OCIThreadHndInit().
        !          8620: 
        !          8621: 
        !          8622:   OCIThreadCreate - OCIThread Thread Create
        !          8623:   -----------------------------------------
        !          8624: 
        !          8625:     Description
        !          8626: 
        !          8627:       This creates a new thread.
        !          8628: 
        !          8629:     Prototype
        !          8630: 
        !          8631:       sword OCIThreadCreate(dvoid *hndl, OCIError *err,
        !          8632:                             void (*start)(dvoid *), dvoid *arg,
        !          8633:                             OCIThreadId *tid, OCIThreadHandle *tHnd);
        !          8634: 
        !          8635:         hndl(IN/OUT): The OCI environment or session handle.
        !          8636: 
        !          8637:         err(IN/OUT): The OCI error handle.  If there is an error and OCI_ERROR
        !          8638:                      is returned, the error is recorded in err and diagnostic 
        !          8639:                      information can be obtained by calling OCIErrorGet().
        !          8640: 
        !          8641:         start(IN):    The function in which the new thread should begin
        !          8642:                       execution.
        !          8643: 
        !          8644:         arg(IN):      The argument to give the function pointed to by 'start'.
        !          8645: 
        !          8646:         tid(IN/OUT):  If not NULL, gets the ID for the new thread.
        !          8647: 
        !          8648:         tHnd(IN/OUT): If not NULL, gets the handle for the new thread.
        !          8649: 
        !          8650:     Returns
        !          8651: 
        !          8652:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          8653: 
        !          8654:     Notes
        !          8655: 
        !          8656:       The new thread will start by executing a call to the function pointed
        !          8657:       to by 'start' with the argument given by 'arg'.  When that function
        !          8658:       returns, the new thread will terminate.  The function should not
        !          8659:       return a value and should accept one parameter, a 'dvoid *'.
        !          8660: 
        !          8661:       The call to OCIThreadCreate() must be matched by a call to
        !          8662:       OCIThreadClose() if and only if tHnd is non-NULL.
        !          8663: 
        !          8664:       If tHnd is NULL, a thread ID placed in *tid will not be valid in the
        !          8665:       calling thread because the timing of the spawned thread's termination
        !          8666:       is unknown.
        !          8667: 
        !          8668:       'tid' should be initialized by OCIThreadIdInit().
        !          8669: 
        !          8670:       'thnd' should be initialized by OCIThreadHndInit().
        !          8671: 
        !          8672: 
        !          8673: 
        !          8674:   OCIThreadJoin - OCIThread Thread Join
        !          8675:   -------------------------------------
        !          8676: 
        !          8677:     Description
        !          8678: 
        !          8679:       This function allows the calling thread to 'join' with another thread.
        !          8680:       It blocks the caller until the specified thread terminates.
        !          8681: 
        !          8682:     Prototype
        !          8683: 
        !          8684:       sword OCIThreadJoin(dvoid *hndl, OCIError *err, OCIThreadHandle *tHnd);
        !          8685: 
        !          8686:         hndl(IN/OUT): The OCI environment or session handle.
        !          8687: 
        !          8688:         err(IN/OUT): The OCI error handle.  If there is an error and OCI_ERROR
        !          8689:                      is returned, the error is recorded in err and diagnostic 
        !          8690:                      information can be obtained by calling OCIErrorGet().
        !          8691: 
        !          8692:         tHnd(IN):    The 'OCIThreadHandle' of the thread to join with.
        !          8693: 
        !          8694:     Returns
        !          8695: 
        !          8696:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          8697: 
        !          8698:     Notes
        !          8699: 
        !          8700:       'thnd' should be initialized by OCIThreadHndInit().
        !          8701: 
        !          8702:       The result of multiple threads all trying to join with the same thread is
        !          8703:       undefined.
        !          8704: 
        !          8705: 
        !          8706:   OCIThreadClose - OCIThread Thread Close
        !          8707:   ---------------------------------------
        !          8708: 
        !          8709:    Description
        !          8710: 
        !          8711:      This function should be called to close a thread handle.
        !          8712: 
        !          8713:    Prototype
        !          8714: 
        !          8715:      sword OCIThreadClose(dvoid *hndl, OCIError *err, OCIThreadHandle *tHnd);
        !          8716: 
        !          8717:         hndl(IN/OUT): The OCI environment or session handle.
        !          8718: 
        !          8719:         err(IN/OUT): The OCI error handle.  If there is an error and OCI_ERROR
        !          8720:                      is returned, the error is recorded in err and diagnostic 
        !          8721:                      information can be obtained by calling OCIErrorGet().
        !          8722: 
        !          8723:         tHnd(IN/OUT):    The OCIThread thread handle to close.
        !          8724: 
        !          8725:    Returns
        !          8726: 
        !          8727:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          8728: 
        !          8729:    Notes
        !          8730: 
        !          8731:       'thnd' should be initialized by OCIThreadHndInit().
        !          8732: 
        !          8733:       Both thread handle and the thread ID that was returned by the same call
        !          8734:       to OCIThreadCreate() are invalid after the call to OCIThreadClose().
        !          8735: 
        !          8736: 
        !          8737: 
        !          8738:   OCIThreadHandleGet - OCIThread Thread Get Handle
        !          8739:   ------------------------------------------------
        !          8740: 
        !          8741:     Description
        !          8742: 
        !          8743:       Retrieve the 'OCIThreadHandle' of the thread in which it is called.
        !          8744: 
        !          8745:     Prototype
        !          8746: 
        !          8747:       sword OCIThreadHandleGet(dvoid *hndl, OCIError *err,
        !          8748:                                OCIThreadHandle *tHnd);
        !          8749: 
        !          8750:         hndl(IN/OUT): The OCI environment or session handle.
        !          8751: 
        !          8752:         err(IN/OUT): The OCI error handle.  If there is an error and OCI_ERROR
        !          8753:                      is returned, the error is recorded in err and diagnostic 
        !          8754:                      information can be obtained by calling OCIErrorGet().
        !          8755: 
        !          8756:         tHnd(IN/OUT):      If not NULL, the location to place the thread
        !          8757:                            handle for the thread.
        !          8758: 
        !          8759:      Returns
        !          8760: 
        !          8761:       OCI_SUCCESS, OCI_ERROR or OCI_INVALID_HANDLE.
        !          8762: 
        !          8763:     Notes
        !          8764: 
        !          8765:       'thnd' should be initialized by OCIThreadHndInit().   
        !          8766: 
        !          8767:       The thread handle 'tHnd' retrieved by this function must be closed 
        !          8768:       with OCIThreadClose() and destroyed by OCIThreadHndDestroy() after it
        !          8769:       is used.
        !          8770: 
        !          8771: 
        !          8772: 
        !          8773: 
        !          8774: 1.4 Using OCIThread
        !          8775: =====================
        !          8776: 
        !          8777: This section summarizes some of the more important details relating to the use
        !          8778: of OCIThread.
        !          8779: 
        !          8780:   * Process initialization
        !          8781: 
        !          8782:     OCIThread only requires that the process initialization function
        !          8783:     ('OCIThreadProcessInit()') be called when OCIThread is being used in a
        !          8784:     multi-threaded application.  Failing to call 'OCIThreadProcessInit()' in
        !          8785:     a single-threaded application is not an error.
        !          8786: 
        !          8787:   * OCIThread initialization
        !          8788: 
        !          8789:     Separate calls to 'OCIThreadInit()' will all return the same OCIThread
        !          8790:     context.
        !          8791: 
        !          8792:     Also, remember that each call to 'OCIThreadInit()' must eventually be
        !          8793:     matched by a call to 'OCIThreadTerm()'.
        !          8794: 
        !          8795:   * Active vs. Passive Threading primitives
        !          8796: 
        !          8797:     OCIThread client code written without using any active primitives can be
        !          8798:     compiled and used without change on both single-threaded and
        !          8799:     multi-threaded platforms.
        !          8800: 
        !          8801:     OCIThread client code written using active primitives will only work
        !          8802:     correctly on multi-threaded platforms.  In order to write a version of the
        !          8803:     same application to run on single-threaded platform, it is necessary to 
        !          8804:     branch the your code, whether by branching versions of the source file or 
        !          8805:     by branching at runtime with the OCIThreadIsMulti() call.
        !          8806: ******************************************************************************/
        !          8807: 
        !          8808: /*****************************************************************************
        !          8809:                          ACTUAL PROTOTYPE DECLARATIONS
        !          8810: ******************************************************************************/
        !          8811: 
        !          8812: void OCIThreadProcessInit(/*_ _*/);
        !          8813: 
        !          8814: sword OCIThreadInit(/*_ dvoid *hndl, OCIError *err _*/);
        !          8815: 
        !          8816: sword OCIThreadTerm(/*_ dvoid *hndl, OCIError *err _*/);
        !          8817: 
        !          8818: boolean OCIThreadIsMulti(/*_ void _*/);
        !          8819: 
        !          8820: sword OCIThreadMutexInit(/*_ dvoid *hndl, OCIError *err, 
        !          8821:                              OCIThreadMutex **mutex _*/);
        !          8822: 
        !          8823: sword OCIThreadMutexDestroy(/*_ dvoid *hndl, OCIError *err, 
        !          8824:                                 OCIThreadMutex **mutex _*/);
        !          8825: 
        !          8826: sword OCIThreadMutexAcquire(/*_ dvoid *hndl, OCIError *err,
        !          8827:                                 OCIThreadMutex *mutex _*/);
        !          8828: 
        !          8829: sword OCIThreadMutexRelease(/*_ dvoid *hndl, OCIError *err,
        !          8830:                                 OCIThreadMutex *mutex _*/);
        !          8831: 
        !          8832: sword OCIThreadKeyInit(/*_ dvoid *hndl, OCIError *err, OCIThreadKey **key,
        !          8833:                            OCIThreadKeyDestFunc destFn _*/);
        !          8834: 
        !          8835: sword OCIThreadKeyDestroy(/*_ dvoid *hndl, OCIError *err, 
        !          8836:                               OCIThreadKey **key _*/);
        !          8837: 
        !          8838: sword OCIThreadKeyGet(/*_ dvoid *hndl, OCIError *err, OCIThreadKey *key,
        !          8839:                           dvoid **pValue _*/);
        !          8840: 
        !          8841: sword OCIThreadKeySet(/*_ dvoid *hndl, OCIError *err, OCIThreadKey *key,
        !          8842:                           dvoid *value _*/);
        !          8843: 
        !          8844: sword OCIThreadIdInit(/*_ dvoid *hndl, OCIError *err, OCIThreadId **tid _*/);
        !          8845: 
        !          8846: sword OCIThreadIdDestroy(/*_ dvoid *hndl, OCIError *err, 
        !          8847:                              OCIThreadId **tid _*/);
        !          8848: 
        !          8849: sword OCIThreadIdSet(/*_ dvoid *hndl, OCIError *err, 
        !          8850:                          OCIThreadId *tidDest, OCIThreadId *tidSrc _*/);
        !          8851: 
        !          8852: sword OCIThreadIdSetNull(/*_ dvoid *hndl, OCIError *err, OCIThreadId *tid _*/);
        !          8853: 
        !          8854: sword OCIThreadIdGet(/*_ dvoid *hndl, OCIError *err, OCIThreadId *tid _*/);
        !          8855: 
        !          8856: sword OCIThreadIdSame(/*_ dvoid *hndl, OCIError *err,
        !          8857:                           OCIThreadId *tid1, OCIThreadId *tid2,
        !          8858:                           boolean *result _*/);
        !          8859: 
        !          8860: sword OCIThreadIdNull(/*_ dvoid *hndl, OCIError *err,
        !          8861:                           OCIThreadId *tid, boolean *result _*/);
        !          8862: 
        !          8863: sword OCIThreadHndInit(/*_ dvoid *hndl, OCIError *err, 
        !          8864:                            OCIThreadHandle **thnd _*/);
        !          8865: 
        !          8866: sword OCIThreadHndDestroy(/*_ dvoid *hndl, OCIError *err, 
        !          8867:                               OCIThreadHandle **thnd _*/);
        !          8868: 
        !          8869: sword OCIThreadCreate(/*_ dvoid *hndl, OCIError *err,
        !          8870:                           void (*start)(dvoid *), dvoid *arg,
        !          8871:                           OCIThreadId *tid, OCIThreadHandle *tHnd _*/);
        !          8872: 
        !          8873: sword OCIThreadJoin(/*_ dvoid *hndl, OCIError *err, OCIThreadHandle *tHnd _*/);
        !          8874: 
        !          8875: sword OCIThreadClose(/*_ dvoid *hndl, OCIError *err, 
        !          8876:                          OCIThreadHandle *tHnd _*/);
        !          8877: 
        !          8878: sword OCIThreadHandleGet(/*_ dvoid *hndl, OCIError *err, 
        !          8879:                              OCIThreadHandle *tHnd _*/);
        !          8880: /*----------------- End OCI Thread interface Extensions ---------------------*/
        !          8881: 
        !          8882: /*--------------- Begin OCI Client Notification Interfaces ------------------*/
        !          8883: 
        !          8884: typedef ub4 (*OCISubscriptionNotify)(/*_ dvoid *ctx, OCISubscription *subscrhp,
        !          8885:                                          dvoid *pay, ub4 payl,
        !          8886:                                          dvoid *desc, ub4 mode _*/);
        !          8887: 
        !          8888: sword OCISubscriptionRegister (/*_ OCISvcCtx *svchp, 
        !          8889:                                    OCISubscription **subscrhpp, ub2 count, 
        !          8890:                                    OCIError *errhp, ub4 mode _*/);
        !          8891: 
        !          8892: sword OCISubscriptionPost (/*_ OCISvcCtx *svchp, OCISubscription **subscrhpp,
        !          8893:                                ub2 count, OCIError *errhp, ub4 mode _*/);
        !          8894: 
        !          8895: sword OCISubscriptionUnRegister (/*_ OCISvcCtx *svchp, 
        !          8896:                                      OCISubscription *subscrhp,
        !          8897:                                      OCIError *errhp, ub4 mode _*/);
        !          8898: 
        !          8899: sword OCISubscriptionDisable (/*_ OCISubscription *subscrhp,
        !          8900:                                   OCIError *errhp, ub4 mode _*/);
        !          8901: 
        !          8902: sword OCISubscriptionEnable (/*_ OCISubscription *subscrhp,
        !          8903:                                  OCIError *errhp, ub4 mode _*/);
        !          8904: 
        !          8905: /*------------------- End OCI Client Notification Interfaces ----------------*/
        !          8906: 
        !          8907: /*----------------- Extensions to Datetime interfaces -----------------------*/
        !          8908: 
        !          8909: sword OCIDateTimeGetTime(/*_ dvoid *hndl, OCIError *err, 
        !          8910:                           OCIDateTime *datetime, ub1 *hour, ub1 *min, 
        !          8911:                           ub1 *sec, ub4 *fsec_*/);
        !          8912: 
        !          8913: sword OCIDateTimeGetDate(/*_dvoid *hndl, OCIError *err, 
        !          8914:                           CONST OCIDateTime *date,
        !          8915:                           sb2 *year, ub1 *month, ub1 *day _*/);
        !          8916: 
        !          8917: sword OCIDateTimeGetTimeZoneOffset(/*_ dvoid *hndl,OCIError *err,
        !          8918:                   CONST OCIDateTime   *datetime,sb1 *hour,sb1 *minute _*/);
        !          8919: 
        !          8920: sword OCIDateTimeConstruct(/*_ dvoid  *hndl,OCIError *err,
        !          8921:                OCIDateTime *datetime,
        !          8922:                sb2 yr,ub1 mnth,ub1 dy,ub1 hr,ub1 mm,ub1 ss,ub4 fsec,
        !          8923:                OraText  *timezone,size_t timezone_length _*/);
        !          8924: 
        !          8925: sword OCIDateTimeSysTimeStamp(/*_ dvoid *hndl, OCIError *err, 
        !          8926:                               OCIDateTime *sys_date _*/);
        !          8927: 
        !          8928: sword OCIDateTimeAssign(/*_dvoid *hndl, OCIError *err, CONST OCIDateTime *from,
        !          8929:                         OCIDateTime *to_*/);
        !          8930: 
        !          8931: sword OCIDateTimeToText(/*_ dvoid *hndl, OCIError *err, 
        !          8932:                   CONST OCIDateTime *date, CONST OraText *fmt, 
        !          8933:                   ub1 fmt_length, ub1 fsprec, CONST OraText *lang_name, 
        !          8934:                   size_t lang_length,
        !          8935:                   size_t *buf_size, OraText *buf _*/);
        !          8936: 
        !          8937: sword OCIDateTimeFromText(/*_ dvoid *hndl, OCIError *err, CONST OraText *dstr,
        !          8938:                      size_t d_str_length, CONST OraText *fmt, ub1 fmt_length, 
        !          8939:                      CONST OraText *lang_name, size_t lang_length, 
        !          8940:                      OCIDateTime *date _*/);
        !          8941: 
        !          8942: sword OCIDateTimeCompare(/*_ dvoid *hndl, OCIError *err, 
        !          8943:                      CONST OCIDateTime *date1, CONST OCIDateTime *date2, 
        !          8944:                      sword *result _*/);
        !          8945: 
        !          8946: sword OCIDateTimeCheck(/*_ dvoid *hndl, OCIError *err, CONST OCIDateTime *date,
        !          8947:                 ub4 *valid _*/);
        !          8948: 
        !          8949: sword OCIDateTimeConvert(/*_ dvoid *hndl, OCIError *err, OCIDateTime *indate, 
        !          8950:                       OCIDateTime *outdate_*/);
        !          8951: 
        !          8952: sword OCIDateTimeSubtract(/*_ dvoid *hndl, OCIError *err, OCIDateTime *indate1,
        !          8953:         OCIDateTime *indate2,   OCIInterval *inter_*/);
        !          8954: 
        !          8955: sword OCIDateTimeIntervalAdd(/*_ dvoid *hndl, OCIError *err, 
        !          8956:                         OCIDateTime *datetime, OCIInterval *inter, 
        !          8957:                         OCIDateTime *outdatetime_*/);
        !          8958: 
        !          8959: sword OCIDateTimeIntervalSub(/*_ dvoid *hndl, OCIError *err, 
        !          8960:                         OCIDateTime *datetime, OCIInterval *inter, 
        !          8961:                         OCIDateTime *outdatetime_*/);
        !          8962: 
        !          8963: sword OCIIntervalSubtract(/*_ dvoid *hndl, OCIError *err, 
        !          8964:        OCIInterval *minuend, OCIInterval *subtrahend, OCIInterval *result _*/);
        !          8965: 
        !          8966: sword OCIIntervalAdd(/*_ dvoid *hndl, OCIError *err, OCIInterval *addend1, 
        !          8967:                        OCIInterval *addend2, OCIInterval *result _*/);
        !          8968: 
        !          8969: sword OCIIntervalMultiply(/*_ dvoid *hndl, OCIError *err, 
        !          8970:                         CONST OCIInterval *ifactor, OCINumber *nfactor, 
        !          8971:                         OCIInterval *result _*/);
        !          8972: 
        !          8973: sword OCIIntervalDivide(/*_ dvoid *hndl, OCIError *err, OCIInterval *dividend, 
        !          8974:                OCINumber *divisor, OCIInterval *result _*/);
        !          8975: 
        !          8976: sword OCIIntervalCompare(/*_ dvoid *hndl, OCIError *err, OCIInterval *inter1, 
        !          8977:                        OCIInterval *inter2, sword *result _*/);
        !          8978: 
        !          8979: sword OCIIntervalFromNumber(/*_ dvoid *hndl, OCIError *err, 
        !          8980:               OCIInterval *interval, OCINumber *number _*/);
        !          8981: 
        !          8982: sword OCIIntervalFromText(/*_dvoid *hndl, OCIError *err, CONST OraText *inpstr,
        !          8983:                size_t str_len, OCIInterval *result _*/);
        !          8984: 
        !          8985: sword OCIIntervalToText(/*_  dvoid *hndl, OCIError *err,
        !          8986:                      CONST OCIInterval *interval, ub1 lfprec, ub1 fsprec, 
        !          8987:                      OraText *buffer, size_t buflen, size_t *resultlen _*/);
        !          8988: 
        !          8989: sword OCIIntervalToNumber(/*_ dvoid *hndl, OCIError *err, 
        !          8990:               CONST OCIInterval *interval, OCINumber *number _*/);
        !          8991: 
        !          8992: sword OCIIntervalCheck(/*_dvoid *hndl, OCIError *err, CONST OCIInterval *inter,
        !          8993:                         ub4 *valid _*/);
        !          8994: 
        !          8995: sword OCIIntervalAssign(/*_ dvoid *hndl, OCIError *err, 
        !          8996:                   CONST OCIInterval *inpinter, OCIInterval *outinter _*/);
        !          8997: 
        !          8998: sword OCIIntervalSetYearMonth(/*_dvoid *hndl, OCIError *err, sb4 yr, sb4 mnth,
        !          8999:                         OCIInterval *result _*/);
        !          9000: 
        !          9001: sword OCIIntervalGetYearMonth(/*_dvoid *hndl, OCIError *err, sb4 *yr, sb4 *mnt,
        !          9002:                         CONST OCIInterval *result _*/);
        !          9003: 
        !          9004: sword OCIIntervalSetDaySecond(/*_dvoid *hndl, OCIError *err, sb4 dy, sb4 hr,
        !          9005:                         sb4 mm, sb4 ss, sb4 fsec, OCIInterval *result _*/);
        !          9006: 
        !          9007: sword OCIIntervalGetDaySecond(/*_dvoid *hndl, OCIError *err, sb4 *dy, sb4 *hr,
        !          9008:                    sb4 *mm, sb4 *ss, sb4 *fsec, CONST OCIInterval *result _*/);
        !          9009: 
        !          9010: 
        !          9011: /*----------------- End Datetime interface Extensions -----------------------*/
        !          9012: 
        !          9013: 
        !          9014: /*--------------------------------------------------------------------------- 
        !          9015:   PRIVATE FUNCTIONS 
        !          9016:   ---------------------------------------------------------------------------*/
        !          9017: 
        !          9018: /* these calls are deprecated and should not be used */
        !          9019: #ifdef NEVER 
        !          9020: #if !defined(__STDC__) && !defined(__cplusplus)
        !          9021: sword   OCIStmtBindByPos (/*_ OCIStmt *stmtp, OCIBind *bindp, OCIError *errhp, 
        !          9022:                      ub4 position, dvoid *valuep, sb4 value_sz, ub2 dty, 
        !          9023:                      dvoid *indp, ub2 *alenp, ub2 *rcodep, 
        !          9024:                      ub4 maxarr_len, ub4 *curelep, ub4 mode _*/);
        !          9025: 
        !          9026: sword   OCIStmtBindByName(/*_ OCIStmt *stmtp, OCIBind *bindp, OCIError *errhp,
        !          9027:                     CONST OraText *placeholder, sb4 placeh_len, dvoid *valuep,
        !          9028:                     sb4 value_sz, ub2 dty, dvoid *indp, ub2 *alenp,
        !          9029:                     ub2 *rcodep, ub4 maxarr_len, ub4 *curelep, ub4 mode _*/);
        !          9030: 
        !          9031: sword   ocidefn(/*_ OCIStmt *stmtp, OCIDefine *defnp, OCIError *errhp,
        !          9032:                     ub4 position, dvoid *valuep, sb4 value_sz, ub2 dty,
        !          9033:                     dvoid *indp, ub2 *rlenp, ub2 *rcodep, ub4 mode _*/);
        !          9034: 
        !          9035: #endif /* __STDC__ */
        !          9036: #endif /* NEVER */
        !          9037: 
        !          9038: #endif                                                              /* ocikp */

E-mail: