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