📄 ort.h
字号:
/* @(#)ort.h 1.44 95/07/07 *//* Copyright (c) Oracle Corporation 1994, 1995, 1996, 1997, 1999, 2000. All Rights Reserved. *//* NAME ORT - ORacle's external open Type interface to the open type manager (OTM) DESCRIPTION The open type manager interface includes dynamic type operations to create, delete, update, and access types. See the "Functional Specification for Oracle Object Call Interface (Objects Project), Version 1.0" for a user level description of the OTM. For a more detailed description, see the "Component Document for the Open Type Manager, Version 1.0". NOTE: MOST Of the functions in this header file are being desupported. Please use the OCIDescribeAny interface as described in oci.h instead. The OCIType, OCITypeElem, OCITypeMethod abstract types continue to be supported. The only two functions that remain to be documented are OCITypeArrayByName and OCITypeArrayByRef. All obsolete types/functions are marked accordingly below. RELATED DOCUMENTS For the functional specification for the OTM, see: [1] Kotsovolos, Susan, "Functional Specification for Oracle Object Call Interface (Objects Project), Version 1.0", Oracle Corporation, February 1995. For the internal design of the OTM, see the following: [2] Kotsovolos, Susan, "Component Document for the Open Type Manager", Oracle Corporation, November 1994. [3] Kotsovolos, Susan, "Design for The Open Type Manager, Oracle Object Management Subsystem Version 1.0", Oracle Corporation, March 1994. [4] Kotsovolos, Susan and Tin A. Nguyen, "The Open Type Manager", Oracle Corporation, March 1994. [5] Kotsovolos, Susan and Tin A. Nguyen, "Schema Evolution", Oracle Corporation, March 1994. For a description of the types the OTM must support, see: [6] Nguyen, Tin A., "The Open Type System", Oracle Corporation, February 1994. INSPECTION STATUS Inspection date: Inspection status: Estimated increasing cost defects per page: Rule sets: ACCEPTANCE REVIEW STATUS Review date: Review status: Reviewers: **** ALL OBSOLETE FUNCTIONS/TYPES ARE MARKED ACCORDINGLY *** EXPORT FUNCTIONS None PUBLIC DATA STRUCTURES OCIType - type descriptor in the object cache OCITypeElem - type element descriptor in the object cache (used for attributes and paramters) OCITypeCode - Open Type System type code. OCITypeMethod - method descriptor in the object cache OCITypeParamMode - parameter modes (ie. IN, IN-OUT etc) PUBLIC FUNCTIONS ITERATOR (for OCITypeAttrNext and OCITypeMethodNext) OCITypeIterNew - ** OBSOLETE ** Create new instance of an iteraton. OCITypeIterSet - ** OBSOLETE ** Initialize iterator. OCITypeIterFree - ** OBSOLETE ** Free instance of iterator. TYPE GET OCITypeByName - ** OBSOLETE ** Get a type by name. OCITypeArrayByName - Get an array of types by their names. OCITypeByRef - ** OBSOLETE ** Get a type by its CREF. OCITypeArrayByRef - Get an array of types by their CREFs. TYPE ACCESSORS OCITypeName - ** OBSOLETE ** OCI Get a type's name. OCITypeSchema - ** OBSOLETE ** OCI Get a type's schema name. OCITypeTypeCode - ** OBSOLETE ** OCI Get a type's type code. OCITypeVersion - ** OBSOLETE ** OCI Get a Type's user-readable Version. OCITypeAttrs - ** OBSOLETE ** OCI Get a Type's Number of Attributes. OCITypeMethods - ** OBSOLETE ** OCI Get a Type's Number of Methods. TYPE ELEMENT ACCESSORS (they represent attributes/parameters/results) OCITypeElemName - ** OBSOLETE ** Get a type element's (only for attributes) name. OCITypeElemType - ** OBSOLETE ** Get a type element's type descriptor. OCITypeElemTypeCode - ** OBSOLETE ** Get a type element's typecode. OCITypeElemParameterizedType - ** OBSOLETE ** Get a type element's parameterized type's type descriptor. OCITypeElemNumPrec - ** OBSOLETE ** Get a number's precision. OCITypeElemNumScale - ** OBSOLETE ** Get a decimal or oracle Number's Scale OCITypeElemCharSetID - ** OBSOLETE ** Get a fixed or variable length string's character set ID. OCITypeElemCharSetForm - ** OBSOLETE ** Get a fixed or variable length string's character set form (how character set information has been specified). OCITypeElemLength - ** OBSOLETE ** Get a raw, fixed or variable length string's length. OCITypeElemParamMode - ** OBSOLETE ** Get element's parameter's mode (only valid for parameter). OCITypeElemDefaultValue - ** OBSOLETE ** Get element's Default Value. ATTRIBUTE ACCESSORS OCITypeAttrByName - ** OBSOLETE ** Get an Attribute by Name. OCITypeAttrNext - ** OBSOLETE ** Get an Attribute by Iteration. COLLECTION ACCESSORS OCITypeCollTypeCode - ** OBSOLETE ** Get a named collection's typecode. OCITypeCollElem - ** OBSOLETE ** Get a named collection's element's type element information. OCITypeCollSize - ** OBSOLETE ** Get a named collection's size in number of elements. METHOD ACCESSORS OCITypeMethodOverload - ** OBSOLETE ** Get number of overloaded methods with the given method name. (no direct equivalent for OCIDescribe interface) OCITypeMethodByName - ** OBSOLETE ** Get one or more methods by name. OCITypeMethodNext - ** OBSOLETE ** Iterate to the next method to retrieve. OCITypeMethodName - ** OBSOLETE ** Get method's name. OCITypeMethodEncap - ** OBSOLETE ** Get method's encapsulation level. OCITypeMethodFlags - ** OBSOLETE ** et method's flags. OCITypeMethodMap - ** OBSOLETE ** Get type's map function. OCITypeMethodOrder - ** OBSOLETE ** Get type's order function. OCITypeMethodParams - ** OBSOLETE ** Get a method's number of parameters. RESULT ACCESSORS OCITypeResult - ** OBSOLETE ** OCI Get a method's Result. See also ATTRIBUTE/PARAMETER/RESULT TYPE ACCESSORS. PARAMETER ACCESSORS OCITypeParamByPos - ** OBSOLETE ** Get a Parameter in a method By Position. OCITypeParamByName - ** OBSOLETE ** Get a Parameter in a method By Name. OCITypeParamPos - ** OBSOLETE ** Get a Parameter's PoSition in a method. CALL GRAPHS: Only type accessors are supported for 8.0. ** OBSOLETE ** please use OCIDescribe interface TYPE ACCESSOR EXAMPLE CREATE TYPE CAR ( name vstring, age number, number car_age; /o Oracle number o/ weight car_weight; /o abstract type o/ PUBLIC: /o methods o/ car(orlvs a_name, number an_age, WEIGHT a_weight); ~car(); inline number get_age() const; /o relative ordering (map) functions o/ number car_map ); /o the following code accesses the type created above o/ ub1 meth_flags; ub4 i, j; ub4 text_len, position; ub4 count; ub4 length; OCITypeCode typecode; OCIRef *attr_ref; OCIRef *param_ref; OCIType *tdo, new_tdo, final_tdo; OCITypeElem *elem; OCITypeIter *iterator_ort; oratext (*names)[]; ub4 lengths[]; ub4 *positions; oratext *name; oratext name_buffer[M_IDEN]; /o initialize the references o/ DISCARD orlrini(env, err, (dvoid *)&attr_ref); DISCARD orlrini(env, err, (dvoid *)¶m_ref); /o ----------------- GET INFORMATION ABOUT A TYPE ----------------- o/ /o start a transaction o/ /o Pin the type until the end of the transaction. Pinning the type is o required before using any type accessors. o/ if (OCITypeByName(env, err, svc, (oratext *)0, 0, "CAR", strlen("CAR"), OCI_DURATION_TRANS, &car_ref, &car_tdo) != OCI_SUCCESS) /o error o/ ; /o get the type's name o/ if (!memcmp(OCITypeName(env, err, car_tdo, &text_len), "person", text_len)) /o do something o/ ; /o get the type's schema name o/ if (!memcmp(OCITypeSchema(env, err, car_tdo, &text_len), "john", text_len)) /o do something o/ ; /o get the type code of the type o/ if (OCITypeTypeCode(env, err, car_tdo) == OCI_TYPECODE_ADT) /o do something o/ ; /o get the type version o/ if (!memcmp(OCITypeVersion(env, err, car_tdo, &text_len), "1", text_len)) /o do something o/ ; /o ------- GET FLATTENED POSITION OF AN ATTRIBUTES IN A TYPE ------- o/ names = malloc(sizeof(oratext *) * 2); names[0] = malloc(strlen("car_weight")); names[1] = malloc(strlen("ounces")); memcpy(names[0], "car_weight", strlen("car_weight")); memcpy(names[1], "ounces", strlen("ounces")); lengths = malloc(sizeof(ub4) * 2); lengths[0] = strlen("car_weight"); lengths[1] = strlen("ounces"); /o ---------- GET IMMEDIATE ATTRIBUTES IN A TYPE ---------- o/ /o loop through all attributes in the type with iterator o/ if (OCITypeIterNew(env, err, car_tdo, &iterator_ort) != OCI_SUCCESS) /o do something o/ while (OCITypeAttrNext(env, err, iterator_ort, &ado) != OCI_NO_DATA) { /o get the attribute's name o/ if (!memcmp(OCITypeElemName(env, err, ado, &text_len), "tiger", text_len)) /o do something o/ ; /o get the attribute's type descriptor o/ if (OCITypeElemType(env, err, ado, &tdo) != OCI_SUCCESS) /o error o/ ; /o get the attribute's type code o/ typecode = OCITypeElemTypeCode(env, err, ado); switch (typecode) { /o scalar types o/ case OCI_TYPECODE_DATE: /o date o/ case OCI_TYPECODE_SIGNED8: /o byte o/ case OCI_TYPECODE_SIGNED16: /o short o/ case OCI_TYPECODE_UNSIGNED8: /o unsigned byte o/ case OCI_TYPECODE_UNSIGNED16: /o unsigned short o/ case OCI_TYPECODE_OCTET: /o octet o/ case OCI_TYPECODE_TABLE: /o nested table o/ case OCI_TYPECODE_CLOB: /o character lob o/ case OCI_TYPECODE_BLOB: /o binary lob o/ case OCI_TYPECODE_CFILE: /o character file object o/ case OCI_TYPECODE_BFILE: /o binary file object o/ /o do something o/ break; /o number types o/ case OCI_TYPECODE_NUMBER: /o oracle number o/ case OCI_TYPECODE_DECIMAL: /o decimal o/ { /o get the scale of the number o/ if (OCITypeElemNumScale(env, err, ado) == 3)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -