Annotation of win32/sql/oracle/include/oci/ocikp.h, revision 1.1.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: