增加instant client for osx 64位版本
diff --git a/sdk/include/ort.h b/sdk/include/ort.h
new file mode 100644
index 0000000..9562f2e
--- /dev/null
+++ b/sdk/include/ort.h
@@ -0,0 +1,2594 @@
+/* @(#)ort.h 1.44 95/07/07 */
+
+/* Copyright (c) 1994, 2005, Oracle. All rights reserved. */
+
+/*
+ NAME
+
+ ORT - ORacle's external open Type interface to the open type manager (OTM)
+
+ DESCRIPTION
+
+ The open type manager interface includes dynamic type operations to
+ create, delete, update, and access types. See the "Functional
+ Specification for Oracle Object Call Interface (Objects Project),
+ Version 1.0" for a user level description of the OTM. For a more
+ detailed description, see the "Component Document for the Open Type
+ Manager, Version 1.0".
+
+ NOTE: MOST Of the functions in this header file are being desupported.
+ Please use the OCIDescribeAny interface as described in oci.h
+ instead.
+ The OCIType, OCITypeElem, OCITypeMethod abstract types continue
+ to be supported. The only two functions that remain to be documented
+ are OCITypeArrayByName and OCITypeArrayByRef.
+ All obsolete types/functions are marked accordingly below.
+
+ RELATED DOCUMENTS
+
+ For the functional specification for the OTM, see:
+ [1] Kotsovolos, Susan, "Functional Specification for Oracle Object
+ Call Interface (Objects Project), Version 1.0", Oracle
+ Corporation, February 1995.
+ For the internal design of the OTM, see the following:
+ [2] Kotsovolos, Susan, "Component Document for the Open Type Manager",
+ Oracle Corporation, November 1994.
+ [3] Kotsovolos, Susan, "Design for The Open Type Manager, Oracle
+ Object Management Subsystem Version 1.0", Oracle Corporation,
+ March 1994.
+ [4] Kotsovolos, Susan and Tin A. Nguyen, "The Open Type Manager",
+ Oracle Corporation, March 1994.
+ [5] Kotsovolos, Susan and Tin A. Nguyen, "Schema Evolution",
+ Oracle Corporation, March 1994.
+ For a description of the types the OTM must support, see:
+ [6] Nguyen, Tin A., "The Open Type System", Oracle Corporation,
+ February 1994.
+
+ INSPECTION STATUS
+
+ Inspection date:
+ Inspection status:
+ Estimated increasing cost defects per page:
+ Rule sets:
+
+ ACCEPTANCE REVIEW STATUS
+
+ Review date:
+ Review status:
+ Reviewers:
+
+
+ **** ALL OBSOLETE FUNCTIONS/TYPES ARE MARKED ACCORDINGLY ***
+
+ EXPORT FUNCTIONS
+
+ None
+
+ PUBLIC DATA STRUCTURES
+
+ OCIType - type descriptor in the object cache
+ OCITypeElem - type element descriptor in the object cache
+ (used for attributes and paramters)
+ OCITypeCode - Open Type System type code.
+ OCITypeMethod - method descriptor in the object cache
+ OCITypeParamMode - parameter modes (ie. IN, IN-OUT etc)
+
+ PUBLIC FUNCTIONS
+
+ ITERATOR (for OCITypeAttrNext and OCITypeMethodNext)
+
+ OCITypeIterNew - ** OBSOLETE ** Create new instance of an iteraton.
+ OCITypeIterSet - ** OBSOLETE ** Initialize iterator.
+ OCITypeIterFree - ** OBSOLETE ** Free instance of iterator.
+
+ TYPE GET
+
+ OCITypeByName - ** OBSOLETE ** Get a type by name.
+ OCITypeArrayByName - Get an array of types by their names.
+ OCITypeByRef - ** OBSOLETE ** Get a type by its CREF.
+ OCITypeArrayByRef - Get an array of types by their CREFs.
+
+ TYPE ACCESSORS
+
+ OCITypeName - ** OBSOLETE ** OCI Get a type's name.
+ OCITypeSchema - ** OBSOLETE ** OCI Get a type's schema name.
+ OCITypeTypeCode - ** OBSOLETE ** OCI Get a type's type code.
+ OCITypeVersion - ** OBSOLETE ** OCI Get a Type's user-readable Version.
+ OCITypeAttrs - ** OBSOLETE ** OCI Get a Type's Number of Attributes.
+ OCITypeMethods - ** OBSOLETE ** OCI Get a Type's Number of Methods.
+
+ TYPE ELEMENT ACCESSORS (they represent attributes/parameters/results)
+
+ OCITypeElemName - ** OBSOLETE ** Get a type element's (only for
+ attributes) name.
+ OCITypeElemType - ** OBSOLETE ** Get a type element's type
+ descriptor.
+ OCITypeElemTypeCode - ** OBSOLETE ** Get a type element's typecode.
+ OCITypeElemParameterizedType - ** OBSOLETE ** Get a type element's
+ parameterized type's type descriptor.
+ OCITypeElemNumPrec - ** OBSOLETE ** Get a number's precision.
+ OCITypeElemNumScale - ** OBSOLETE ** Get a decimal or oracle Number's
+ Scale
+ OCITypeElemCharSetID - ** OBSOLETE ** Get a fixed or variable length
+ string's character set ID.
+ OCITypeElemCharSetForm - ** OBSOLETE ** Get a fixed or variable length
+ string's character set form (how
+ character set information has
+ been specified).
+ OCITypeElemLength - ** OBSOLETE ** Get a raw, fixed or variable
+ length string's length.
+ OCITypeElemParamMode - ** OBSOLETE ** Get element's parameter's mode
+ (only valid for parameter).
+ OCITypeElemDefaultValue - ** OBSOLETE ** Get element's Default Value.
+
+ ATTRIBUTE ACCESSORS
+
+ OCITypeAttrByName - ** OBSOLETE ** Get an Attribute by Name.
+ OCITypeAttrNext - ** OBSOLETE ** Get an Attribute by Iteration.
+
+ COLLECTION ACCESSORS
+
+ OCITypeCollTypeCode - ** OBSOLETE ** Get a named collection's typecode.
+ OCITypeCollElem - ** OBSOLETE ** Get a named collection's element's
+ type element information.
+ OCITypeCollSize - ** OBSOLETE ** Get a named collection's size in
+ number of elements.
+
+ METHOD ACCESSORS
+
+ OCITypeMethodOverload - ** OBSOLETE ** Get number of overloaded methods
+ with the given method name.
+ (no direct equivalent for
+ OCIDescribe interface)
+ OCITypeMethodByName - ** OBSOLETE ** Get one or more methods by name.
+ OCITypeMethodNext - ** OBSOLETE ** Iterate to the next method to
+ retrieve.
+ OCITypeMethodName - ** OBSOLETE ** Get method's name.
+ OCITypeMethodEncap - ** OBSOLETE ** Get method's encapsulation level.
+ OCITypeMethodFlags - ** OBSOLETE ** et method's flags.
+ OCITypeMethodMap - ** OBSOLETE ** Get type's map function.
+ OCITypeMethodOrder - ** OBSOLETE ** Get type's order function.
+ OCITypeMethodParams - ** OBSOLETE ** Get a method's number of
+ parameters.
+
+ RESULT ACCESSORS
+
+ OCITypeResult - ** OBSOLETE ** OCI Get a method's Result.
+
+ See also ATTRIBUTE/PARAMETER/RESULT TYPE ACCESSORS.
+
+ PARAMETER ACCESSORS
+
+ OCITypeParamByPos - ** OBSOLETE ** Get a Parameter in a method By
+ Position.
+ OCITypeParamByName - ** OBSOLETE ** Get a Parameter in a method By Name.
+ OCITypeParamPos - ** OBSOLETE ** Get a Parameter's PoSition in a
+ method.
+
+ CALL GRAPHS:
+
+ Only type accessors are supported for 8.0.
+ ** OBSOLETE ** please use OCIDescribe interface
+
+ TYPE ACCESSOR EXAMPLE
+
+ CREATE TYPE CAR
+ (
+ name vstring,
+ age number,
+ number car_age; /o Oracle number o/
+ weight car_weight; /o abstract type o/
+
+ PUBLIC:
+
+ /o methods o/
+ car(orlvs a_name, number an_age, WEIGHT a_weight);
+ ~car();
+ inline number get_age() const;
+
+ /o relative ordering (map) functions o/
+ number car_map
+ );
+
+ /o the following code accesses the type created above o/
+
+ ub1 meth_flags;
+ ub4 i, j;
+ ub4 text_len, position;
+ ub4 count;
+ ub4 length;
+ OCITypeCode typecode;
+ OCIRef *attr_ref;
+ OCIRef *param_ref;
+ OCIType *tdo, new_tdo, final_tdo;
+ OCITypeElem *elem;
+ OCITypeIter *iterator_ort;
+ oratext (*names)[];
+ ub4 lengths[];
+ ub4 *positions;
+ oratext *name;
+ oratext name_buffer[M_IDEN];
+
+ /o initialize the references o/
+ DISCARD orlrini(env, err, (dvoid *)&attr_ref);
+ DISCARD orlrini(env, err, (dvoid *)¶m_ref);
+
+ /o ----------------- GET INFORMATION ABOUT A TYPE ----------------- o/
+
+ /o start a transaction o/
+
+ /o Pin the type until the end of the transaction. Pinning the type is
+ o required before using any type accessors.
+ o/
+ if (OCITypeByName(env, err, svc, (oratext *)0, 0, "CAR", strlen("CAR"),
+ OCI_DURATION_TRANS, &car_ref, &car_tdo) != OCI_SUCCESS)
+ /o error o/ ;
+
+ /o get the type's name o/
+ if (!memcmp(OCITypeName(env, err, car_tdo, &text_len), "person",
+ text_len))
+ /o do something o/ ;
+
+ /o get the type's schema name o/
+ if (!memcmp(OCITypeSchema(env, err, car_tdo, &text_len), "john",
+ text_len))
+ /o do something o/ ;
+
+ /o get the type code of the type o/
+ if (OCITypeTypeCode(env, err, car_tdo) == OCI_TYPECODE_ADT)
+ /o do something o/ ;
+
+ /o get the type version o/
+ if (!memcmp(OCITypeVersion(env, err, car_tdo, &text_len), "1", text_len))
+ /o do something o/ ;
+
+ /o ------- GET FLATTENED POSITION OF AN ATTRIBUTES IN A TYPE ------- o/
+
+ names = malloc(sizeof(oratext *) * 2);
+ names[0] = malloc(strlen("car_weight"));
+ names[1] = malloc(strlen("ounces"));
+ memcpy(names[0], "car_weight", strlen("car_weight"));
+ memcpy(names[1], "ounces", strlen("ounces"));
+
+ lengths = malloc(sizeof(ub4) * 2);
+ lengths[0] = strlen("car_weight");
+ lengths[1] = strlen("ounces");
+
+ /o ---------- GET IMMEDIATE ATTRIBUTES IN A TYPE ---------- o/
+
+ /o loop through all attributes in the type with iterator o/
+ if (OCITypeIterNew(env, err, car_tdo, &iterator_ort) != OCI_SUCCESS)
+ /o do something o/
+
+ while (OCITypeAttrNext(env, err, iterator_ort, &ado) != OCI_NO_DATA)
+ {
+ /o get the attribute's name o/
+ if (!memcmp(OCITypeElemName(env, err, ado, &text_len),
+ "tiger", text_len))
+ /o do something o/ ;
+
+ /o get the attribute's type descriptor o/
+ if (OCITypeElemType(env, err, ado, &tdo) != OCI_SUCCESS)
+ /o error o/ ;
+
+ /o get the attribute's type code o/
+ typecode = OCITypeElemTypeCode(env, err, ado);
+
+ switch (typecode)
+ {
+ /o scalar types o/
+ case OCI_TYPECODE_DATE: /o date o/
+ case OCI_TYPECODE_SIGNED8: /o byte o/
+ case OCI_TYPECODE_SIGNED16: /o short o/
+ case OCI_TYPECODE_UNSIGNED8: /o unsigned byte o/
+ case OCI_TYPECODE_UNSIGNED16: /o unsigned short o/
+ case OCI_TYPECODE_OCTET: /o octet o/
+ case OCI_TYPECODE_TABLE: /o nested table o/
+ case OCI_TYPECODE_CLOB: /o character lob o/
+ case OCI_TYPECODE_BLOB: /o binary lob o/
+ case OCI_TYPECODE_CFILE: /o character file object o/
+ case OCI_TYPECODE_BFILE: /o binary file object o/
+
+ /o do something o/
+ break;
+
+ /o number types o/
+ case OCI_TYPECODE_NUMBER: /o oracle number o/
+ case OCI_TYPECODE_DECIMAL: /o decimal o/
+ {
+ /o get the scale of the number o/
+ if (OCITypeElemNumScale(env, err, ado) == 3)
+ /o do something o/ ;
+ }
+ /o fall through to get the precision o/
+
+ case OCI_TYPECODE_FLOAT: /o float o/
+ case OCI_TYPECODE_SIGNED32: /o long o/
+ case OCI_TYPECODE_UNSIGNED32: /o unsigned long o/
+ case OCI_TYPECODE_REAL: /o real o/
+ case OCI_TYPECODE_DOUBLE: /o double o/
+ {
+ /o get the precision of the number o/
+ if (OCITypeElemNumPrec(env, err, ado) == 2)
+ /o do something o/ ;
+ }
+ break;
+
+ /o string types o/
+ case OCI_TYPECODE_CHAR: /o fixed length string o/
+ case OCI_TYPECODE_VARCHAR2: /o variable length string o/
+ case OCI_TYPECODE_RAW: /o raw o/
+ {
+ /o get the length of the fixed or variable length string o/
+ if (OCITypeElemLength(env, err, ado) < 100)
+ /o do something o/
+ }
+ break;
+
+ /o parameterized types o/
+ case OCI_TYPECODE_REF: /o reference o/
+ case OCI_TYPECODE_PTR: /o pointer o/
+ {
+ /o get the type stored in the parameterized type o/
+ if (OCITypeElemParameterizedType(env, err, ado, &tdo)
+ != OCI_SUCCESS)
+ /o error o/ ;
+
+ /o do something o/
+ if (OCI_TYPEELEM_IS_REF(OCITypeElemFlags(env, err, ado)))...
+ }
+ break;
+
+ /o domain type o/
+ case OCI_TYPECODE_NAMEDCOLLECTION:
+ switch (OCITypeCollTypeCode(env, err, tdo))
+ {
+ case OCI_TYPECODE_VARRAY: /o variable array o/
+ ub4 num_elems;
+ OCIType *element_type;
+
+ /o get the number of elements in the farray or the maximum number
+ o of elements in the varray.
+ o/
+ OCITypeCollSize(env, err, tdo, &num_elems);
+
+ /o get the type of the array o/
+ OCITypeElemType(env, err, tdo, &element_type);
+ }
+ break;
+
+ case OCI_TYPECODE_TABLE: /o multiset o/
+ {
+ OCIType *table_type;
+
+ /o get the type of the multiset o/
+ OCITypeElemType(env, err, tdo, &table_type);
+
+ /o do something o/
+ }
+ }
+
+ /o abstract type o/
+ case OCI_TYPECODE_ADT: /o abstract data type o/
+ {
+ /o get the adt information o/
+ if (OCITypeElemType(env, err, ado, &tdo) != OCI_SUCCESS)
+ /o error o/ ;
+
+ /o do something o/
+ }
+ break;
+
+ default:
+ DISCARD printf("Error: invalid type code\n");
+
+ } /o end of typecode switch o/
+
+ } /o end of loop through all attributes in a type o/
+
+
+ /o ------------ GET THE IMMEDIATE METHODS OF A TYPE ------------ o/
+
+ /o loop through all methods in the type by reusing iterator o/
+ if (OCITypeIterSet(env, err, car_tdo, iterator_ort) != OCI_SUCCESS)
+ /o do something o/
+
+ while (OCITypeMethodNext(env, err, iterator_ort) != OCI_NO_DATA)
+ {
+ /o get the method's name o/
+ if (!memcmp(OCITypeMethodName(env, err, mdo, &text_len), "car",
+ text_len))
+ /o do something o/ ;
+
+ /o get the method's encapsulation o/
+ if (OCITypeMethodEncap(env, err, mdo) == OCI_TYPEENCAP_PUBLIC)
+ /o do something o/ ;
+
+ /o get the method's flags o/
+ meth_flags = OCITypeMethodFlags(env, err, mdo);
+ if (meth_flags & OCI_TYPEMETHOD_VIRTUAL)
+ /o do something o/ ;
+
+
+ /o ------------ GET THE PARAMETERS IN A METHOD ------------ o/
+
+ /o loop through all parameters in the method o/
+ count = OCITypeMethodParams(env, err, mdo);
+ for (j = 1; j <= count; j++)
+ {
+ /o get the parameter information by position o/
+ if (OCITypeParamByPos(env, err, mdo, i, &elem) != OCI_SUCCESS)
+ /o error o/ ;
+
+ /o get the parameter's name o/
+ if (!memcmp(OCITypeElemName(env, err, elem, &text_len), "an_age",
+ text_len))
+ /o do something o/ ;
+
+ /o get the parameter's mode o/
+ if (OCITypeElemMode(env, err, elem) == OCI_PARAM_OUT)
+ /o do something o/ ;
+
+ /o get the parameter's required flag o/
+ if (ortgprq(env, err, elem))
+ /o do something o/ ;
+ }
+ }
+
+ /o get a method by name o/
+ if (OCITypeMethodByName(env, err, car_tdo, "car_constructor",
+ strlen("car_constructor"), NULLP(OCIRef), &mdo)
+ != OCI_SUCCESS)
+ /o error o/ ;
+
+ /o get a parameter in a method by name o/
+ if (OCITypeParamByName(env, err, mdo, "an_age", strlen("an_age"), &elem)
+ != OCI_SUCCESS)
+ /o error o/ ;
+
+ /o get a parameter's typecode o/
+ typecode = OCITypeElemTypeCode(env, err, elem);
+
+ /o get a parameter's type object o/
+ if (OCITypeElemType(env, err, elem, &tdo)) != OCI_SUCCESS)
+ /o error o/ ;
+
+ /o get a parameter's position in a method o/
+ if (ortgpps(env, err, mdo, "an_age", strlen("an_age"),
+ &position, NULLP(OCIRef), NULLP(OCITypeElem)) != OCI_SUCCESS)
+ /o error o/ ;
+
+ /o ------------ GET THE METHOD's RESULT ------------ o/
+
+ /o get a method by name o/
+ if (OCITypeMethodByName(env, err, car_tdo, "get_age", strlen("get_age"),
+ &mdo) != OCI_SUCCESS)
+ /o error o/ ;
+
+ /o get the typecode of the method's result o/
+ typecode = OCITypeElemTypeCode(env, err, mdo);
+
+
+ /o ----------------- END ---------------- o/
+
+ /o free the references implicitly allocated o/
+ DISCARD orlrfre(env, err, (dvoid *)&attr_ref);
+ DISCARD orlrfre(env, err, (dvoid *)¶m_ref);
+
+ NOTES
+
+ MODIFIED
+ dmukhin 06/29/05 - ANSI prototypes; miscellaneous cleanup
+ srseshad 03/12/03 - convert oci public api to ansi
+ aahluwal 06/03/02 - bug 2360115
+ skabraha 04/16/02 - fix compiler warnings
+ rkasamse 03/02/01 - do not use iterator : keyword in MSVB
+ bpalaval 02/09/01 - Change text to oratext.
+ rxgovind 01/31/00 - add OCIType interfaces for transient types
+ whe 09/01/99 - 976457:check __cplusplus for C++ code
+ cxcheng 05/06/97 - make OCI_TYPE?? test macros return either 1 or 0
+ cxcheng 04/22/97 - add comment on desupporting OCIType functions
+ skrishna 03/18/97 - fix ifdef for supporting ansi and k&r proto-types
+ cxcheng 02/26/97 - fix lint problem with oro names
+ cxcheng 02/06/97 - take out short name support except with SLSHORTNAME
+ cxcheng 01/15/97 - change prototype of OCITypeElemParameterizedType()
+ cxcheng 01/03/97 - replace bit in OCI_TYPEPARAM_IS_REQUIRED with bitwis
+ cxcheng 12/31/96 - replace OCI_PARAM_IS_REQUIRED with OCI_TYPEPARAM_IS_
+ cxcheng 12/09/96 - add prototype for OCITypeElemExtTypeCode and OCIType
+ cxcheng 11/25/96 - add schema name parameter to OCITypeVTInsert()
+ cxcheng 11/20/96 - fix prototype for OCITypeByName()
+ cxcheng 11/11/96 - fix prototype for OCITypeByName()
+ cxcheng 11/05/96 - remove OCITypeElemExtTypeCode and OCITypeCollExtType
+ dchatter 10/28/96 - change ortgatyp to be OCITypeArrayByName
+ cxcheng 10/25/96 - fix problem with ortgatyp at end
+ cxcheng 10/22/96 - add OCITypeByRef and OCITypeArrayByRef
+ cxcheng 10/20/96 - remove ortgtyp() from #define section at end
+ cxcheng 10/18/96 - rename OCITypeGetArray to OCITypeArrayByName
+ cxcheng 10/17/96 - final change to prototype for OCI_TYPEPARAM_IS_REQUI
+ cxcheng 10/15/96 - rename OCIEncapLevel and OCIMethodFlag
+ cxcheng 10/14/96 - change prototype of OCITypeResult
+ mluong 10/11/96 - fix compile error
+ jwijaya 10/10/96 - fix bug on OCI_PARAM_IS_REQUIRED
+ cxcheng 10/09/96 - more lint and link fixes
+ cxcheng 10/08/96 - more lint fixes
+ cxcheng 10/07/96 - more changes
+ cxcheng 10/04/96 - replace short names with long names
+ cxcheng 10/01/96 - change to long names for readability
+ cxcheng 09/27/96 - rename ortgatyp() to ortgtya() for lint
+ cxcheng 09/20/96 - add ortgatyp() for array get type
+ cxcheng 09/18/96 - add array pin and iterator functions
+ cxcheng 08/09/96 - add version table calls
+ cxcheng 07/22/96 - add OCITypeElemType() to top
+ jwijaya 07/03/96 - add ANSI prototypes
+ cxcheng 06/28/96 - add OCITypeElemCharSetForm()
+ cxcheng 06/26/96 - fix comment on OCITypeParamByPos()/ortgpps()
+ cxcheng 06/18/96 - fix comments on OCITypeResult()
+ cxcheng 06/17/96 - improve comments
+ skrishna 06/03/96 - change OCITypeCollElem() prototype
+ vkrishna 05/29/96 - replace OROTCFAR with OROTCCAR
+ cxcheng 05/28/96 - fix comments, remove non-beta1 functions
+ cxcheng 05/02/96 - fix prototype bugs
+ cxcheng 04/29/96 - rename OCITypeElemm() to ortanct()
+ cxcheng 04/26/96 - add ortgrbp and ortftyi,
+ fix comments and examples
+ cxcheng 04/22/96 - big merge to main branch
+ cxcheng 04/17/96 - fix syntax
+ cxcheng 04/08/96 - change prototype to ortaty()
+ skrishna 04/08/96 - change ort*() to take OCIEnv* and OCIError* instead
+ of oroenv*
+ cxcheng 03/28/96 - add ortslob(), change ortsstr() prototype
+ cxcheng 03/13/96 - change alter type interface
+ cxcheng 03/11/96 - ORT interface changes
+ cxcheng 02/27/96 - correct comments
+ jboonleu 02/09/96 - rename oroopd to OCIDuration
+ cxcheng 01/19/96 - change ORTCTYVAL to ORTCTYEMB for embedded ADT
+ cxcheng 02/14/96 - add more comments
+ jboonleu 02/09/96 - rename oroopd to OCIDuration
+ cxcheng 02/07/96 - fix comments and examples
+ cxcheng 01/19/96 - new ORT interface without korfc's
+ cxcheng 01/08/96 - consolidate collection functions
+ cxcheng 12/14/95 - remove obsolete ortgcol() and ortrelease()
+ jweisz 12/12/95 - merge screwup: ortdth twice
+ cxcheng 12/05/95 - change multiset interface for new standard
+ skotsovo 12/01/95 - merge from /vobs/rdbms/public/ort.h@@/main/
+ st_rdbms_big_dev/st_rdbms_obj/
+ st_rdbms_jwijaya_variable_ref
+ cxcheng 11/13/95 - add ortaty()/orteaty()
+ cxcheng 11/13/95 - add new collection type accessors
+ skotsovo 10/30/95 - add 'oid' type b/c extent type uses it.
+ skotsovo 10/24/95 - update according to new variable length ref
+ cxcheng 10/05/95 - add null support, change prototypes to calls
+ cxcheng 10/03/95 - add OCITypeMethodOrder() to get ORDER method
+ cxcheng 09/28/95 - add OCITypeElemm() for collection types support
+ skotsovo 06/05/95 - add adt_type parameter to ortsab()
+ skotsovo 05/10/95 - ifdef'd out ortgafp()
+ skotsovo 03/07/95 - update interface to only include release 1
+ skotsovo 02/22/95 - add multiset accessors
+ skotsovo 02/09/95 - update according to new ots doc
+ skotsovo 01/31/95 - add rest of release 1 types
+ skotsovo 01/24/95 - categorize sint32, double, and real as number types
+ (with precision and scale) instead of scalar types.
+ skotsovo 01/12/95 - remove dependency from ortdty interface
+ skotsovo 01/03/95 - remove orotyp accessors
+ skotsovo 12/12/94 - update comments
+ skotsovo 12/05/94 - change OCITypeElemParameterizedTyper interface
+ skotsovo 10/26/94 - add type version table
+ skotsovo 10/17/94 - fix ortgafp() comments
+ skotsovo 10/14/94 - modify ortgafp() parameters
+ skotsovo 10/14/94 - add examples
+ skotsovo 10/13/94 - add a few new routines
+ jwijaya 10/07/94 - add namespace to pin by name
+ jwijaya 10/02/94 - connection handle -> connection number
+ skotsovo 09/13/94 - modify example to use updated oririni interface
+ skotsovo 08/25/94 - change scale to sb1 from sb2
+ skotsovo 07/28/94 - add ortbeg() and ortend()
+ skotsovo 07/14/94 - add decimal type & call graph
+ skotsovo 06/28/94 - subset by removing miscellaneous functions
+ skotsovo 06/28/94 - consistently put comments before typedefs
+ skotsovo 06/27/94 - modify according to new header file template, add
+ more examples, and change ortcty() to return a
+ reference to the type
+ skotsovo 06/24/94 - add functions to get type information from orotyp
+ skotsovo 06/20/94 - finish modifying according to header template
+ skotsovo 06/09/94 - modify according to header file template
+ skotsovo 06/08/94 - replace s.h with oratypes.h
+ skotsovo 05/24/94 - modify comments & update example
+ skotsovo 05/23/94 - modify fnt names for create, alter and drop type
+ skotsovo 05/18/94 - remove ortdme() -- delete a method
+ skotsovo 05/17/94 - add tdo parameter to all type modifiers
+ skotsovo 05/11/94 - return text* instead of including it in arglist
+ skotsovo 11/16/93 - creation
+
+*/
+
+#ifndef ORATYPES
+#include <oratypes.h>
+#endif
+#ifndef ORO_ORACLE
+#include <oro.h>
+#endif
+#ifndef OCI_ORACLE
+#include <oci.h>
+#endif
+
+#ifndef ORT_ORACLE
+#define ORT_ORACLE
+
+/*---------------------------------------------------------------------------*/
+/* SHORT NAMES SUPPORT SECTION */
+/*---------------------------------------------------------------------------*/
+
+#ifdef SLSHORTNAME
+
+/* the following are short names that are only supported on IBM mainframes
+ with the SLSHORTNAME defined.
+ With this all subsequent long names will actually be substituted with
+ the short names here */
+
+#define OCITypeArrayByName ortgatyp
+#define OCITypeAttrByName ortgabn
+#define OCITypeAttrNext ortgabi
+#define OCITypeAttrs ortgtna
+#define OCITypeByRef ortgtbrf
+#define OCITypeCollElem ortgcel
+#define OCITypeCollExtTypeCode ortgcsqt
+#define OCITypeCollSize ortgcne
+#define OCITypeCollTypeCode ortgdttc
+#define OCITypeElem ortado
+#define OCITypeElemCharSetForm ortgscform
+#define OCITypeElemCharSetID ortgscid
+#define OCITypeElemDefaultValue ortgpdv
+#define OCITypeElemExtTypeCode ortgasqt
+#define OCITypeElemLength ortgsl
+#define OCITypeElemName ortganm
+#define OCITypeElemNumPrec ortgnp
+#define OCITypeElemNumScale ortgns
+#define OCITypeElemParamMode ortgpmo
+#define OCITypeElemParameterizedType ortgpa
+#define OCITypeElemType ortgaty
+#define OCITypeElemTypeCode ortgatc
+#define OCITypeIter ortitr
+#define OCITypeIterFree ortifre
+#define OCITypeIterNew ortinew
+#define OCITypeIterSet ortiset
+#define OCITypeMethod ortmdo
+#define OCITypeMethodByName ortgmbn
+#define OCITypeMethodEncap ortgmen
+#define OCITypeMethodFlags ortgmfl
+#define OCITypeMethodMap ortgmmap
+#define OCITypeMethodName ortgmnm
+#define OCITypeMethodNext ortgmbi
+#define OCITypeMethodOrder ortgmor
+#define OCITypeMethodOverload ortgmno
+#define OCITypeMethodParams ortgmnp
+#define OCITypeMethods ortgtnm
+#define OCITypeName ortgtme
+#define OCITypeParamByName ortgpbn
+#define OCITypeParamPos ortgpps
+#define OCITypeSchema ortgtsch
+#define OCITypeTypeCode ortgttc
+#define OCITypeVTInit ortvini
+#define OCITypeVTInsert ortvins
+#define OCITypeVTSelect ortvsel
+#define OCITypeVersion ortgtvn
+
+#endif /* SLSHORTNAME */
+
+
+/*============================*/
+/* PUBLIC TYPES AND CONSTANTS */
+/*============================*/
+
+/*----------------------------- TYPE DESCRIPTION ----------------------------*/
+
+/*
+ * OCIType - OCI Type Description Object
+ *
+ * The contents of an 'OCIType' is private/opaque to clients. Clients just
+ * need to declare and pass 'OCIType' pointers in to the type manage
+ * functions.
+ * The pointer points to the type in the object cache. Thus, clients don't
+ * need to allocate space for this type and must NEVER free the pointer to the
+ * 'OCIType'.
+ */
+
+typedef struct OCIType OCIType;
+
+/*------------------------- TYPE ELEMENT DESCRIPTION ------------------------*/
+
+
+/*
+ * OCITypeElem - OCI Type Element object
+ *
+ * The contents of an 'OCITypeElem' is private/opaque to clients. Clients just
+ * need to declare and pass 'OCITypeElem' pointers in to the type manager
+ * functions.
+ *
+ * 'OCITypeElem' objects contains type element information such as the numeric
+ * precision for example, for number objects, and the number of elements for
+ * arrays.
+ * They ARE used to describe type attributes, collection elements,
+ * method parameters, and method results. Hence they are pass in or returned
+ * by attribute, collection, and method parameter/result accessors.
+ */
+
+typedef struct OCITypeElem OCITypeElem;
+
+
+/*--------------------------- METHOD DESCRIPTION ---------------------------*/
+
+
+/*
+ * OCITypeMethod - OCI Method Description object
+ *
+ * The contents of an 'OCITypeMethod' is private/opaque to clients. Clients
+ * just need to declare and pass 'OCITypeMethod' pointers in to the type
+ * manager functions.
+ * The pointer points to the method in the object cache. Thus, clients don't
+ * need to allocate space for this type and must NEVER free the pointer to
+ * the 'OCITypeMethod'.
+ */
+
+typedef struct OCITypeMethod OCITypeMethod;
+
+
+/*--------------------------- TYPE ACCESS ITERATOR --------------------------*/
+
+/*
+ * OCITypeIter- OCI Type Iterator
+ *
+ * The contents of an 'orti' is private/opaque to clients. Clients just
+ * need to declare and pass 'orti' pointers in to the type manager functions.
+ * The iterator is used to retreive MDO's and ADO's that belong to the TDO
+ * one at a time. It needs to be allocated by the 'OCITypeIterNew()' function
+ * call and deallocated with the 'OCITypeIterFree()' function call.
+ */
+
+typedef struct OCITypeIter OCITypeIter;
+
+
+/*==================*/
+/* PUBLIC FUNCTIONS */
+/*==================*/
+
+/*--------------------------------------------------------------------------*/
+/* ITERATOR */
+/*--------------------------------------------------------------------------*/
+
+/*-----------------------_- OCITypeIterNew ---------------------------------*/
+
+/* ** OBSOLETE ** */
+sword OCITypeIterNew( OCIEnv *env, OCIError *err, OCIType *tdo,
+ OCITypeIter **iterator_ort );
+
+/*
+ NAME: OCITypeIterNew - OCI Iterator NEW
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ tdo (IN) - pointer to the pinned type in the object cache to
+ initialize the iterator with
+ iterator_ort (OUT) - pointer to the pointer to the new iterator created
+ DESCRIPTION:
+ Create a new instance of a method/attribute iterator and initalize
+ it's values.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the required parameters is null.
+ 2) error while allocating space for the iterator.
+*/
+
+/*------------------------ OCITypeIterSet ---------------------------------*/
+
+/* ** OBSOLETE ** */
+sword OCITypeIterSet( OCIEnv *env, OCIError *err, OCIType *tdo,
+ OCITypeIter *iterator_ort );
+
+/*
+ NAME: OCITypeIterSet - OCI Iterator SET
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ tdo (IN) - pointer to the pinned type in the object cache to
+ initialize the iterator with
+ iterator_ort (IN/OUT) - pointer to the iterator to set
+ DESCRIPTION:
+ Initializes the iterator. This is used to reset the state of the
+ iterator.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the required parameters is null.
+*/
+
+/*------------------------ OCITypeIterFree ---------------------------------*/
+
+/* ** OBSOLETE ** */
+sword OCITypeIterFree( OCIEnv *env, OCIError *err, OCITypeIter
+ *iterator_ort );
+
+/*
+ NAME: OCITypeIterFree - OCI Iterator FREe
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ iterator_ort (IN/OUT) - pointer to the iterator to free
+ DESCRIPTION:
+ Free space allocated for the iterator.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the required parameters is null.
+ 2) error while freeing the iterator, probably bad iterator pointer.
+*/
+
+
+/*--------------------------------------------------------------------------*/
+/* TYPE GET */
+/*--------------------------------------------------------------------------*/
+
+/* ** OBSOLETE ** */
+sword OCITypeByName( OCIEnv *env, OCIError *err, const OCISvcCtx *svc,
+ const oratext *schema_name, ub4 s_length,
+ const oratext *type_name, ub4 t_length,
+ const oratext *version_name, ub4 v_length,
+ OCIDuration pin_duration, OCITypeGetOpt get_option,
+ OCIType **tdo );
+/*
+ NAME: OCITypeByName - OCI Get the most current version of an existing TYPe
+ by name.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ svc (IN) - OCI service handle
+ schema_name (IN, optional) - name of schema associated with the
+ type. By default, the user's schema name is used.
+ s_length (IN) - length of the 'schema_name' parameter
+ type_name (IN) - name of the type to get
+ t_length (IN) - length of the 'type_name' parameter
+ version_name (IN, optional) - user readable version of the type.
+ Pass (oratext *)0 for the most current version.
+ v_length (IN) - length of version_name in bytes. Should be 0 if
+ the most current version is to be retrieved.
+ pin_duration (IN) - pin duration (e.g. until the end of current
+ transaction). See 'oro.h' for a description of
+ each option.
+ get_option (IN) - options for loading the types. It can be one of two
+ values:
+ OCI_TYPEGET_HEADER for only the header to be loaded, or
+ OCI_TYPEGET_ALL for the TDO and all ADO and MDOs to be
+ loaded.
+ tdo (OUT) - pointer to the pinned type in the object cache
+ DESCRIPTION:
+ Get a pointer to a version of the existing type associated
+ with schema/type name.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the required parameters is null.
+ 2) the adt type associated with schema/type name does not exist.
+ NOTE:
+ Schema and type names are CASE-SENSITIVE. If they have been created
+ via SQL, you need to use uppercase names.
+*/
+
+sword OCITypeArrayByName( OCIEnv *env, OCIError *err, const OCISvcCtx *svc,
+ ub4 array_len,
+ const oratext *schema_name[], ub4 s_length[],
+ const oratext *type_name[], ub4 t_length[],
+ const oratext *version_name[], ub4 v_length[],
+ OCIDuration pin_duration,
+ OCITypeGetOpt get_option, OCIType **tdo );
+
+/*
+ NAME: OCITypeArrayByName - OCI Get array of TYPes by name.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ svc (IN) - OCI service handle
+ array_len (IN) - number of schema_name/type_name/version_name entries to
+ be retrieved.
+ schema_name (IN, optional) - array of schema names associated with the
+ types to be retrieved. The array must have array_len
+ elements if specified.
+ If 0 is supplied, the default schema is assumed, otherwise
+ it MUST have array_len number of elements.
+ 0 can be supplied for one or more of the entries to indicate
+ that the default schema is desired for those entries.
+ s_length (IN) - array of schema_name lengths with each entry
+ corresponding to the length of the corresponding schema_name
+ entry in the schema_name array in bytes.
+ The array must either have array_len number of elements or
+ it MUST be 0 if schema_name is not specified.
+ type_name (IN) - array of the names of the types to retrieve. This
+ MUST have array_len number of elements.
+ t_length (IN) - array of the lengths of type names in the type_name
+ array in bytes.
+ version_name (IN) - array of the version names of the types to retrieve
+ corresponding. This can be 0 to indicate retrieval of the
+ most current versions, or it MUST have array_len number of
+ elements.
+ If 0 is supplied, the most current version is assumed,
+ otherwise it MUST have array_len number of elements.
+ 0 can be supplied for one or more of the entries to indicate
+ that the current version is desired for those entries.
+ v_length (IN) - array of the lengths of version names in the
+ version_name array in bytes.
+ pin_duration (IN) - pin duration (e.g. until the end of current
+ transaction) for the types retreieve. See 'oro.h' for a
+ description of each option.
+ get_option (IN) - options for loading the types. It can be one of two
+ values:
+ OCI_TYPEGET_HEADER for only the header to be loaded, or
+ OCI_TYPEGET_ALL for the TDO and all ADO and MDOs to be
+ loaded.
+ tdo (OUT) - output array for the pointers to each pinned type in the
+ object cache. It must have space for array_len pointers.
+ Use OCIObjectGetObjectRef() to obtain the CREF to each
+ pinned type descriptor.
+ DESCRIPTION:
+ Get pointers to the existing types associated with the schema/type name
+ array. This is similar to OCITypeByName() except that all the TDO's are
+ retreived via a single network roundtrip.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the required parameters is null.
+ 2) one or more adt types associated with a schema/type name entry
+ does not exist.
+*/
+
+sword OCITypeByRef( OCIEnv *env, OCIError *err,
+ const OCIRef *type_ref, OCIDuration pin_duration,
+ OCITypeGetOpt get_option, OCIType **tdo );
+
+/*
+ NAME: OCITypeArrayByRef - OCI Get array of TYPes by REF.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ type_ref (IN) - OCIRef * pointing to the particular version of
+ the type descriptor object to obtain.
+ The array must have array_len elements if specified.
+ pin_duration (IN) - pin duration (e.g. until the end of current
+ transaction) for the type to retreieve. See 'oro.h' for a
+ description of each option.
+ get_option (IN) - options for loading the type. It can be one of two
+ values:
+ OCI_TYPEGET_HEADER for only the header to be loaded, or
+ OCI_TYPEGET_ALL for the TDO and all ADO and MDOs to be
+ loaded.
+ tdo (OUT) - pointer to the pinned type in the object cache
+ DESCRIPTION:
+ Get pointers to the
+ with the schema/type name array. This is similar to OCITypeByName()
+ except that all the TDO's are retreived via a single network roundtrip.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the required parameters is null.
+ 2) one or more adt types associated with a schema/type name entry
+ does not exist.
+*/
+
+sword OCITypeArrayByRef( OCIEnv *env, OCIError *err,
+ ub4 array_len, const OCIRef **type_ref,
+ OCIDuration pin_duration,
+ OCITypeGetOpt get_option, OCIType **tdo );
+
+/*
+ NAME: OCITypeArrayByRef - OCI Get array of TYPes by REF.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ array_len (IN) - number of schema_name/type_name/version_name entries to
+ be retrieved.
+ type_ref (IN) - array of OCIRef * pointing to the particular version of
+ the type descriptor object to obtain.
+ The array must have array_len elements if specified.
+ pin_duration (IN) - pin duration (e.g. until the end of current
+ transaction) for the types retreieve. See 'oro.h' for a
+ description of each option.
+ get_option (IN) - options for loading the types. It can be one of two
+ values:
+ OCI_TYPEGET_HEADER for only the header to be loaded, or
+ OCI_TYPEGET_ALL for the TDO and all ADO and MDOs to be
+ loaded.
+ tdo (OUT) - output array for the pointers to each pinned type in the
+ object cache. It must have space for array_len pointers.
+ Use OCIObjectGetObjectRef() to obtain the CREF to each
+ pinned type descriptor.
+ DESCRIPTION:
+ Get pointers to the
+ with the schema/type name array. This is similar to OCITypeByName()
+ except that all the TDO's are retreived via a single network roundtrip.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the required parameters is null.
+ 2) one or more adt types associated with a schema/type name entry
+ does not exist.
+*/
+
+
+/*--------------------------------------------------------------------------*/
+/* TYPE ACCESSORS */
+/*--------------------------------------------------------------------------*/
+
+/*---------------------------- OCITypeName ---------------------------------*/
+
+/* ** OBSOLETE ** */
+oratext* OCITypeName( OCIEnv *env, OCIError *err, const OCIType *tdo,
+ ub4 *n_length );
+/*
+ NAME: OCITypeName - ORT Get a Type's naME.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ tdo (IN) - pointer to to the type descriptor in the object cache
+ n_length (OUT) - length (in bytes) of the returned type name. The
+ caller must allocate space for the ub4 before calling this
+ routine.
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) All input parameters must not be NULL and must be valid.
+ 3) 'n_length' must point to an allocated ub4.
+ DESCRIPTION:
+ Get the name of the type.
+ RETURNS:
+ the name of the type
+ NOTES:
+ The type descriptor, 'tdo', must be unpinned when the accessed
+ information is no longer needed.
+ */
+
+/*------------------------ OCITypeSchema ---------------------------------*/
+
+/* ** OBSOLETE ** */
+oratext* OCITypeSchema( OCIEnv *env, OCIError *err, const OCIType *tdo,
+ ub4 *n_length );
+/*
+ NAME: OCITypeSchema - ORT Get a Type's SCHema name.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ tdo (IN) - pointer to to the type descriptor in the object cache
+ n_length (OUT) - length (in bytes) of the returned schema name. The
+ caller must allocate space for the ub4 before calling this
+ routine.
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) All input parameters must not be NULL and must be valid.
+ 3) 'n_length' must point to an allocated ub4.
+ DESCRIPTION:
+ Get the schema name of the type.
+ RETURNS:
+ the schema name of the type
+ NOTES:
+ The type descriptor, 'tdo', must be unpinned when the accessed
+ information is no longer needed.
+ */
+
+/*------------------------ OCITypeTypeCode ---------------------------------*/
+
+/* ** OBSOLETE ** */
+OCITypeCode OCITypeTypeCode( OCIEnv *env, OCIError *err,
+ const OCIType *tdo );
+/*
+ NAME: OCITypeTypeCode - OCI Get a Type's Type Code.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ tdo (IN) - pointer to to the type descriptor in the object cache
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) All input parameters must not be NULL and must be valid.
+ DESCRIPTION:
+ Get the type code of the type.
+ RETURNS:
+ The type code of the type.
+ NOTES:
+ The type descriptor, 'tdo', must be unpinned when the accessed
+ information is no longer needed.
+ */
+
+/*----------------------- OCITypeCollTypeCode -------------------------------*/
+
+/* ** OBSOLETE ** */
+OCITypeCode OCITypeCollTypeCode( OCIEnv *env, OCIError *err,
+ const OCIType *tdo );
+/*
+ NAME: OCITypeCollTypeCode - OCI Get a Domain Type's Type Code.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ tdo (IN) - pointer to to the type descriptor in the object cache
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) All input parameters must not be NULL and must be valid.
+ 3) 'tdo' MUST point to a named collection type.
+ DESCRIPTION:
+ Get the type code of the named collection type. For V8.0, named
+ collection types can only be variable length arrays and nested tables.
+ RETURNS:
+ OCI_TYPECODE_VARRAY for variable length array, and
+ OCI_TYPECODE_TABLE for nested tables.
+ NOTES:
+ The type descriptor, 'tdo', should be unpinned when the accessed
+ information is no longer needed.
+ */
+
+/*------------------------- OCITypeVersion ---------------------------------*/
+
+/* ** OBSOLETE ** */
+oratext* OCITypeVersion( OCIEnv *env, OCIError *err, const OCIType *tdo,
+ ub4 *v_length );
+/*
+ NAME: OCITypeVersion - OCI Get a Type's user-readable VersioN.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ tdo (IN) - pointer to to the type descriptor in the object cache
+ v_length (OUT) - length (in bytes) of the returned user-readable
+ version. The caller must allocate space for the ub4 before
+ calling this routine.
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) All input parameters must not be NULL and must be valid.
+ 3) 'v_length' must point to an allocated ub4.
+ DESCRIPTION:
+ Get the user-readable version of the type.
+ RETURNS:
+ The user-readable version of the type
+ NOTES:
+ The type descriptor, 'tdo', must be unpinned when the accessed
+ information is no longer needed.
+ */
+
+/*--------------------------- OCITypeAttrs ---------------------------------*/
+
+/* ** OBSOLETE ** */
+ub4 OCITypeAttrs( OCIEnv *env, OCIError *err, const OCIType *tdo );
+/*
+ NAME: OCITypeAttrs - OCI Get a Type's Number of Attributes.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ tdo (IN) - pointer to to the type descriptor in the object cache
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) All input parameters must not be NULL and must be valid.
+ DESCRIPTION:
+ Get the number of attributes in the type.
+ RETURNS:
+ The number of attributes in the type. 0 for ALL non-ADTs.
+ NOTES:
+ The type descriptor, 'tdo', must be unpinned when the accessed
+ information is no longer needed.
+ */
+
+/*------------------------- OCITypeMethods ---------------------------------*/
+
+/* ** OBSOLETE ** */
+ub4 OCITypeMethods( OCIEnv *env, OCIError *err, const OCIType *tdo );
+/*
+ NAME: OCITypeMethods - OCI Get a Type's Number of Methods.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ tdo (IN) - pointer to to the type descriptor in the object cache
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) All input parameters must not be NULL and must be valid.
+ DESCRIPTION:
+ Get the number of methods in a type.
+ RETURNS:
+ The number of methods in the type
+ NOTES:
+ The type descriptor, 'tdo', must be unpinned when the accessed
+ information is no longer needed.
+ */
+
+
+/*--------------------------------------------------------------------------*/
+/* TYPE ELEMENT INFORMATION ACCESSORS */
+/*--------------------------------------------------------------------------*/
+
+/*------------------------ OCITypeElemName ---------------------------------*/
+
+/* ** OBSOLETE ** */
+oratext* OCITypeElemName( OCIEnv *env, OCIError *err,
+ const OCITypeElem *elem, ub4 *n_length );
+/*
+ NAME: OCITypeElemName - OCI Get an Attribute's NaMe.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ elem (IN) - pointer to the type element descriptor in the object cache
+ n_length (OUT) - length (in bytes) of the returned attribute name.
+ The caller must allocate space for the ub4 before calling this
+ routine.
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) All input parameters must not be NULL and must be valid.
+ 3) 'n_length' must point to an allocated ub4.
+ DESCRIPTION:
+ Get the name of the attribute.
+ RETURNS:
+ the name of the attribute and the length in n_length
+ NOTES:
+ The type must be unpinned when the accessed information is no
+ longer needed.
+ */
+
+/*------------------------ OCITypeElemTypeCode ------------------------------*/
+
+/* ** OBSOLETE ** */
+OCITypeCode OCITypeElemTypeCode( OCIEnv *env, OCIError *err,
+ const OCITypeElem *elem );
+/*
+ NAME: OCITypeElemTypeCode - OCI Get an Attribute's TypeCode.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ elem (IN) - pointer to the type element descriptor in the object cache
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) All input parameters must not be NULL and must be valid.
+ DESCRIPTION:
+ Get the typecode of an attribute's type.
+ RETURNS:
+ the typecode of the attribute's type. If this is a scalar type, the
+ typecode sufficiently describes the scalar type and no further calls
+ need to be made. Valid scalar types include: OCI_TYPECODE_SIGNED8,
+ OCI_TYPECODE_UNSIGNED8, OCI_TYPECODE_SIGNED16, OCI_TYPECODE_UNSIGNED16,
+ OCI_TYPECODE_SIGNED32, OCI_TYPECODE_UNSIGNED32, OCI_TYPECODE_REAL,
+ OCI_TYPECODE_DOUBLE, OCI_TYPECODE_DATE,
+ OCI_TYPECODE_MLSLABEL, OROTCOID, OCI_TYPECODE_OCTET, or OROTCLOB.
+ This function converts the CREF (stored in the attribute) into a
+ typecode.
+ NOTES:
+ The type must be unpinned when the accessed information is no
+ longer needed.
+ */
+
+/*------------------------ OCITypeElemType ---------------------------------*/
+
+/* ** OBSOLETE ** */
+sword OCITypeElemType( OCIEnv *env, OCIError *err, const OCITypeElem *elem,
+ OCIType **elem_tdo );
+/*
+ PARAMETERS
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ elem (IN) - pointer to the type element descriptor in the object cache
+ elem_tdo (OUT) - If the function completes successfully, 'elem_tdo'
+ points to the type descriptor (in the object cache) of the type of
+ the element.
+
+ REQUIRES
+ 1) All type accessors require that the type be pinned before calling
+ any accessor. This can be done by calling 'OCITypeByName()'.
+ 2) if 'elem' is not null, it must point to a valid type element descriptor
+ in the object cache.
+
+ DESCRIPTION
+ Get the type tdo of the type of this element.
+ RETURNS
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the parameters is null.
+
+ NOTES
+ The type must be unpinned when the accessed information is no
+ longer needed. This can be done by calling 'OCIObjectUnpin()'.
+ */
+
+/*------------------------- OCITypeElemFlags -------------------------------*/
+
+/* ** OBSOLETE ** */
+ub4 OCITypeElemFlags( OCIEnv *env, OCIError *err,
+ const OCITypeElem *elem );
+/*
+ NAME: OCITypeElemFlags - OCI Get a Elem's FLags
+ (inline, constant, virtual, constructor,
+ destructor).
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ elem (IN) - pointer to the type element descriptor in the object cache
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) All input parameters must not be NULL and must be valid.
+ DESCRIPTION:
+ Get the flags of a type element (attribute, parameter).
+ RETURNS:
+ The flags of the type element.
+ NOTES:
+ The flag bits are not externally documented. Use only the macros
+ in the last section (ie. OCI_TYPEPARAM_IS_REQUIRED, and
+ OCI_TYPEELEM_IS_REF) to test for them only. The type must be unpinned
+ when the accessed information is no longer needed.
+ */
+
+/*------------------------ OCITypeElemNumPrec ------------------------------*/
+
+/* ** OBSOLETE ** */
+ub1 OCITypeElemNumPrec( OCIEnv *env, OCIError *err,
+ const OCITypeElem *elem );
+/*
+ NAME: OCITypeElemNumPrec - Get a Number's Precision. This includes float,
+ decimal, real, double, and oracle number.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ elem (IN) - pointer to the type element descriptor in the object cache
+ REQUIRES:
+ All input parameters must not be NULL and must be valid.
+ DESCRIPTION:
+ Get the precision of a float, decimal, long, unsigned long, real,
+ double, or Oracle number type.
+ RETURNS:
+ the precision of the float, decimal, long, unsigned long, real, double,
+ or Oracle number
+ */
+
+/*------------------------- OCITypeElemNumScale -----------------------------*/
+
+/* ** OBSOLETE ** */
+sb1 OCITypeElemNumScale( OCIEnv *env, OCIError *err,
+ const OCITypeElem *elem );
+/*
+ NAME: OCITypeElemNumScale - Get a decimal or oracle Number's Scale
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ elem (IN) - pointer to the type element descriptor in the object cache
+ REQUIRES:
+ All input parameters must not be NULL and must be valid.
+ DESCRIPTION:
+ Get the scale of a decimal, or Oracle number type.
+ RETURNS:
+ the scale of the decimal, or Oracle number
+ */
+
+/*------------------------ OCITypeElemLength -------------------------------*/
+
+/* ** OBSOLETE ** */
+ub4 OCITypeElemLength( OCIEnv *env, OCIError *err,
+ const OCITypeElem *elem );
+/*
+ NAME: OCITypeElemLength - Get a raw, fixed or variable length String's
+ length in bytes.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ elem (IN) - pointer to the type element descriptor in the object cache
+ REQUIRES:
+ All input parameters must not be NULL and must be valid.
+ DESCRIPTION:
+ Get the length of a raw, fixed or variable length string type.
+ RETURNS:
+ length of the raw, fixed or variable length string
+ */
+
+/*----------------------- OCITypeElemCharSetID -----------------------------*/
+
+/* ** OBSOLETE ** */
+ub2 OCITypeElemCharSetID( OCIEnv *env, OCIError *err,
+ const OCITypeElem *elem );
+/*
+ NAME: OCITypeElemCharSetID - Get a fixed or variable length String's
+ character set ID
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ elem (IN) - pointer to the type element descriptor in the object cache
+ REQUIRES:
+ All input parameters must not be NULL and must be valid.
+ DESCRIPTION:
+ Get the character set ID of a fixed or variable length string type.
+ RETURNS:
+ character set ID of the fixed or variable length string
+ */
+
+/*---------------------- OCITypeElemCharSetForm ----------------------------*/
+
+/* ** OBSOLETE ** */
+ub2 OCITypeElemCharSetForm( OCIEnv *env, OCIError *err,
+ const OCITypeElem *elem );
+/*
+ NAME: OCITypeElemCharSetForm - Get a fixed or variable length String's
+ character set specification form.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ elem (IN) - pointer to the attribute information in the object cache
+ REQUIRES:
+ All input parameters must not be NULL and must be valid.
+ DESCRIPTION:
+ Get the character form of a fixed or variable length string type.
+ The character form is an enumerated value that can be one of the
+ 4 values below:
+ SQLCS_IMPLICIT for CHAR, VARCHAR2, CLOB w/o a specified set
+ SQLCS_NCHAR for NCHAR, NCHAR VARYING, NCLOB
+ SQLCS_EXPLICIT for CHAR, etc, with "CHARACTER SET ..." syntax
+ SQLCS_FLEXIBLE for PL/SQL "flexible" parameters
+ RETURNS:
+ character form of the fixed or variable string
+ */
+
+/*--------------------- OCITypeElemParameterizedType ------------------------*/
+
+/* ** OBSOLETE ** */
+sword OCITypeElemParameterizedType( OCIEnv *env, OCIError *err,
+ const OCITypeElem *elem,
+ OCIType **type_stored );
+/*
+ NAME: OCITypeElemParameterizedType
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ elem (IN) - pointer to the type element descriptor in the object cache
+ type_stored (OUT) - If the function completes successfully,
+ and the parameterized type is complex, 'type_stored' is NULL.
+ Otherwise, 'type_stored' points to the type descriptor (in the
+ object cache) of the type that is stored in the parameterized
+ type. The caller must allocate space for the OCIType*
+ before calling this routine and must not write into the space.
+ REQUIRES:
+ All input parameters must be valid.
+ DESCRIPTION:
+ Get a descriptor to the parameter type of a parameterized type.
+ Parameterized types are types of the form:
+ REF T
+ VARRAY (n) OF T
+ etc, where T is the parameter in the parameterized type.
+ Additionally is_ref is set if the parameter is a PTR or REF.
+ For example, it is set for REF T or VARRAY(n) OF REF T.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the parameters is null.
+ 2) 'type_stored' is not NULL but points to NULL data.
+ NOTES:
+ Complex parameterized types will be in a future release (once
+ typedefs are supported. When setting the parameterized type
+ information, the user must typedef the contents if it's a
+ complex parameterized type. Ex. for varray<varray<car>>, use
+ 'typedef varray<car> varcar' and then use varray<varcar>.
+ */
+
+/*----------------------- OCITypeElemExtTypeCode ----------------------------*/
+
+/* ** OBSOLETE ** */
+OCITypeCode OCITypeElemExtTypeCode( OCIEnv *env, OCIError *err,
+ const OCITypeElem *elem );
+/*
+ NAME: OCITypeElemExtTypeCode - OCI Get an element's SQLT constant.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ elem (IN) - pointer to the type element descriptor in the object cache
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) All input parameters must not be NULL and must be valid.
+ DESCRIPTION:
+ Get the internal Oracle typecode associated with an attribute's type.
+ This is the actual typecode for the attribute when it gets mapped
+ to a column in the Oracle database.
+ RETURNS:
+ The Oracle typecode associated with the attribute's type.
+ NOTES:
+ The type must be unpinned when the accessed information is no
+ longer needed.
+ */
+
+/*--------------------------------------------------------------------------*/
+/* ATTRIBUTE ACCESSORS */
+/*--------------------------------------------------------------------------*/
+
+/*------------------------ OCITypeAttrByName -------------------------------*/
+
+/* ** OBSOLETE ** */
+sword OCITypeAttrByName( OCIEnv *env, OCIError *err, const OCIType *tdo,
+ const oratext *name, ub4 n_length,
+ OCITypeElem **elem );
+/*
+ NAME: OCITypeAttrByName - OCI Get an Attribute By Name.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ tdo (IN) - pointer to to the type descriptor in the object cache
+ name (IN) - the attribute's name
+ n_length (IN) - length (in bytes) of the 'name' parameter
+ elem (OUT) - If this function completes successfully, 'elem' points to
+ the selected type element descriptor pertaining to the
+ attributein the object cache.
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) if 'tdo' is not null, it must point to a valid type descriptor
+ in the object cache.
+ DESCRIPTION:
+ Get an attribute given its name.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the required parameters is null.
+ 2) the type does not contain an attribute with the input 'name'.
+ 3) 'name' is NULL.
+ NOTES:
+ The type descriptor, 'tdo', must be unpinned when the accessed
+ information is no longer needed.
+ Schema and type names are CASE-SENSITIVE. If they have been created
+ via SQL, you need to use uppercase names.
+ */
+
+/*------------------------ OCITypeAttrNext ---------------------------------*/
+
+/* ** OBSOLETE ** */
+sword OCITypeAttrNext( OCIEnv *env, OCIError *err,
+ OCITypeIter *iterator_ort, OCITypeElem **elem );
+
+/*
+ NAME: OCITypeAttrNext - OCI Get an Attribute By Iteration.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ iterator_ort (IN/OUT) - iterator for retrieving the next attribute;
+ see OCITypeIterNew() to initialize iterator.
+ elem (OUT) - If this function completes successfully, 'elem' points to
+ the selected type element descriptor pertaining to the
+ attributein the object cache.
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) if 'tdo' is not null, it must point to a valid type descriptor
+ in the object cache.
+ DESCRIPTION:
+ Iterate to the next attribute to retrieve.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_NO_DATA if there are no more attributes to iterate on; use
+ OCITypeIterSet() to reset the iterator if necessary.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the required parameters is null.
+ NOTES:
+ The type must be unpinned when the accessed information is no
+ longer needed.
+ */
+
+/*--------------------------------------------------------------------------*/
+/* COLLECTION ACCESSORS */
+/*--------------------------------------------------------------------------*/
+
+/*------------------------ OCITypeCollElem ---------------------------------*/
+
+/* ** OBSOLETE ** */
+sword OCITypeCollElem( OCIEnv *env, OCIError *err, const OCIType *tdo,
+ OCITypeElem **element );
+/*
+ NAME: OCITypeCollElem
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ tdo (IN) - pointer to the type descriptor in the object cache
+ element (IN/OUT) - If the function completes successfully, this
+ points to the descriptor for the collection's element.
+ It is stored in the same format as an ADT attribute's
+ descriptor.
+ If *element is NULL, OCITypeCollElem() implicitly allocates a
+ new instance of OCITypeElem in the object cache. This instance
+ will be
+ automatically freed at the end of the session, and does not have
+ to be freed explicitly.
+ If *element is not NULL, OCITypeCollElem() assumes that it
+ points to a valid OCITypeElem descriptor and will copy the
+ results into it.
+ REQUIRES:
+ All input parameters must be valid.
+ DESCRIPTION:
+ Get a pointer to the descriptor (OCITypeElem) of the element of an
+ array or the rowtype of a nested table.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the parameters is null.
+ 2) the type TDO does not point to a valid collection's type.
+ NOTES:
+ Complex parameterized types will be in a future release (once
+ typedefs are supported. When setting the parameterized type
+ information, the user must typedef the contents if it's a
+ complex parameterized type. Ex. for varray<varray<car>>, use
+ 'typedef varray<car> varcar' and then use varray<varcar>.
+ */
+
+/*------------------------ OCITypeCollSize ---------------------------------*/
+
+/* ** OBSOLETE ** */
+sword OCITypeCollSize( OCIEnv *env, OCIError *err, const OCIType *tdo,
+ ub4 *num_elems );
+/*
+ NAME: OCITypeCollSize - OCI Get a Collection's Number of Elements.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ tdo (IN) - pointer to the type descriptor in the object cache
+ num_elems (OUT) - number of elements in collection
+ REQUIRES:
+ All input parameters must be valid. tdo points to an array type
+ defined as a domain.
+ DESCRIPTION:
+ Get the number of elements stored in a fixed array or the maximum
+ number of elements in a variable array.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the parameters is null.
+ 2) 'tdo' does not point to a domain with a collection type.
+ NOTES:
+ Complex parameterized types will be in a future release (once
+ typedefs are supported. When setting the parameterized type
+ information, the user must typedef the contents if it's a
+ complex parameterized type. Ex. for varray<varray<car>>, use
+ 'typedef varray<car> varcar' and then use varray<varcar>.
+ */
+
+/*------------------------ OCITypeCollExtTypeCode ---------------------------*/
+
+/* ** OBSOLETE ** */
+sword OCITypeCollExtTypeCode( OCIEnv *env, OCIError *err,
+ const OCIType *tdo, OCITypeCode *sqt_code );
+/*
+ NAME: ortcsqt - OCI Get a Collection element's DTY constant.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ tdo (IN) - pointer to the type descriptor in the object cache
+ sqt_code (OUT) - SQLT code of type element.
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) All input parameters must not be NULL and must be valid.
+ DESCRIPTION:
+ Get the SQLT constant associated with an domain's element type.
+ The SQLT codes are defined in <sqldef.h> and are needed for OCI/OOCI
+ use.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the parameters is null.
+ 2) 'tdo' does not point to a domain with a collection type.
+ NOTES:
+ The type must be unpinned when the accessed information is no
+ longer needed.
+ */
+
+
+/*--------------------------------------------------------------------------*/
+/* METHOD ACCESSORS */
+/*--------------------------------------------------------------------------*/
+
+/*------------------------- OCITypeMethodOverload --------------------------*/
+
+/* ** OBSOLETE ** */
+ub4 OCITypeMethodOverload( OCIEnv *env, OCIError *err, const OCIType *tdo,
+ const oratext *method_name, ub4 m_length );
+/*
+ NAME: OCITypeMethodOverload - OCI Get type's Number of Overloaded names
+ for the given method name.
+ PARAMETERS:
+ gp (IN/OUT) - pga environment handle. Any errors are recorded here.
+ tdo (IN) - pointer to to the type descriptor in the object cache
+ method_name (IN) - the method's name
+ m_length (IN) - length (in bytes) of the 'method_name' parameter
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) if 'tdo' is not null, it must point to a valid type descriptor
+ in the object cache.
+ DESCRIPTION:
+ Overloading of methods implies that more than one method may have the
+ same method name. This routine returns the number of methods that
+ have the given method name. If there are no methods with the input
+ method name, 'num_methods' is 0. The caller uses this information when
+ allocating space for the array of mdo and/or position pointers before
+ calling 'OCITypeMethodByName()' or 'ortgmps()'.
+ RETURNS:
+ The number of methods with the given name. 0 if none contains the
+ name.
+ NOTES:
+ Schema and type names are CASE-SENSITIVE. If they have been created
+ via SQL, you need to use uppercase names.
+ */
+
+/*------------------------ OCITypeMethodByName ------------------------------*/
+
+/* ** OBSOLETE ** */
+sword OCITypeMethodByName( OCIEnv *env, OCIError *err, const OCIType *tdo,
+ const oratext *method_name, ub4 m_length,
+ OCITypeMethod **mdos );
+/*
+ NAME: OCITypeMethodByName - OCI Get one or more Methods with Name.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ tdo (IN) - pointer to to the type descriptor in the object cache
+ method_name (IN) - the methods' name
+ m_length (IN) - length (in bytes) of the 'name' parameter
+ mdos (OUT) - If this function completes successfully, 'mdos' points to
+ the selected methods in the object cache. The caller must
+ allocate space for the array of OCITypeMethod pointers before
+ calling this routine and must not write into the space.
+ The number of OCITypeMethod pointers that will be returned can
+ be obtained by calling 'OCITypeMethodOverload()'.
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) if 'tdo' is not null, it must point to a valid type descriptor
+ in the object cache.
+ DESCRIPTION:
+ Get one or more methods given the name.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the required parameters is null.
+ 2) No methods in type has name 'name'.
+ 3) 'mdos' is not NULL but points to NULL data.
+ NOTES:
+ The type must be unpinned when the accessed information is no
+ longer needed.
+ Schema and type names are CASE-SENSITIVE. If they have been created
+ via SQL, you need to use uppercase names.
+ */
+
+/*------------------------ OCITypeMethodNext --------------------------------*/
+
+/* ** OBSOLETE ** */
+sword OCITypeMethodNext( OCIEnv *env, OCIError *err,
+ OCITypeIter *iterator_ort,
+ OCITypeMethod **mdo );
+
+/*
+ NAME: OCITypeMethodNext - OCI Get a Method By Iteration.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ iterator_ort (IN/OUT) - iterator for retrieving the next method;
+ see OCITypeIterNew() to set iterator.
+ mdo (OUT) - If this function completes successfully, 'mdo' points to
+ the selected method descriptor in the object cache. Positions
+ start at 1. The caller must allocate space for the
+ OCITypeMethod* before calling this routine and must not write
+ nto the space.
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) if 'tdo' is not null, it must point to a valid type descriptor
+ in the object cache.
+ DESCRIPTION:
+ Iterate to the next method to retrieve.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_NO_DATA if there are no more attributes to iterate on; use
+ OCITypeIterSet() to reset the iterator if necessary.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the required parameters is null.
+ 2) 'mdo' is not NULL but points to NULL data.
+ NOTES:
+ The type must be unpinned when the accessed information is no
+ longer needed.
+ */
+
+/*------------------------ OCITypeMethodName --------------------------------*/
+
+/* ** OBSOLETE ** */
+oratext *OCITypeMethodName( OCIEnv *env, OCIError *err,
+ const OCITypeMethod *mdo, ub4 *n_length );
+/*
+ NAME: OCITypeMethodName - OCI Get a Method's NaMe.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ mdo (IN) - pointer to the method descriptor in the object cache
+ n_length (OUT) - length (in bytes) of the 'name' parameter. The caller
+ must allocate space for the ub4 before calling this routine.
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) All input parameters must not be NULL and must be valid.
+ DESCRIPTION:
+ Get the (non-unique) real name of the method.
+ RETURNS:
+ the non-unique name of the method or NULL if there is an error.
+ NOTES:
+ The type must be unpinned when the accessed information is no
+ longer needed.
+ */
+
+/*------------------------ OCITypeMethodEncap -------------------------------*/
+
+/* ** OBSOLETE ** */
+OCITypeEncap OCITypeMethodEncap( OCIEnv *env, OCIError *err,
+ const OCITypeMethod *mdo );
+/*
+ NAME: OCITypeMethodEncap - Get a Method's ENcapsulation (private/public).
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ mdo (IN) - pointer to the method descriptor in the object cache
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) All input parameters must not be NULL and must be valid.
+ DESCRIPTION:
+ Get the encapsulation (private, or public) of a method.
+ RETURNS:
+ the encapsulation (private, or public) of the method
+ NOTES:
+ The type must be unpinned when the accessed information is no
+ longer needed.
+ */
+
+/*------------------------ OCITypeMethodFlags -------------------------------*/
+
+/* ** OBSOLETE ** */
+OCITypeMethodFlag OCITypeMethodFlags( OCIEnv *env, OCIError *err,
+ const OCITypeMethod *mdo );
+/*
+ NAME: OCITypeMethodFlags - OCI Get a Method's FLags
+ (inline, constant, virtual, constructor,
+ destructor).
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ mdo (IN) - pointer to the method descriptor in the object cache
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) All input parameters must not be NULL and must be valid.
+ DESCRIPTION:
+ Get the flags (inline, constant, virutal, constructor, destructor) of
+ a method.
+ RETURNS:
+ the flags (inline, constant, virutal, constructor, destructor) of
+ the method
+ NOTES:
+ The type must be unpinned when the accessed information is no
+ longer needed.
+ */
+
+/*------------------------ OCITypeMethodMap ---------------------------------*/
+
+/* ** OBSOLETE ** */
+sword OCITypeMethodMap( OCIEnv *env, OCIError *err, const OCIType *tdo,
+ OCITypeMethod **mdo );
+/*
+ NAME: OCITypeMethodMap - OCI Get the Method's MAP function.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ tdo (IN) - pointer to to the type descriptor in the object cache
+ mdo (OUT) - If this function completes successfully, and there is a
+ map function for this type, 'mdo' points to the selected method
+ descriptor in the object cache. Otherwise, 'mdo' is null.
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) All required input parameters must not be NULL and must be valid.
+ DESCRIPTION:
+ A type may have only one map function. 'OCITypeMethodMap()' finds
+ this function, if it exists, and returns a reference and a pointer to
+ the method descriptor in the object cache. If the type does not have a
+ map (relative ordering) function, then 'mdo_ref' and 'mdo' are set
+ to null and an error is returned.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ the type does not contain a map function.
+ NOTES:
+ The type must be unpinned when the accessed information is no
+ longer needed.
+ */
+
+/*------------------------ OCITypeMethodOrder -------------------------------*/
+
+/* ** OBSOLETE ** */
+sword OCITypeMethodOrder( OCIEnv *env, OCIError *err, const OCIType *tdo,
+ OCITypeMethod **mdo );
+/*
+ NAME: OCITypeMethodOrder - OCI Get the Method's ORder function.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ tdo (IN) - pointer to to the type descriptor in the object cache
+ mdo (OUT) - If this function completes successfully, and there is a
+ map function for this type, 'mdo' points to the selected method
+ descriptor in the object cache. Otherwise, 'mdo' is null.
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) All required input parameters must not be NULL and must be valid.
+ DESCRIPTION:
+ A type may have only one ORder or MAP function. 'OCITypeMethodOrder()'
+ finds this function, if it exists, and returns a ref and a pointer
+ to the method descriptor in the object cache. If the type does not
+ have a map (relative ordering) function, then 'mdo_ref' and 'mdo' are
+ set to null and an error is returned.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ the type does not contain a map function.
+ NOTES:
+ The type must be unpinned when the accessed information is no
+ longer needed.
+ */
+
+/*------------------------ OCITypeMethodParams ------------------------------*/
+
+/* ** OBSOLETE ** */
+ub4 OCITypeMethodParams( OCIEnv *env, OCIError *err,
+ const OCITypeMethod *mdo );
+/*
+ NAME: OCITypeMethodParams - OCI Get a Method's Number of Parameters.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ mdo (IN) - pointer to the method descriptor in the object cache
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) All input parameters must not be NULL and must be valid.
+ DESCRIPTION:
+ Get the number of parameters in a method.
+ RETURNS:
+ the number of parameters in the method
+ NOTES:
+ The type must be unpinned when the accessed information is no
+ longer needed.
+ */
+
+
+/*--------------------------------------------------------------------------*/
+/* RESULT ACCESSORS */
+/*--------------------------------------------------------------------------*/
+
+/*-------------------------- OCITypeResult ---------------------------------*/
+
+/* ** OBSOLETE ** */
+sword OCITypeResult( OCIEnv *env, OCIError *err, const OCITypeMethod *mdo,
+ OCITypeElem **elem );
+/*
+ NAME: OCITypeResult - OCI Get a method's result type descriptor.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ mdo (IN) - pointer to the method descriptor in the object cache
+ elem (OUT) - If this function completes successfully, 'rdo' points to
+ the selected result (parameter) descriptor in the object cache.
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) 'elem' MUST be the address of an OCITypeElem pointer.
+ DESCRIPTION:
+ Get the result of a method.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the required parameters is null.
+ 2) method returns no results.
+ NOTES:
+ The method must be unpinned when the accessed information is no
+ longer needed.
+ */
+
+
+/*--------------------------------------------------------------------------*/
+/* PARAMETER ACCESSORS */
+/*--------------------------------------------------------------------------*/
+
+/*------------------------ OCITypeParamByPos -------------------------------*/
+
+/* ** OBSOLETE ** */
+sword OCITypeParamByPos( OCIEnv *env, OCIError *err,
+ const OCITypeMethod *mdo, ub4 position,
+ OCITypeElem **elem );
+/*
+ NAME: OCITypeParamByPos - OCI Get a Parameter in a method By Position.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ mdo (IN) - pointer to the method descriptor in the object cache
+ position (IN) - the parameter's position. Positions start at 1.
+ elem (OUT) - If this function completes successfully, 'elem' points to
+ the selected parameter descriptor in the object cache.
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ DESCRIPTION:
+ Get a parameter given its position in the method. Positions start
+ at 1.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the required parameters is null.
+ 2) 'position' is not >= 1 and <= the number of parameters in the
+ method.
+ NOTES:
+ The type must be unpinned when the accessed information is no
+ longer needed.
+ */
+
+/*------------------------ OCITypeParamByName -------------------------------*/
+
+/* ** OBSOLETE ** */
+sword OCITypeParamByName( OCIEnv *env, OCIError *err,
+ const OCITypeMethod *mdo,
+ const oratext *name, ub4 n_length,
+ OCITypeElem **elem );
+/*
+ NAME: OCITypeParamByName - OCI Get a Parameter in a method By Name.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ mdo (IN) - pointer to the method descriptor in the object cache
+ name (IN) - the parameter's name
+ n_length (IN) - length (in bytes) of the 'name' parameter
+ elem (OUT) - If this function completes successfully, 'elem' points to
+ the selected parameter descriptor in the object cache.
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) if 'mdo' is not null, it must point to a valid method descriptor
+ in the object cache.
+ DESCRIPTION:
+ Get a parameter given its name.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the required parameters is null.
+ 2) the method does not contain a parameter with the input 'name'.
+ NOTES:
+ The type must be unpinned when the accessed information is no
+ longer needed.
+ */
+
+/*------------------------ OCITypeParamPos ---------------------------------*/
+
+/* ** OBSOLETE ** */
+sword OCITypeParamPos( OCIEnv *env, OCIError *err,
+ const OCITypeMethod *mdo,
+ const oratext *name, ub4 n_length, ub4 *position,
+ OCITypeElem **elem );
+/*
+ NAME: OCITypeParamPos - OCI Get a parameter's position in a method
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ mdo (IN) - pointer to the method descriptor in the object cache
+ name (IN) - the parameter's name
+ n_length (IN) - length (in bytes) of the 'name' parameter
+ position (OUT) - If this function completes successfully, 'position'
+ points to the position of the parameter in the method starting
+ at position 1. position MUST point to space for a ub4.
+ elem (OUT) - If this function completes successfully, and
+ the input 'elem' is not NULL, 'elem' points to the selected
+ parameter descriptor in the object cache.
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) if 'mdo' is not null, it must point to a valid method descriptor
+ in the object cache.
+ DESCRIPTION:
+ Get the position of a parameter in a method. Positions start at 1.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the parameters is null.
+ 2) the method does not contain a parameter with the input 'name'.
+ NOTES:
+ The type must be unpinned when the accessed information is no
+ longer needed.
+ */
+
+/*------------------------ OCITypeParamElemMode -----------------------------*/
+
+/* ** OBSOLETE ** */
+OCITypeParamMode OCITypeElemParamMode( OCIEnv *env, OCIError *err,
+ const OCITypeElem *elem );
+/*
+ NAME: OCITypeElemParamMode - OCI Get a parameter's mode
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ elem (IN) - pointer to the parameter descriptor in the object cache
+ (represented by an OCITypeElem)
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) All input parameters must not be NULL and must be valid.
+ DESCRIPTION:
+ Get the mode (in, out, or in/out) of the parameter.
+ RETURNS:
+ the mode (in, out, or in/out) of the parameter
+ NOTES:
+ The type must be unpinned when the accessed information is no
+ longer needed.
+ */
+
+/*------------------------- OCITypeElemDefaultValue -------------------------*/
+
+/* ** OBSOLETE ** */
+oratext* OCITypeElemDefaultValue( OCIEnv *env, OCIError *err,
+ const OCITypeElem *elem,
+ ub4 *d_v_length );
+/*
+ NAME: OCITypeElemDefaultValue - OCI Get the element's Default Value.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ elem (IN) - pointer to the parameter descriptor in the object cache
+ (represented by an OCITypeElem)
+ d_v_length (OUT) - length (in bytes) of the returned default value.
+ The caller must allocate space for the ub4 before calling this
+ routine.
+ REQUIRES:
+ 1) All type accessors require that the type be pinned before calling
+ any accessor.
+ 2) All input parameters must not be NULL and must be valid.
+ DESCRIPTION:
+ Get the default value in text form (PL/SQL) of an element. For V8.0,
+ this only makes sense for a method parameter.
+ RETURNS:
+ The default value (text) of the parameter.
+ NOTES:
+ The type must be unpinned when the accessed information is no
+ longer needed.
+ */
+
+
+/*--------------------------------------------------------------------------*/
+/* TYPE VERSION TABLE */
+/*--------------------------------------------------------------------------*/
+
+/* For V8.0, the type version table is meant to be an internal data structure
+ only for Oracle clients for type version maintanence purposes. A more
+ general version of the API may be made public in subsequent releases. */
+
+
+/*--------------------------- OCITypeVTInit --------------------------------*/
+
+/* ** OBSOLETE ** */
+sword OCITypeVTInit( OCIEnv *env, OCIError *err );
+/*
+ NAME: OCITypeVTInit - OCI type Version table INItialize
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ REQUIRES:
+ none
+ DESCRIPTION:
+ Allocate space for and initialize the type version table and the type
+ version table's index.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if internal errors occurrs during initialization.
+ */
+
+/*--------------------------- OCITypeVTInsert -------------------------------*/
+
+/* ** OBSOLETE ** */
+sword OCITypeVTInsert( OCIEnv *env, OCIError *err,
+ const oratext *schema_name, ub4 s_n_length,
+ const oratext *type_name, ub4 t_n_length,
+ const oratext *user_version, ub4 u_v_length );
+/*
+ NAME: OCITypeVTInsert - OCI type Version table INSert entry.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ schema_name (IN, optional) - name of schema associated with the
+ type. By default, the user's schema name is used.
+ s_n_length (IN) - length of the 'schema_name' parameter
+ type_name (IN) - type name to insert
+ t_n_length (IN) - length (in bytes) of the 'type_name' parameter
+ user_version (IN) - user readable version of the type
+ u_v_length (IN) - length (in bytes) of the 'user_version' parameter
+ REQUIRES:
+ none
+ DESCRIPTION:
+ Insert an entry into the type version table and the type version
+ table's index. The entry's type name and user readable version
+ fields are updated with the input values. All other fields are
+ initialized to null.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the parameters is invalid.
+ 2) an entry for 'type_name' has already been registered in the
+ type version table.
+ */
+
+/*------------------------------ OCITypeVTSelect ----------------------------*/
+
+/* OCITypeVTSelect - OCI type VERSion table SELECT entry */
+/* ** OBSOLETE ** */
+sword OCITypeVTSelect( OCIEnv *env, OCIError *err,
+ const oratext *schema_name, ub4 s_n_length,
+ const oratext *type_name, ub4 t_n_length,
+ oratext **user_version, ub4 *u_v_length,
+ ub2 *version );
+/*
+ NAME: OCITypeVTSelect - OCI type Version table SELect entry.
+ PARAMETERS:
+ env (IN/OUT) - OCI environment handle initialized in object mode
+ err (IN/OUT) - error handle. If there is an error, it is
+ recorded in 'err' and this function returns OCI_ERROR.
+ The error recorded in 'err' can be retrieved by calling
+ OCIErrorGet().
+ schema_name (IN, optional) - name of schema associated with the
+ type. By default, the user's schema name is used.
+ s_n_length (IN) - length of the 'schema_name' parameter
+ type_name (IN) - type name to select
+ t_n_length (IN) - length (in bytes) of the 'type_name' parameter
+ user_version (OUT, optional) - pointer to user readable version of the
+ type
+ u_v_length (OUT, optional) - length (in bytes) of the 'user_version'
+ parameter
+ version (OUT, optional) - internal type version
+ REQUIRES:
+ All input parameters must not be NULL and must be valid.
+ DESCRIPTION:
+ Select an entry in the type version table by name.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_INVALID_HANDLE if 'env' or 'err' is null.
+ OCI_ERROR if
+ 1) any of the parameters is invalid.
+ 2) an entry with 'type_name' does not exist.
+ */
+
+/* Compatibility function - following function prototype retained for
+ compatibility only */
+sword ortgcty( OCIEnv *env, OCIError *err, OCIType *coll_tdo,
+ OCIType **collelem_tdo );
+
+/*---------------------------------------------------------------------------*/
+/* Transient Type Construction functions */
+/*---------------------------------------------------------------------------*/
+
+sword OCITypeBeginCreate(OCISvcCtx *svchp, OCIError *errhp, OCITypeCode tc,
+ OCIDuration dur, OCIType **type);
+/*
+ NAME: OCITypeBeginCreate - OCI Type Begin Creation of a transient type.
+ REMARKS
+ Begins the construction process for a transient type. The type will be
+ anonymous (no name). To create a persistent named type, the CREATE TYPE
+ statement should be used from SQL. Transient types have no identity.
+ They are pure values.
+ PARAMETERS:
+ svchp (IN) - The OCI Service Context.
+ errhp (IN/OUT) - The OCI error handle. If there is an error, it is
+ recorded in errhp and this function returns
+ OCI_ERROR. Diagnostic information can be obtained by
+ calling OCIErrorGet().
+ tc - The TypeCode for the type. The Typecode could
+ correspond to a User Defined Type or a Built-in type.
+ Currently, the permissible values for User Defined
+ Types are OCI_TYPECODE_OBJECT for an Object Type
+ (structured), OCI_TYPECODE_VARRAY for a VARRAY
+ collection type or OCI_TYPECODE_TABLE for a nested
+ table collection type. For Object types,
+ OCITypeAddAttr() needs to be called to add each of
+ the attribute types. For Collection types,
+ OCITypeSetCollection() needs to be called.
+ Subsequently, OCITypeEndCreate() needs to be called
+ to finish the creation process.
+ The permissible values for Built-in type codes are
+ specified in the user manual. Additional information
+ on built-ins if any (like precision, scale for
+ numbers, character set info for VARCHAR2s etc.) must
+ be set with a subsequent call to OCITypeSetBuiltin().
+ Subsequently OCITypeEndCreate() needs to be called
+ to finish the creation process.
+ dur - The allocation duration for the Type. Could be a
+ predefined or a user defined duration.
+ type(OUT) - The OCIType (Type Descriptor) that is being
+ constructed.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_ERROR on error.
+*/
+
+
+sword OCITypeSetCollection(OCISvcCtx *svchp, OCIError *errhp, OCIType *type,
+ OCIParam *collelem_info, ub4 coll_count);
+/*
+ NAME: OCITypeSetCollection - OCI Type Set Collection information
+ REMARKS :
+ Set Collection type information. This call can be called only if the
+ OCIType has been constructed with a collection typecode.
+ PARAMETERS:
+ svchp (IN) - The OCI Service Context.
+ errhp (IN/OUT) - The OCI error handle. If there is an error, it is
+ recorded in errhp and this function returns
+ OCI_ERROR. Diagnostic information can be obtained by
+ calling OCIErrorGet().
+ type(IN OUT) - The OCIType (Type Descriptor) that is being
+ constructed.
+ collelem_info - collelem_info provides information on the collection
+ element. It is obtained by allocating an OCIParam
+ (parameter handle) and setting type information in
+ the OCIParam using OCIAttrSet() calls.
+ coll_count - The count of elements in the collection. Pass 0 for
+ a nested table (unbounded).
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_ERROR on error.
+*/
+
+sword OCITypeSetBuiltin(OCISvcCtx *svchp, OCIError *errhp, OCIType *type,
+ OCIParam *builtin_info);
+/*
+ NAME: OCITypeSetBuiltin - OCI Type Set Builtin information.
+ REMARKS:
+ Set Built-in type information. This call can be called only if the
+ OCIType has been constructed with a built-in typecode
+ (OCI_TYPECODE_NUMBER etc.).
+ PARAMETERS:
+ svchp (IN) - The OCI Service Context.
+ errhp (IN/OUT) - The OCI error handle. If there is an error, it is
+ recorded in errhp and this function returns
+ OCI_ERROR. Diagnostic information can be obtained by
+ calling OCIErrorGet().
+ type(IN OUT) - The OCIType (Type Descriptor) that is being
+ constructed.
+ builtin_info - builtin_info provides information on the built-in
+ (like precision, scale, charater set etc.). It is
+ obtained by allocating an OCIParam (parameter handle)
+ and setting type information in the OCIParam using
+ OCIAttrSet() calls.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_ERROR on error.
+*/
+
+sword OCITypeAddAttr(OCISvcCtx *svchp, OCIError *errhp, OCIType *type,
+ const oratext *a_name, ub4 a_length,
+ OCIParam *attr_info);
+/*
+ NAME: OCITypeAddAttr - OCI Type Add Attribute to an Object Type.
+ REMARKS:
+ Adds an attribute to an Object type (that was constructed earlier with
+ typecode OCI_TYPECODE_OBJECT).
+ PARAMETERS:
+ svchp (IN) - The OCI Service Context
+ errhp (IN/OUT) - The OCI error handle. If there is an error, it is
+ recorded in errhp and this function returns
+ OCI_ERROR. Diagnostic information can be obtained by
+ calling OCIErrorGet().
+ type (IN/OUT) - The Type description that is being constructed.
+ a_name(IN) - Optional. gives the name of the attribute.
+ a_length - Optional. gives length of attribute name.
+ attr_info - Information on the attribute. It is obtained by
+ allocating an OCIParam (parameter handle) and setting
+ type information in the OCIParam using OCIAttrSet()
+ calls.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_ERROR on error.
+*/
+
+sword OCITypeEndCreate(OCISvcCtx *svchp, OCIError *errhp, OCIType *type);
+/*
+ NAME: OCITypeEndCreate - OCI Type End Creation
+ REMARKS:
+ Finishes construction of a type description.Subsequently, only access
+ will be allowed.
+ PARAMETERS:
+ svchp (IN) - The OCI Service Context
+ errhp (IN/OUT) - The OCI error handle. If there is an error, it is
+ recorded in errhp and this function returns
+ OCI_ERROR. Diagnostic information can be obtained by
+ calling OCIErrorGet().
+ type (IN/OUT) - The Type description that is being constructed.
+ RETURNS:
+ OCI_SUCCESS if the function completes successfully.
+ OCI_ERROR on error.
+*/
+
+/*=========================*/
+/* PUBLIC MACROS AND FLAGS */
+/*=========================*/
+
+/*--------------------------------------------------------------------------*/
+/* TYPE ELEMENT FLAGS */
+/*--------------------------------------------------------------------------*/
+
+#define OCI_TYPEELEM_REF 0x8000 /* element is a REF */
+#define OCI_TYPEPARAM_REQUIRED 0x0800 /* parameter is required */
+
+/* macros to test flags */
+#define OCI_TYPEELEM_IS_REF(elem_flag) \
+ (((elem_flag) & OCI_TYPEELEM_REF)!=0)
+#define OCI_TYPEPARAM_IS_REQUIRED(param_flag) \
+ (((param_flag) & OCI_TYPEPARAM_REQUIRED)!=0)
+
+
+#endif /* ORT_ORACLE */
+