2595 lines
116 KiB
C
Raw Normal View History

/* @(#)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 *)&param_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 *)&param_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 */