Annotation of win32/sql/oracle/include/oci/ort.h, revision 1.1.1.1
1.1 parser 1: /* @(#)ort.h 1.44 95/07/07 */
2:
3: /* Copyright (c) Oracle Corporation 1994, 1995, 1996, 1997, 1999. All Rights Reserved. */
4:
5: /*
6: NAME
7:
8: ORT - ORacle's external open Type interface to the open type manager (OTM)
9:
10: DESCRIPTION
11:
12: The open type manager interface includes dynamic type operations to
13: create, delete, update, and access types. See the "Functional
14: Specification for Oracle Object Call Interface (Objects Project),
15: Version 1.0" for a user level description of the OTM. For a more
16: detailed description, see the "Component Document for the Open Type
17: Manager, Version 1.0".
18:
19: NOTE: MOST Of the functions in this header file are being desupported.
20: Please use the OCIDescribeAny interface as described in oci.h
21: instead.
22: The OCIType, OCITypeElem, OCITypeMethod abstract types continue
23: to be supported. The only two functions that remain to be documented
24: are OCITypeArrayByName and OCITypeArrayByRef.
25: All obsolete types/functions are marked accordingly below.
26:
27: RELATED DOCUMENTS
28:
29: For the functional specification for the OTM, see:
30: [1] Kotsovolos, Susan, "Functional Specification for Oracle Object
31: Call Interface (Objects Project), Version 1.0", Oracle
32: Corporation, February 1995.
33: For the internal design of the OTM, see the following:
34: [2] Kotsovolos, Susan, "Component Document for the Open Type Manager",
35: Oracle Corporation, November 1994.
36: [3] Kotsovolos, Susan, "Design for The Open Type Manager, Oracle
37: Object Management Subsystem Version 1.0", Oracle Corporation,
38: March 1994.
39: [4] Kotsovolos, Susan and Tin A. Nguyen, "The Open Type Manager",
40: Oracle Corporation, March 1994.
41: [5] Kotsovolos, Susan and Tin A. Nguyen, "Schema Evolution",
42: Oracle Corporation, March 1994.
43: For a description of the types the OTM must support, see:
44: [6] Nguyen, Tin A., "The Open Type System", Oracle Corporation,
45: February 1994.
46:
47: INSPECTION STATUS
48:
49: Inspection date:
50: Inspection status:
51: Estimated increasing cost defects per page:
52: Rule sets:
53:
54: ACCEPTANCE REVIEW STATUS
55:
56: Review date:
57: Review status:
58: Reviewers:
59:
60:
61: **** ALL OBSOLETE FUNCTIONS/TYPES ARE MARKED ACCORDINGLY ***
62:
63: EXPORT FUNCTIONS
64:
65: None
66:
67: PUBLIC DATA STRUCTURES
68:
69: OCIType - type descriptor in the object cache
70: OCITypeElem - type element descriptor in the object cache
71: (used for attributes and paramters)
72: OCITypeCode - Open Type System type code.
73: OCITypeMethod - method descriptor in the object cache
74: OCITypeParamMode - parameter modes (ie. IN, IN-OUT etc)
75:
76: PUBLIC FUNCTIONS
77:
78: ITERATOR (for OCITypeAttrNext and OCITypeMethodNext)
79:
80: OCITypeIterNew - ** OBSOLETE ** Create new instance of an iteraton.
81: OCITypeIterSet - ** OBSOLETE ** Initialize iterator.
82: OCITypeIterFree - ** OBSOLETE ** Free instance of iterator.
83:
84: TYPE GET
85:
86: OCITypeByName - ** OBSOLETE ** Get a type by name.
87: OCITypeArrayByName - Get an array of types by their names.
88: OCITypeByRef - ** OBSOLETE ** Get a type by its CREF.
89: OCITypeArrayByRef - Get an array of types by their CREFs.
90:
91: TYPE ACCESSORS
92:
93: OCITypeName - ** OBSOLETE ** OCI Get a type's name.
94: OCITypeSchema - ** OBSOLETE ** OCI Get a type's schema name.
95: OCITypeTypeCode - ** OBSOLETE ** OCI Get a type's type code.
96: OCITypeVersion - ** OBSOLETE ** OCI Get a Type's user-readable Version.
97: OCITypeAttrs - ** OBSOLETE ** OCI Get a Type's Number of Attributes.
98: OCITypeMethods - ** OBSOLETE ** OCI Get a Type's Number of Methods.
99:
100: TYPE ELEMENT ACCESSORS (they represent attributes/parameters/results)
101:
102: OCITypeElemName - ** OBSOLETE ** Get a type element's (only for
103: attributes) name.
104: OCITypeElemType - ** OBSOLETE ** Get a type element's type
105: descriptor.
106: OCITypeElemTypeCode - ** OBSOLETE ** Get a type element's typecode.
107: OCITypeElemParameterizedType - ** OBSOLETE ** Get a type element's
108: parameterized type's type descriptor.
109: OCITypeElemNumPrec - ** OBSOLETE ** Get a number's precision.
110: OCITypeElemNumScale - ** OBSOLETE ** Get a decimal or oracle Number's
111: Scale
112: OCITypeElemCharSetID - ** OBSOLETE ** Get a fixed or variable length
113: string's character set ID.
114: OCITypeElemCharSetForm - ** OBSOLETE ** Get a fixed or variable length
115: string's character set form (how
116: character set information has
117: been specified).
118: OCITypeElemLength - ** OBSOLETE ** Get a raw, fixed or variable
119: length string's length.
120: OCITypeElemParamMode - ** OBSOLETE ** Get element's parameter's mode
121: (only valid for parameter).
122: OCITypeElemDefaultValue - ** OBSOLETE ** Get element's Default Value.
123:
124: ATTRIBUTE ACCESSORS
125:
126: OCITypeAttrByName - ** OBSOLETE ** Get an Attribute by Name.
127: OCITypeAttrNext - ** OBSOLETE ** Get an Attribute by Iteration.
128:
129: COLLECTION ACCESSORS
130:
131: OCITypeCollTypeCode - ** OBSOLETE ** Get a named collection's typecode.
132: OCITypeCollElem - ** OBSOLETE ** Get a named collection's element's
133: type element information.
134: OCITypeCollSize - ** OBSOLETE ** Get a named collection's size in
135: number of elements.
136:
137: METHOD ACCESSORS
138:
139: OCITypeMethodOverload - ** OBSOLETE ** Get number of overloaded methods
140: with the given method name.
141: (no direct equivalent for
142: OCIDescribe interface)
143: OCITypeMethodByName - ** OBSOLETE ** Get one or more methods by name.
144: OCITypeMethodNext - ** OBSOLETE ** Iterate to the next method to
145: retrieve.
146: OCITypeMethodName - ** OBSOLETE ** Get method's name.
147: OCITypeMethodEncap - ** OBSOLETE ** Get method's encapsulation level.
148: OCITypeMethodFlags - ** OBSOLETE ** et method's flags.
149: OCITypeMethodMap - ** OBSOLETE ** Get type's map function.
150: OCITypeMethodOrder - ** OBSOLETE ** Get type's order function.
151: OCITypeMethodParams - ** OBSOLETE ** Get a method's number of
152: parameters.
153:
154: RESULT ACCESSORS
155:
156: OCITypeResult - ** OBSOLETE ** OCI Get a method's Result.
157:
158: See also ATTRIBUTE/PARAMETER/RESULT TYPE ACCESSORS.
159:
160: PARAMETER ACCESSORS
161:
162: OCITypeParamByPos - ** OBSOLETE ** Get a Parameter in a method By
163: Position.
164: OCITypeParamByName - ** OBSOLETE ** Get a Parameter in a method By Name.
165: OCITypeParamPos - ** OBSOLETE ** Get a Parameter's PoSition in a
166: method.
167:
168: CALL GRAPHS:
169:
170: Only type accessors are supported for 8.0.
171: ** OBSOLETE ** please use OCIDescribe interface
172:
173: TYPE ACCESSOR EXAMPLE
174:
175: CREATE TYPE CAR
176: (
177: name vstring,
178: age number,
179: number car_age; /o Oracle number o/
180: weight car_weight; /o abstract type o/
181:
182: PUBLIC:
183:
184: /o methods o/
185: car(orlvs a_name, number an_age, WEIGHT a_weight);
186: ~car();
187: inline number get_age() const;
188:
189: /o relative ordering (map) functions o/
190: number car_map
191: );
192:
193: /o the following code accesses the type created above o/
194:
195: ub1 meth_flags;
196: ub4 i, j;
197: ub4 text_len, position;
198: ub4 count;
199: ub4 length;
200: OCITypeCode typecode;
201: OCIRef *attr_ref;
202: OCIRef *param_ref;
203: OCIType *tdo, new_tdo, final_tdo;
204: OCITypeElem *elem;
205: OCITypeIter *iterator;
206: text (*names)[];
207: ub4 lengths[];
208: ub4 *positions;
209: text *name;
210: text name_buffer[M_IDEN];
211:
212: /o initialize the references o/
213: DISCARD orlrini(env, err, (dvoid *)&attr_ref);
214: DISCARD orlrini(env, err, (dvoid *)¶m_ref);
215:
216: /o ----------------- GET INFORMATION ABOUT A TYPE ----------------- o/
217:
218: /o start a transaction o/
219:
220: /o Pin the type until the end of the transaction. Pinning the type is
221: o required before using any type accessors.
222: o/
223: if (OCITypeByName(env, err, svc, (text *)0, 0, "CAR", strlen("CAR"),
224: OCI_DURATION_TRANS, &car_ref, &car_tdo) != OCI_SUCCESS)
225: /o error o/ ;
226:
227: /o get the type's name o/
228: if (!memcmp(OCITypeName(env, err, car_tdo, &text_len), "person",
229: text_len))
230: /o do something o/ ;
231:
232: /o get the type's schema name o/
233: if (!memcmp(OCITypeSchema(env, err, car_tdo, &text_len), "john",
234: text_len))
235: /o do something o/ ;
236:
237: /o get the type code of the type o/
238: if (OCITypeTypeCode(env, err, car_tdo) == OCI_TYPECODE_ADT)
239: /o do something o/ ;
240:
241: /o get the type version o/
242: if (!memcmp(OCITypeVersion(env, err, car_tdo, &text_len), "1", text_len))
243: /o do something o/ ;
244:
245: /o ------- GET FLATTENED POSITION OF AN ATTRIBUTES IN A TYPE ------- o/
246:
247: names = malloc(sizeof(text *) * 2);
248: names[0] = malloc(strlen("car_weight"));
249: names[1] = malloc(strlen("ounces"));
250: memcpy(names[0], "car_weight", strlen("car_weight"));
251: memcpy(names[1], "ounces", strlen("ounces"));
252:
253: lengths = malloc(sizeof(ub4) * 2);
254: lengths[0] = strlen("car_weight");
255: lengths[1] = strlen("ounces");
256:
257: /o ---------- GET IMMEDIATE ATTRIBUTES IN A TYPE ---------- o/
258:
259: /o loop through all attributes in the type with iterator o/
260: if (OCITypeIterNew(env, err, car_tdo, &iterator) != OCI_SUCCESS)
261: /o do something o/
262:
263: while (OCITypeAttrNext(env, err, iterator, &ado) != OCI_NO_DATA)
264: {
265: /o get the attribute's name o/
266: if (!memcmp(OCITypeElemName(env, err, ado, &text_len),
267: "tiger", text_len))
268: /o do something o/ ;
269:
270: /o get the attribute's type descriptor o/
271: if (OCITypeElemType(env, err, ado, &tdo) != OCI_SUCCESS)
272: /o error o/ ;
273:
274: /o get the attribute's type code o/
275: typecode = OCITypeElemTypeCode(env, err, ado);
276:
277: switch (typecode)
278: {
279: /o scalar types o/
280: case OCI_TYPECODE_DATE: /o date o/
281: case OCI_TYPECODE_SIGNED8: /o byte o/
282: case OCI_TYPECODE_SIGNED16: /o short o/
283: case OCI_TYPECODE_UNSIGNED8: /o unsigned byte o/
284: case OCI_TYPECODE_UNSIGNED16: /o unsigned short o/
285: case OCI_TYPECODE_OCTET: /o octet o/
286: case OCI_TYPECODE_TABLE: /o nested table o/
287: case OCI_TYPECODE_CLOB: /o character lob o/
288: case OCI_TYPECODE_BLOB: /o binary lob o/
289: case OCI_TYPECODE_CFILE: /o character file object o/
290: case OCI_TYPECODE_BFILE: /o binary file object o/
291:
292: /o do something o/
293: break;
294:
295: /o number types o/
296: case OCI_TYPECODE_NUMBER: /o oracle number o/
297: case OCI_TYPECODE_DECIMAL: /o decimal o/
298: {
299: /o get the scale of the number o/
300: if (OCITypeElemNumScale(env, err, ado) == 3)
301: /o do something o/ ;
302: }
303: /o fall through to get the precision o/
304:
305: case OCI_TYPECODE_FLOAT: /o float o/
306: case OCI_TYPECODE_SIGNED32: /o long o/
307: case OCI_TYPECODE_UNSIGNED32: /o unsigned long o/
308: case OCI_TYPECODE_REAL: /o real o/
309: case OCI_TYPECODE_DOUBLE: /o double o/
310: {
311: /o get the precision of the number o/
312: if (OCITypeElemNumPrec(env, err, ado) == 2)
313: /o do something o/ ;
314: }
315: break;
316:
317: /o string types o/
318: case OCI_TYPECODE_CHAR: /o fixed length string o/
319: case OCI_TYPECODE_VARCHAR2: /o variable length string o/
320: case OCI_TYPECODE_RAW: /o raw o/
321: {
322: /o get the length of the fixed or variable length string o/
323: if (OCITypeElemLength(env, err, ado) < 100)
324: /o do something o/
325: }
326: break;
327:
328: /o parameterized types o/
329: case OCI_TYPECODE_REF: /o reference o/
330: case OCI_TYPECODE_PTR: /o pointer o/
331: {
332: /o get the type stored in the parameterized type o/
333: if (OCITypeElemParameterizedType(env, err, ado, &tdo)
334: != OCI_SUCCESS)
335: /o error o/ ;
336:
337: /o do something o/
338: if (OCI_TYPEELEM_IS_REF(OCITypeElemFlags(env, err, ado)))...
339: }
340: break;
341:
342: /o domain type o/
343: case OCI_TYPECODE_NAMEDCOLLECTION:
344: switch (OCITypeCollTypeCode(env, err, tdo))
345: {
346: case OCI_TYPECODE_VARRAY: /o variable array o/
347: ub4 num_elems;
348: OCIType *element_type;
349:
350: /o get the number of elements in the farray or the maximum number
351: o of elements in the varray.
352: o/
353: OCITypeCollSize(env, err, tdo, &num_elems);
354:
355: /o get the type of the array o/
356: OCITypeElemType(env, err, tdo, &element_type);
357: }
358: break;
359:
360: case OCI_TYPECODE_TABLE: /o multiset o/
361: {
362: OCIType *table_type;
363:
364: /o get the type of the multiset o/
365: OCITypeElemType(env, err, tdo, &table_type);
366:
367: /o do something o/
368: }
369: }
370:
371: /o abstract type o/
372: case OCI_TYPECODE_ADT: /o abstract data type o/
373: {
374: /o get the adt information o/
375: if (OCITypeElemType(env, err, ado, &tdo) != OCI_SUCCESS)
376: /o error o/ ;
377:
378: /o do something o/
379: }
380: break;
381:
382: default:
383: DISCARD printf("Error: invalid type code\n");
384:
385: } /o end of typecode switch o/
386:
387: } /o end of loop through all attributes in a type o/
388:
389:
390: /o ------------ GET THE IMMEDIATE METHODS OF A TYPE ------------ o/
391:
392: /o loop through all methods in the type by reusing iterator o/
393: if (OCITypeIterSet(env, err, car_tdo, iterator) != OCI_SUCCESS)
394: /o do something o/
395:
396: while (OCITypeMethodNext(env, err, iterator) != OCI_NO_DATA)
397: {
398: /o get the method's name o/
399: if (!memcmp(OCITypeMethodName(env, err, mdo, &text_len), "car",
400: text_len))
401: /o do something o/ ;
402:
403: /o get the method's encapsulation o/
404: if (OCITypeMethodEncap(env, err, mdo) == OCI_TYPEENCAP_PUBLIC)
405: /o do something o/ ;
406:
407: /o get the method's flags o/
408: meth_flags = OCITypeMethodFlags(env, err, mdo);
409: if (meth_flags & OCI_TYPEMETHOD_VIRTUAL)
410: /o do something o/ ;
411:
412:
413: /o ------------ GET THE PARAMETERS IN A METHOD ------------ o/
414:
415: /o loop through all parameters in the method o/
416: count = OCITypeMethodParams(env, err, mdo);
417: for (j = 1; j <= count; j++)
418: {
419: /o get the parameter information by position o/
420: if (OCITypeParamByPos(env, err, mdo, i, &elem) != OCI_SUCCESS)
421: /o error o/ ;
422:
423: /o get the parameter's name o/
424: if (!memcmp(OCITypeElemName(env, err, elem, &text_len), "an_age",
425: text_len))
426: /o do something o/ ;
427:
428: /o get the parameter's mode o/
429: if (OCITypeElemMode(env, err, elem) == OCI_PARAM_OUT)
430: /o do something o/ ;
431:
432: /o get the parameter's required flag o/
433: if (ortgprq(env, err, elem))
434: /o do something o/ ;
435: }
436: }
437:
438: /o get a method by name o/
439: if (OCITypeMethodByName(env, err, car_tdo, "car_constructor",
440: strlen("car_constructor"), NULLP(OCIRef), &mdo)
441: != OCI_SUCCESS)
442: /o error o/ ;
443:
444: /o get a parameter in a method by name o/
445: if (OCITypeParamByName(env, err, mdo, "an_age", strlen("an_age"), &elem)
446: != OCI_SUCCESS)
447: /o error o/ ;
448:
449: /o get a parameter's typecode o/
450: typecode = OCITypeElemTypeCode(env, err, elem);
451:
452: /o get a parameter's type object o/
453: if (OCITypeElemType(env, err, elem, &tdo)) != OCI_SUCCESS)
454: /o error o/ ;
455:
456: /o get a parameter's position in a method o/
457: if (ortgpps(env, err, mdo, "an_age", strlen("an_age"),
458: &position, NULLP(OCIRef), NULLP(OCITypeElem)) != OCI_SUCCESS)
459: /o error o/ ;
460:
461: /o ------------ GET THE METHOD's RESULT ------------ o/
462:
463: /o get a method by name o/
464: if (OCITypeMethodByName(env, err, car_tdo, "get_age", strlen("get_age"),
465: &mdo) != OCI_SUCCESS)
466: /o error o/ ;
467:
468: /o get the typecode of the method's result o/
469: typecode = OCITypeElemTypeCode(env, err, mdo);
470:
471:
472: /o ----------------- END ---------------- o/
473:
474: /o free the references implicitly allocated o/
475: DISCARD orlrfre(env, err, (dvoid *)&attr_ref);
476: DISCARD orlrfre(env, err, (dvoid *)¶m_ref);
477:
478: NOTES
479:
480: MODIFIED
481: whe 09/01/99 - 976457:check __cplusplus for C++ code
482: cxcheng 05/06/97 - make OCI_TYPE?? test macros return either 1 or 0
483: cxcheng 04/22/97 - add comment on desupporting OCIType functions
484: skrishna 03/18/97 - fix ifdef for supporting ansi and k&r proto-types
485: cxcheng 02/26/97 - fix lint problem with oro names
486: cxcheng 02/06/97 - take out short name support except with SLSHORTNAME
487: cxcheng 01/15/97 - change prototype of OCITypeElemParameterizedType()
488: cxcheng 01/03/97 - replace bit in OCI_TYPEPARAM_IS_REQUIRED with bitwis
489: cxcheng 12/31/96 - replace OCI_PARAM_IS_REQUIRED with OCI_TYPEPARAM_IS_
490: cxcheng 12/09/96 - add prototype for OCITypeElemExtTypeCode and OCIType
491: cxcheng 11/25/96 - add schema name parameter to OCITypeVTInsert()
492: cxcheng 11/20/96 - fix prototype for OCITypeByName()
493: cxcheng 11/11/96 - fix prototype for OCITypeByName()
494: cxcheng 11/05/96 - remove OCITypeElemExtTypeCode and OCITypeCollExtType
495: dchatter 10/28/96 - change ortgatyp to be OCITypeArrayByName
496: cxcheng 10/25/96 - fix problem with ortgatyp at end
497: cxcheng 10/22/96 - add OCITypeByRef and OCITypeArrayByRef
498: cxcheng 10/20/96 - remove ortgtyp() from #define section at end
499: cxcheng 10/18/96 - rename OCITypeGetArray to OCITypeArrayByName
500: cxcheng 10/17/96 - final change to prototype for OCI_TYPEPARAM_IS_REQUI
501: cxcheng 10/15/96 - rename OCIEncapLevel and OCIMethodFlag
502: cxcheng 10/14/96 - change prototype of OCITypeResult
503: mluong 10/11/96 - fix compile error
504: jwijaya 10/10/96 - fix bug on OCI_PARAM_IS_REQUIRED
505: cxcheng 10/09/96 - more lint and link fixes
506: cxcheng 10/08/96 - more lint fixes
507: cxcheng 10/07/96 - more changes
508: cxcheng 10/04/96 - replace short names with long names
509: cxcheng 10/01/96 - change to long names for readability
510: cxcheng 09/27/96 - rename ortgatyp() to ortgtya() for lint
511: cxcheng 09/20/96 - add ortgatyp() for array get type
512: cxcheng 09/18/96 - add array pin and iterator functions
513: cxcheng 08/09/96 - add version table calls
514: cxcheng 07/22/96 - add OCITypeElemType() to top
515: jwijaya 07/03/96 - add ANSI prototypes
516: cxcheng 06/28/96 - add OCITypeElemCharSetForm()
517: cxcheng 06/26/96 - fix comment on OCITypeParamByPos()/ortgpps()
518: cxcheng 06/18/96 - fix comments on OCITypeResult()
519: cxcheng 06/17/96 - improve comments
520: skrishna 06/03/96 - change OCITypeCollElem() prototype
521: vkrishna 05/29/96 - replace OROTCFAR with OROTCCAR
522: cxcheng 05/28/96 - fix comments, remove non-beta1 functions
523: cxcheng 05/02/96 - fix prototype bugs
524: cxcheng 04/29/96 - rename OCITypeElemm() to ortanct()
525: cxcheng 04/26/96 - add ortgrbp and ortftyi,
526: fix comments and examples
527: cxcheng 04/22/96 - big merge to main branch
528: cxcheng 04/17/96 - fix syntax
529: cxcheng 04/08/96 - change prototype to ortaty()
530: skrishna 04/08/96 - change ort*() to take OCIEnv* and OCIError* instead
531: of oroenv*
532: cxcheng 03/28/96 - add ortslob(), change ortsstr() prototype
533: cxcheng 03/13/96 - change alter type interface
534: cxcheng 03/11/96 - ORT interface changes
535: cxcheng 02/27/96 - correct comments
536: jboonleu 02/09/96 - rename oroopd to OCIDuration
537: cxcheng 01/19/96 - change ORTCTYVAL to ORTCTYEMB for embedded ADT
538: cxcheng 02/14/96 - add more comments
539: jboonleu 02/09/96 - rename oroopd to OCIDuration
540: cxcheng 02/07/96 - fix comments and examples
541: cxcheng 01/19/96 - new ORT interface without korfc's
542: cxcheng 01/08/96 - consolidate collection functions
543: cxcheng 12/14/95 - remove obsolete ortgcol() and ortrelease()
544: jweisz 12/12/95 - merge screwup: ortdth twice
545: cxcheng 12/05/95 - change multiset interface for new standard
546: skotsovo 12/01/95 - merge from /vobs/rdbms/public/ort.h@@/main/
547: st_rdbms_big_dev/st_rdbms_obj/
548: st_rdbms_jwijaya_variable_ref
549: cxcheng 11/13/95 - add ortaty()/orteaty()
550: cxcheng 11/13/95 - add new collection type accessors
551: skotsovo 10/30/95 - add 'oid' type b/c extent type uses it.
552: skotsovo 10/24/95 - update according to new variable length ref
553: cxcheng 10/05/95 - add null support, change prototypes to calls
554: cxcheng 10/03/95 - add OCITypeMethodOrder() to get ORDER method
555: cxcheng 09/28/95 - add OCITypeElemm() for collection types support
556: skotsovo 06/05/95 - add adt_type parameter to ortsab()
557: skotsovo 05/10/95 - ifdef'd out ortgafp()
558: skotsovo 03/07/95 - update interface to only include release 1
559: skotsovo 02/22/95 - add multiset accessors
560: skotsovo 02/09/95 - update according to new ots doc
561: skotsovo 01/31/95 - add rest of release 1 types
562: skotsovo 01/24/95 - categorize sint32, double, and real as number types
563: (with precision and scale) instead of scalar types.
564: skotsovo 01/12/95 - remove dependency from ortdty interface
565: skotsovo 01/03/95 - remove orotyp accessors
566: skotsovo 12/12/94 - update comments
567: skotsovo 12/05/94 - change OCITypeElemParameterizedTyper interface
568: skotsovo 10/26/94 - add type version table
569: skotsovo 10/17/94 - fix ortgafp() comments
570: skotsovo 10/14/94 - modify ortgafp() parameters
571: skotsovo 10/14/94 - add examples
572: skotsovo 10/13/94 - add a few new routines
573: jwijaya 10/07/94 - add namespace to pin by name
574: jwijaya 10/02/94 - connection handle -> connection number
575: skotsovo 09/13/94 - modify example to use updated oririni interface
576: skotsovo 08/25/94 - change scale to sb1 from sb2
577: skotsovo 07/28/94 - add ortbeg() and ortend()
578: skotsovo 07/14/94 - add decimal type & call graph
579: skotsovo 06/28/94 - subset by removing miscellaneous functions
580: skotsovo 06/28/94 - consistently put comments before typedefs
581: skotsovo 06/27/94 - modify according to new header file template, add
582: more examples, and change ortcty() to return a
583: reference to the type
584: skotsovo 06/24/94 - add functions to get type information from orotyp
585: skotsovo 06/20/94 - finish modifying according to header template
586: skotsovo 06/09/94 - modify according to header file template
587: skotsovo 06/08/94 - replace s.h with oratypes.h
588: skotsovo 05/24/94 - modify comments & update example
589: skotsovo 05/23/94 - modify fnt names for create, alter and drop type
590: skotsovo 05/18/94 - remove ortdme() -- delete a method
591: skotsovo 05/17/94 - add tdo parameter to all type modifiers
592: skotsovo 05/11/94 - return text* instead of including it in arglist
593: skotsovo 11/16/93 - creation
594:
595: */
596:
597: #ifndef ORATYPES
598: #include <oratypes.h>
599: #endif
600: #ifndef ORO_ORACLE
601: #include <oro.h>
602: #endif
603: #ifndef OCI_ORACLE
604: #include <oci.h>
605: #endif
606:
607: #ifndef ORT_ORACLE
608: #define ORT_ORACLE
609:
610: /*---------------------------------------------------------------------------*/
611: /* SHORT NAMES SUPPORT SECTION */
612: /*---------------------------------------------------------------------------*/
613:
614: #ifdef SLSHORTNAME
615:
616: /* the following are short names that are only supported on IBM mainframes
617: with the SLSHORTNAME defined.
618: With this all subsequent long names will actually be substituted with
619: the short names here */
620:
621: #define OCITypeArrayByName ortgatyp
622: #define OCITypeAttrByName ortgabn
623: #define OCITypeAttrNext ortgabi
624: #define OCITypeAttrs ortgtna
625: #define OCITypeByRef ortgtbrf
626: #define OCITypeCollElem ortgcel
627: #define OCITypeCollExtTypeCode ortgcsqt
628: #define OCITypeCollSize ortgcne
629: #define OCITypeCollTypeCode ortgdttc
630: #define OCITypeElem ortado
631: #define OCITypeElemCharSetForm ortgscform
632: #define OCITypeElemCharSetID ortgscid
633: #define OCITypeElemDefaultValue ortgpdv
634: #define OCITypeElemExtTypeCode ortgasqt
635: #define OCITypeElemLength ortgsl
636: #define OCITypeElemName ortganm
637: #define OCITypeElemNumPrec ortgnp
638: #define OCITypeElemNumScale ortgns
639: #define OCITypeElemParamMode ortgpmo
640: #define OCITypeElemParameterizedType ortgpa
641: #define OCITypeElemType ortgaty
642: #define OCITypeElemTypeCode ortgatc
643: #define OCITypeIter ortitr
644: #define OCITypeIterFree ortifre
645: #define OCITypeIterNew ortinew
646: #define OCITypeIterSet ortiset
647: #define OCITypeMethod ortmdo
648: #define OCITypeMethodByName ortgmbn
649: #define OCITypeMethodEncap ortgmen
650: #define OCITypeMethodFlags ortgmfl
651: #define OCITypeMethodMap ortgmmap
652: #define OCITypeMethodName ortgmnm
653: #define OCITypeMethodNext ortgmbi
654: #define OCITypeMethodOrder ortgmor
655: #define OCITypeMethodOverload ortgmno
656: #define OCITypeMethodParams ortgmnp
657: #define OCITypeMethods ortgtnm
658: #define OCITypeName ortgtme
659: #define OCITypeParamByName ortgpbn
660: #define OCITypeParamPos ortgpps
661: #define OCITypeSchema ortgtsch
662: #define OCITypeTypeCode ortgttc
663: #define OCITypeVTInit ortvini
664: #define OCITypeVTInsert ortvins
665: #define OCITypeVTSelect ortvsel
666: #define OCITypeVersion ortgtvn
667:
668: #endif /* SLSHORTNAME */
669:
670:
671: /*============================*/
672: /* PUBLIC TYPES AND CONSTANTS */
673: /*============================*/
674:
675: /*----------------------------- TYPE DESCRIPTION ----------------------------*/
676:
677: /*
678: * OCIType - OCI Type Description Object
679: *
680: * The contents of an 'OCIType' is private/opaque to clients. Clients just
681: * need to declare and pass 'OCIType' pointers in to the type manage
682: * functions.
683: * The pointer points to the type in the object cache. Thus, clients don't
684: * need to allocate space for this type and must NEVER free the pointer to the
685: * 'OCIType'.
686: */
687:
688: typedef struct OCIType OCIType;
689:
690: /*------------------------- TYPE ELEMENT DESCRIPTION ------------------------*/
691:
692:
693: /*
694: * OCITypeElem - OCI Type Element object
695: *
696: * The contents of an 'OCITypeElem' is private/opaque to clients. Clients just
697: * need to declare and pass 'OCITypeElem' pointers in to the type manager
698: * functions.
699: *
700: * 'OCITypeElem' objects contains type element information such as the numeric
701: * precision for example, for number objects, and the number of elements for
702: * arrays.
703: * They ARE used to describe type attributes, collection elements,
704: * method parameters, and method results. Hence they are pass in or returned
705: * by attribute, collection, and method parameter/result accessors.
706: */
707:
708: typedef struct OCITypeElem OCITypeElem;
709:
710:
711: /*--------------------------- METHOD DESCRIPTION ---------------------------*/
712:
713:
714: /*
715: * OCITypeMethod - OCI Method Description object
716: *
717: * The contents of an 'OCITypeMethod' is private/opaque to clients. Clients
718: * just need to declare and pass 'OCITypeMethod' pointers in to the type
719: * manager functions.
720: * The pointer points to the method in the object cache. Thus, clients don't
721: * need to allocate space for this type and must NEVER free the pointer to
722: * the 'OCITypeMethod'.
723: */
724:
725: typedef struct OCITypeMethod OCITypeMethod;
726:
727:
728: /*--------------------------- TYPE ACCESS ITERATOR --------------------------*/
729:
730: /*
731: * OCITypeIter- OCI Type Iterator
732: *
733: * The contents of an 'orti' is private/opaque to clients. Clients just
734: * need to declare and pass 'orti' pointers in to the type manager functions.
735: * The iterator is used to retreive MDO's and ADO's that belong to the TDO
736: * one at a time. It needs to be allocated by the 'OCITypeIterNew()' function
737: * call and deallocated with the 'OCITypeIterFree()' function call.
738: */
739:
740: typedef struct OCITypeIter OCITypeIter;
741:
742:
743: /*==================*/
744: /* PUBLIC FUNCTIONS */
745: /*==================*/
746:
747: /*--------------------------------------------------------------------------*/
748: /* ITERATOR */
749: /*--------------------------------------------------------------------------*/
750:
751: /*-----------------------_- OCITypeIterNew ---------------------------------*/
752:
753: /* ** OBSOLETE ** */
754: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
755: sword OCITypeIterNew(/*_ OCIEnv *env, OCIError *err, OCIType *tdo,
756: OCITypeIter **iterator _*/);
757: #else
758: sword OCITypeIterNew( OCIEnv *env, OCIError *err, OCIType *tdo,
759: OCITypeIter **iterator );
760: #endif
761:
762: /*
763: NAME: OCITypeIterNew - OCI Iterator NEW
764: PARAMETERS:
765: env (IN/OUT) - OCI environment handle initialized in object mode
766: err (IN/OUT) - error handle. If there is an error, it is
767: recorded in 'err' and this function returns OCI_ERROR.
768: The error recorded in 'err' can be retrieved by calling
769: OCIErrorGet().
770: tdo (IN) - pointer to the pinned type in the object cache to
771: initialize the iterator with
772: iterator (OUT) - pointer to the pointer to the new iterator created
773: DESCRIPTION:
774: Create a new instance of a method/attribute iterator and initalize
775: it's values.
776: RETURNS:
777: OCI_SUCCESS if the function completes successfully.
778: OCI_INVALID_HANDLE if 'env' or 'err' is null.
779: OCI_ERROR if
780: 1) any of the required parameters is null.
781: 2) error while allocating space for the iterator.
782: */
783:
784: /*------------------------ OCITypeIterSet ---------------------------------*/
785:
786: /* ** OBSOLETE ** */
787: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
788: sword OCITypeIterSet(/*_ OCIEnv *env, OCIError *err, OCIType *tdo,
789: OCITypeIter *iterator _*/);
790: #else
791: sword OCITypeIterSet( OCIEnv *env, OCIError *err, OCIType *tdo,
792: OCITypeIter *iterator );
793: #endif
794:
795: /*
796: NAME: OCITypeIterSet - OCI Iterator SET
797: PARAMETERS:
798: env (IN/OUT) - OCI environment handle initialized in object mode
799: err (IN/OUT) - error handle. If there is an error, it is
800: recorded in 'err' and this function returns OCI_ERROR.
801: The error recorded in 'err' can be retrieved by calling
802: OCIErrorGet().
803: tdo (IN) - pointer to the pinned type in the object cache to
804: initialize the iterator with
805: iterator (IN/OUT) - pointer to the iterator to set
806: DESCRIPTION:
807: Initializes the iterator. This is used to reset the state of the
808: iterator.
809: RETURNS:
810: OCI_SUCCESS if the function completes successfully.
811: OCI_INVALID_HANDLE if 'env' or 'err' is null.
812: OCI_ERROR if
813: 1) any of the required parameters is null.
814: */
815:
816: /*------------------------ OCITypeIterFree ---------------------------------*/
817:
818: /* ** OBSOLETE ** */
819: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
820: sword OCITypeIterFree(/*_ OCIEnv *env, OCIError *err, OCITypeIter
821: *iterator _*/);
822: #else
823: sword OCITypeIterFree( OCIEnv *env, OCIError *err, OCITypeIter
824: *iterator );
825: #endif
826:
827: /*
828: NAME: OCITypeIterFree - OCI Iterator FREe
829: PARAMETERS:
830: env (IN/OUT) - OCI environment handle initialized in object mode
831: err (IN/OUT) - error handle. If there is an error, it is
832: recorded in 'err' and this function returns OCI_ERROR.
833: The error recorded in 'err' can be retrieved by calling
834: OCIErrorGet().
835: iterator (IN/OUT) - pointer to the iterator to free
836: DESCRIPTION:
837: Free space allocated for the iterator.
838: RETURNS:
839: OCI_SUCCESS if the function completes successfully.
840: OCI_INVALID_HANDLE if 'env' or 'err' is null.
841: OCI_ERROR if
842: 1) any of the required parameters is null.
843: 2) error while freeing the iterator, probably bad iterator pointer.
844: */
845:
846:
847: /*--------------------------------------------------------------------------*/
848: /* TYPE GET */
849: /*--------------------------------------------------------------------------*/
850:
851: /* ** OBSOLETE ** */
852: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
853: sword OCITypeByName(/*_ OCIEnv *env, OCIError *err,
854: CONST OCISvcCtx *svc, CONST text *schema_name,
855: ub4 s_length, CONST text *type_name,
856: ub4 t_length, CONST text *version_name,
857: ub4 v_length, OCIDuration pin_duration,
858: OCITypeGetOpt get_option, OCIType **tdo _*/);
859: #else /* ANSI C */
860: sword OCITypeByName( OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc,
861: CONST text *schema_name, ub4 s_length,
862: CONST text *type_name, ub4 t_length,
863: CONST text *version_name, ub4 v_length,
864: OCIDuration pin_duration, OCITypeGetOpt get_option,
865: OCIType **tdo );
866: #endif
867: /*
868: NAME: OCITypeByName - OCI Get the most current version of an existing TYPe
869: by name.
870: PARAMETERS:
871: env (IN/OUT) - OCI environment handle initialized in object mode
872: err (IN/OUT) - error handle. If there is an error, it is
873: recorded in 'err' and this function returns OCI_ERROR.
874: The error recorded in 'err' can be retrieved by calling
875: OCIErrorGet().
876: svc (IN) - OCI service handle
877: schema_name (IN, optional) - name of schema associated with the
878: type. By default, the user's schema name is used.
879: s_length (IN) - length of the 'schema_name' parameter
880: type_name (IN) - name of the type to get
881: t_length (IN) - length of the 'type_name' parameter
882: version_name (IN, optional) - user readable version of the type.
883: Pass (text *)0 for the most current version.
884: v_length (IN) - length of version_name in bytes. Should be 0 if
885: the most current version is to be retrieved.
886: pin_duration (IN) - pin duration (e.g. until the end of current
887: transaction). See 'oro.h' for a description of
888: each option.
889: get_option (IN) - options for loading the types. It can be one of two
890: values:
891: OCI_TYPEGET_HEADER for only the header to be loaded, or
892: OCI_TYPEGET_ALL for the TDO and all ADO and MDOs to be
893: loaded.
894: tdo (OUT) - pointer to the pinned type in the object cache
895: DESCRIPTION:
896: Get a pointer to a version of the existing type associated
897: with schema/type name.
898: RETURNS:
899: OCI_SUCCESS if the function completes successfully.
900: OCI_INVALID_HANDLE if 'env' or 'err' is null.
901: OCI_ERROR if
902: 1) any of the required parameters is null.
903: 2) the adt type associated with schema/type name does not exist.
904: NOTE:
905: Schema and type names are CASE-SENSITIVE. If they have been created
906: via SQL, you need to use uppercase names.
907: */
908:
909: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
910: sword
911: OCITypeArrayByName(/*_ OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc,
912: ub4 array_len, CONST text *schema_name[],
913: ub4 s_length[], CONST text *type_name[],
914: ub4 t_length[], CONST text *version_name[],
915: ub4 v_length[], OCIDuration pin_duration,
916: OCITypeGetOpt get_option, OCIType *tdo[] _*/);
917: #else /* ANSI C */
918: sword OCITypeArrayByName( OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc,
919: ub4 array_len,
920: CONST text *schema_name[], ub4 s_length[],
921: CONST text *type_name[], ub4 t_length[],
922: CONST text *version_name[], ub4 v_length[],
923: OCIDuration pin_duration,
924: OCITypeGetOpt get_option, OCIType *tdo[] );
925: #endif
926:
927: /*
928: NAME: OCITypeArrayByName - OCI Get array of TYPes by name.
929: PARAMETERS:
930: env (IN/OUT) - OCI environment handle initialized in object mode
931: err (IN/OUT) - error handle. If there is an error, it is
932: recorded in 'err' and this function returns OCI_ERROR.
933: The error recorded in 'err' can be retrieved by calling
934: OCIErrorGet().
935: svc (IN) - OCI service handle
936: array_len (IN) - number of schema_name/type_name/version_name entries to
937: be retrieved.
938: schema_name (IN, optional) - array of schema names associated with the
939: types to be retrieved. The array must have array_len
940: elements if specified.
941: If 0 is supplied, the default schema is assumed, otherwise
942: it MUST have array_len number of elements.
943: 0 can be supplied for one or more of the entries to indicate
944: that the default schema is desired for those entries.
945: s_length (IN) - array of schema_name lengths with each entry
946: corresponding to the length of the corresponding schema_name
947: entry in the schema_name array in bytes.
948: The array must either have array_len number of elements or
949: it MUST be 0 if schema_name is not specified.
950: type_name (IN) - array of the names of the types to retrieve. This
951: MUST have array_len number of elements.
952: t_length (IN) - array of the lengths of type names in the type_name
953: array in bytes.
954: version_name (IN) - array of the version names of the types to retrieve
955: corresponding. This can be 0 to indicate retrieval of the
956: most current versions, or it MUST have array_len number of
957: elements.
958: If 0 is supplied, the most current version is assumed,
959: otherwise it MUST have array_len number of elements.
960: 0 can be supplied for one or more of the entries to indicate
961: that the current version is desired for those entries.
962: v_length (IN) - array of the lengths of version names in the
963: version_name array in bytes.
964: pin_duration (IN) - pin duration (e.g. until the end of current
965: transaction) for the types retreieve. See 'oro.h' for a
966: description of each option.
967: get_option (IN) - options for loading the types. It can be one of two
968: values:
969: OCI_TYPEGET_HEADER for only the header to be loaded, or
970: OCI_TYPEGET_ALL for the TDO and all ADO and MDOs to be
971: loaded.
972: tdo (OUT) - output array for the pointers to each pinned type in the
973: object cache. It must have space for array_len pointers.
974: Use OCIObjectGetObjectRef() to obtain the CREF to each
975: pinned type descriptor.
976: DESCRIPTION:
977: Get pointers to the existing types associated with the schema/type name
978: array. This is similar to OCITypeByName() except that all the TDO's are
979: retreived via a single network roundtrip.
980: RETURNS:
981: OCI_SUCCESS if the function completes successfully.
982: OCI_INVALID_HANDLE if 'env' or 'err' is null.
983: OCI_ERROR if
984: 1) any of the required parameters is null.
985: 2) one or more adt types associated with a schema/type name entry
986: does not exist.
987: */
988:
989: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
990: sword OCITypeByRef(/*_ OCIEnv *env, OCIError *err,
991: CONST OCIRef *type_ref, OCIDuration pin_duration,
992: OCITypeGetOpt get_option, OCIType **tdo _*/);
993: #else /* ANSI C */
994: sword OCITypeByRef( OCIEnv *env, OCIError *err,
995: CONST OCIRef *type_ref, OCIDuration pin_duration,
996: OCITypeGetOpt get_option, OCIType **tdo );
997: #endif
998:
999: /*
1000: NAME: OCITypeArrayByRef - OCI Get array of TYPes by REF.
1001: PARAMETERS:
1002: env (IN/OUT) - OCI environment handle initialized in object mode
1003: err (IN/OUT) - error handle. If there is an error, it is
1004: recorded in 'err' and this function returns OCI_ERROR.
1005: The error recorded in 'err' can be retrieved by calling
1006: OCIErrorGet().
1007: type_ref (IN) - OCIRef * pointing to the particular version of
1008: the type descriptor object to obtain.
1009: The array must have array_len elements if specified.
1010: pin_duration (IN) - pin duration (e.g. until the end of current
1011: transaction) for the type to retreieve. See 'oro.h' for a
1012: description of each option.
1013: get_option (IN) - options for loading the type. It can be one of two
1014: values:
1015: OCI_TYPEGET_HEADER for only the header to be loaded, or
1016: OCI_TYPEGET_ALL for the TDO and all ADO and MDOs to be
1017: loaded.
1018: tdo (OUT) - pointer to the pinned type in the object cache
1019: DESCRIPTION:
1020: Get pointers to the
1021: with the schema/type name array. This is similar to OCITypeByName()
1022: except that all the TDO's are retreived via a single network roundtrip.
1023: RETURNS:
1024: OCI_SUCCESS if the function completes successfully.
1025: OCI_INVALID_HANDLE if 'env' or 'err' is null.
1026: OCI_ERROR if
1027: 1) any of the required parameters is null.
1028: 2) one or more adt types associated with a schema/type name entry
1029: does not exist.
1030: */
1031:
1032: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1033: sword OCITypeArrayByRef(/*_ OCIEnv *env, OCIError *err,
1034: ub4 array_len, CONST OCIRef *type_ref[],
1035: OCIDuration pin_duration,
1036: OCITypeGetOpt get_option, OCIType *tdo[] _*/);
1037: #else /* ANSI C */
1038: sword OCITypeArrayByRef( OCIEnv *env, OCIError *err,
1039: ub4 array_len, CONST OCIRef *type_ref[],
1040: OCIDuration pin_duration,
1041: OCITypeGetOpt get_option, OCIType *tdo[] );
1042: #endif
1043:
1044: /*
1045: NAME: OCITypeArrayByRef - OCI Get array of TYPes by REF.
1046: PARAMETERS:
1047: env (IN/OUT) - OCI environment handle initialized in object mode
1048: err (IN/OUT) - error handle. If there is an error, it is
1049: recorded in 'err' and this function returns OCI_ERROR.
1050: The error recorded in 'err' can be retrieved by calling
1051: OCIErrorGet().
1052: array_len (IN) - number of schema_name/type_name/version_name entries to
1053: be retrieved.
1054: type_ref (IN) - array of OCIRef * pointing to the particular version of
1055: the type descriptor object to obtain.
1056: The array must have array_len elements if specified.
1057: pin_duration (IN) - pin duration (e.g. until the end of current
1058: transaction) for the types retreieve. See 'oro.h' for a
1059: description of each option.
1060: get_option (IN) - options for loading the types. It can be one of two
1061: values:
1062: OCI_TYPEGET_HEADER for only the header to be loaded, or
1063: OCI_TYPEGET_ALL for the TDO and all ADO and MDOs to be
1064: loaded.
1065: tdo (OUT) - output array for the pointers to each pinned type in the
1066: object cache. It must have space for array_len pointers.
1067: Use OCIObjectGetObjectRef() to obtain the CREF to each
1068: pinned type descriptor.
1069: DESCRIPTION:
1070: Get pointers to the
1071: with the schema/type name array. This is similar to OCITypeByName()
1072: except that all the TDO's are retreived via a single network roundtrip.
1073: RETURNS:
1074: OCI_SUCCESS if the function completes successfully.
1075: OCI_INVALID_HANDLE if 'env' or 'err' is null.
1076: OCI_ERROR if
1077: 1) any of the required parameters is null.
1078: 2) one or more adt types associated with a schema/type name entry
1079: does not exist.
1080: */
1081:
1082:
1083: /*--------------------------------------------------------------------------*/
1084: /* TYPE ACCESSORS */
1085: /*--------------------------------------------------------------------------*/
1086:
1087: /*---------------------------- OCITypeName ---------------------------------*/
1088:
1089: /* ** OBSOLETE ** */
1090: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1091: text* OCITypeName(/*_ OCIEnv *env, OCIError *err, CONST OCIType *tdo,
1092: ub4 *n_length _*/);
1093: #else /* ANSI C */
1094: text* OCITypeName( OCIEnv *env, OCIError *err, CONST OCIType *tdo,
1095: ub4 *n_length );
1096: #endif
1097: /*
1098: NAME: OCITypeName - ORT Get a Type's naME.
1099: PARAMETERS:
1100: env (IN/OUT) - OCI environment handle initialized in object mode
1101: err (IN/OUT) - error handle. If there is an error, it is
1102: recorded in 'err' and this function returns OCI_ERROR.
1103: The error recorded in 'err' can be retrieved by calling
1104: OCIErrorGet().
1105: tdo (IN) - pointer to to the type descriptor in the object cache
1106: n_length (OUT) - length (in bytes) of the returned type name. The
1107: caller must allocate space for the ub4 before calling this
1108: routine.
1109: REQUIRES:
1110: 1) All type accessors require that the type be pinned before calling
1111: any accessor.
1112: 2) All input parameters must not be NULL and must be valid.
1113: 3) 'n_length' must point to an allocated ub4.
1114: DESCRIPTION:
1115: Get the name of the type.
1116: RETURNS:
1117: the name of the type
1118: NOTES:
1119: The type descriptor, 'tdo', must be unpinned when the accessed
1120: information is no longer needed.
1121: */
1122:
1123: /*------------------------ OCITypeSchema ---------------------------------*/
1124:
1125: /* ** OBSOLETE ** */
1126: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1127: text* OCITypeSchema(/*_ OCIEnv *env, OCIError *err, CONST OCIType *tdo,
1128: ub4 *n_length _*/);
1129: #else /* ANSI C */
1130: text* OCITypeSchema( OCIEnv *env, OCIError *err, CONST OCIType *tdo,
1131: ub4 *n_length );
1132: #endif
1133: /*
1134: NAME: OCITypeSchema - ORT Get a Type's SCHema name.
1135: PARAMETERS:
1136: env (IN/OUT) - OCI environment handle initialized in object mode
1137: err (IN/OUT) - error handle. If there is an error, it is
1138: recorded in 'err' and this function returns OCI_ERROR.
1139: The error recorded in 'err' can be retrieved by calling
1140: OCIErrorGet().
1141: tdo (IN) - pointer to to the type descriptor in the object cache
1142: n_length (OUT) - length (in bytes) of the returned schema name. The
1143: caller must allocate space for the ub4 before calling this
1144: routine.
1145: REQUIRES:
1146: 1) All type accessors require that the type be pinned before calling
1147: any accessor.
1148: 2) All input parameters must not be NULL and must be valid.
1149: 3) 'n_length' must point to an allocated ub4.
1150: DESCRIPTION:
1151: Get the schema name of the type.
1152: RETURNS:
1153: the schema name of the type
1154: NOTES:
1155: The type descriptor, 'tdo', must be unpinned when the accessed
1156: information is no longer needed.
1157: */
1158:
1159: /*------------------------ OCITypeTypeCode ---------------------------------*/
1160:
1161: /* ** OBSOLETE ** */
1162: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1163: OCITypeCode OCITypeTypeCode(/*_ OCIEnv *env, OCIError *err,
1164: CONST OCIType *tdo _*/);
1165: #else /* ANSI C */
1166: OCITypeCode OCITypeTypeCode( OCIEnv *env, OCIError *err,
1167: CONST OCIType *tdo );
1168: #endif
1169: /*
1170: NAME: OCITypeTypeCode - OCI Get a Type's Type Code.
1171: PARAMETERS:
1172: env (IN/OUT) - OCI environment handle initialized in object mode
1173: err (IN/OUT) - error handle. If there is an error, it is
1174: recorded in 'err' and this function returns OCI_ERROR.
1175: The error recorded in 'err' can be retrieved by calling
1176: OCIErrorGet().
1177: tdo (IN) - pointer to to the type descriptor in the object cache
1178: REQUIRES:
1179: 1) All type accessors require that the type be pinned before calling
1180: any accessor.
1181: 2) All input parameters must not be NULL and must be valid.
1182: DESCRIPTION:
1183: Get the type code of the type.
1184: RETURNS:
1185: The type code of the type.
1186: NOTES:
1187: The type descriptor, 'tdo', must be unpinned when the accessed
1188: information is no longer needed.
1189: */
1190:
1191: /*----------------------- OCITypeCollTypeCode -------------------------------*/
1192:
1193: /* ** OBSOLETE ** */
1194: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1195: OCITypeCode OCITypeCollTypeCode(/*_ OCIEnv *env, OCIError *err,
1196: CONST OCIType *tdo _*/);
1197: #else /* ANSI C */
1198: OCITypeCode OCITypeCollTypeCode( OCIEnv *env, OCIError *err,
1199: CONST OCIType *tdo );
1200: #endif
1201: /*
1202: NAME: OCITypeCollTypeCode - OCI Get a Domain Type's Type Code.
1203: PARAMETERS:
1204: env (IN/OUT) - OCI environment handle initialized in object mode
1205: err (IN/OUT) - error handle. If there is an error, it is
1206: recorded in 'err' and this function returns OCI_ERROR.
1207: The error recorded in 'err' can be retrieved by calling
1208: OCIErrorGet().
1209: tdo (IN) - pointer to to the type descriptor in the object cache
1210: REQUIRES:
1211: 1) All type accessors require that the type be pinned before calling
1212: any accessor.
1213: 2) All input parameters must not be NULL and must be valid.
1214: 3) 'tdo' MUST point to a named collection type.
1215: DESCRIPTION:
1216: Get the type code of the named collection type. For V8.0, named
1217: collection types can only be variable length arrays and nested tables.
1218: RETURNS:
1219: OCI_TYPECODE_VARRAY for variable length array, and
1220: OCI_TYPECODE_TABLE for nested tables.
1221: NOTES:
1222: The type descriptor, 'tdo', should be unpinned when the accessed
1223: information is no longer needed.
1224: */
1225:
1226: /*------------------------- OCITypeVersion ---------------------------------*/
1227:
1228: /* ** OBSOLETE ** */
1229: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1230: text* OCITypeVersion(/*_ OCIEnv *env, OCIError *err, CONST OCIType *tdo,
1231: ub4 *v_length _*/);
1232: #else /* ANSI C */
1233: text* OCITypeVersion( OCIEnv *env, OCIError *err, CONST OCIType *tdo,
1234: ub4 *v_length );
1235: #endif
1236: /*
1237: NAME: OCITypeVersion - OCI Get a Type's user-readable VersioN.
1238: PARAMETERS:
1239: env (IN/OUT) - OCI environment handle initialized in object mode
1240: err (IN/OUT) - error handle. If there is an error, it is
1241: recorded in 'err' and this function returns OCI_ERROR.
1242: The error recorded in 'err' can be retrieved by calling
1243: OCIErrorGet().
1244: tdo (IN) - pointer to to the type descriptor in the object cache
1245: v_length (OUT) - length (in bytes) of the returned user-readable
1246: version. The caller must allocate space for the ub4 before
1247: calling this routine.
1248: REQUIRES:
1249: 1) All type accessors require that the type be pinned before calling
1250: any accessor.
1251: 2) All input parameters must not be NULL and must be valid.
1252: 3) 'v_length' must point to an allocated ub4.
1253: DESCRIPTION:
1254: Get the user-readable version of the type.
1255: RETURNS:
1256: The user-readable version of the type
1257: NOTES:
1258: The type descriptor, 'tdo', must be unpinned when the accessed
1259: information is no longer needed.
1260: */
1261:
1262: /*--------------------------- OCITypeAttrs ---------------------------------*/
1263:
1264: /* ** OBSOLETE ** */
1265: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1266: ub4 OCITypeAttrs(/*_ OCIEnv *env, OCIError *err, CONST OCIType *tdo _*/);
1267: #else /* ANSI C */
1268: ub4 OCITypeAttrs( OCIEnv *env, OCIError *err, CONST OCIType *tdo );
1269: #endif
1270: /*
1271: NAME: OCITypeAttrs - OCI Get a Type's Number of Attributes.
1272: PARAMETERS:
1273: env (IN/OUT) - OCI environment handle initialized in object mode
1274: err (IN/OUT) - error handle. If there is an error, it is
1275: recorded in 'err' and this function returns OCI_ERROR.
1276: The error recorded in 'err' can be retrieved by calling
1277: OCIErrorGet().
1278: tdo (IN) - pointer to to the type descriptor in the object cache
1279: REQUIRES:
1280: 1) All type accessors require that the type be pinned before calling
1281: any accessor.
1282: 2) All input parameters must not be NULL and must be valid.
1283: DESCRIPTION:
1284: Get the number of attributes in the type.
1285: RETURNS:
1286: The number of attributes in the type. 0 for ALL non-ADTs.
1287: NOTES:
1288: The type descriptor, 'tdo', must be unpinned when the accessed
1289: information is no longer needed.
1290: */
1291:
1292: /*------------------------- OCITypeMethods ---------------------------------*/
1293:
1294: /* ** OBSOLETE ** */
1295: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1296: ub4 OCITypeMethods(/*_ OCIEnv *env, OCIError *err, CONST OCIType *tdo _*/);
1297: #else /* ANSI C */
1298: ub4 OCITypeMethods( OCIEnv *env, OCIError *err, CONST OCIType *tdo );
1299: #endif
1300: /*
1301: NAME: OCITypeMethods - OCI Get a Type's Number of Methods.
1302: PARAMETERS:
1303: env (IN/OUT) - OCI environment handle initialized in object mode
1304: err (IN/OUT) - error handle. If there is an error, it is
1305: recorded in 'err' and this function returns OCI_ERROR.
1306: The error recorded in 'err' can be retrieved by calling
1307: OCIErrorGet().
1308: tdo (IN) - pointer to to the type descriptor in the object cache
1309: REQUIRES:
1310: 1) All type accessors require that the type be pinned before calling
1311: any accessor.
1312: 2) All input parameters must not be NULL and must be valid.
1313: DESCRIPTION:
1314: Get the number of methods in a type.
1315: RETURNS:
1316: The number of methods in the type
1317: NOTES:
1318: The type descriptor, 'tdo', must be unpinned when the accessed
1319: information is no longer needed.
1320: */
1321:
1322:
1323: /*--------------------------------------------------------------------------*/
1324: /* TYPE ELEMENT INFORMATION ACCESSORS */
1325: /*--------------------------------------------------------------------------*/
1326:
1327: /*------------------------ OCITypeElemName ---------------------------------*/
1328:
1329: /* ** OBSOLETE ** */
1330: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1331: text* OCITypeElemName(/*_ OCIEnv *env, OCIError *err, CONST OCITypeElem *elem,
1332: ub4 *n_length _*/);
1333: #else /* ANSI C */
1334: text* OCITypeElemName( OCIEnv *env, OCIError *err, CONST OCITypeElem *elem,
1335: ub4 *n_length );
1336: #endif
1337: /*
1338: NAME: OCITypeElemName - OCI Get an Attribute's NaMe.
1339: PARAMETERS:
1340: env (IN/OUT) - OCI environment handle initialized in object mode
1341: err (IN/OUT) - error handle. If there is an error, it is
1342: recorded in 'err' and this function returns OCI_ERROR.
1343: The error recorded in 'err' can be retrieved by calling
1344: OCIErrorGet().
1345: elem (IN) - pointer to the type element descriptor in the object cache
1346: n_length (OUT) - length (in bytes) of the returned attribute name.
1347: The caller must allocate space for the ub4 before calling this
1348: routine.
1349: REQUIRES:
1350: 1) All type accessors require that the type be pinned before calling
1351: any accessor.
1352: 2) All input parameters must not be NULL and must be valid.
1353: 3) 'n_length' must point to an allocated ub4.
1354: DESCRIPTION:
1355: Get the name of the attribute.
1356: RETURNS:
1357: the name of the attribute and the length in n_length
1358: NOTES:
1359: The type must be unpinned when the accessed information is no
1360: longer needed.
1361: */
1362:
1363: /*------------------------ OCITypeElemTypeCode ------------------------------*/
1364:
1365: /* ** OBSOLETE ** */
1366: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1367: OCITypeCode OCITypeElemTypeCode(/*_ OCIEnv *env, OCIError *err,
1368: CONST OCITypeElem *elem _*/);
1369: #else /* ANSI C */
1370: OCITypeCode OCITypeElemTypeCode( OCIEnv *env, OCIError *err,
1371: CONST OCITypeElem *elem );
1372: #endif
1373: /*
1374: NAME: OCITypeElemTypeCode - OCI Get an Attribute's TypeCode.
1375: PARAMETERS:
1376: env (IN/OUT) - OCI environment handle initialized in object mode
1377: err (IN/OUT) - error handle. If there is an error, it is
1378: recorded in 'err' and this function returns OCI_ERROR.
1379: The error recorded in 'err' can be retrieved by calling
1380: OCIErrorGet().
1381: elem (IN) - pointer to the type element descriptor in the object cache
1382: REQUIRES:
1383: 1) All type accessors require that the type be pinned before calling
1384: any accessor.
1385: 2) All input parameters must not be NULL and must be valid.
1386: DESCRIPTION:
1387: Get the typecode of an attribute's type.
1388: RETURNS:
1389: the typecode of the attribute's type. If this is a scalar type, the
1390: typecode sufficiently describes the scalar type and no further calls
1391: need to be made. Valid scalar types include: OCI_TYPECODE_SIGNED8,
1392: OCI_TYPECODE_UNSIGNED8, OCI_TYPECODE_SIGNED16, OCI_TYPECODE_UNSIGNED16,
1393: OCI_TYPECODE_SIGNED32, OCI_TYPECODE_UNSIGNED32, OCI_TYPECODE_REAL,
1394: OCI_TYPECODE_DOUBLE, OCI_TYPECODE_DATE,
1395: OCI_TYPECODE_MLSLABEL, OROTCOID, OCI_TYPECODE_OCTET, or OROTCLOB.
1396: This function converts the CREF (stored in the attribute) into a
1397: typecode.
1398: NOTES:
1399: The type must be unpinned when the accessed information is no
1400: longer needed.
1401: */
1402:
1403: /*------------------------ OCITypeElemType ---------------------------------*/
1404:
1405: /* ** OBSOLETE ** */
1406: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1407: sword OCITypeElemType(/*_ OCIEnv *env, OCIError *err, CONST OCITypeElem *elem,
1408: OCIType **elem_tdo _*/);
1409: #else /* ANSI C */
1410: sword OCITypeElemType( OCIEnv *env, OCIError *err, CONST OCITypeElem *elem,
1411: OCIType **elem_tdo );
1412: #endif
1413: /*
1414: PARAMETERS
1415: env (IN/OUT) - OCI environment handle initialized in object mode
1416: err (IN/OUT) - error handle. If there is an error, it is
1417: recorded in 'err' and this function returns OCI_ERROR.
1418: The error recorded in 'err' can be retrieved by calling
1419: OCIErrorGet().
1420: elem (IN) - pointer to the type element descriptor in the object cache
1421: elem_tdo (OUT) - If the function completes successfully, 'elem_tdo'
1422: points to the type descriptor (in the object cache) of the type of
1423: the element.
1424:
1425: REQUIRES
1426: 1) All type accessors require that the type be pinned before calling
1427: any accessor. This can be done by calling 'OCITypeByName()'.
1428: 2) if 'elem' is not null, it must point to a valid type element descriptor
1429: in the object cache.
1430:
1431: DESCRIPTION
1432: Get the type tdo of the type of this element.
1433: RETURNS
1434: OCI_SUCCESS if the function completes successfully.
1435: OCI_INVALID_HANDLE if 'env' or 'err' is null.
1436: OCI_ERROR if
1437: 1) any of the parameters is null.
1438:
1439: NOTES
1440: The type must be unpinned when the accessed information is no
1441: longer needed. This can be done by calling 'OCIObjectUnpin()'.
1442: */
1443:
1444: /*------------------------- OCITypeElemFlags -------------------------------*/
1445:
1446: /* ** OBSOLETE ** */
1447: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1448: ub4 OCITypeElemFlags(/*_ OCIEnv *env, OCIError *err,
1449: CONST OCITypeElem *elem _*/);
1450: #else /* ANSI C */
1451: ub4 OCITypeElemFlags( OCIEnv *env, OCIError *err,
1452: CONST OCITypeElem *elem );
1453: #endif
1454: /*
1455: NAME: OCITypeElemFlags - OCI Get a Elem's FLags
1456: (inline, constant, virtual, constructor,
1457: destructor).
1458: PARAMETERS:
1459: env (IN/OUT) - OCI environment handle initialized in object mode
1460: err (IN/OUT) - error handle. If there is an error, it is
1461: recorded in 'err' and this function returns OCI_ERROR.
1462: The error recorded in 'err' can be retrieved by calling
1463: OCIErrorGet().
1464: elem (IN) - pointer to the type element descriptor in the object cache
1465: REQUIRES:
1466: 1) All type accessors require that the type be pinned before calling
1467: any accessor.
1468: 2) All input parameters must not be NULL and must be valid.
1469: DESCRIPTION:
1470: Get the flags of a type element (attribute, parameter).
1471: RETURNS:
1472: The flags of the type element.
1473: NOTES:
1474: The flag bits are not externally documented. Use only the macros
1475: in the last section (ie. OCI_TYPEPARAM_IS_REQUIRED, and
1476: OCI_TYPEELEM_IS_REF) to test for them only. The type must be unpinned
1477: when the accessed information is no longer needed.
1478: */
1479:
1480: /*------------------------ OCITypeElemNumPrec ------------------------------*/
1481:
1482: /* ** OBSOLETE ** */
1483: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1484: ub1 OCITypeElemNumPrec(/*_ OCIEnv *env, OCIError *err,
1485: CONST OCITypeElem *elem _*/);
1486: #else /* ANSI C */
1487: ub1 OCITypeElemNumPrec( OCIEnv *env, OCIError *err,
1488: CONST OCITypeElem *elem );
1489: #endif
1490: /*
1491: NAME: OCITypeElemNumPrec - Get a Number's Precision. This includes float,
1492: decimal, real, double, and oracle number.
1493: PARAMETERS:
1494: env (IN/OUT) - OCI environment handle initialized in object mode
1495: err (IN/OUT) - error handle. If there is an error, it is
1496: recorded in 'err' and this function returns OCI_ERROR.
1497: The error recorded in 'err' can be retrieved by calling
1498: OCIErrorGet().
1499: elem (IN) - pointer to the type element descriptor in the object cache
1500: REQUIRES:
1501: All input parameters must not be NULL and must be valid.
1502: DESCRIPTION:
1503: Get the precision of a float, decimal, long, unsigned long, real,
1504: double, or Oracle number type.
1505: RETURNS:
1506: the precision of the float, decimal, long, unsigned long, real, double,
1507: or Oracle number
1508: */
1509:
1510: /*------------------------- OCITypeElemNumScale -----------------------------*/
1511:
1512: /* ** OBSOLETE ** */
1513: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1514: sb1 OCITypeElemNumScale(/*_ OCIEnv *env, OCIError *err,
1515: CONST OCITypeElem *elem _*/);
1516: #else /* ANSI C */
1517: sb1 OCITypeElemNumScale( OCIEnv *env, OCIError *err,
1518: CONST OCITypeElem *elem );
1519: #endif
1520: /*
1521: NAME: OCITypeElemNumScale - Get a decimal or oracle Number's Scale
1522: PARAMETERS:
1523: env (IN/OUT) - OCI environment handle initialized in object mode
1524: err (IN/OUT) - error handle. If there is an error, it is
1525: recorded in 'err' and this function returns OCI_ERROR.
1526: The error recorded in 'err' can be retrieved by calling
1527: OCIErrorGet().
1528: elem (IN) - pointer to the type element descriptor in the object cache
1529: REQUIRES:
1530: All input parameters must not be NULL and must be valid.
1531: DESCRIPTION:
1532: Get the scale of a decimal, or Oracle number type.
1533: RETURNS:
1534: the scale of the decimal, or Oracle number
1535: */
1536:
1537: /*------------------------ OCITypeElemLength -------------------------------*/
1538:
1539: /* ** OBSOLETE ** */
1540: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1541: ub4 OCITypeElemLength(/*_ OCIEnv *env, OCIError *err,
1542: CONST OCITypeElem *elem _*/);
1543: #else /* ANSI C */
1544: ub4 OCITypeElemLength( OCIEnv *env, OCIError *err,
1545: CONST OCITypeElem *elem );
1546: #endif
1547: /*
1548: NAME: OCITypeElemLength - Get a raw, fixed or variable length String's
1549: length in bytes.
1550: PARAMETERS:
1551: env (IN/OUT) - OCI environment handle initialized in object mode
1552: err (IN/OUT) - error handle. If there is an error, it is
1553: recorded in 'err' and this function returns OCI_ERROR.
1554: The error recorded in 'err' can be retrieved by calling
1555: OCIErrorGet().
1556: elem (IN) - pointer to the type element descriptor in the object cache
1557: REQUIRES:
1558: All input parameters must not be NULL and must be valid.
1559: DESCRIPTION:
1560: Get the length of a raw, fixed or variable length string type.
1561: RETURNS:
1562: length of the raw, fixed or variable length string
1563: */
1564:
1565: /*----------------------- OCITypeElemCharSetID -----------------------------*/
1566:
1567: /* ** OBSOLETE ** */
1568: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1569: ub2 OCITypeElemCharSetID(/*_ OCIEnv *env, OCIError *err,
1570: CONST OCITypeElem *elem _*/);
1571: #else /* ANSI C */
1572: ub2 OCITypeElemCharSetID( OCIEnv *env, OCIError *err,
1573: CONST OCITypeElem *elem );
1574: #endif
1575: /*
1576: NAME: OCITypeElemCharSetID - Get a fixed or variable length String's
1577: character set ID
1578: PARAMETERS:
1579: env (IN/OUT) - OCI environment handle initialized in object mode
1580: err (IN/OUT) - error handle. If there is an error, it is
1581: recorded in 'err' and this function returns OCI_ERROR.
1582: The error recorded in 'err' can be retrieved by calling
1583: OCIErrorGet().
1584: elem (IN) - pointer to the type element descriptor in the object cache
1585: REQUIRES:
1586: All input parameters must not be NULL and must be valid.
1587: DESCRIPTION:
1588: Get the character set ID of a fixed or variable length string type.
1589: RETURNS:
1590: character set ID of the fixed or variable length string
1591: */
1592:
1593: /*---------------------- OCITypeElemCharSetForm ----------------------------*/
1594:
1595: /* ** OBSOLETE ** */
1596: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1597: ub2 OCITypeElemCharSetForm(/*_ OCIEnv *env, OCIError *err,
1598: CONST OCITypeElem *elem _*/);
1599: #else /* ANSI C */
1600: ub2 OCITypeElemCharSetForm( OCIEnv *env, OCIError *err,
1601: CONST OCITypeElem *elem );
1602: #endif
1603: /*
1604: NAME: OCITypeElemCharSetForm - Get a fixed or variable length String's
1605: character set specification form.
1606: PARAMETERS:
1607: env (IN/OUT) - OCI environment handle initialized in object mode
1608: err (IN/OUT) - error handle. If there is an error, it is
1609: recorded in 'err' and this function returns OCI_ERROR.
1610: The error recorded in 'err' can be retrieved by calling
1611: OCIErrorGet().
1612: elem (IN) - pointer to the attribute information in the object cache
1613: REQUIRES:
1614: All input parameters must not be NULL and must be valid.
1615: DESCRIPTION:
1616: Get the character form of a fixed or variable length string type.
1617: The character form is an enumerated value that can be one of the
1618: 4 values below:
1619: SQLCS_IMPLICIT for CHAR, VARCHAR2, CLOB w/o a specified set
1620: SQLCS_NCHAR for NCHAR, NCHAR VARYING, NCLOB
1621: SQLCS_EXPLICIT for CHAR, etc, with "CHARACTER SET ..." syntax
1622: SQLCS_FLEXIBLE for PL/SQL "flexible" parameters
1623: RETURNS:
1624: character form of the fixed or variable string
1625: */
1626:
1627: /*--------------------- OCITypeElemParameterizedType ------------------------*/
1628:
1629: /* ** OBSOLETE ** */
1630: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1631: sword OCITypeElemParameterizedType(/*_ OCIEnv *env, OCIError *err,
1632: CONST OCITypeElem *elem,
1633: OCIType **type_stored _*/);
1634: #else /* ANSI C */
1635: sword OCITypeElemParameterizedType( OCIEnv *env, OCIError *err,
1636: CONST OCITypeElem *elem,
1637: OCIType **type_stored );
1638: #endif
1639: /*
1640: NAME: OCITypeElemParameterizedType
1641: PARAMETERS:
1642: env (IN/OUT) - OCI environment handle initialized in object mode
1643: err (IN/OUT) - error handle. If there is an error, it is
1644: recorded in 'err' and this function returns OCI_ERROR.
1645: The error recorded in 'err' can be retrieved by calling
1646: OCIErrorGet().
1647: elem (IN) - pointer to the type element descriptor in the object cache
1648: type_stored (OUT) - If the function completes successfully,
1649: and the parameterized type is complex, 'type_stored' is NULL.
1650: Otherwise, 'type_stored' points to the type descriptor (in the
1651: object cache) of the type that is stored in the parameterized
1652: type. The caller must allocate space for the OCIType*
1653: before calling this routine and must not write into the space.
1654: REQUIRES:
1655: All input parameters must be valid.
1656: DESCRIPTION:
1657: Get a descriptor to the parameter type of a parameterized type.
1658: Parameterized types are types of the form:
1659: REF T
1660: VARRAY (n) OF T
1661: etc, where T is the parameter in the parameterized type.
1662: Additionally is_ref is set if the parameter is a PTR or REF.
1663: For example, it is set for REF T or VARRAY(n) OF REF T.
1664: RETURNS:
1665: OCI_SUCCESS if the function completes successfully.
1666: OCI_INVALID_HANDLE if 'env' or 'err' is null.
1667: OCI_ERROR if
1668: 1) any of the parameters is null.
1669: 2) 'type_stored' is not NULL but points to NULL data.
1670: NOTES:
1671: Complex parameterized types will be in a future release (once
1672: typedefs are supported. When setting the parameterized type
1673: information, the user must typedef the contents if it's a
1674: complex parameterized type. Ex. for varray<varray<car>>, use
1675: 'typedef varray<car> varcar' and then use varray<varcar>.
1676: */
1677:
1678: /*----------------------- OCITypeElemExtTypeCode ----------------------------*/
1679:
1680: /* ** OBSOLETE ** */
1681: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1682: OCITypeCode OCITypeElemExtTypeCode(/*_ OCIEnv *env, OCIError *err,
1683: CONST OCITypeElem *elem _*/);
1684: #else /* ANSI C */
1685: OCITypeCode OCITypeElemExtTypeCode( OCIEnv *env, OCIError *err,
1686: CONST OCITypeElem *elem );
1687: #endif
1688: /*
1689: NAME: OCITypeElemExtTypeCode - OCI Get an element's SQLT constant.
1690: PARAMETERS:
1691: env (IN/OUT) - OCI environment handle initialized in object mode
1692: err (IN/OUT) - error handle. If there is an error, it is
1693: recorded in 'err' and this function returns OCI_ERROR.
1694: The error recorded in 'err' can be retrieved by calling
1695: OCIErrorGet().
1696: elem (IN) - pointer to the type element descriptor in the object cache
1697: REQUIRES:
1698: 1) All type accessors require that the type be pinned before calling
1699: any accessor.
1700: 2) All input parameters must not be NULL and must be valid.
1701: DESCRIPTION:
1702: Get the internal Oracle typecode associated with an attribute's type.
1703: This is the actual typecode for the attribute when it gets mapped
1704: to a column in the Oracle database.
1705: RETURNS:
1706: The Oracle typecode associated with the attribute's type.
1707: NOTES:
1708: The type must be unpinned when the accessed information is no
1709: longer needed.
1710: */
1711:
1712: /*--------------------------------------------------------------------------*/
1713: /* ATTRIBUTE ACCESSORS */
1714: /*--------------------------------------------------------------------------*/
1715:
1716: /*------------------------ OCITypeAttrByName -------------------------------*/
1717:
1718: /* ** OBSOLETE ** */
1719: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1720: sword OCITypeAttrByName(/*_ OCIEnv *env, OCIError *err, CONST OCIType *tdo,
1721: CONST text *name, ub4 n_length,
1722: OCITypeElem **elem _*/);
1723: #else /* ANSI C */
1724: sword OCITypeAttrByName( OCIEnv *env, OCIError *err, CONST OCIType *tdo,
1725: CONST text *name, ub4 n_length,
1726: OCITypeElem **elem );
1727: #endif
1728: /*
1729: NAME: OCITypeAttrByName - OCI Get an Attribute By Name.
1730: PARAMETERS:
1731: env (IN/OUT) - OCI environment handle initialized in object mode
1732: err (IN/OUT) - error handle. If there is an error, it is
1733: recorded in 'err' and this function returns OCI_ERROR.
1734: The error recorded in 'err' can be retrieved by calling
1735: OCIErrorGet().
1736: tdo (IN) - pointer to to the type descriptor in the object cache
1737: name (IN) - the attribute's name
1738: n_length (IN) - length (in bytes) of the 'name' parameter
1739: elem (OUT) - If this function completes successfully, 'elem' points to
1740: the selected type element descriptor pertaining to the
1741: attributein the object cache.
1742: REQUIRES:
1743: 1) All type accessors require that the type be pinned before calling
1744: any accessor.
1745: 2) if 'tdo' is not null, it must point to a valid type descriptor
1746: in the object cache.
1747: DESCRIPTION:
1748: Get an attribute given its name.
1749: RETURNS:
1750: OCI_SUCCESS if the function completes successfully.
1751: OCI_INVALID_HANDLE if 'env' or 'err' is null.
1752: OCI_ERROR if
1753: 1) any of the required parameters is null.
1754: 2) the type does not contain an attribute with the input 'name'.
1755: 3) 'name' is NULL.
1756: NOTES:
1757: The type descriptor, 'tdo', must be unpinned when the accessed
1758: information is no longer needed.
1759: Schema and type names are CASE-SENSITIVE. If they have been created
1760: via SQL, you need to use uppercase names.
1761: */
1762:
1763: /*------------------------ OCITypeAttrNext ---------------------------------*/
1764:
1765: /* ** OBSOLETE ** */
1766: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1767: sword OCITypeAttrNext(/*_ OCIEnv *env, OCIError *err, OCITypeIter *iterator,
1768: OCITypeElem **elem _*/);
1769: #else /* ANSI C */
1770: sword OCITypeAttrNext( OCIEnv *env, OCIError *err, OCITypeIter *iterator,
1771: OCITypeElem **elem );
1772: #endif
1773:
1774: /*
1775: NAME: OCITypeAttrNext - OCI Get an Attribute By Iteration.
1776: PARAMETERS:
1777: env (IN/OUT) - OCI environment handle initialized in object mode
1778: err (IN/OUT) - error handle. If there is an error, it is
1779: recorded in 'err' and this function returns OCI_ERROR.
1780: The error recorded in 'err' can be retrieved by calling
1781: OCIErrorGet().
1782: iterator (IN/OUT) - iterator for retrieving the next attribute;
1783: see OCITypeIterNew() to initialize iterator.
1784: elem (OUT) - If this function completes successfully, 'elem' points to
1785: the selected type element descriptor pertaining to the
1786: attributein the object cache.
1787: REQUIRES:
1788: 1) All type accessors require that the type be pinned before calling
1789: any accessor.
1790: 2) if 'tdo' is not null, it must point to a valid type descriptor
1791: in the object cache.
1792: DESCRIPTION:
1793: Iterate to the next attribute to retrieve.
1794: RETURNS:
1795: OCI_SUCCESS if the function completes successfully.
1796: OCI_NO_DATA if there are no more attributes to iterate on; use
1797: OCITypeIterSet() to reset the iterator if necessary.
1798: OCI_INVALID_HANDLE if 'env' or 'err' is null.
1799: OCI_ERROR if
1800: 1) any of the required parameters is null.
1801: NOTES:
1802: The type must be unpinned when the accessed information is no
1803: longer needed.
1804: */
1805:
1806: /*--------------------------------------------------------------------------*/
1807: /* COLLECTION ACCESSORS */
1808: /*--------------------------------------------------------------------------*/
1809:
1810: /*------------------------ OCITypeCollElem ---------------------------------*/
1811:
1812: /* ** OBSOLETE ** */
1813: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1814: sword OCITypeCollElem(/*_ OCIEnv *env, OCIError *err, CONST OCIType *tdo,
1815: OCITypeElem **element _*/);
1816: #else /* ANSI C */
1817: sword OCITypeCollElem( OCIEnv *env, OCIError *err, CONST OCIType *tdo,
1818: OCITypeElem **element );
1819: #endif
1820: /*
1821: NAME: OCITypeCollElem
1822: PARAMETERS:
1823: env (IN/OUT) - OCI environment handle initialized in object mode
1824: err (IN/OUT) - error handle. If there is an error, it is
1825: recorded in 'err' and this function returns OCI_ERROR.
1826: The error recorded in 'err' can be retrieved by calling
1827: OCIErrorGet().
1828: tdo (IN) - pointer to the type descriptor in the object cache
1829: element (IN/OUT) - If the function completes successfully, this
1830: points to the descriptor for the collection's element.
1831: It is stored in the same format as an ADT attribute's
1832: descriptor.
1833: If *element is NULL, OCITypeCollElem() implicitly allocates a
1834: new instance of OCITypeElem in the object cache. This instance
1835: will be
1836: automatically freed at the end of the session, and does not have
1837: to be freed explicitly.
1838: If *element is not NULL, OCITypeCollElem() assumes that it
1839: points to a valid OCITypeElem descriptor and will copy the
1840: results into it.
1841: REQUIRES:
1842: All input parameters must be valid.
1843: DESCRIPTION:
1844: Get a pointer to the descriptor (OCITypeElem) of the element of an
1845: array or the rowtype of a nested table.
1846: RETURNS:
1847: OCI_SUCCESS if the function completes successfully.
1848: OCI_INVALID_HANDLE if 'env' or 'err' is null.
1849: OCI_ERROR if
1850: 1) any of the parameters is null.
1851: 2) the type TDO does not point to a valid collection's type.
1852: NOTES:
1853: Complex parameterized types will be in a future release (once
1854: typedefs are supported. When setting the parameterized type
1855: information, the user must typedef the contents if it's a
1856: complex parameterized type. Ex. for varray<varray<car>>, use
1857: 'typedef varray<car> varcar' and then use varray<varcar>.
1858: */
1859:
1860: /*------------------------ OCITypeCollSize ---------------------------------*/
1861:
1862: /* ** OBSOLETE ** */
1863: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1864: sword OCITypeCollSize(/*_ OCIEnv *env, OCIError *err, CONST OCIType *tdo,
1865: ub4 *num_elems _*/);
1866: #else /* ANSI C */
1867: sword OCITypeCollSize( OCIEnv *env, OCIError *err, CONST OCIType *tdo,
1868: ub4 *num_elems );
1869: #endif
1870: /*
1871: NAME: OCITypeCollSize - OCI Get a Collection's Number of Elements.
1872: PARAMETERS:
1873: env (IN/OUT) - OCI environment handle initialized in object mode
1874: err (IN/OUT) - error handle. If there is an error, it is
1875: recorded in 'err' and this function returns OCI_ERROR.
1876: The error recorded in 'err' can be retrieved by calling
1877: OCIErrorGet().
1878: tdo (IN) - pointer to the type descriptor in the object cache
1879: num_elems (OUT) - number of elements in collection
1880: REQUIRES:
1881: All input parameters must be valid. tdo points to an array type
1882: defined as a domain.
1883: DESCRIPTION:
1884: Get the number of elements stored in a fixed array or the maximum
1885: number of elements in a variable array.
1886: RETURNS:
1887: OCI_SUCCESS if the function completes successfully.
1888: OCI_INVALID_HANDLE if 'env' or 'err' is null.
1889: OCI_ERROR if
1890: 1) any of the parameters is null.
1891: 2) 'tdo' does not point to a domain with a collection type.
1892: NOTES:
1893: Complex parameterized types will be in a future release (once
1894: typedefs are supported. When setting the parameterized type
1895: information, the user must typedef the contents if it's a
1896: complex parameterized type. Ex. for varray<varray<car>>, use
1897: 'typedef varray<car> varcar' and then use varray<varcar>.
1898: */
1899:
1900: /*------------------------ OCITypeCollExtTypeCode ---------------------------*/
1901:
1902: /* ** OBSOLETE ** */
1903: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1904: sword OCITypeCollExtTypeCode(/*_ OCIEnv *env, OCIError *err,
1905: CONST OCIType *tdo, OCITypeCode *sqt_code _*/);
1906: #else /* ANSI C */
1907: sword OCITypeCollExtTypeCode( OCIEnv *env, OCIError *err,
1908: CONST OCIType *tdo, OCITypeCode *sqt_code );
1909: #endif
1910: /*
1911: NAME: ortcsqt - OCI Get a Collection element's DTY constant.
1912: PARAMETERS:
1913: env (IN/OUT) - OCI environment handle initialized in object mode
1914: err (IN/OUT) - error handle. If there is an error, it is
1915: recorded in 'err' and this function returns OCI_ERROR.
1916: The error recorded in 'err' can be retrieved by calling
1917: OCIErrorGet().
1918: tdo (IN) - pointer to the type descriptor in the object cache
1919: sqt_code (OUT) - SQLT code of type element.
1920: REQUIRES:
1921: 1) All type accessors require that the type be pinned before calling
1922: any accessor.
1923: 2) All input parameters must not be NULL and must be valid.
1924: DESCRIPTION:
1925: Get the SQLT constant associated with an domain's element type.
1926: The SQLT codes are defined in <sqldef.h> and are needed for OCI/OOCI
1927: use.
1928: RETURNS:
1929: OCI_SUCCESS if the function completes successfully.
1930: OCI_INVALID_HANDLE if 'env' or 'err' is null.
1931: OCI_ERROR if
1932: 1) any of the parameters is null.
1933: 2) 'tdo' does not point to a domain with a collection type.
1934: NOTES:
1935: The type must be unpinned when the accessed information is no
1936: longer needed.
1937: */
1938:
1939:
1940: /*--------------------------------------------------------------------------*/
1941: /* METHOD ACCESSORS */
1942: /*--------------------------------------------------------------------------*/
1943:
1944: /*------------------------- OCITypeMethodOverload --------------------------*/
1945:
1946: /* ** OBSOLETE ** */
1947: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1948: ub4 OCITypeMethodOverload(/*_ OCIEnv *env, OCIError *err, CONST OCIType *tdo,
1949: CONST text *method_name, ub4 m_length _*/);
1950: #else /* ANSI C */
1951: ub4 OCITypeMethodOverload( OCIEnv *env, OCIError *err, CONST OCIType *tdo,
1952: CONST text *method_name, ub4 m_length );
1953: #endif
1954: /*
1955: NAME: OCITypeMethodOverload - OCI Get type's Number of Overloaded names
1956: for the given method name.
1957: PARAMETERS:
1958: gp (IN/OUT) - pga environment handle. Any errors are recorded here.
1959: tdo (IN) - pointer to to the type descriptor in the object cache
1960: method_name (IN) - the method's name
1961: m_length (IN) - length (in bytes) of the 'method_name' parameter
1962: REQUIRES:
1963: 1) All type accessors require that the type be pinned before calling
1964: any accessor.
1965: 2) if 'tdo' is not null, it must point to a valid type descriptor
1966: in the object cache.
1967: DESCRIPTION:
1968: Overloading of methods implies that more than one method may have the
1969: same method name. This routine returns the number of methods that
1970: have the given method name. If there are no methods with the input
1971: method name, 'num_methods' is 0. The caller uses this information when
1972: allocating space for the array of mdo and/or position pointers before
1973: calling 'OCITypeMethodByName()' or 'ortgmps()'.
1974: RETURNS:
1975: The number of methods with the given name. 0 if none contains the
1976: name.
1977: NOTES:
1978: Schema and type names are CASE-SENSITIVE. If they have been created
1979: via SQL, you need to use uppercase names.
1980: */
1981:
1982: /*------------------------ OCITypeMethodByName ------------------------------*/
1983:
1984: /* ** OBSOLETE ** */
1985: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
1986: sword OCITypeMethodByName(/*_ OCIEnv *env, OCIError *err, CONST OCIType *tdo,
1987: CONST text *method_name, ub4 m_length,
1988: OCITypeMethod **mdos _*/);
1989: #else /* ANSI C */
1990: sword OCITypeMethodByName( OCIEnv *env, OCIError *err, CONST OCIType *tdo,
1991: CONST text *method_name, ub4 m_length,
1992: OCITypeMethod **mdos );
1993: #endif
1994: /*
1995: NAME: OCITypeMethodByName - OCI Get one or more Methods with Name.
1996: PARAMETERS:
1997: env (IN/OUT) - OCI environment handle initialized in object mode
1998: err (IN/OUT) - error handle. If there is an error, it is
1999: recorded in 'err' and this function returns OCI_ERROR.
2000: The error recorded in 'err' can be retrieved by calling
2001: OCIErrorGet().
2002: tdo (IN) - pointer to to the type descriptor in the object cache
2003: method_name (IN) - the methods' name
2004: m_length (IN) - length (in bytes) of the 'name' parameter
2005: mdos (OUT) - If this function completes successfully, 'mdos' points to
2006: the selected methods in the object cache. The caller must
2007: allocate space for the array of OCITypeMethod pointers before
2008: calling this routine and must not write into the space.
2009: The number of OCITypeMethod pointers that will be returned can
2010: be obtained by calling 'OCITypeMethodOverload()'.
2011: REQUIRES:
2012: 1) All type accessors require that the type be pinned before calling
2013: any accessor.
2014: 2) if 'tdo' is not null, it must point to a valid type descriptor
2015: in the object cache.
2016: DESCRIPTION:
2017: Get one or more methods given the name.
2018: RETURNS:
2019: OCI_SUCCESS if the function completes successfully.
2020: OCI_INVALID_HANDLE if 'env' or 'err' is null.
2021: OCI_ERROR if
2022: 1) any of the required parameters is null.
2023: 2) No methods in type has name 'name'.
2024: 3) 'mdos' is not NULL but points to NULL data.
2025: NOTES:
2026: The type must be unpinned when the accessed information is no
2027: longer needed.
2028: Schema and type names are CASE-SENSITIVE. If they have been created
2029: via SQL, you need to use uppercase names.
2030: */
2031:
2032: /*------------------------ OCITypeMethodNext --------------------------------*/
2033:
2034: /* ** OBSOLETE ** */
2035: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
2036: sword OCITypeMethodNext(/*_ OCIEnv *env, OCIError *err, OCITypeIter *iterator,
2037: OCITypeMethod **mdo _*/);
2038: #else /* ANSI C */
2039: sword OCITypeMethodNext( OCIEnv *env, OCIError *err, OCITypeIter *iterator,
2040: OCITypeMethod **mdo );
2041: #endif
2042:
2043: /*
2044: NAME: OCITypeMethodNext - OCI Get a Method By Iteration.
2045: PARAMETERS:
2046: env (IN/OUT) - OCI environment handle initialized in object mode
2047: err (IN/OUT) - error handle. If there is an error, it is
2048: recorded in 'err' and this function returns OCI_ERROR.
2049: The error recorded in 'err' can be retrieved by calling
2050: OCIErrorGet().
2051: iterator (IN/OUT) - iterator for retrieving the next method;
2052: see OCITypeIterNew() to set iterator.
2053: mdo (OUT) - If this function completes successfully, 'mdo' points to
2054: the selected method descriptor in the object cache. Positions
2055: start at 1. The caller must allocate space for the
2056: OCITypeMethod* before calling this routine and must not write
2057: nto the space.
2058: REQUIRES:
2059: 1) All type accessors require that the type be pinned before calling
2060: any accessor.
2061: 2) if 'tdo' is not null, it must point to a valid type descriptor
2062: in the object cache.
2063: DESCRIPTION:
2064: Iterate to the next method to retrieve.
2065: RETURNS:
2066: OCI_SUCCESS if the function completes successfully.
2067: OCI_NO_DATA if there are no more attributes to iterate on; use
2068: OCITypeIterSet() to reset the iterator if necessary.
2069: OCI_INVALID_HANDLE if 'env' or 'err' is null.
2070: OCI_ERROR if
2071: 1) any of the required parameters is null.
2072: 2) 'mdo' is not NULL but points to NULL data.
2073: NOTES:
2074: The type must be unpinned when the accessed information is no
2075: longer needed.
2076: */
2077:
2078: /*------------------------ OCITypeMethodName --------------------------------*/
2079:
2080: /* ** OBSOLETE ** */
2081: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
2082: text *OCITypeMethodName(/*_ OCIEnv *env, OCIError *err,
2083: CONST OCITypeMethod *mdo, ub4 *n_length _*/);
2084: #else /* ANSI C */
2085: text *OCITypeMethodName( OCIEnv *env, OCIError *err,
2086: CONST OCITypeMethod *mdo, ub4 *n_length );
2087: #endif
2088: /*
2089: NAME: OCITypeMethodName - OCI Get a Method's NaMe.
2090: PARAMETERS:
2091: env (IN/OUT) - OCI environment handle initialized in object mode
2092: err (IN/OUT) - error handle. If there is an error, it is
2093: recorded in 'err' and this function returns OCI_ERROR.
2094: The error recorded in 'err' can be retrieved by calling
2095: OCIErrorGet().
2096: mdo (IN) - pointer to the method descriptor in the object cache
2097: n_length (OUT) - length (in bytes) of the 'name' parameter. The caller
2098: must allocate space for the ub4 before calling this routine.
2099: REQUIRES:
2100: 1) All type accessors require that the type be pinned before calling
2101: any accessor.
2102: 2) All input parameters must not be NULL and must be valid.
2103: DESCRIPTION:
2104: Get the (non-unique) real name of the method.
2105: RETURNS:
2106: the non-unique name of the method or NULL if there is an error.
2107: NOTES:
2108: The type must be unpinned when the accessed information is no
2109: longer needed.
2110: */
2111:
2112: /*------------------------ OCITypeMethodEncap -------------------------------*/
2113:
2114: /* ** OBSOLETE ** */
2115: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
2116: OCITypeEncap OCITypeMethodEncap(/*_ OCIEnv *env, OCIError *err,
2117: CONST OCITypeMethod *mdo _*/);
2118: #else /* ANSI C */
2119: OCITypeEncap OCITypeMethodEncap( OCIEnv *env, OCIError *err,
2120: CONST OCITypeMethod *mdo );
2121: #endif
2122: /*
2123: NAME: OCITypeMethodEncap - Get a Method's ENcapsulation (private/public).
2124: PARAMETERS:
2125: env (IN/OUT) - OCI environment handle initialized in object mode
2126: err (IN/OUT) - error handle. If there is an error, it is
2127: recorded in 'err' and this function returns OCI_ERROR.
2128: The error recorded in 'err' can be retrieved by calling
2129: OCIErrorGet().
2130: mdo (IN) - pointer to the method descriptor in the object cache
2131: REQUIRES:
2132: 1) All type accessors require that the type be pinned before calling
2133: any accessor.
2134: 2) All input parameters must not be NULL and must be valid.
2135: DESCRIPTION:
2136: Get the encapsulation (private, or public) of a method.
2137: RETURNS:
2138: the encapsulation (private, or public) of the method
2139: NOTES:
2140: The type must be unpinned when the accessed information is no
2141: longer needed.
2142: */
2143:
2144: /*------------------------ OCITypeMethodFlags -------------------------------*/
2145:
2146: /* ** OBSOLETE ** */
2147: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
2148: OCITypeMethodFlag OCITypeMethodFlags(/*_ OCIEnv *env, OCIError *err,
2149: CONST OCITypeMethod *mdo _*/);
2150: #else /* ANSI C */
2151: OCITypeMethodFlag OCITypeMethodFlags( OCIEnv *env, OCIError *err,
2152: CONST OCITypeMethod *mdo );
2153: #endif
2154: /*
2155: NAME: OCITypeMethodFlags - OCI Get a Method's FLags
2156: (inline, constant, virtual, constructor,
2157: destructor).
2158: PARAMETERS:
2159: env (IN/OUT) - OCI environment handle initialized in object mode
2160: err (IN/OUT) - error handle. If there is an error, it is
2161: recorded in 'err' and this function returns OCI_ERROR.
2162: The error recorded in 'err' can be retrieved by calling
2163: OCIErrorGet().
2164: mdo (IN) - pointer to the method descriptor in the object cache
2165: REQUIRES:
2166: 1) All type accessors require that the type be pinned before calling
2167: any accessor.
2168: 2) All input parameters must not be NULL and must be valid.
2169: DESCRIPTION:
2170: Get the flags (inline, constant, virutal, constructor, destructor) of
2171: a method.
2172: RETURNS:
2173: the flags (inline, constant, virutal, constructor, destructor) of
2174: the method
2175: NOTES:
2176: The type must be unpinned when the accessed information is no
2177: longer needed.
2178: */
2179:
2180: /*------------------------ OCITypeMethodMap ---------------------------------*/
2181:
2182: /* ** OBSOLETE ** */
2183: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
2184: sword OCITypeMethodMap(/*_ OCIEnv *env, OCIError *err, CONST OCIType *tdo,
2185: OCITypeMethod **mdo _*/);
2186: #else /* ANSI C */
2187: sword OCITypeMethodMap( OCIEnv *env, OCIError *err, CONST OCIType *tdo,
2188: OCITypeMethod **mdo );
2189: #endif
2190: /*
2191: NAME: OCITypeMethodMap - OCI Get the Method's MAP function.
2192: PARAMETERS:
2193: env (IN/OUT) - OCI environment handle initialized in object mode
2194: err (IN/OUT) - error handle. If there is an error, it is
2195: recorded in 'err' and this function returns OCI_ERROR.
2196: The error recorded in 'err' can be retrieved by calling
2197: OCIErrorGet().
2198: tdo (IN) - pointer to to the type descriptor in the object cache
2199: mdo (OUT) - If this function completes successfully, and there is a
2200: map function for this type, 'mdo' points to the selected method
2201: descriptor in the object cache. Otherwise, 'mdo' is null.
2202: REQUIRES:
2203: 1) All type accessors require that the type be pinned before calling
2204: any accessor.
2205: 2) All required input parameters must not be NULL and must be valid.
2206: DESCRIPTION:
2207: A type may have only one map function. 'OCITypeMethodMap()' finds
2208: this function, if it exists, and returns a reference and a pointer to
2209: the method descriptor in the object cache. If the type does not have a
2210: map (relative ordering) function, then 'mdo_ref' and 'mdo' are set
2211: to null and an error is returned.
2212: RETURNS:
2213: OCI_SUCCESS if the function completes successfully.
2214: OCI_INVALID_HANDLE if 'env' or 'err' is null.
2215: OCI_ERROR if
2216: the type does not contain a map function.
2217: NOTES:
2218: The type must be unpinned when the accessed information is no
2219: longer needed.
2220: */
2221:
2222: /*------------------------ OCITypeMethodOrder -------------------------------*/
2223:
2224: /* ** OBSOLETE ** */
2225: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
2226: sword OCITypeMethodOrder(/*_ OCIEnv *env, OCIError *err, CONST OCIType *tdo,
2227: OCITypeMethod **mdo _*/);
2228: #else /* ANSI C */
2229: sword OCITypeMethodOrder( OCIEnv *env, OCIError *err, CONST OCIType *tdo,
2230: OCITypeMethod **mdo );
2231: #endif
2232: /*
2233: NAME: OCITypeMethodOrder - OCI Get the Method's ORder function.
2234: PARAMETERS:
2235: env (IN/OUT) - OCI environment handle initialized in object mode
2236: err (IN/OUT) - error handle. If there is an error, it is
2237: recorded in 'err' and this function returns OCI_ERROR.
2238: The error recorded in 'err' can be retrieved by calling
2239: OCIErrorGet().
2240: tdo (IN) - pointer to to the type descriptor in the object cache
2241: mdo (OUT) - If this function completes successfully, and there is a
2242: map function for this type, 'mdo' points to the selected method
2243: descriptor in the object cache. Otherwise, 'mdo' is null.
2244: REQUIRES:
2245: 1) All type accessors require that the type be pinned before calling
2246: any accessor.
2247: 2) All required input parameters must not be NULL and must be valid.
2248: DESCRIPTION:
2249: A type may have only one ORder or MAP function. 'OCITypeMethodOrder()'
2250: finds this function, if it exists, and returns a ref and a pointer
2251: to the method descriptor in the object cache. If the type does not
2252: have a map (relative ordering) function, then 'mdo_ref' and 'mdo' are
2253: set to null and an error is returned.
2254: RETURNS:
2255: OCI_SUCCESS if the function completes successfully.
2256: OCI_INVALID_HANDLE if 'env' or 'err' is null.
2257: OCI_ERROR if
2258: the type does not contain a map function.
2259: NOTES:
2260: The type must be unpinned when the accessed information is no
2261: longer needed.
2262: */
2263:
2264: /*------------------------ OCITypeMethodParams ------------------------------*/
2265:
2266: /* ** OBSOLETE ** */
2267: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
2268: ub4 OCITypeMethodParams(/*_ OCIEnv *env, OCIError *err,
2269: CONST OCITypeMethod *mdo _*/);
2270: #else /* ANSI C */
2271: ub4 OCITypeMethodParams( OCIEnv *env, OCIError *err,
2272: CONST OCITypeMethod *mdo );
2273: #endif
2274: /*
2275: NAME: OCITypeMethodParams - OCI Get a Method's Number of Parameters.
2276: PARAMETERS:
2277: env (IN/OUT) - OCI environment handle initialized in object mode
2278: err (IN/OUT) - error handle. If there is an error, it is
2279: recorded in 'err' and this function returns OCI_ERROR.
2280: The error recorded in 'err' can be retrieved by calling
2281: OCIErrorGet().
2282: mdo (IN) - pointer to the method descriptor in the object cache
2283: REQUIRES:
2284: 1) All type accessors require that the type be pinned before calling
2285: any accessor.
2286: 2) All input parameters must not be NULL and must be valid.
2287: DESCRIPTION:
2288: Get the number of parameters in a method.
2289: RETURNS:
2290: the number of parameters in the method
2291: NOTES:
2292: The type must be unpinned when the accessed information is no
2293: longer needed.
2294: */
2295:
2296:
2297: /*--------------------------------------------------------------------------*/
2298: /* RESULT ACCESSORS */
2299: /*--------------------------------------------------------------------------*/
2300:
2301: /*-------------------------- OCITypeResult ---------------------------------*/
2302:
2303: /* ** OBSOLETE ** */
2304: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
2305: sword OCITypeResult(/*_ OCIEnv *env, OCIError *err, CONST OCITypeMethod *mdo,
2306: OCITypeElem **rdo _*/);
2307: #else /* ANSI C */
2308: sword OCITypeResult( OCIEnv *env, OCIError *err, CONST OCITypeMethod *mdo,
2309: OCITypeElem **elem );
2310: #endif
2311: /*
2312: NAME: OCITypeResult - OCI Get a method's result type descriptor.
2313: PARAMETERS:
2314: env (IN/OUT) - OCI environment handle initialized in object mode
2315: err (IN/OUT) - error handle. If there is an error, it is
2316: recorded in 'err' and this function returns OCI_ERROR.
2317: The error recorded in 'err' can be retrieved by calling
2318: OCIErrorGet().
2319: mdo (IN) - pointer to the method descriptor in the object cache
2320: elem (OUT) - If this function completes successfully, 'rdo' points to
2321: the selected result (parameter) descriptor in the object cache.
2322: REQUIRES:
2323: 1) All type accessors require that the type be pinned before calling
2324: any accessor.
2325: 2) 'elem' MUST be the address of an OCITypeElem pointer.
2326: DESCRIPTION:
2327: Get the result of a method.
2328: RETURNS:
2329: OCI_SUCCESS if the function completes successfully.
2330: OCI_INVALID_HANDLE if 'env' or 'err' is null.
2331: OCI_ERROR if
2332: 1) any of the required parameters is null.
2333: 2) method returns no results.
2334: NOTES:
2335: The method must be unpinned when the accessed information is no
2336: longer needed.
2337: */
2338:
2339:
2340: /*--------------------------------------------------------------------------*/
2341: /* PARAMETER ACCESSORS */
2342: /*--------------------------------------------------------------------------*/
2343:
2344: /*------------------------ OCITypeParamByPos -------------------------------*/
2345:
2346: /* ** OBSOLETE ** */
2347: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
2348: sword OCITypeParamByPos(/*_ OCIEnv *env, OCIError *err,
2349: CONST OCITypeMethod *mdo, ub4 position,
2350: OCITypeElem **elem _*/);
2351: #else /* ANSI C */
2352: sword OCITypeParamByPos( OCIEnv *env, OCIError *err,
2353: CONST OCITypeMethod *mdo, ub4 position,
2354: OCITypeElem **elem );
2355: #endif
2356: /*
2357: NAME: OCITypeParamByPos - OCI Get a Parameter in a method By Position.
2358: PARAMETERS:
2359: env (IN/OUT) - OCI environment handle initialized in object mode
2360: err (IN/OUT) - error handle. If there is an error, it is
2361: recorded in 'err' and this function returns OCI_ERROR.
2362: The error recorded in 'err' can be retrieved by calling
2363: OCIErrorGet().
2364: mdo (IN) - pointer to the method descriptor in the object cache
2365: position (IN) - the parameter's position. Positions start at 1.
2366: elem (OUT) - If this function completes successfully, 'elem' points to
2367: the selected parameter descriptor in the object cache.
2368: REQUIRES:
2369: 1) All type accessors require that the type be pinned before calling
2370: any accessor.
2371: DESCRIPTION:
2372: Get a parameter given its position in the method. Positions start
2373: at 1.
2374: RETURNS:
2375: OCI_SUCCESS if the function completes successfully.
2376: OCI_INVALID_HANDLE if 'env' or 'err' is null.
2377: OCI_ERROR if
2378: 1) any of the required parameters is null.
2379: 2) 'position' is not >= 1 and <= the number of parameters in the
2380: method.
2381: NOTES:
2382: The type must be unpinned when the accessed information is no
2383: longer needed.
2384: */
2385:
2386: /*------------------------ OCITypeParamByName -------------------------------*/
2387:
2388: /* ** OBSOLETE ** */
2389: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
2390: sword OCITypeParamByName(/*_ OCIEnv *env, OCIError *err,
2391: CONST OCITypeMethod *mdo,
2392: CONST text *name, ub4 n_length,
2393: OCITypeElem **elem _*/);
2394: #else /* ANSI C */
2395: sword OCITypeParamByName( OCIEnv *env, OCIError *err,
2396: CONST OCITypeMethod *mdo,
2397: CONST text *name, ub4 n_length,
2398: OCITypeElem **elem );
2399: #endif
2400: /*
2401: NAME: OCITypeParamByName - OCI Get a Parameter in a method By Name.
2402: PARAMETERS:
2403: env (IN/OUT) - OCI environment handle initialized in object mode
2404: err (IN/OUT) - error handle. If there is an error, it is
2405: recorded in 'err' and this function returns OCI_ERROR.
2406: The error recorded in 'err' can be retrieved by calling
2407: OCIErrorGet().
2408: mdo (IN) - pointer to the method descriptor in the object cache
2409: name (IN) - the parameter's name
2410: n_length (IN) - length (in bytes) of the 'name' parameter
2411: elem (OUT) - If this function completes successfully, 'elem' points to
2412: the selected parameter descriptor in the object cache.
2413: REQUIRES:
2414: 1) All type accessors require that the type be pinned before calling
2415: any accessor.
2416: 2) if 'mdo' is not null, it must point to a valid method descriptor
2417: in the object cache.
2418: DESCRIPTION:
2419: Get a parameter given its name.
2420: RETURNS:
2421: OCI_SUCCESS if the function completes successfully.
2422: OCI_INVALID_HANDLE if 'env' or 'err' is null.
2423: OCI_ERROR if
2424: 1) any of the required parameters is null.
2425: 2) the method does not contain a parameter with the input 'name'.
2426: NOTES:
2427: The type must be unpinned when the accessed information is no
2428: longer needed.
2429: */
2430:
2431: /*------------------------ OCITypeParamPos ---------------------------------*/
2432:
2433: /* ** OBSOLETE ** */
2434: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
2435: sword OCITypeParamPos(/*_ OCIEnv *env, OCIError *err,
2436: CONST OCITypeMethod *mdo,
2437: CONST text *name, ub4 n_length, ub4 *position,
2438: OCITypeElem **elem _*/);
2439: #else /* ANSI C */
2440: sword OCITypeParamPos( OCIEnv *env, OCIError *err,
2441: CONST OCITypeMethod *mdo,
2442: CONST text *name, ub4 n_length, ub4 *position,
2443: OCITypeElem **elem );
2444: #endif
2445: /*
2446: NAME: OCITypeParamPos - OCI Get a parameter's position in a method
2447: PARAMETERS:
2448: env (IN/OUT) - OCI environment handle initialized in object mode
2449: err (IN/OUT) - error handle. If there is an error, it is
2450: recorded in 'err' and this function returns OCI_ERROR.
2451: The error recorded in 'err' can be retrieved by calling
2452: OCIErrorGet().
2453: mdo (IN) - pointer to the method descriptor in the object cache
2454: name (IN) - the parameter's name
2455: n_length (IN) - length (in bytes) of the 'name' parameter
2456: position (OUT) - If this function completes successfully, 'position'
2457: points to the position of the parameter in the method starting
2458: at position 1. position MUST point to space for a ub4.
2459: elem (OUT) - If this function completes successfully, and
2460: the input 'elem' is not NULL, 'elem' points to the selected
2461: parameter descriptor in the object cache.
2462: REQUIRES:
2463: 1) All type accessors require that the type be pinned before calling
2464: any accessor.
2465: 2) if 'mdo' is not null, it must point to a valid method descriptor
2466: in the object cache.
2467: DESCRIPTION:
2468: Get the position of a parameter in a method. Positions start at 1.
2469: RETURNS:
2470: OCI_SUCCESS if the function completes successfully.
2471: OCI_INVALID_HANDLE if 'env' or 'err' is null.
2472: OCI_ERROR if
2473: 1) any of the parameters is null.
2474: 2) the method does not contain a parameter with the input 'name'.
2475: NOTES:
2476: The type must be unpinned when the accessed information is no
2477: longer needed.
2478: */
2479:
2480: /*------------------------ OCITypeParamElemMode -----------------------------*/
2481:
2482: /* ** OBSOLETE ** */
2483: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
2484: OCITypeParamMode OCITypeElemParamMode(/*_ OCIEnv *env, OCIError *err,
2485: CONST OCITypeElem *elem _*/);
2486: #else /* ANSI C */
2487: OCITypeParamMode OCITypeElemParamMode( OCIEnv *env, OCIError *err,
2488: CONST OCITypeElem *elem );
2489: #endif
2490: /*
2491: NAME: OCITypeElemParamMode - OCI Get a parameter's mode
2492: PARAMETERS:
2493: env (IN/OUT) - OCI environment handle initialized in object mode
2494: err (IN/OUT) - error handle. If there is an error, it is
2495: recorded in 'err' and this function returns OCI_ERROR.
2496: The error recorded in 'err' can be retrieved by calling
2497: OCIErrorGet().
2498: elem (IN) - pointer to the parameter descriptor in the object cache
2499: (represented by an OCITypeElem)
2500: REQUIRES:
2501: 1) All type accessors require that the type be pinned before calling
2502: any accessor.
2503: 2) All input parameters must not be NULL and must be valid.
2504: DESCRIPTION:
2505: Get the mode (in, out, or in/out) of the parameter.
2506: RETURNS:
2507: the mode (in, out, or in/out) of the parameter
2508: NOTES:
2509: The type must be unpinned when the accessed information is no
2510: longer needed.
2511: */
2512:
2513: /*------------------------- OCITypeElemDefaultValue -------------------------*/
2514:
2515: /* ** OBSOLETE ** */
2516: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
2517: text* OCITypeElemDefaultValue(/*_ OCIEnv *env, OCIError *err,
2518: CONST OCITypeElem *elem,
2519: ub4 *d_v_length _*/);
2520: #else /* ANSI C */
2521: text* OCITypeElemDefaultValue( OCIEnv *env, OCIError *err,
2522: CONST OCITypeElem *elem,
2523: ub4 *d_v_length );
2524: #endif
2525: /*
2526: NAME: OCITypeElemDefaultValue - OCI Get the element's Default Value.
2527: PARAMETERS:
2528: env (IN/OUT) - OCI environment handle initialized in object mode
2529: err (IN/OUT) - error handle. If there is an error, it is
2530: recorded in 'err' and this function returns OCI_ERROR.
2531: The error recorded in 'err' can be retrieved by calling
2532: OCIErrorGet().
2533: elem (IN) - pointer to the parameter descriptor in the object cache
2534: (represented by an OCITypeElem)
2535: d_v_length (OUT) - length (in bytes) of the returned default value.
2536: The caller must allocate space for the ub4 before calling this
2537: routine.
2538: REQUIRES:
2539: 1) All type accessors require that the type be pinned before calling
2540: any accessor.
2541: 2) All input parameters must not be NULL and must be valid.
2542: DESCRIPTION:
2543: Get the default value in text form (PL/SQL) of an element. For V8.0,
2544: this only makes sense for a method parameter.
2545: RETURNS:
2546: The default value (text) of the parameter.
2547: NOTES:
2548: The type must be unpinned when the accessed information is no
2549: longer needed.
2550: */
2551:
2552:
2553: /*--------------------------------------------------------------------------*/
2554: /* TYPE VERSION TABLE */
2555: /*--------------------------------------------------------------------------*/
2556:
2557: /* For V8.0, the type version table is meant to be an internal data structure
2558: only for Oracle clients for type version maintanence purposes. A more
2559: general version of the API may be made public in subsequent releases. */
2560:
2561:
2562: /*--------------------------- OCITypeVTInit --------------------------------*/
2563:
2564: /* ** OBSOLETE ** */
2565: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
2566: sword OCITypeVTInit(/*_ OCIEnv *env, OCIError *err _*/);
2567: #else /* ANSI C */
2568: sword OCITypeVTInit( OCIEnv *env, OCIError *err );
2569: #endif
2570: /*
2571: NAME: OCITypeVTInit - OCI type Version table INItialize
2572: PARAMETERS:
2573: env (IN/OUT) - OCI environment handle initialized in object mode
2574: err (IN/OUT) - error handle. If there is an error, it is
2575: recorded in 'err' and this function returns OCI_ERROR.
2576: The error recorded in 'err' can be retrieved by calling
2577: OCIErrorGet().
2578: REQUIRES:
2579: none
2580: DESCRIPTION:
2581: Allocate space for and initialize the type version table and the type
2582: version table's index.
2583: RETURNS:
2584: OCI_SUCCESS if the function completes successfully.
2585: OCI_INVALID_HANDLE if 'env' or 'err' is null.
2586: OCI_ERROR if internal errors occurrs during initialization.
2587: */
2588:
2589: /*--------------------------- OCITypeVTInsert -------------------------------*/
2590:
2591: /* ** OBSOLETE ** */
2592: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
2593: sword OCITypeVTInsert(/*_ OCIEnv *env, OCIError *err, CONST text *schema_name,
2594: ub4 s_n_length, CONST text *type_name,
2595: ub4 t_n_length, CONST text *user_version,
2596: ub4 u_v_length _*/);
2597: #else /* ANSI C */
2598: sword OCITypeVTInsert( OCIEnv *env, OCIError *err, CONST text *schema_name,
2599: ub4 s_n_length, CONST text *type_name,
2600: ub4 t_n_length, CONST text *user_version,
2601: ub4 u_v_length );
2602: #endif
2603: /*
2604: NAME: OCITypeVTInsert - OCI type Version table INSert entry.
2605: PARAMETERS:
2606: env (IN/OUT) - OCI environment handle initialized in object mode
2607: err (IN/OUT) - error handle. If there is an error, it is
2608: recorded in 'err' and this function returns OCI_ERROR.
2609: The error recorded in 'err' can be retrieved by calling
2610: OCIErrorGet().
2611: schema_name (IN, optional) - name of schema associated with the
2612: type. By default, the user's schema name is used.
2613: s_n_length (IN) - length of the 'schema_name' parameter
2614: type_name (IN) - type name to insert
2615: t_n_length (IN) - length (in bytes) of the 'type_name' parameter
2616: user_version (IN) - user readable version of the type
2617: u_v_length (IN) - length (in bytes) of the 'user_version' parameter
2618: REQUIRES:
2619: none
2620: DESCRIPTION:
2621: Insert an entry into the type version table and the type version
2622: table's index. The entry's type name and user readable version
2623: fields are updated with the input values. All other fields are
2624: initialized to null.
2625: RETURNS:
2626: OCI_SUCCESS if the function completes successfully.
2627: OCI_INVALID_HANDLE if 'env' or 'err' is null.
2628: OCI_ERROR if
2629: 1) any of the parameters is invalid.
2630: 2) an entry for 'type_name' has already been registered in the
2631: type version table.
2632: */
2633:
2634: /*------------------------------ OCITypeVTSelect ----------------------------*/
2635:
2636: /* OCITypeVTSelect - OCI type VERSion table SELECT entry */
2637: /* ** OBSOLETE ** */
2638: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
2639: sword OCITypeVTSelect(/*_ OCIEnv *env, OCIError *err, CONST text *schema_name,
2640: ub4 s_n_length, CONST text *type_name,
2641: ub4 t_n_length, text **user_version, ub4 *u_v_length,
2642: ub2 *version _*/);
2643: #else /* ANSI C */
2644: sword OCITypeVTSelect( OCIEnv *env, OCIError *err, CONST text *schema_name,
2645: ub4 s_n_length, CONST text *type_name,
2646: ub4 t_n_length, text **user_version, ub4 *u_v_length,
2647: ub2 *version );
2648: #endif
2649: /*
2650: NAME: OCITypeVTSelect - OCI type Version table SELect entry.
2651: PARAMETERS:
2652: env (IN/OUT) - OCI environment handle initialized in object mode
2653: err (IN/OUT) - error handle. If there is an error, it is
2654: recorded in 'err' and this function returns OCI_ERROR.
2655: The error recorded in 'err' can be retrieved by calling
2656: OCIErrorGet().
2657: schema_name (IN, optional) - name of schema associated with the
2658: type. By default, the user's schema name is used.
2659: s_n_length (IN) - length of the 'schema_name' parameter
2660: type_name (IN) - type name to select
2661: t_n_length (IN) - length (in bytes) of the 'type_name' parameter
2662: user_version (OUT, optional) - pointer to user readable version of the
2663: type
2664: u_v_length (OUT, optional) - length (in bytes) of the 'user_version'
2665: parameter
2666: version (OUT, optional) - internal type version
2667: REQUIRES:
2668: All input parameters must not be NULL and must be valid.
2669: DESCRIPTION:
2670: Select an entry in the type version table by name.
2671: RETURNS:
2672: OCI_SUCCESS if the function completes successfully.
2673: OCI_INVALID_HANDLE if 'env' or 'err' is null.
2674: OCI_ERROR if
2675: 1) any of the parameters is invalid.
2676: 2) an entry with 'type_name' does not exist.
2677: */
2678:
2679: /* Compatibility function - following function prototype retained for
2680: compatibility only */
2681: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
2682: sword ortgcty(/*_ OCIEnv *env, OCIError *err, OCIType *coll_tdo,
2683: OCIType **collelem_tdo _*/);
2684: #else /* ANSI C */
2685: sword ortgcty( OCIEnv *env, OCIError *err, OCIType *coll_tdo,
2686: OCIType **collelem_tdo );
2687: #endif
2688:
2689:
2690: /*=========================*/
2691: /* PUBLIC MACROS AND FLAGS */
2692: /*=========================*/
2693:
2694: /*--------------------------------------------------------------------------*/
2695: /* TYPE ELEMENT FLAGS */
2696: /*--------------------------------------------------------------------------*/
2697:
2698: #define OCI_TYPEELEM_REF 0x8000 /* element is a REF */
2699: #define OCI_TYPEPARAM_REQUIRED 0x0800 /* parameter is required */
2700:
2701: /* macros to test flags */
2702: #define OCI_TYPEELEM_IS_REF(elem_flag) \
2703: (((elem_flag) & OCI_TYPEELEM_REF)!=0)
2704: #define OCI_TYPEPARAM_IS_REQUIRED(param_flag) \
2705: (((param_flag) & OCI_TYPEPARAM_REQUIRED)!=0)
2706:
2707:
2708: #endif /* ORT_ORACLE */
2709:
E-mail: