Annotation of win32/sql/oracle/include/oci/ort.h, revision 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 *)&param_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 *)&param_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: