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