Annotation of win32/sql/oracle/include/oci/ori.h, revision 1.1
1.1 ! parser 1: /* Copyright (c) Oracle Corporation 1994, 1996, 1997, 1998, 1999. All Rights Reserved. */
! 2:
! 3: /*
! 4: NAME
! 5: ORI - OCI navigational interface
! 6:
! 7: DESCRIPTION
! 8:
! 9: This section is intended to give a brief introduction to the navigational
! 10: interfaces. Readers can refer to the documents listed in the section
! 11: 'RELATED DOCUMENTS' for more information.
! 12:
! 13: PURPOSE
! 14: The Oracle Call Interface (OCI) supports navigational access of objects.
! 15: In the navigational paradigm, data is represented as a graph of objects
! 16: connected by references. Objects in the graph are reached by following
! 17: the references.
! 18:
! 19: OBJECT ENVIRONMENT
! 20:
! 21: The object environment is initialized when the OCI environment handle is
! 22: initialized with the object option. An object environment contains a
! 23: heap which buffers type instances in memory. The object environment also
! 24: contains an object cache which keeps track of the objects in the object
! 25: environment. Readers can refer to the "Functional Specification for
! 26: Programmatic Interface" for more information about the object
! 27: environment.
! 28:
! 29: INSTANCE, OBJECT AND VALUE
! 30:
! 31: An OTS instance is an occurence of a type specified by the Oracle Type
! 32: System (OTS). This section describes how an OTS instance can be
! 33: represented in OCI. In OCI, an OTS instance can be classified based on
! 34: the type, the lifetime and referencability (see the figure below):
! 35:
! 36: 1) A persistent object is an instance of an object type. A persistent
! 37: object resides in a row of a table in the server and can exist longer
! 38: than the duration of a session (connection). Persistent objects can be
! 39: identified by object references which contain the object identifiers.
! 40: A persistent object is obtained by pinning its object reference.
! 41:
! 42: 2) A transient object is an instance of an object type. A transient
! 43: object cannot exist longer than the duration of a session, and it is
! 44: used to contain temporary computing results. Transient objects can
! 45: also be identified by references which contain transient object
! 46: identifiers.
! 47:
! 48: 3) A value is an instance of an user-defined type (object type or
! 49: collection type) or any built-in OTS type. Unlike objects, values of
! 50: object types are identified by memory pointers, rather than by
! 51: references.
! 52:
! 53: A value can be standalone or embbeded. A standalone value is usually
! 54: obtained by issuing a select statement. OCI also allows the client
! 55: program to select a row of object table into a value by issuing a SQL
! 56: statement. Thus, a referenceable object (in the database) can be
! 57: represented as a value (which cannot be identified by a reference).
! 58: A standalone value can also be an out-of-line attribute in an object
! 59: (e.g varchar, raw) or an out-of-line element in a collection (e.g.
! 60: varchar, raw, object).
! 61:
! 62: An embedded value is phyiscally included in a containing instance.
! 63: An embedded value can be an in-line attribute in an object (e.g.
! 64: number, nested object) or an in-line element in a collection.
! 65:
! 66: All values are considered to be transient by OCI, e.g. OCI does not
! 67: support automatic flushing a value to the database, and the client has
! 68: to explicitly execute a SQL statement to store a value into the
! 69: database. For embedded values, they are flushed when their containing
! 70: instance are flushed.
! 71:
! 72:
! 73: OTS instance
! 74: | |
! 75: v v
! 76: object value (type)
! 77: | |
! 78: v v
! 79: persistent transient (lifetime)
! 80:
! 81:
! 82: persistent obj transient obj value
! 83: ---------------------------------------------------------------
! 84: | | | | object type, |
! 85: | type | object type | object type | built-in, |
! 86: | | | | collection |
! 87: ---------------------------------------------------------------
! 88: | maximum | until object | session | session |
! 89: | lifetime | is deleted | | |
! 90: ---------------------------------------------------------------
! 91: | referencable | yes | yes | no |
! 92: ---------------------------------------------------------------
! 93: | embeddable | no | no | yes |
! 94: ---------------------------------------------------------------
! 95:
! 96: REFERENCEABLE OBJECT, STANDALONE OBJECT, EMBEDDED OBJECT
! 97:
! 98: In the reminding of this include file, the following term will be used:
! 99: 1) The term 'object' can be generally referred to a persistent object,
! 100: a transient object, a standalone value of object type, or an embedded
! 101: value of object type.
! 102: 2) The term 'referenceable object' refers to a persistent object or a
! 103: transient object.
! 104: 3) The term 'standalone object' refers to a persistent object, a
! 105: transient object or a standalone value of object type.
! 106: 4) The term 'embedded object' referes to a embbeded value of object
! 107: type.
! 108:
! 109: META ATTRIBUTES
! 110:
! 111: There is a set of meta-attributes that are defined for standalone
! 112: objects. A meta-attribute can be transient or persistent. A
! 113: transient meta-attribute is applicable to an instance only when it is
! 114: in memory. A persistent meta-attribute can be applicable to an instance
! 115: that is in the disk.
! 116:
! 117: The set of user visible meta-attributes for persistent objects are:
! 118: 1) existent (persistent) : Does the object exist?
! 119: 2) nullness (persistent) : Null information of the instance
! 120: 3) locked (persistent) : Is the object locked?
! 121: 4) pinned (transient) : Is the object being accessed by the client?
! 122: 5) dirty (transient) : Has the object been modified?
! 123: 6) allocation duration (transient) : see below
! 124: 7) pin duration (transient) : see below
! 125:
! 126: The set of user visible meta-attributes for transient objects are:
! 127: 1) existent (transient) : Does the object exist?
! 128: 2) nullness (transient) : Null information of the instance
! 129: 3) pinned (transient) : Is the object being accessed by the client?
! 130: 4) dirty (transient) : Has the object been modified?
! 131: 4) allocation duration (transient) : see below
! 132: 5) pin duration (transient) : see below
! 133:
! 134: The set of user visible meta-attributes for standalone values of object
! 135: type or collections are:
! 136: 1) allocation duration (transient) : see below
! 137: 2) nullness (transient) : Null information of the instance
! 138: (of an object type)
! 139:
! 140: NULLNESS OF AN INSTANCE
! 141:
! 142: Each standalone object is associated with a null structure which keeps
! 143: the null information about the object. A null indicates the absence of
! 144: data. The null structure itself contains null indicators that represent:
! 145: 1) atomic nullness : a null value that pertains to the whole object
! 146: 2) null status of the individual attribute in the object
! 147:
! 148: The layout of a null structure in memory resembles that of the object,
! 149: except that the null structure has additional indicators to represent
! 150: the atomic nullness for each object.
! 151:
! 152: An non-existent object is different than an object that is atomically
! 153: null. A atomically null object is an existing object that has no data.
! 154:
! 155: MEMORY LAYOUT OF AN OBJECT
! 156:
! 157: A standalone object in memory is composed of a top level memory chunk,
! 158: a null structure and optionally, a number of secondary memory chunks.
! 159: For a DEPARTMENT object type,
! 160:
! 161: OBJECT TYPE department
! 162: {
! 163: dep_name varchar2(20),
! 164: budget number,
! 165: manager person, /o person is an object type o/
! 166: employees collection of person
! 167: }
! 168:
! 169: Each instance of DEPARTMENT will has a top level memory chunk which
! 170: contains the top level attributes such as dep_name, budget, manager and
! 171: employees. The attributes dep_name and employees are themselves pointers
! 172: to the additional memory (the secondary memory chunks). The secondary
! 173: memory is for the out-of-line attribute (e.g. varray).
! 174:
! 175: CONSISTENCY MODEL
! 176:
! 177: Each pin operation behaves like a distinct SQL select. Thus, the object
! 178: cache does not guarantee consistency for a graph of objects. In order to
! 179: retrieve a consistent graph of objects, the user has to explicitly start
! 180: a serializable transaction or a read-only transaction.
! 181:
! 182: DURATION
! 183: In OCI, a duration is used to specify
! 184:
! 185: 1) the length of memory allocation of an instance
! 186: When each instance is allocated, it is associate with an allocation
! 187: duration. The memory occupied by the object is freed automatically
! 188: at the end of its allocation duration. The allocation duration of an
! 189: instance cannot be changed.
! 190:
! 191: 2) the length of pinning of an object
! 192: When each object is pinned, the client has to give a pin duration
! 193: which specify the length of time that the object is intended to be
! 194: used. It is an user error to specify a pin duration longer than an
! 195: allocation duration of the object. An object is completely unpinned
! 196: at the end of its pin duration (see OCIObjectUnpin()).
! 197:
! 198: An OCI program can use the allocation duration and the pin duration to
! 199: automatically free the memory of the instances:
! 200: 1) Transient objects and values are freed at the end of the allocation
! 201: duration.
! 202: 2) Persistent objects ARE freed at the end of the allocation duration.
! 203: Persistent objects CAN be freed at the end of the pin duration when
! 204: the objects are completely unpinned. The persistent objects are said
! 205: to be aged out. See OCIObjectUnpin() for more details.
! 206:
! 207: There are 3 predefined duration: session, transaction, call. The time
! 208: spans of these durations are defined based on the programming model
! 209: presented by OCI. The call duration is mapped to the transaction
! 210: duration in the client-side environment. See oro.h for the macros defined
! 211: for these 3 durations.
! 212:
! 213: A pin duration can be promoted. For example, if an object is pinned with
! 214: duration 1, and the object is later pinned with duration 2, the pin
! 215: routine will try to find a duration that is longer or equal to the
! 216: length of both duration 1 and duration 2. The pin duration of the object
! 217: is set to the that duration. The object is automatically unpinned only
! 218: after both duration 1 and duration 2 are terminated.
! 219:
! 220: RELATED DOCUMENTS
! 221: "Functional Specification for Oracle Object RDBMS"
! 222: "Functional Specification for Programmatic Interfaces"
! 223: "Functional Specification for the Oracle Type System (OTS)"
! 224:
! 225: INSPECTION STATUS
! 226: Inspection date:
! 227: Inspection status:
! 228: Estimated increasing cost defects per page:
! 229: Rule sets:
! 230:
! 231: ACCEPTANCE REVIEW STATUS
! 232: Review date:
! 233: Review status:
! 234: Reviewers:
! 235:
! 236: PUBLIC FUNCTIONS
! 237: OCIObjectNew - OCI new a standalone instance
! 238: OCIObjectPin - OCI pin an object by reference
! 239: OCIObjectUnpin - OCI unpin a referenceable object
! 240: OCIObjectPinCountReset - OCI reset the pin count of a referenceable object
! 241: OCIObjectLock - OCI lock a persistent object
! 242: OCIObjectLockNoWait - OCI lock a persistent object
! 243: OCIObjectMarkUpdate - OCI mark a referenceable object as updated
! 244: OCIObjectUnmark - OCI unmark a dirtied referenceable object
! 245: OCIObjectUnmarkByRef - OCI unmark a dirtied object by reference
! 246: OCIObjectFree - OCI free a standalone instance
! 247: OCIObjectMarkDelete - OCI mark a referenceable object as deleted
! 248: OCIObjectMarkDeleteByRef - OCI mark a referenceable object as deleted by
! 249: giving a reference
! 250: OCIObjectFlush - OCI flush a persistent object
! 251: OCIObjectRefresh - OCI refresh a persistent object
! 252: OCIObjectCopy - OCI CoPy one object to another
! 253: OCIObjectGetTypeRef - OCI get the Type Reference of a standalone object
! 254: OCIObjectGetObjectRef - OCI get the Object's Reference
! 255: OCIObjectGetInd - OCI get Null Structure of an standalone object
! 256: OCIObjectExists - OCI get the existence of a referenceable object
! 257: OCIObjectGetProperty - get object property
! 258: OCIObjectIsLocked - OCI get the lock status of a referenceable object
! 259: OCIObjectIsDirty - OCI get the dirty status of a referenceable object
! 260: OCIObjectPinTable - OCI get Table object
! 261: OCIObjectArrayPin - OCI pin array of objects
! 262: OCIObjectGetPrimayKeyTypeRef - OCI get the Ref for the primary key OID's type
! 263: OCIObjectMakeObjectRef - OCI Create a pk or sys generated REF
! 264:
! 265: OCICacheFlush - OCI flsuh the modified persistent objects in the cache
! 266: OCICacheRefresh - OCI refresh persistent objects in the cache
! 267: OCICacheUnpin - OCI unpin referenceable objects in the cache
! 268: OCICacheFree - OCI free all instances in the environment
! 269: OCICacheUnmark - OCI unmark all dirty referenceable objects in the cache
! 270:
! 271: PRIVATE FUNCTIONS
! 272: None
! 273:
! 274: EXAMPLES
! 275:
! 276: The following types will be used in the examples in this section:
! 277:
! 278: OBJECT TYPE professor
! 279: (
! 280: varchar2 name;
! 281: number department;
! 282: number num_of_students;
! 283: );
! 284:
! 285: OBJECT TYPE course
! 286: (
! 287: varchar2 name;
! 288: number grade;
! 289: );
! 290:
! 291: OBJECT TYPE student
! 292: (
! 293: vstring name;
! 294: number department;
! 295: ref advisor; /o advisor is a professor o/
! 296: collection courses;
! 297: );
! 298:
! 299: EXAMPLE 1
! 300:
! 301: Here is a set of examples to illustrate the usages of some of the
! 302: orio and oric functions.
! 303:
! 304: OCIenv *env; /o OCI environment handle o/
! 305: OCIError *err; /o OCI error handle o/
! 306: OCISvcCtx *svc; /o OCI service handle o/
! 307:
! 308: dvoid *stu_tbl; /o pointer to the student table o/
! 309: OCIType *stu_tdo; /o student type tdo o/
! 310:
! 311: OCIRef *stu2_ref; /o object reference to student object o/
! 312: student *stu1; /o pointer to the student object o/
! 313: student *stu2; /o pointer to the student object o/
! 314: professor *pro; /o pointer to the professor object o/
! 315:
! 316: /o Initialize the OCI environment handle, error handle and service
! 317: handle and login to the database o/
! 318: ...
! 319:
! 320: /o CREATE A PERSISTENT OBJECT o/
! 321:
! 322: /o get the table object of student o/
! 323: if (OCIObjectPinTable(env, err, svc, "ORACLEU", sizeof("ORACLEU"),
! 324: "STUDENT_TABLE", sizeof("STUDENT_TABLE"), (OCIRef *)0,
! 325: OCI_DURATION_NULL, &stu_tbl) != OCI_SUCCESS)
! 326: /o error handling code o/
! 327:
! 328: /o get type object of student o/
! 329: if (OCITypeByName(env, err, svc, "ORACLEU", sizeof("ORACLEU"),
! 330: "STUDENT", sizeof("STUDENT"), OCI_DURATION_NULL, OCI_TYPEGET_HEADER,
! 331: &stu_tdo) != OCI_SUCCESS)
! 332: /o error handling code o/
! 333:
! 334: /o create a persistent object 'mark' (of type student) o/
! 335: if (OCIObjectNew(env, err, svc, OCI_TYPECODE_ADT, stu_tdo, stu_tbl,
! 336: OCI_DURATION_TRANS, (ub1)FALSE, (dvoid **)&stu1) != OCI_SUCCESS)
! 337: /o error handling code o/
! 338:
! 339: /o RETRIEVE OBJECTS IN PERSISTENT STORES o/
! 340:
! 341: /o Use OCI to retrieve a reference to student object 'joe'.
! 342: o The retrieved reference is bound to the variable stu2_ref.
! 343: o/
! 344:
! 345: /o pin/retrieve the student "joe" by reference o/
! 346: if (OCIObjectPin(env, err, &stu2_ref, (OCIComplexObject *)0, OCI_PIN_ANY,
! 347: OCI_DURATION_TRANS, OCI_LOCK_X, &stu2) != OCI_SUCCESS)
! 348: /o error handling code o/
! 349:
! 350: /o pin/retrieve the advisor of student "joe" by reference o/
! 351: if (OCIObjectPin(env, err, &stu2->advisor, (OCIComplexObject *)0,
! 352: OCI_PIN_ANY, OCI_DURATION_TRANS, OCI_LOCK_X, &pro) != OCI_SUCCESS)
! 353: /o error handling code o/
! 354:
! 355: /o MODIFY OBJECTS o/
! 356:
! 357: /o initialize the newly created object "mark" o/
! 358: DISCARD OCIStringAssignText(env, err, "mark", sizeof("mark"),
! 359: &stu1->name);
! 360: department = 522;
! 361: DISCARD OCINumberFromInt(err, &department, sizeof(department),
! 362: OCI_NUMBER_UNSIGNED, &stu1->department);
! 363:
! 364: /o assign advisor to student "mark" o/
! 365: DISCARD OCIRefAssign(env, err, &stu2->advisor, &stu1->advisor);
! 366:
! 367: /o update student "joe". o/
! 368: department = 533;
! 369: DISCARD OCINumberFromInt(err, &department, sizeof(department),
! 370: OCI_NUMBER_UNSIGNED, &stu2->department);
! 371: DISCARD OCIObjectMarkUpdate(env, err, stu2);
! 372:
! 373: /o UNPIN OBJECTS AFTER FINSIHED PROCESSING THEM o/
! 374:
! 375: /o unpin the student object "mark" o/
! 376: if (OCIObjectUnpin(env, err, stu1) != OCI_SUCCESS)
! 377: /o error handling code o/
! 378:
! 379: /o unpin the student object "joe" o/
! 380: if (OCIObjectUnpin(env, err, stu2) != OCI_SUCCESS)
! 381: /o error handling code o/
! 382:
! 383: /o unpin the professor object o/
! 384: if (OCIObjectUnpin(env, err, pro) != OCI_SUCCESS)
! 385: /o error handling code o/
! 386:
! 387: /o unpin the type object o/
! 388: if (OCIObjectUnpin(env, err, stu_tdo) != OCI_SUCCESS)
! 389: /o error handling code o/
! 390:
! 391: /o unpin the table object o/
! 392: if (OCIObjectUnpin(env, err, stu_tbl) != OCI_SUCCESS)
! 393: /o error handling code o/
! 394:
! 395: /o FLUSH MODIFIED OBJECTS BACK TO PERSISTENT STORE o/
! 396:
! 397: if (OCICacheFlush(env, err, svc, (dvoid *)0, ((OCIRef*)(*)())0,
! 398: (OCIRef *)0) != OCI_SUCCESS)
! 399: /o error handling code o/
! 400:
! 401: /o commit transaction o/
! 402:
! 403: END OF EXAMPLE 1
! 404:
! 405: NOTES
! 406: This file has been subsetted to contain only the routines that will
! 407: be in the first release.
! 408:
! 409: MODIFIED
! 410: whe 09/01/99 - 976457:check __cplusplus for C++ code
! 411: smuralid 10/29/98 - add comments for OCIObjectMakeObjectRef
! 412: mkrishna 08/19/98 - change OCIGetPkTypeRef to OCIObjectGetPrimaryKeyTypeR
! 413: mkrishna 08/10/98 - add OCIObjectMakeObjectRef & OCIObjectGetPkTypeRef
! 414: rkasamse 06/22/98 - add comments for OCIDurationBegin(End)
! 415: pmitra 04/01/98 - OCIObjectLockNoWait added
! 416: pmitra 11/05/97 - [573769] OCIObjectArrayPin pos parameter cannot be NU
! 417: cxcheng 07/29/97 - fix compile for short names
! 418: skrishna 07/14/97 - add OCIObjectGetProperty
! 419: skrishna 04/30/97 - OCIObjectFlushRefresh: remove duplicate declaration
! 420: skrishna 04/24/97 - flag unsupported functions
! 421: sthakur 03/20/97 - modify flag argument to OCIObjectFree
! 422: skrishna 03/18/97 - fix ifdef for supporting ansi and k&r proto-types
! 423: cxcheng 02/19/97 - remove short names support
! 424: cxcheng 02/06/97 - take out short name support except with SLSHORTNAME
! 425: sthakur 12/20/96 - fix a typepo in OCIOBjectArrayPin
! 426: jboonleu 11/07/96 - modify comments
! 427: cxcheng 10/28/96 - more beautification changes
! 428: jboonleu 10/24/96 - add flag to OCIObjectFree
! 429: jboonleu 10/22/96 - change interface of OCICacheFlush
! 430: cxcheng 10/18/96 - rename OCIObjectPinArray to OCIObjectArrayPin
! 431: cxcheng 10/14/96 - more renaming of types
! 432: jboonleu 10/09/96 - add new interfaces
! 433: cxcheng 10/09/96 - more lint fixes
! 434: cxcheng 10/08/96 - more lint fixes
! 435: jboonleu 09/27/96 - fix lint errors
! 436: jboonleu 10/07/96 - beautify ori.h after conversion to long names
! 437: cxcheng 10/04/96 - replace short names with long names
! 438: sthakur 08/20/96 - add COR context to OCIObjectPin
! 439: mluong 07/17/96 - add back orioglk, oriogdr, oriogiv, and oriocur.
! 440: jboonleu 07/17/96 - rename refresh option to conherency option
! 441: jboonleu 07/16/96 - change comment for cache consistency
! 442: jwijaya 07/03/96 - add ANSI prototypes
! 443: jboonleu 06/12/96 - update comment
! 444: jboonleu 05/08/96 - change description of OCIDurationGetParent
! 445: jboonleu 05/01/96 - add OROOCOSFN
! 446: skrishna 04/08/96 - change ori*() to take OCIEnv* and OCIError* instead
! 447: of oroenv*
! 448: jboonleu 01/04/96 - interface change
! 449: jboonleu 10/24/95 - support of variable ref
! 450: jboonleu 02/15/95 - new interface
! 451: sthakur 01/05/95 - pass username to origrgc
! 452: skotsovo 12/07/94 - update example
! 453: jwijaya 11/15/94 - rename ORONSPTAB to ORONSPEXT
! 454: jwijaya 10/06/94 - add namespace to oriopnm()
! 455: jwijaya 10/02/94 - connection handle -> connection number
! 456: jboonleu 08/16/94 - fix lint errors
! 457: jboonleu 07/20/94 - change interface of OCICacheFlush
! 458: tanguyen 07/18/94 - add oriocpe, change OCIObjectCopy to oriocps
! 459: tcheng 07/15/94 - add init param maximum_sga_heap_size
! 460: tcheng 07/13/94 - change origini to get param string
! 461: jboonleu 07/05/94 - change sccs string from sccid to a comment
! 462: jboonleu 07/01/94 - Add examples to ORIO* and ORIC* functions
! 463: tanguyen 06/30/94 - Fix the ORI_ORACLE ifdef
! 464: skotsovo 06/27/94 - include all public functions in public functions
! 465: list at top of header file
! 466: tcheng 06/27/94 - modify comments according to new template
! 467: tanguyen 06/24/94 - fix comments for OCIObjectCopy
! 468: tcheng 06/24/94 - fix comments in origrgc()
! 469: tanguyen 06/21/94 - fix comments and format
! 470: tcheng 06/20/94 - commenting origini/trm/err/rgc/urg() functions
! 471: tanguyen 06/16/94 - fix descriptions of ref operations
! 472: tanguyen 06/16/94 - clarifies refs comparison
! 473: tanguyen 05/12/94 - adds more interfaces (OCIObjectMarkUpdate)
! 474: jwijaya 05/10/94 - fix examples, add origurg, change origcon to origrgc
! 475: tanguyen 05/03/94 - remove unnecessary 'type' argument from
! 476: 'OCIObjectCopy'
! 477: tanguyen 03/08/94 - clarifies comments
! 478: jwijaya 02/16/94 - more questions
! 479: jwijaya 02/11/94 - more comments
! 480: jwijaya 02/10/94 - identify optional arguments
! 481: jwijaya 02/07/94 - Creation
! 482: */
! 483:
! 484:
! 485: #ifndef ORATYPES
! 486: #include <oratypes.h>
! 487: #endif
! 488: #ifndef ORO_ORACLE
! 489: #include <oro.h>
! 490: #endif
! 491: #ifndef OCI_ORACLE
! 492: #include <oci.h>
! 493: #endif
! 494: #ifndef ORT_ORACLE
! 495: #include <ort.h>
! 496: #endif
! 497:
! 498: #ifndef ORI_ORACLE
! 499: #define ORI_ORACLE
! 500:
! 501: /*---------------------------------------------------------------------------*/
! 502: /* SHORT NAMES SUPPORT SECTION */
! 503: /*---------------------------------------------------------------------------*/
! 504:
! 505: #ifdef SLSHORTNAME
! 506:
! 507: /* the following are short names that are only supported on IBM mainframes
! 508: with the SLSHORTNAME defined.
! 509: With this all subsequent long names will actually be substituted with
! 510: the short names here */
! 511:
! 512: #define OCIDurationBegin origbgu
! 513: #define OCIDurationEnd origedu
! 514: #define OCIDurationGetParent origpdr
! 515: #define OCICacheFlushRefresh oricfrh
! 516: #define OCICacheUnpin oricunp
! 517: #define OCICacheFree oricfre
! 518: #define OCICacheUnmark oricumk
! 519: #define OCICacheGetObjects oricgpr
! 520: #define OCICacheRegister oricscb
! 521: #define OCIObjectUnpin oriounp
! 522: #define OCIObjectPinCountReset orioupz
! 523: #define OCIObjectLock oriolck
! 524: #define OCIObjectLockNoWait oriolnw
! 525: #define OCIObjectMarkUpdate orioupd
! 526: #define OCIObjectUnmark orioumk
! 527: #define OCIObjectUnmarkByRef orioumr
! 528: #define OCIObjectAlwaysLatest oriomkl
! 529: #define OCIObjectNotAlwaysLatest oriouml
! 530: #define OCIObjectMarkDeleteByRef oriordl
! 531: #define OCIObjectMarkDelete oriopdl
! 532: #define OCIObjectFlush oriofls
! 533: #define OCIObjectFlushRefresh oriofrh
! 534: #define OCIObjectCopy oriocpy
! 535: #define OCIObjectGetTypeRef oriogtr
! 536: #define OCIObjectGetObjectRef oriogor
! 537: #define OCIObjectGetInd oriogns
! 538: #define OCIObjectExists oriogex
! 539: #define OCIObjectGetProperty oriogpr
! 540: #define OCIObjectRefresh oriorfs
! 541: #define OCIObjectPinTable oriogtb
! 542: #define OCIObjectGetPrimaryKeyTypeRef oriogpf
! 543: #define OCIObjectMakeObjectRef oriomrf
! 544:
! 545: #define OCIObjectNew orionew
! 546: #define OCIObjectPin oriopin
! 547: #define OCIObjectFree oriofre
! 548: #define OCIObjectArrayPin orioapn
! 549: #define OCIObjectIsDirty oriodrt
! 550: #define OCIObjectIsDirtied oriodrd
! 551: #define OCIObjectIsLoaded orioldd
! 552: #define OCICacheFlush oricfls
! 553: #define OCICacheRefresh oricrfs
! 554:
! 555: #endif /* SLSHORTNAME */
! 556:
! 557: /*---------------------------------------------------------------------------*/
! 558: /* PUBLIC TYPES AND CONSTANTS */
! 559: /*---------------------------------------------------------------------------*/
! 560:
! 561: /* Also see oro.h. */
! 562:
! 563: /*---------------------------------------------------------------------------*/
! 564: /* PUBLIC FUNCTIONS */
! 565: /*---------------------------------------------------------------------------*/
! 566: /*---------------------------------------------------------------------------*/
! 567: /* OBJECT/INSTANCE OPERATIONS */
! 568: /*---------------------------------------------------------------------------*/
! 569:
! 570: /*--------------------------- OCIObjectNew ----------------------------------*/
! 571: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 572: sword OCIObjectNew(/*_ OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc,
! 573: OCITypeCode typecode, OCIType *tdo, dvoid *table,
! 574: OCIDuration duration, boolean value,
! 575: dvoid **instance _*/);
! 576: #else /* ANSI C */
! 577: sword OCIObjectNew( OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc,
! 578: OCITypeCode typecode, OCIType *tdo, dvoid *table,
! 579: OCIDuration duration, boolean value,
! 580: dvoid **instance );
! 581: #endif
! 582: /*
! 583: NAME: OCIObjectNew - OCI new (create) a standalone instance
! 584: PARAMETERS:
! 585: env (IN/OUT) - OCI environment handle initialized in object mode
! 586: err (IN/OUT) - error handle. If there is an error, it is
! 587: recorded in 'err' and this function returns OCI_ERROR.
! 588: The error recorded in 'err' can be retrieved by calling
! 589: OCIErrorGet().
! 590: svc (IN) - OCI service handle.
! 591: typecode (IN) - the typecode of the type of the instance.
! 592: tdo (IN, optional) - pointer to the type descriptor object. The
! 593: TDO describes the type of the instance that is to be
! 594: created. Refer to OCITypeByName() for obtaining a TDO.
! 595: The TDO is required for creating a named type (e.g. an
! 596: object or a collection).
! 597: table (IN, optional) - pointer to a table object which specifies a
! 598: table in the server. This parameter can be set to NULL
! 599: if no table is given. See the description below to find
! 600: out how the table object and the TDO are used together
! 601: to determine the kind of instances (persistent,
! 602: transient, value) to be created. Also see
! 603: OCIObjectPinTable() for retrieving a table object.
! 604: duration (IN) - this is an overloaded parameter. The use of this
! 605: parameter is based on the kind of the instance that is
! 606: to be created.
! 607: a) persistent object. This parameter specifies the
! 608: pin duration.
! 609: b) transient object. This parameter specififes the
! 610: allocation duration and pin duration.
! 611: c) value. This parameter specifies the allocation
! 612: duration.
! 613: value (IN) - specifies whether the created object is a value.
! 614: If TRUE, then a value is created. Otherwise, a
! 615: referenceable object is created. If the instance is
! 616: not an object, then this parameter is ignored.
! 617: instance (OUT) - address of the newly created instance
! 618:
! 619: REQUIRES:
! 620: - a valid OCI environment handle must be given.
! 621: DESCRIPTION:
! 622: This function creates a new instance of the type specified by the
! 623: typecode or the TDO. Based on the parameters 'typecode' (or 'tdo'),
! 624: 'value' and 'table', different kinds of instances can be created:
! 625:
! 626: The parameter 'table' is not NULL?
! 627:
! 628: yes no
! 629: ----------------------------------------------------------------
! 630: | object type (value=TRUE) | value | value |
! 631: ----------------------------------------------------------------
! 632: | object type (value=FALSE) | persistent obj | transient obj |
! 633: type ----------------------------------------------------------------
! 634: | built-in type | value | value |
! 635: ----------------------------------------------------------------
! 636: | collection type | value | value |
! 637: ----------------------------------------------------------------
! 638:
! 639: This function allocates the top level memory chunk of an OTS instance.
! 640: The attributes in the top level memory are initialized (e.g. an
! 641: attribute of varchar2 is initialized to a vstring of 0 length).
! 642:
! 643: If the instance is an object, the object is marked existed but is
! 644: atomically null.
! 645:
! 646: FOR PERSISTENT OBJECTS:
! 647: The object is marked dirty and existed. The allocation duration for
! 648: the object is session. The object is pinned and the pin duration is
! 649: specified by the given parameter 'duration'.
! 650:
! 651: FOR TRANSIENT OBJECTS:
! 652: The object is pinned. The allocation duration and the pin duration are
! 653: specified by the given parameter 'duration'.
! 654:
! 655: FOR VALUES:
! 656: The allocation duration is specified by the given parameter 'duration'.
! 657:
! 658: RETURNS:
! 659: if environment handle or error handle is null, return
! 660: OCI_INVALID_HANDLE.
! 661: if operation suceeds, return OCI_SUCCESS.
! 662: if operation fails, return OCI_ERROR.
! 663: */
! 664:
! 665: /*--------------------------- OCIObjectPin ----------------------------------*/
! 666: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 667: sword OCIObjectPin(/*_ OCIEnv *env, OCIError *err, OCIRef *object_ref,
! 668: OCIComplexObject *corhdl, OCIPinOpt pin_option,
! 669: OCIDuration pin_duration, OCILockOpt lock_option,
! 670: dvoid **object _*/);
! 671: #else /* ANSI C */
! 672: sword OCIObjectPin( OCIEnv *env, OCIError *err, OCIRef *object_ref,
! 673: OCIComplexObject *corhdl, OCIPinOpt pin_option,
! 674: OCIDuration pin_duration,
! 675: OCILockOpt lock_option, dvoid **object );
! 676: #endif
! 677: /*
! 678: NAME: OCIObjectPin - OCI pin a referenceable object
! 679: PARAMETERS:
! 680: env (IN/OUT) - OCI environment handle initialized in object mode
! 681: err (IN/OUT) - error handle. If there is an error, it is
! 682: recorded in 'err' and this function returns
! 683: OCI_ERROR. The error recorded in 'err' can be
! 684: retrieved by calling OCIErrorGet().
! 685: object_ref (IN) - the reference to the object.
! 686: corhdl (IN) - handle for complex object retrieval.
! 687: pin_option (IN) - See description below.
! 688: pin_duration (IN) - The duration of which the object is being accesed
! 689: by a client. The object is implicitly unpinned at
! 690: the end of the pin duration.
! 691: If OCI_DURATION_NULL is passed, there is no pin
! 692: promotion if the object is already loaded into
! 693: the cache. If the object is not yet loaded, then
! 694: the pin duration is set to OCI_DURATION_DEFAULT.
! 695: lock_option (IN) - lock option (e.g., exclusive). If a lock option
! 696: is specified, the object is locked in the server.
! 697: See 'oro.h' for description about lock option.
! 698: object (OUT) - the pointer to the pinned object.
! 699:
! 700: REQUIRES:
! 701: - a valid OCI environment handle must be given.
! 702: DESCRIPTION:
! 703:
! 704: This function pins a referenceable object instance given the object
! 705: reference. The process of pinning serves three purposes:
! 706:
! 707: 1) locate an object given its reference. This is done by the object
! 708: cache which keeps track of the objects in the object heap.
! 709:
! 710: 2) notify the object cache that an object is being in use. An object
! 711: can be pinned many times. A pinned object will remain in memory
! 712: until it is completely unpinned (see OCIObjectUnpin()).
! 713:
! 714: 3) notify the object cache that a persistent object is being in use
! 715: such that the persistent object cannot be aged out. Since a
! 716: persistent object can be loaded from the server whenever is needed,
! 717: the memory utilization can be increased if a completely unpinned
! 718: persistent object can be freed (aged out), even before the
! 719: allocation duration is expired.
! 720:
! 721: Also see OCIObjectUnpin() for more information about unpinning.
! 722:
! 723: FOR PERSISTENT OBJECTS:
! 724:
! 725: When pinning a persistent object, if it is not in the cache, the object
! 726: will be fetched from the persistent store. The allocation duration of
! 727: the object is session. If the object is already in the cache, it is
! 728: returned to the client. The object will be locked in the server if a
! 729: lock option is specified.
! 730:
! 731: This function will return an error for a non-existent object.
! 732:
! 733: A pin option is used to specify the copy of the object that is to be
! 734: retrieved:
! 735:
! 736: 1) If option is OCI_PIN_ANY (pin any), if the object is already
! 737: in the environment heap, return this object. Otherwise, the object
! 738: is retrieved from the database. This option is useful when the
! 739: client knows that he has the exclusive access to the data in a
! 740: session.
! 741:
! 742: 2) If option is OCI_PIN_LATEST (pin latest), if the object is
! 743: not cached, it is retrieved from the database. If the object is
! 744: cached, it is refreshed with the latest version. See
! 745: OCIObjectRefresh() for more information about refreshing.
! 746:
! 747: 3) If option is OCI_PIN_RECENT (pin recent), if the object is loaded
! 748: into the cache in the current transaction, the object is returned.
! 749: If the object is not loaded in the current transaction, the object
! 750: is refreshed from the server.
! 751:
! 752: FOR TRANSIENT OBJECTS:
! 753:
! 754: This function will return an error if the transient object has already
! 755: been freed. This function does not return an error if an exclusive
! 756: lock is specified in the lock option.
! 757:
! 758: RETURNS:
! 759: if environment handle or error handle is null, return
! 760: OCI_INVALID_HANDLE.
! 761: if operation suceeds, return OCI_SUCCESS.
! 762: if operation fails, return OCI_ERROR.
! 763: */
! 764:
! 765: /*------------------------------ OCIObjectUnpin -----------------------------*/
! 766: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 767: sword OCIObjectUnpin(/*_ OCIEnv *env, OCIError *err, dvoid *object _*/);
! 768: #else /* ANSI C */
! 769: sword OCIObjectUnpin( OCIEnv *env, OCIError *err, dvoid *object );
! 770: #endif
! 771: /*
! 772: NAME: OCIObjectUnpin - OCI unpin a referenceable object
! 773: PARAMETERS:
! 774: env (IN/OUT) - OCI environment handle initialized in object mode
! 775: err (IN/OUT) - error handle. If there is an error, it is
! 776: recorded in 'err' and this function returns OCI_ERROR.
! 777: The error recorded in 'err' can be retrieved by
! 778: calling OCIErrorGet().
! 779: object (IN) - pointer to an object
! 780: REQUIRES:
! 781: - a valid OCI environment handle must be given.
! 782: - The specified object must be pinned.
! 783: DESCRIPTION:
! 784: This function unpins an object. An object is completely unpinned when
! 785: 1) the object was unpinned N times after it has been pinned N times
! 786: (by calling OCIObjectPin()).
! 787: 2) it is the end of the pin duration
! 788: 3) the function OCIObjectPinCountReset() is called
! 789:
! 790: There is a pin count associated with each object which is incremented
! 791: whenever an object is pinned. When the pin count of the object is zero,
! 792: the object is said to be completely unpinned. An unpinned object can
! 793: be freed without error.
! 794:
! 795: FOR PERSISTENT OBJECTS:
! 796: When a persistent object is completely unpinned, it becomes a candidate
! 797: for aging. The memory of an object is freed when it is aged out. Aging
! 798: is used to maximize the utilization of memory. An dirty object cannot
! 799: be aged out unless it is flushed.
! 800:
! 801: FOR TRANSIENT OBJECTS:
! 802: The pin count of the object is decremented. A transient can be freed
! 803: only at the end of its allocation duration or when it is explicitly
! 804: deleted by calling OCIObjectFree().
! 805:
! 806: FOR VALUE:
! 807: This function will return an error for value.
! 808:
! 809: RETURNS:
! 810: if environment handle or error handle is null, return
! 811: OCI_INVALID_HANDLE.
! 812: if operation suceeds, return OCI_SUCCESS.
! 813: if operation fails, return OCI_ERROR.
! 814: */
! 815:
! 816: /*---------------------------- OCIObjectPinCountReset -----------------------*/
! 817: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 818: sword OCIObjectPinCountReset(/*_ OCIEnv *env,OCIError *err,dvoid *object _*/);
! 819: #else /* ANSI C */
! 820: sword OCIObjectPinCountReset( OCIEnv *env, OCIError *err, dvoid *object );
! 821: #endif
! 822: /*
! 823: NAME: OCIObjectPinCountReset - OCI resets the pin count of a referenceable
! 824: object
! 825: PARAMETERS:
! 826: env (IN/OUT) - OCI environment handle initialized in object mode
! 827: err (IN/OUT) - error handle. If there is an error, it is
! 828: recorded in 'err' and this function returns OCI_ERROR.
! 829: The error recorded in 'err' can be retrieved by
! 830: calling OCIErrorGet().
! 831: object (IN) - pointer to an object
! 832: REQUIRES:
! 833: - a valid OCI environment handle must be given.
! 834: - The specified object must be pinned.
! 835: DESCRIPTION:
! 836: This function completely unpins an object. When an object is
! 837: completely unpinned, it can be freed without error.
! 838:
! 839: FOR PERSISTENT OBJECTS:
! 840: When a persistent object is completely unpinned, it becomes a candidate
! 841: for aging. The memory of an object is freed when it is aged out. Aging
! 842: is used to maximize the utilization of memory. An dirty object cannot
! 843: be aged out unless it is flushed.
! 844:
! 845: FOR TRANSIENT OBJECTS:
! 846: The pin count of the object is decremented. A transient can be freed
! 847: only at the end of its allocation duration or when it is explicitly
! 848: freed by calling OCIObjectFree().
! 849:
! 850: FOR VALUE:
! 851: This function will return an error for value.
! 852:
! 853: RETURNS:
! 854: if environment handle or error handle is null, return
! 855: OCI_INVALID_HANDLE.
! 856: if operation suceeds, return OCI_SUCCESS.
! 857: if operation fails, return OCI_ERROR.
! 858: */
! 859:
! 860: /*--------------------------- OCIObjectLock ---------------------------------*/
! 861: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 862: sword OCIObjectLock(/*_ OCIEnv *env, OCIError *err, dvoid *object _*/);
! 863: #else /* ANSI C */
! 864: sword OCIObjectLock( OCIEnv *env, OCIError *err, dvoid *object );
! 865: #endif
! 866: /*
! 867: NAME: OCIObjectLock - OCI lock a persistent object
! 868: PARAMETERS:
! 869: env (IN/OUT) - OCI environment handle initialized in object mode
! 870: err (IN/OUT) - error handle. If there is an error, it is
! 871: recorded in 'err' and this function returns OCI_ERROR.
! 872: The error recorded in 'err' can be retrieved by
! 873: calling OCIErrorGet().
! 874: object (IN) - pointer to the persistent object
! 875: REQUIRES:
! 876: - a valid OCI environment handle must be given.
! 877: - The specified object must be pinned.
! 878: DESCRIPTION:
! 879: This function locks a persistent object at the server. Unlike
! 880: OCIObjectLockNoWait() this function waits if another user currently
! 881: holds a lock on the desired object. This function
! 882: returns an error if:
! 883: 1) the object is non-existent.
! 884:
! 885: This function will return an error for transient objects and values.
! 886: The lock of an object is released at the end of a transaction.
! 887:
! 888: RETURNS:
! 889: if environment handle or error handle is null, return
! 890: OCI_INVALID_HANDLE.
! 891: if operation suceeds, return OCI_SUCCESS.
! 892: if operation fails, return OCI_ERROR.
! 893: */
! 894:
! 895: /*------------------------ OCIObjectLockNoWait ------------------------------*/
! 896: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 897: sword OCIObjectLockNoWait(/*_ OCIEnv *env, OCIError *err, dvoid *object _*/);
! 898: #else /* ANSI C */
! 899: sword OCIObjectLockNoWait( OCIEnv *env, OCIError *err, dvoid *object );
! 900: #endif
! 901: /*
! 902: NAME: OCIObjectLockNoWait - OCI lock a persistent object, do not wait for
! 903: the lock, return error if lock not available
! 904: PARAMETERS:
! 905: env (IN/OUT) - OCI environment handle initialized in object mode
! 906: err (IN/OUT) - error handle. If there is an error, it is
! 907: recorded in 'err' and this function returns OCI_ERROR.
! 908: The error recorded in 'err' can be retrieved by
! 909: calling OCIErrorGet().
! 910: object (IN) - pointer to the persistent object
! 911: REQUIRES:
! 912: - a valid OCI environment handle must be given.
! 913: - The specified object must be pinned.
! 914: DESCRIPTION:
! 915: This function locks a persistent object at the server. Unlike
! 916: OCIObjectLock() this function will not wait if another user holds
! 917: the lock on the desired object. This function returns an error if:
! 918: 1) the object is non-existent.
! 919: 2) the object is currently locked by another user in which
! 920: case this function returns with an error.
! 921:
! 922: This function will return an error for transient objects and values.
! 923: The lock of an object is released at the end of a transaction.
! 924:
! 925: RETURNS:
! 926: if environment handle or error handle is null, return
! 927: OCI_INVALID_HANDLE.
! 928: if operation suceeds, return OCI_SUCCESS.
! 929: if operation fails, return OCI_ERROR.
! 930: */
! 931:
! 932: /*--------------------------- OCIObjectMarkUpdate ----------------------------*/
! 933: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 934: sword OCIObjectMarkUpdate(/*_ OCIEnv *env, OCIError *err, dvoid *object _*/);
! 935: #else /* ANSI C */
! 936: sword OCIObjectMarkUpdate( OCIEnv *env, OCIError *err, dvoid *object );
! 937: #endif
! 938: /*
! 939: NAME: OCIObjectMarkUpdate - OCI marks an object as updated
! 940: PARAMETERS:
! 941: env (IN/OUT) - OCI environment handle initialized in object mode
! 942: err (IN/OUT) - error handle. If there is an error, it is
! 943: recorded in 'err' and this function returns OCI_ERROR.
! 944: The error recorded in 'err' can be retrieved by
! 945: calling OCIErrorGet().
! 946: object (IN) - pointer to the persistent object
! 947: REQUIRES:
! 948: - a valid OCI environment handle must be given.
! 949: - The specified object must be pinned.
! 950: DESCRIPTION:
! 951: FOR PERSISTENT OBJECTS:
! 952: This function marks the specified persistent object as updated. The
! 953: persistent objects will be written to the server when the object cache
! 954: is flushed. The object is not locked or flushed by this function. It
! 955: is an error to update a deleted object.
! 956:
! 957: After an object is marked updated and flushed, this function must be
! 958: called again to mark the object as updated if it has been dirtied
! 959: after it is being flushed.
! 960:
! 961: FOR TRANSIENT OBJECTS:
! 962: This function marks the specified transient object as updated. The
! 963: transient objects will NOT be written to the server. It is an error
! 964: to update a deleted object.
! 965:
! 966: FOR VALUES:
! 967: It is an no-op for values.
! 968:
! 969: RETURNS:
! 970: if environment handle or error handle is null, return
! 971: OCI_INVALID_HANDLE.
! 972: if operation suceeds, return OCI_SUCCESS.
! 973: if operation fails, return OCI_ERROR.
! 974: */
! 975:
! 976: /*----------------------------- OCIObjectUnmark -----------------------------*/
! 977: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 978: sword OCIObjectUnmark(/*_ OCIEnv *env, OCIError *err, dvoid *object _*/);
! 979: #else /* ANSI C */
! 980: sword OCIObjectUnmark( OCIEnv *env, OCIError *err, dvoid *object );
! 981: #endif
! 982: /*
! 983: NAME: OCIObjectUnmark - OCI unmarks an object
! 984: PARAMETERS:
! 985: env (IN/OUT) - OCI environment handle initialized in object mode
! 986: err (IN/OUT) - error handle. If there is an error, it is
! 987: recorded in 'err' and this function returns OCI_ERROR.
! 988: The error recorded in 'err' can be retrieved by
! 989: calling OCIErrorGet().
! 990: object (IN) - pointer to the persistent object
! 991: REQUIRES:
! 992: - a valid OCI environment handle must be given.
! 993: - The specified object must be pinned.
! 994: DESCRIPTION:
! 995: FOR PERSISTENT OBJECTS AND TRANSIENT OBJECTS:
! 996: This function unmarks the specified persistent object as dirty. Changes
! 997: that are made to the object will not be written to the server. If the
! 998: object is marked locked, it remains marked locked. The changes that
! 999: have already made to the object will not be undone implicitly.
! 1000:
! 1001: FOR VALUES:
! 1002: It is an no-op for values.
! 1003:
! 1004: RETURNS:
! 1005: if environment handle or error handle is null, return
! 1006: OCI_INVALID_HANDLE.
! 1007: if operation suceeds, return OCI_SUCCESS.
! 1008: if operation fails, return OCI_ERROR.
! 1009: */
! 1010:
! 1011: /*----------------------------- OCIObjectUnmarkByRef ------------------------*/
! 1012: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1013: sword OCIObjectUnmarkByRef(/*_ OCIEnv *env, OCIError *err, OCIRef *ref _*/);
! 1014: #else /* ANSI C */
! 1015: sword OCIObjectUnmarkByRef( OCIEnv *env, OCIError *err, OCIRef *ref );
! 1016: #endif
! 1017: /*
! 1018: NAME: OCIObjectUnmarkByRef - OCI unmarks an object by Ref
! 1019: PARAMETERS:
! 1020: env (IN/OUT) - OCI environment handle initialized in object mode
! 1021: err (IN/OUT) - error handle. If there is an error, it is
! 1022: recorded in 'err' and this function returns OCI_ERROR.
! 1023: The error recorded in 'err' can be retrieved by
! 1024: calling OCIErrorGet().
! 1025: ref (IN) - reference of the object
! 1026: REQUIRES:
! 1027: - a valid OCI environment handle must be given.
! 1028: - The specified object must be pinned.
! 1029: DESCRIPTION:
! 1030: FOR PERSISTENT OBJECTS AND TRANSIENT OBJECTS:
! 1031: This function unmarks the specified persistent object as dirty. Changes
! 1032: that are made to the object will not be written to the server. If the
! 1033: object is marked locked, it remains marked locked. The changes that
! 1034: have already made to the object will not be undone implicitly.
! 1035:
! 1036: FOR VALUES:
! 1037: It is an no-op for values.
! 1038:
! 1039: RETURNS:
! 1040: if environment handle or error handle is null, return
! 1041: OCI_INVALID_HANDLE.
! 1042: if operation suceeds, return OCI_SUCCESS.
! 1043: if operation fails, return OCI_ERROR.
! 1044: */
! 1045:
! 1046: /*--------------------------- OCIObjectFree ---------------------------------*/
! 1047: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1048: sword OCIObjectFree(/*_ OCIEnv *env, OCIError *err, dvoid *instance,
! 1049: ub2 flags _*/);
! 1050: #else /* ANSI C */
! 1051: sword OCIObjectFree( OCIEnv *env, OCIError *err, dvoid *instance,
! 1052: ub2 flags );
! 1053: #endif
! 1054: /*
! 1055: NAME: OCIObjectFree - OCI free (and unpin) an standalone instance
! 1056: PARAMETERS:
! 1057: env (IN/OUT) - OCI environment handle initialized in object mode
! 1058: err (IN/OUT) - error handle. If there is an error, it is
! 1059: recorded in 'err' and this function returns
! 1060: OCI_ERROR. The error recorded in 'err' can be
! 1061: retrieved by calling OCIErrorGet().
! 1062: instance (IN) - pointer to a standalone instance.
! 1063: flags (IN) - If OCI_OBJECT_FREE_FORCE is set, free the object
! 1064: even if it is pinned or dirty.
! 1065: If OCI_OBJECT_FREE_NONULL is set, the null
! 1066: structure will not be freed.
! 1067: REQUIRES:
! 1068: - a valid OCI environment handle must be given.
! 1069: - The instance to be freed must be standalone.
! 1070: - If the instance is a referenceable object, the object must be pinned.
! 1071: DESCRIPTION:
! 1072: This function deallocates all the memory allocated for an OTS instance,
! 1073: including the null structure.
! 1074:
! 1075: FOR PERSISTENT OBJECTS:
! 1076: This function will return an error if the client is attempting to free
! 1077: a dirty persistent object that has not been flushed. The client should
! 1078: either flush the persistent object or set the parameter 'flag' to
! 1079: OCI_OBJECT_FREE_FORCE.
! 1080:
! 1081: This function will call OCIObjectUnpin() once to check if the object
! 1082: can be completely unpin. If it succeeds, the rest of the function will
! 1083: proceed to free the object. If it fails, then an error is returned
! 1084: unless the parameter 'flag' is set to OCI_OBJECT_FREE_FORCE.
! 1085:
! 1086: Freeing a persistent object in memory will not change the persistent
! 1087: state of that object at the server. For example, the object will
! 1088: remain locked after the object is freed.
! 1089:
! 1090: FOR TRANSIENT OBJECTS:
! 1091:
! 1092: This function will call OCIObjectUnpin() once to check if the object
! 1093: can be completely unpin. If it succeeds, the rest of the function will
! 1094: proceed to free the object. If it fails, then an error is returned
! 1095: unless the parameter 'flag' is set to OCI_OBJECT_FREE_FORCE.
! 1096:
! 1097: FOR VALUES:
! 1098: The memory of the object is freed immediately.
! 1099:
! 1100: RETURNS:
! 1101: if environment handle or error handle is null, return
! 1102: OCI_INVALID_HANDLE.
! 1103: if operation suceeds, return OCI_SUCCESS.
! 1104: if operation fails, return OCI_ERROR.
! 1105: */
! 1106:
! 1107: /*------------------------ OCIObjectMarkDeleteByRef --------------------------*/
! 1108: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1109: sword OCIObjectMarkDeleteByRef(/*_ OCIEnv *env,OCIError *err,
! 1110: OCIRef *object_ref _*/);
! 1111: #else /* ANSI C */
! 1112: sword OCIObjectMarkDeleteByRef( OCIEnv *env, OCIError *err,
! 1113: OCIRef *object_ref);
! 1114: #endif
! 1115: /*
! 1116: NAME: OCIObjectMarkDeleteByRef - OCI "delete" (and unpin) an object given
! 1117: a reference
! 1118: PARAMETERS:
! 1119: env (IN/OUT) - OCI environment handle initialized in object mode
! 1120: err (IN/OUT) - error handle. If there is an error, it is
! 1121: recorded in 'err' and this function returns
! 1122: OCI_ERROR. The error recorded in 'err' can be
! 1123: retrieved by calling OCIErrorGet().
! 1124: object_ref (IN) - ref of the object to be deleted
! 1125:
! 1126: REQUIRES:
! 1127: - a valid OCI environment handle must be given.
! 1128: DESCRIPTION:
! 1129: This function marks the object designated by 'object_ref' as deleted.
! 1130:
! 1131: FOR PERSISTENT OBJECTS:
! 1132: If the object is not loaded, then a temporary object is created and is
! 1133: marked deleted. Otherwise, the object is marked deleted.
! 1134:
! 1135: The object is deleted in the server when the object is flushed.
! 1136:
! 1137: FOR TRANSIENT OBJECTS:
! 1138: The object is marked deleted. The object is not freed until it is
! 1139: unpinned.
! 1140:
! 1141: RETURNS:
! 1142: if environment handle or error handle is null, return
! 1143: OCI_INVALID_HANDLE.
! 1144: if operation suceeds, return OCI_SUCCESS.
! 1145: if operation fails, return OCI_ERROR.
! 1146: */
! 1147:
! 1148: /*---------------------------- OCIObjectMarkDelete ---------------------------*/
! 1149: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1150: sword OCIObjectMarkDelete(/*_ OCIEnv *env, OCIError *err, dvoid *instance _*/);
! 1151: #else /* ANSI C */
! 1152: sword OCIObjectMarkDelete( OCIEnv *env, OCIError *err, dvoid *instance );
! 1153: #endif
! 1154: /*
! 1155: NAME: OCIObjectMarkDelete - OCI "delete" an instance given a Pointer
! 1156: PARAMETERS:
! 1157: env (IN/OUT) - OCI environment handle initialized in object mode
! 1158: err (IN/OUT) - error handle. If there is an error, it is
! 1159: recorded in 'err' and this function returns
! 1160: OCI_ERROR. The error recorded in 'err' can be
! 1161: retrieved by calling OCIErrorGet().
! 1162: instance (IN) - pointer to the instance
! 1163: REQUIRES:
! 1164: - a valid OCI environment handle must be given.
! 1165: - The instance must be standalone.
! 1166: - If the instance is a referenceable object, then it must be pinned.
! 1167: DESCRIPTION:
! 1168:
! 1169: FOR PERSISTENT OBJECTS:
! 1170: The object is marked deleted. The memory of the object is not freed.
! 1171: The object is deleted in the server when the object is flushed.
! 1172:
! 1173: FOR TRANSIENT OBJECTS:
! 1174: The object is marked deleted. The memory of the object is not freed.
! 1175:
! 1176: FOR VALUES:
! 1177: This function frees a value immediately.
! 1178:
! 1179: RETURNS:
! 1180: if environment handle or error handle is null, return
! 1181: OCI_INVALID_HANDLE.
! 1182: if operation suceeds, return OCI_SUCCESS.
! 1183: if operation fails, return OCI_ERROR.
! 1184: */
! 1185:
! 1186: /*---------------------------- OCIObjectFlush -------------------------------*/
! 1187: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1188: sword OCIObjectFlush(/*_ OCIEnv *env, OCIError *err, dvoid *object _*/);
! 1189: #else /* ANSI C */
! 1190: sword OCIObjectFlush( OCIEnv *env, OCIError *err, dvoid *object );
! 1191: #endif
! 1192: /*
! 1193: NAME: OCIObjectFlush - OCI flush a persistent object
! 1194: PARAMETERS:
! 1195: env (IN/OUT) - OCI environment handle initialized in object mode
! 1196: err (IN/OUT) - error handle. If there is an error, it is
! 1197: recorded in 'err' and this function returns
! 1198: OCI_ERROR. The error recorded in 'err' can be
! 1199: retrieved by calling OCIErrorGet().
! 1200: object (IN) - pointer to the persistent object
! 1201: REQUIRES:
! 1202: - a valid OCI environment handle must be given.
! 1203: - The specified object must be pinned.
! 1204: DESCRIPTION:
! 1205: This function flushes a modified persistent object to the server.
! 1206: An exclusive lock is obtained implicitly for the object when flushed.
! 1207:
! 1208: When the object is written to the server, triggers may be fired.
! 1209: Objects can be modified by the triggers at the server. To keep the
! 1210: objects in the object cache being coherent with the database, the
! 1211: clients can free or refresh the objects in the cache.
! 1212:
! 1213: This function will return an error for transient objects and values.
! 1214:
! 1215: RETURNS:
! 1216: if environment handle or error handle is null, return
! 1217: OCI_INVALID_HANDLE.
! 1218: if operation suceeds, return OCI_SUCCESS.
! 1219: if operation fails, return OCI_ERROR.
! 1220: */
! 1221:
! 1222: /*------------------------ OCIObjectRefresh ---------------------------------*/
! 1223: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1224: sword OCIObjectRefresh(/*_ OCIEnv *env, OCIError *err, dvoid *object _*/);
! 1225: #else /* ANSI C */
! 1226: sword OCIObjectRefresh( OCIEnv *env, OCIError *err, dvoid *object );
! 1227: #endif
! 1228: /*
! 1229: NAME: OCIObjectRefresh - OCI refresh a persistent object
! 1230: PARAMETERS:
! 1231: env (IN/OUT) - OCI environment handle initialized in object mode
! 1232: err (IN/OUT) - error handle. If there is an error, it is
! 1233: recorded in 'err' and this function returns
! 1234: OCI_ERROR. The error recorded in 'err' can be
! 1235: retrieved by calling OCIErrorGet().
! 1236: object (IN) - pointer to the persistent object
! 1237: REQUIRES:
! 1238: - a valid OCI environment handle must be given.
! 1239: - The specified object must be pinned.
! 1240: DESCRIPTION:
! 1241: This function refreshes an unmarked object with data retrieved from the
! 1242: latest snapshot in the server. An object should be refreshed when the
! 1243: objects in the cache are inconsistent with the objects at
! 1244: the server:
! 1245: 1) When an object is flushed to the server, triggers can be fired to
! 1246: modify more objects in the server. The same objects (modified by
! 1247: the triggers) in the object cache become obsolete.
! 1248: 2) When the user issues a SQL or executes a PL/SQL procedure to modify
! 1249: any object in the server, the same object in the cache becomes
! 1250: obsolete.
! 1251:
! 1252: The object that is refreshed will be 'replaced-in-place'. When an
! 1253: object is 'replaced-in-place', the top level memory of the object will
! 1254: be reused so that new data can be loaded into the same memory address.
! 1255: The top level memory of the null structre is also reused. Unlike the
! 1256: top level memory chunk, the secondary memory chunks may be resized and
! 1257: reallocated. The client should be careful when holding onto a pointer
! 1258: to the secondary memory chunk (e.g. assigning the address of a
! 1259: secondary memory to a local variable), since this pointer can become
! 1260: invalid after the object is refreshed.
! 1261:
! 1262: The object state will be modified as followed after being refreshed:
! 1263: - existent : set to appropriate value
! 1264: - pinned : unchanged
! 1265: - allocation duration : unchanged
! 1266: - pin duration : unchanged
! 1267:
! 1268: This function is an no-op for transient objects or values.
! 1269:
! 1270: RETURNS:
! 1271: if environment handle or error handle is null, return
! 1272: OCI_INVALID_HANDLE.
! 1273: if operation suceeds, return OCI_SUCCESS.
! 1274: if operation fails, return OCI_ERROR.
! 1275: */
! 1276:
! 1277: /*---------------------------- OCIObjectCopy --------------------------------*/
! 1278: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1279: sword OCIObjectCopy(/*_ OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc,
! 1280: dvoid *source, dvoid *null_source,
! 1281: dvoid *target, dvoid *null_target, OCIType *tdo,
! 1282: OCIDuration duration, ub1 option _*/);
! 1283: #else /* ANSI C */
! 1284: sword OCIObjectCopy( OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc,
! 1285: dvoid *source, dvoid *null_source,
! 1286: dvoid *target, dvoid *null_target, OCIType *tdo,
! 1287: OCIDuration duration, ub1 option );
! 1288: #endif
! 1289: /*
! 1290: NAME: OCIObjectCopy - OCI copy one instance to another
! 1291: PARAMETERS:
! 1292: env (IN/OUT) - OCI environment handle initialized in object mode
! 1293: err (IN/OUT) - error handle. If there is an error, it is
! 1294: recorded in 'err' and this function returns
! 1295: OCI_ERROR. The error recorded in 'err' can be
! 1296: retrieved by calling OCIErrorGet().
! 1297: svc (IN) - OCI service context handle
! 1298: source (IN) - pointer to the source instance
! 1299: null_source (IN) - pointer to the null structure of the source
! 1300: target (IN) - pointer to the target instance
! 1301: null_target (IN) - pointer to the null structure of the target
! 1302: tdo (IN) - the TDO for both source and target
! 1303: duration (IN) - allocation duration of the target memory
! 1304: option (IN) - specify the copy option:
! 1305: OROOCOSFN - Set Reference to Null. All references
! 1306: in the source will not be copied to the target. The
! 1307: references in the target are set to null.
! 1308: REQUIRES:
! 1309: - a valid OCI environment handle must be given.
! 1310: - If source or target is referenceable, it must be pinned.
! 1311: - The target or the containing instance of the target must be already
! 1312: be instantiated (e.g. created by OCIObjectNew()).
! 1313: - The source and target instances must be of the same type. If the
! 1314: source and target are located in a different databases, then the
! 1315: same type must exist in both databases.
! 1316: DESCRIPTION:
! 1317: This function copies the contents of the 'source' instance to the
! 1318: 'target' instance. This function performs a deep-copy such that the
! 1319: data that is copied/duplicated include:
! 1320: a) all the top level attributes (see the exceptions below)
! 1321: b) all the secondary memory (of the source) that is reachable from the
! 1322: top level attributes.
! 1323: c) the null structure of the instance
! 1324:
! 1325: Memory is allocated with the specified allocation duration.
! 1326:
! 1327: Certain data items are not copied:
! 1328: a) If the option OCI_OBJECTCOPY_NOREF is specified, then all references
! 1329: in the source are not copied. Instead, the references in the target
! 1330: are set to null.
! 1331: b) If the attribute is a LOB, then it is set to null.
! 1332:
! 1333: RETURNS:
! 1334: if environment handle or error handle is null, return
! 1335: OCI_INVALID_HANDLE.
! 1336: if operation suceeds, return OCI_SUCCESS.
! 1337: if operation fails, return OCI_ERROR.
! 1338: */
! 1339:
! 1340: /*---------------------------- OCIObjectGetTypeRef --------------------------*/
! 1341: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1342: sword OCIObjectGetTypeRef(/*_ OCIEnv *env, OCIError *err, dvoid *instance,
! 1343: OCIRef *type_ref _*/);
! 1344: #else /* ANSI C */
! 1345: sword OCIObjectGetTypeRef( OCIEnv *env, OCIError *err, dvoid *instance,
! 1346: OCIRef *type_ref );
! 1347: #endif
! 1348: /*
! 1349: NAME: OCIObjectGetTypeRef - get the type reference of a standalone object
! 1350: PARAMETERS:
! 1351: env (IN/OUT) - OCI environment handle initialized in object mode
! 1352: err (IN/OUT) - error handle. If there is an error, it is
! 1353: recorded in 'err' and this function returns
! 1354: OCI_ERROR. The error recorded in 'err' can be
! 1355: retrieved by calling OCIErrorGet().
! 1356: instance (IN) - pointer to an standalone instance
! 1357: type_ref (OUT) - reference to the type of the object. The reference
! 1358: must already be allocated.
! 1359: REQUIRES:
! 1360: - a valid OCI environment handle must be given.
! 1361: - The instance must be standalone.
! 1362: - If the object is referenceable, the specified object must be pinned.
! 1363: - The reference must already be allocated.
! 1364: DESCRIPTION:
! 1365: This function returns a reference to the TDO of a standalone instance.
! 1366: RETURNS:
! 1367: if environment handle or error handle is null, return
! 1368: OCI_INVALID_HANDLE.
! 1369: if operation suceeds, return OCI_SUCCESS.
! 1370: if operation fails, return OCI_ERROR.
! 1371: */
! 1372:
! 1373: /*--------------------------- OCIObjectGetObjectRef -------------------------*/
! 1374: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1375: sword OCIObjectGetObjectRef(/*_ OCIEnv *env, OCIError *err, dvoid *object,
! 1376: OCIRef *object_ref _*/);
! 1377: #else /* ANSI C */
! 1378: sword OCIObjectGetObjectRef( OCIEnv *env, OCIError *err, dvoid *object,
! 1379: OCIRef *object_ref );
! 1380: #endif
! 1381: /*
! 1382: NAME: OCIObjectGetObjectRef - OCI get the object reference of an
! 1383: referenceable object
! 1384: PARAMETERS:
! 1385: env (IN/OUT) - OCI environment handle initialized in object mode
! 1386: err (IN/OUT) - error handle. If there is an error, it is
! 1387: recorded in 'err' and this function returns
! 1388: OCI_ERROR. The error recorded in 'err' can be
! 1389: retrieved by calling OCIErrorGet().
! 1390: object (IN) - pointer to a persistent object
! 1391: object_ref (OUT) - reference of the given object. The reference must
! 1392: already be allocated.
! 1393: REQUIRES:
! 1394: - a valid OCI environment handle must be given.
! 1395: - The specified object must be pinned.
! 1396: - The reference must already be allocated.
! 1397: DESCRIPTION:
! 1398: This function returns a reference to the given object. It returns an
! 1399: error for values.
! 1400: RETURNS:
! 1401: if environment handle or error handle is null, return
! 1402: OCI_INVALID_HANDLE.
! 1403: if operation suceeds, return OCI_SUCCESS.
! 1404: if operation fails, return OCI_ERROR.
! 1405: */
! 1406:
! 1407: /*--------------------------- OCIObjectMakeObjectRef -----------------------*/
! 1408: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1409: sword OCIObjectMakeObjectRef(/*_ OCIEnv *env, OCIError *err,
! 1410: CONST OCISvcCtx *svc, dvoid *table,
! 1411: dvoid **attrlist, ub4 attrcnt,
! 1412: OCIRef *object_ref _*/);
! 1413: #else /* ANSI C */
! 1414: sword OCIObjectMakeObjectRef( OCIEnv *env, OCIError *err,
! 1415: CONST OCISvcCtx *svc, dvoid * table,
! 1416: dvoid **values, ub4 array_len,
! 1417: OCIRef *object_ref );
! 1418: #endif
! 1419: /*
! 1420: NAME: OCIObjectMakeObjectRef - OCI Create an object reference to a
! 1421: referenceable object.
! 1422: PARAMETERS:
! 1423: env (IN/OUT) - OCI environment handle initialized in object mode
! 1424: err (IN/OUT) - error handle. If there is an error, it is
! 1425: recorded in 'err' and this function returns
! 1426: OCI_ERROR. The error recorded in 'err' can be
! 1427: retrieved by calling OCIErrorGet().
! 1428: svc (IN) - the service context
! 1429: table (IN) - A pointer to the table object (must be pinned)
! 1430: attrlist (IN) - A list of values (OCI type values) from which
! 1431: the ref is to be created.
! 1432: attrcnt (IN) - The length of the attrlist array.
! 1433: object_ref (OUT) - reference of the given object. The reference must
! 1434: already be allocated.
! 1435: REQUIRES:
! 1436: - a valid OCI environment handle must be given.
! 1437: - The specified table object must be pinned.
! 1438: - The reference must already be allocated.
! 1439: DESCRIPTION:
! 1440: This function creates a reference given the values that make up the
! 1441: reference and also a pointer to the table object.
! 1442: Based on the table's OID property, whether it is a pk based OID or
! 1443: a system generated OID, the function creates a sys-generated REF or
! 1444: a pk based REF.
! 1445: In case of system generated REFs pass in a OCIRaw which is 16 bytes
! 1446: long contatining the sys generated OID.
! 1447: In case of PK refs pass in the OCI equivalent for numbers, chars etc..
! 1448: RETURNS:
! 1449: if environment handle or error handle is null, return
! 1450: OCI_INVALID_HANDLE.
! 1451: if operation suceeds, return OCI_SUCCESS.
! 1452: if operation fails, return OCI_ERROR.
! 1453: */
! 1454:
! 1455: /*--------------------------- OCIObjectGetPrimaryKeyTypeRef --------------- */
! 1456: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1457: sword OCIObjectGetPrimaryKeyTypeRef(/*_ OCIEnv *env, OCIError *err,
! 1458: CONST OCISvcCtx *svc, dvoid *table,
! 1459: OCIRef *type_ref _*/);
! 1460: #else /* ANSI C */
! 1461: sword OCIObjectGetPrimaryKeyTypeRef( OCIEnv *env, OCIError *err,
! 1462: CONST OCISvcCtx *svc, dvoid *table,
! 1463: OCIRef *type_ref );
! 1464: #endif
! 1465: /*
! 1466: NAME: OCIObjectGetPrimaryKeyTypeRef - OCI get the REF to the pk OID type
! 1467: PARAMETERS:
! 1468: env (IN/OUT) - OCI environment handle initialized in object mode
! 1469: err (IN/OUT) - error handle. If there is an error, it is
! 1470: recorded in 'err' and this function returns
! 1471: OCI_ERROR. The error recorded in 'err' can be
! 1472: retrieved by calling OCIErrorGet().
! 1473: svc (IN) - the service context
! 1474: table (IN) - pointer to the table object
! 1475: type_ref (OUT) - reference of the pk type. The reference must
! 1476: already be allocated.
! 1477: REQUIRES:
! 1478: - a valid OCI environment handle must be given.
! 1479: - The specified table object must be pinned.
! 1480: - The reference must already be allocated.
! 1481: DESCRIPTION:
! 1482: This function returns a reference to the pk type. It returns an
! 1483: error for values. If the table is not a Pk oid table/view, then
! 1484: it returns error.
! 1485: RETURNS:
! 1486: if environment handle or error handle is null, return
! 1487: OCI_INVALID_HANDLE.
! 1488: if operation suceeds, return OCI_SUCCESS.
! 1489: if operation fails, return OCI_ERROR.
! 1490: */
! 1491:
! 1492: /*-------------------------- OCIObjectGetInd --------------------------------*/
! 1493: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1494: sword OCIObjectGetInd(/*_ OCIEnv *env, OCIError *err, dvoid *instance,
! 1495: dvoid **null_struct _*/);
! 1496: #else /* ANSI C */
! 1497: sword OCIObjectGetInd( OCIEnv *env, OCIError *err, dvoid *instance,
! 1498: dvoid **null_struct );
! 1499: #endif
! 1500: /*
! 1501: NAME: OCIObjectGetInd - OCI get the null structure of a standalone object
! 1502: PARAMETERS:
! 1503: env (IN/OUT) - OCI environment handle initialized in object mode
! 1504: err (IN/OUT) - error handle. If there is an error, it is
! 1505: recorded in 'err' and this function returns
! 1506: OCI_ERROR. The error recorded in 'err' can be
! 1507: retrieved by calling OCIErrorGet().
! 1508: instance (IN) - pointer to the instance
! 1509: null_struct (OUT) - null structure
! 1510: REQUIRES:
! 1511: - a valid OCI environment handle must be given.
! 1512: - The object must be standalone.
! 1513: - If the object is referenceable, the specified object must be pinned.
! 1514: DESCRIPTION:
! 1515: This function returns the null structure of an instance. This function
! 1516: will allocate the top level memory of the null structure if it is not
! 1517: already allocated. If an null structure cannot be allocated for the
! 1518: instance, then an error is returned. This function only works for
! 1519: ADT or row type instance.
! 1520: RETURNS:
! 1521: if environment handle or error handle is null, return
! 1522: OCI_INVALID_HANDLE.
! 1523: if operation suceeds, return OCI_SUCCESS.
! 1524: if operation fails, return OCI_ERROR.
! 1525: */
! 1526:
! 1527: /*--------------------------- OCIObjectExists --------------------------------*/
! 1528: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1529: sword OCIObjectExists(/*_ OCIEnv *env, OCIError *err, dvoid *ins,
! 1530: boolean *exist _*/);
! 1531: #else /* ANSI C */
! 1532: sword OCIObjectExists(OCIEnv *env, OCIError *err, dvoid *ins, boolean *exist);
! 1533: #endif
! 1534: /*
! 1535: NAME: OCIObjectExist - OCI checks if the object exists
! 1536: PARAMETERS:
! 1537: env (IN/OUT) - OCI environment handle initialized in object mode
! 1538: err (IN/OUT) - error handle. If there is an error, it is
! 1539: recorded in 'err' and this function returns
! 1540: OCI_ERROR. The error recorded in 'err' can be
! 1541: retrieved by calling OCIErrorGet().
! 1542: ins (IN) - pointer to an instance
! 1543: exist (OUT) - return TRUE if the object exists
! 1544: REQUIRES:
! 1545: - a valid OCI environment handle must be given.
! 1546: - The object must be standalone.
! 1547: - if object is a referenceable, it must be pinned.
! 1548: DESCRIPTION:
! 1549: This function returns the existence of an instance. If the instance
! 1550: is a value, this function always returns TRUE.
! 1551: RETURNS:
! 1552: if environment handle or error handle is null, return
! 1553: OCI_INVALID_HANDLE.
! 1554: if operation suceeds, return OCI_SUCCESS.
! 1555: if operation fails, return OCI_ERROR.
! 1556: */
! 1557:
! 1558: /*--------------------------- OCIObjectGetProperty ---------------------------*/
! 1559: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1560: sword OCIObjectGetProperty(/*_ OCIEnv *envh, OCIError *errh,
! 1561: CONST dvoid *obj, OCIObjectPropId propertyId,
! 1562: dvoid *property, ub4 *size _*/);
! 1563: #else /* ANSI C */
! 1564: sword OCIObjectGetProperty(OCIEnv *envh, OCIError *errh, CONST dvoid *obj,
! 1565: OCIObjectPropId propertyId,
! 1566: dvoid *property, ub4 *size );
! 1567: #endif
! 1568: /*
! 1569: NAME: OCIObjectGetProperty - OCIObject Get Property of given object
! 1570: PARAMETERS:
! 1571: env (IN/OUT) - OCI environment handle initialized in object mode
! 1572: err (IN/OUT) - error handle. If there is an error, it is
! 1573: recorded in 'err' and this function returns
! 1574: OCI_ERROR. The error recorded in 'err' can be
! 1575: retrieved by calling OCIErrorGet().
! 1576: obj (IN) - object whose property is returned
! 1577: propertyId (IN) - id which identifies the desired property
! 1578: property (OUT) - buffer into which the desired property is
! 1579: copied
! 1580: size (IN/OUT) - on input specifies the size of the property buffer
! 1581: passed by caller, on output will contain the
! 1582: size in bytes of the property returned.
! 1583: This parameter is required for string type
! 1584: properties only (e.g OCI_OBJECTPROP_SCHEMA,
! 1585: OCI_OBJECTPROP_TABLE). For non-string
! 1586: properties this parameter is ignored since
! 1587: the size is fixed.
! 1588: DESCRIPTION:
! 1589: This function returns the specified property of the object.
! 1590: The desired property is identified by 'propertyId'. The property
! 1591: value is copied into 'property' and for string typed properties
! 1592: the string size is returned via 'size'.
! 1593:
! 1594: Objects are classified as persistent, transient and value
! 1595: depending upon the lifetime and referenceability of the object.
! 1596: Some of the properties are applicable only to persistent
! 1597: objects and some others only apply to persistent and
! 1598: transient objects. An error is returned if the user tries to
! 1599: get a property which in not applicable to the given object.
! 1600: To avoid such an error, the user should first check whether
! 1601: the object is persistent or transient or value
! 1602: (OCI_OBJECTPROP_LIFETIME property) and then appropriately
! 1603: query for other properties.
! 1604:
! 1605: The different property ids and the corresponding type of
! 1606: 'property' argument is given below.
! 1607:
! 1608: OCI_OBJECTPROP_LIFETIME
! 1609: This identifies whether the given object is a persistent
! 1610: object (OCI_OBJECT_PERSISTENT) or a
! 1611: transient object (OCI_OBJECT_TRANSIENT) or a
! 1612: value instance (OCI_OBJECT_VALUE).
! 1613: 'property' argument must be a pointer to a variable of
! 1614: type OCIObjectLifetime.
! 1615:
! 1616: OCI_OBJECTPROP_SCHEMA
! 1617: This returns the schema name of the table in which the
! 1618: object exists. An error is returned if the given object
! 1619: points to a transient instance or a value. If the input
! 1620: buffer is not big enough to hold the schema name an error
! 1621: is returned, the error message will communicate the
! 1622: required size. Upon success, the size of the returned
! 1623: schema name in bytes is returned via 'size'.
! 1624: 'property' argument must be an array of type text and 'size'
! 1625: should be set to size of array in bytes by the caller.
! 1626:
! 1627: OCI_OBJECTPROP_TABLE
! 1628: This returns the table name in which the object exists. An
! 1629: error is returned if the given object points to a
! 1630: transient instance or a value. If the input buffer is not
! 1631: big enough to hold the table name an error is returned,
! 1632: the error message will communicate the required size. Upon
! 1633: success, the size of the returned table name in bytes is
! 1634: returned via 'size'. 'property' argument must be an array
! 1635: of type text and 'size' should be set to size of array in
! 1636: bytes by the caller.
! 1637:
! 1638: OCI_OBJECTPROP_PIN_DURATION
! 1639: This returns the pin duration of the object.
! 1640: An error is returned if the given object points to a value
! 1641: instance. Valid pin durations are: OCI_DURATION_SESSION and
! 1642: OCI_DURATION_TRANS.
! 1643: 'property' argument must be a pointer to a variable of type
! 1644: OCIDuration.
! 1645:
! 1646: OCI_OBJECTPROP_ALLOC_DURATION
! 1647: This returns the allocation duration of the object.
! 1648: Valid allocation durations are: OCI_DURATION_SESSION and
! 1649: OCI_DURATION_TRANS.
! 1650: 'property' argument must be a pointer to a variable of type
! 1651: OCIDuration.
! 1652:
! 1653: OCI_OBJECTPROP_LOCK
! 1654: This returns the lock status of the
! 1655: object. The possible lock status is enumerated by OCILockOpt.
! 1656: An error is returned if the given object points to a transient
! 1657: or value instance.
! 1658: 'property' argument must be a pointer to a variable of
! 1659: type OCILockOpt.
! 1660: Note, the lock status of an object can also be retrieved by
! 1661: calling OCIObjectIsLocked().
! 1662:
! 1663: OCI_OBJECTPROP_MARKSTATUS
! 1664: This returns the status flag which indicates whether the
! 1665: object is a new object, updated object and/or deleted object.
! 1666: The following macros can be used to test the mark status
! 1667: flag:
! 1668:
! 1669: OCI_OBJECT_IS_UPDATED(flag)
! 1670: OCI_OBJECT_IS_DELETED(flag)
! 1671: OCI_OBJECT_IS_NEW(flag)
! 1672: OCI_OBJECT_IS_DIRTY(flag)
! 1673:
! 1674: An object is dirty if it is a new object or marked deleted or
! 1675: marked updated.
! 1676: An error is returned if the given object points to a transient
! 1677: or value instance. 'property' argument must be of type
! 1678: OCIObjectMarkStatus.
! 1679:
! 1680: OCI_OBJECTPROP_VIEW
! 1681: This identifies whether the specified object is a view object
! 1682: or not. If property value returned is TRUE, it indicates the
! 1683: object is a view otherwise it is not.
! 1684: 'property' argument must be of type boolean.
! 1685:
! 1686: RETURNS:
! 1687: if environment handle or error handle is null, return
! 1688: OCI_INVALID_HANDLE.
! 1689: if operation suceeds, return OCI_SUCCESS.
! 1690: if operation fails, return OCI_ERROR. Possible errors are TBD
! 1691: */
! 1692:
! 1693: /*---------------------------- OCIObjectIsLocked --------------------------*/
! 1694: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1695: sword OCIObjectIsLocked(/*_ OCIEnv *env, OCIError *err, dvoid *ins,
! 1696: boolean *lock _*/);
! 1697: #else /* ANSI C */
! 1698: sword OCIObjectIsLocked( OCIEnv *env, OCIError *err, dvoid *ins,
! 1699: boolean *lock);
! 1700: #endif
! 1701: /*
! 1702: NAME: OCIObjectIsLocked - OCI get the lock status of a standalone object
! 1703: PARAMETERS:
! 1704: env (IN/OUT) - OCI environment handle initialized in object mode
! 1705: err (IN/OUT) - error handle. If there is an error, it is
! 1706: recorded in 'err' and this function returns
! 1707: OCI_ERROR. The error recorded in 'err' can be
! 1708: retrieved by calling OCIErrorGet().
! 1709: ins (IN) - pointer to an instance
! 1710: lock (OUT) - return value for the lock status.
! 1711: REQUIRES:
! 1712: - a valid OCI environment handle must be given.
! 1713: - The instance must be standalone.
! 1714: - If the object is referenceable, the specified object must be pinned.
! 1715: DESCRIPTION:
! 1716: This function returns the lock status of an instance. If the instance
! 1717: is a value, this function always returns FALSE.
! 1718: RETURNS:
! 1719: if environment handle or error handle is null, return
! 1720: OCI_INVALID_HANDLE.
! 1721: if operation suceeds, return OCI_SUCCESS.
! 1722: if operation fails, return OCI_ERROR.
! 1723: */
! 1724:
! 1725: /*--------------------------- OCIObjectIsDirty ------------------------------*/
! 1726: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1727: sword OCIObjectIsDirty(/*_ OCIEnv *env, OCIError *err, dvoid *ins,
! 1728: boolean *dirty _*/);
! 1729: #else /* ANSI C */
! 1730: sword OCIObjectIsDirty( OCIEnv *env, OCIError *err, dvoid *ins,
! 1731: boolean *dirty);
! 1732: #endif
! 1733: /*
! 1734: NAME: OCIObjectIsDirty - OCI get the dirty status of a standalone object
! 1735: PARAMETERS:
! 1736: env (IN/OUT) - OCI environment handle initialized in object mode
! 1737: err (IN/OUT) - error handle. If there is an error, it is
! 1738: recorded in 'err' and this function returns
! 1739: OCI_ERROR. The error recorded in 'err' can be
! 1740: retrieved by calling OCIErrorGet().
! 1741: ins (IN) - pointer to an instance
! 1742: dirty (OUT) - return value for the dirty status.
! 1743: REQUIRES:
! 1744: - a valid OCI environment handle must be given.
! 1745: - The instance must be standalone.
! 1746: - if instance is an object, the instance must be pinned.
! 1747: DESCRIPTION:
! 1748: This function returns the dirty status of an instance. If the instance
! 1749: is a value, this function always returns FALSE.
! 1750: RETURNS:
! 1751: if environment handle or error handle is null, return
! 1752: OCI_INVALID_HANDLE.
! 1753: if operation suceeds, return OCI_SUCCESS.
! 1754: if operation fails, return OCI_ERROR.
! 1755: */
! 1756:
! 1757: /*--------------------------- OCIObjectPinTable -----------------------------*/
! 1758: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1759: sword OCIObjectPinTable(/*_ OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc,
! 1760: CONST text *schema_name,
! 1761: ub4 s_n_length, CONST text *object_name, ub4 o_n_length,
! 1762: CONST OCIRef *scope_obj_ref, OCIDuration pin_duration,
! 1763: dvoid** object _*/);
! 1764: #else /* ANSI C */
! 1765: sword OCIObjectPinTable( OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc,
! 1766: CONST text *schema_name,
! 1767: ub4 s_n_length, CONST text *object_name, ub4 o_n_length,
! 1768: CONST OCIRef *scope_obj_ref, OCIDuration pin_duration,
! 1769: dvoid** object );
! 1770: #endif
! 1771: /*
! 1772: NAME: OCIObjectPinTable - OCI get table object
! 1773: PARAMETERS:
! 1774: env (IN/OUT) - OCI environment handle initialized in object mode
! 1775: err (IN/OUT) - error handle. If there is an error, it is
! 1776: recorded in 'err' and this function returns
! 1777: OCI_ERROR. The error recorded in 'err' can be
! 1778: retrieved by calling OCIErrorGet().
! 1779: svc (IN) - OCI service context handle
! 1780: schema_name (IN, optional) - schema name of the table
! 1781: s_n_length (IN, optional) - length of the schema name
! 1782: object_name (IN) - name of the table
! 1783: o_n_length (IN) - length of the table name
! 1784: scope_obj_ref (IN, optional) - reference of the scoping object
! 1785: pin_duration (IN) - pin duration. See description in OCIObjectPin().
! 1786: object (OUT) - the pinned table object
! 1787: REQUIRES:
! 1788: - a valid OCI environment handle must be given.
! 1789: DESCRIPTION:
! 1790: This function pin a table object with the specified pin duration.
! 1791: The client can unpin the object by calling OCIObjectUnpin(). See
! 1792: OCIObjectPin() and OCIObjectUnpin() for more information about pinning
! 1793: and unpinning.
! 1794: RETURNS:
! 1795: if environment handle or error handle is null, return
! 1796: OCI_INVALID_HANDLE.
! 1797: if operation suceeds, return OCI_SUCCESS.
! 1798: if operation fails, return OCI_ERROR.
! 1799: */
! 1800:
! 1801: /*------------------------- OCIObjectArrayPin -------------------------------*/
! 1802: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1803: sword OCIObjectArrayPin(/*_ OCIEnv *env, OCIError *err, OCIRef **ref_array,
! 1804: ub4 array_size, OCIComplexObject **cor_array,
! 1805: ub4 cor_array_size, OCIPinOpt pin_option,
! 1806: OCIDuration pin_duration, OCILockOpt lock,
! 1807: dvoid **obj_array, ub4 *pos _*/);
! 1808: #else /* ANSI C */
! 1809: sword OCIObjectArrayPin(OCIEnv *env, OCIError *err, OCIRef **ref_array,
! 1810: ub4 array_size, OCIComplexObject **cor_array,
! 1811: ub4 cor_array_size, OCIPinOpt pin_option,
! 1812: OCIDuration pin_duration, OCILockOpt lock,
! 1813: dvoid **obj_array, ub4 *pos );
! 1814: #endif
! 1815: /*
! 1816: NAME: OCIObjectArrayPin - ORIO array pin
! 1817: PARAMETERS:
! 1818: env (IN/OUT) - OCI environment handle initialized in object mode
! 1819: err (IN/OUT) - error handle. If there is an error, it is
! 1820: recorded in 'err' and this function returns
! 1821: OCI_ERROR. The error recorded in 'err' can be
! 1822: retrieved by calling OCIErrorGet().
! 1823: ref_array (IN) - array of references to be pinned
! 1824: array_size (IN) - number of elements in the array of references
! 1825: pin_option (IN) - pin option. See OCIObjectPin().
! 1826: pin_duration (IN) - pin duration. See OCIObjectPin().
! 1827: lock_option (IN) - lock option. See OCIObjectPin().
! 1828: obj_array (OUT) - If this argument is not NULL, the pinned objects
! 1829: will be returned in the array. The user must
! 1830: allocate this array with element type being
! 1831: 'dvoid *'. The size of this array is identical to
! 1832: 'array'.
! 1833: pos (OUT) - If there is an error, this argument will contain
! 1834: the element that is causing the error. Note that
! 1835: this argument is set to 1 for the first element in
! 1836: the ref_array.
! 1837: REQUIRE:
! 1838: - a valid OCI environment handle must be given.
! 1839: - If 'obj_array' is not NULL, then it must already be allocated and
! 1840: the size of 'obj_array' is 'array_size'.
! 1841: DESCRIPTION:
! 1842: This function pin an array of references. All the pinned objects are
! 1843: retrieved from the database in one network roundtrip. If the user
! 1844: specifies an output array ('obj_array'), then the address of the
! 1845: pinned objects will be assigned to the elements in the array. See
! 1846: OCIObjectPin() for more information about pinning.
! 1847: RETURNS:
! 1848: if environment handle or error handle is null, return
! 1849: OCI_INVALID_HANDLE.
! 1850: if operation suceeds, return OCI_SUCCESS.
! 1851: if operation fails, return OCI_ERROR.
! 1852: */
! 1853:
! 1854: /*---------------------------------------------------------------------------*/
! 1855: /* HEAP/CACHE OPERATIONS */
! 1856: /*---------------------------------------------------------------------------*/
! 1857:
! 1858: /*--------------------------- OCICacheFlush ---------------------------------*/
! 1859: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1860: sword OCICacheFlush(/*_ OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc,
! 1861: dvoid *context, OCIRef *(*get)(dvoid *context, ub1 *last),
! 1862: OCIRef **ref _*/);
! 1863: #else /* ANSI C */
! 1864: sword OCICacheFlush( OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc,
! 1865: dvoid *context, OCIRef *(*get)(dvoid *context, ub1 *last),
! 1866: OCIRef **ref );
! 1867: #endif
! 1868: /*
! 1869: NAME: OCICacheFlush - OCI flush persistent objects
! 1870: PARAMETERS:
! 1871: env (IN/OUT) - OCI environment handle initialized in object mode
! 1872: err (IN/OUT) - error handle. If there is an error, it is
! 1873: recorded in 'err' and this function returns
! 1874: OCI_ERROR. The error recorded in 'err' can be
! 1875: retrieved by calling OCIErrorGet().
! 1876: svc (IN) [optional] - OCI service context. If null pointer is
! 1877: specified, then the dirty objects in all connections
! 1878: will be flushed.
! 1879: context (IN) [optional] - specifies an user context that is an
! 1880: argument to the client callback function 'get'. This
! 1881: parameter is set to NULL if there is no user context.
! 1882: get (IN) [optional] - an client-defined function which acts an
! 1883: iterator to retrieve a batch of dirty objects that need
! 1884: to be flushed. If the function is not NULL, this function
! 1885: will be called to get a reference of a dirty object.
! 1886: This is repeated until a null reference is returned by
! 1887: the client function or the parameter 'last' is set to
! 1888: TRUE. The parameter 'context' is passed to get()
! 1889: for each invocation of the client function. This
! 1890: parameter should be NULL if user callback is not given.
! 1891: If the object that is returned by the client function is
! 1892: not a dirtied persistent object, the object is ignored.
! 1893: All the objects that are returned from the client
! 1894: function must be from newed or pinned the same service
! 1895: context, otherwise, an error is signalled. Note that the
! 1896: returned objects are flushed in the order in which they
! 1897: are marked dirty.
! 1898: ref (OUT) [optional] - if there is an error in flushing the
! 1899: objects, (*ref) will point to the object that
! 1900: is causing the error. If 'ref' is NULL, then the object
! 1901: will not be returned. If '*ref' is NULL, then a
! 1902: reference will be allocated and set to point to the
! 1903: object. If '*ref' is not NULL, then the reference of
! 1904: the object is copied into the given space. If the
! 1905: error is not caused by any of the dirtied object,
! 1906: the given ref is initalized to be a NULL reference
! 1907: (OCIRefIsNull(*ref) is TRUE).
! 1908: REQUIRES:
! 1909: - a valid OCI environment handle must be given.
! 1910: DESCRIPTION:
! 1911: This function flushes the modified persistent objects from the
! 1912: environment heap to the server. The objects are flushed in the order
! 1913: that they are marked updated or deleted.
! 1914:
! 1915: See OCIObjectFlush() for more information about flushing.
! 1916:
! 1917: RETURNS:
! 1918: if environment handle or error handle is null, return
! 1919: OCI_INVALID_HANDLE.
! 1920: if operation suceeds, return OCI_SUCCESS.
! 1921: if operation fails, return OCI_ERROR.
! 1922: */
! 1923:
! 1924: /*--------------------------- OCICacheRefresh -------------------------------*/
! 1925: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1926: sword OCICacheRefresh(/*_ OCIEnv *env,OCIError *err,CONST OCISvcCtx *svc,
! 1927: OCIRefreshOpt option, dvoid *context,
! 1928: OCIRef *(*get)(dvoid *context), OCIRef **ref _*/);
! 1929: #else /* ANSI C */
! 1930: sword OCICacheRefresh(OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc,
! 1931: OCIRefreshOpt option, dvoid *context,
! 1932: OCIRef *(*get)(dvoid *context), OCIRef **ref);
! 1933: #endif
! 1934: /*
! 1935: NAME: OCICacheRefresh - OCI ReFreSh persistent objects
! 1936: PARAMETERS:
! 1937: env (IN/OUT) - OCI environment handle initialized in object mode
! 1938: err (IN/OUT) - error handle. If there is an error, it is
! 1939: recorded in 'err' and this function returns
! 1940: OCI_ERROR. The error recorded in 'err' can be
! 1941: retrieved by calling OCIErrorGet().
! 1942: svc (IN) [optional] - OCI service context. If null pointer is
! 1943: specified, then the persistent objects in all connections
! 1944: will be refreshed.
! 1945: option (IN) [optional] - if OCI_REFRESH_LOAD is specified, all
! 1946: objects that is loaded within the transaction are
! 1947: refreshed. If the option is OCI_REFERSH_LOAD and the
! 1948: parameter 'get' is not NULL, this function will ignore
! 1949: the parameter.
! 1950: context (IN) [optional] - specifies an user context that is an
! 1951: argument to the client callback function 'get'. This
! 1952: parameter is set to NULL if there is no user context.
! 1953: get (IN) [optional] - an client-defined function which acts an
! 1954: iterator to retrieve a batch of objects that need to be
! 1955: refreshed. If the function is not NULL, this function
! 1956: will be called to get a reference of an object. If
! 1957: the reference is not NULL, then the object will be
! 1958: refreshed. These steps are repeated until a null
! 1959: reference is returned by this function. The parameter
! 1960: 'context' is passed to get() for each invocation of the
! 1961: client function. This parameter should be NULL if user
! 1962: callback is not given.
! 1963: ref (OUT) [optional] - if there is an error in refreshing the
! 1964: objects, (*ref) will point to the object that
! 1965: is causing the error. If 'ref' is NULL, then the object
! 1966: will not be returned. If '*ref' is NULL, then a
! 1967: reference will be allocated and set to point to the
! 1968: object. If '*ref' is not NULL, then the reference of
! 1969: the object is copied into the given space. If the
! 1970: error is not caused by any of the object,
! 1971: the given ref is initalized to be a NULL reference
! 1972: (OCIRefIsNull(*ref) is TRUE).
! 1973: REQUIRES:
! 1974: - a valid OCI environment handle must be given.
! 1975: DESCRIPTION:
! 1976: This function refreshes all pinned persistent objects. All unpinned
! 1977: persistent objects are freed. See OCIObjectRefresh() for more
! 1978: information about refreshing.
! 1979: RETURNS:
! 1980: if environment handle or error handle is null, return
! 1981: OCI_INVALID_HANDLE.
! 1982: if operation suceeds, return OCI_SUCCESS.
! 1983: if operation fails, return OCI_ERROR.
! 1984: */
! 1985:
! 1986: /*---------------------------- OCICacheUnpin --------------------------------*/
! 1987: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 1988: sword OCICacheUnpin(/*_ OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc _*/);
! 1989: #else /* ANSI C */
! 1990: sword OCICacheUnpin( OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc );
! 1991: #endif
! 1992: /*
! 1993: NAME: OCICacheUnpin - OCI UNPin objects
! 1994: PARAMETERS:
! 1995: env (IN/OUT) - OCI environment handle initialized in object mode
! 1996: err (IN/OUT) - error handle. If there is an error, it is
! 1997: recorded in 'err' and this function returns
! 1998: OCI_ERROR. The error recorded in 'err' can be
! 1999: retrieved by calling OCIErrorGet().
! 2000: svc (IN) [optional] - OCI service context. If null pointer is
! 2001: specified, then the objects in all connections
! 2002: will be unpinned.
! 2003: REQUIRES:
! 2004: - a valid OCI environment handle must be given.
! 2005: DESCRIPTION:
! 2006: If a connection is specified, this function completely unpins the
! 2007: persistent objects in that connection. Otherwise, all persistent
! 2008: objects in the heap are completely unpinned. All transient objects in
! 2009: the heap are also completely unpinned. See OCIObjectUnpin() for more
! 2010: information about unpinning.
! 2011: RETURNS:
! 2012: if environment handle or error handle is null, return
! 2013: OCI_INVALID_HANDLE.
! 2014: if operation suceeds, return OCI_SUCCESS.
! 2015: if operation fails, return OCI_ERROR.
! 2016: */
! 2017:
! 2018: /*----------------------------- OCICacheFree --------------------------------*/
! 2019: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2020: sword OCICacheFree(/*_ OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc _*/);
! 2021: #else /* ANSI C */
! 2022: sword OCICacheFree( OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc );
! 2023: #endif
! 2024: /*
! 2025: NAME: OCICacheFree - OCI FREe instances
! 2026: PARAMETERS:
! 2027: env (IN/OUT) - OCI environment handle initialized in object mode
! 2028: err (IN/OUT) - error handle. If there is an error, it is
! 2029: recorded in 'err' and this function returns
! 2030: OCI_ERROR. The error recorded in 'err' can be
! 2031: retrieved by calling OCIErrorGet().
! 2032: svc (IN) [optional] - OCI service context. If null pointer is
! 2033: specified, then the objects in all connections
! 2034: will be freed.
! 2035: REQUIRES:
! 2036: - a valid OCI environment handle must be given.
! 2037: DESCRIPTION:
! 2038: If a connection is specified, this function frees the persistent
! 2039: objects, transient objects and values allocated for that connection.
! 2040: Otherwise, all persistent objects, transient objects and values in the
! 2041: heap are freed. Objects are freed regardless of their pin count. See
! 2042: OCIObjectFree() for more information about freeing an instance.
! 2043: RETURNS:
! 2044: if environment handle or error handle is null, return
! 2045: OCI_INVALID_HANDLE.
! 2046: if operation suceeds, return OCI_SUCCESS.
! 2047: if operation fails, return OCI_ERROR.
! 2048: */
! 2049:
! 2050: /*---------------------------- OCICacheUnmark -------------------------------*/
! 2051: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2052: sword OCICacheUnmark(/*_ OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc _*/);
! 2053: #else /* ANSI C */
! 2054: sword OCICacheUnmark( OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc );
! 2055: #endif
! 2056: /*
! 2057: NAME: OCICacheUnmark - OCI Unmark all dirty objects
! 2058: PARAMETERS:
! 2059: env (IN/OUT) - OCI environment handle initialized in object mode
! 2060: err (IN/OUT) - error handle. If there is an error, it is
! 2061: recorded in 'err' and this function returns
! 2062: OCI_ERROR. The error recorded in 'err' can be
! 2063: retrieved by calling OCIErrorGet().
! 2064: svc (IN) [optional] - OCI service context. If null pointer is
! 2065: specified, then the objects in all connections
! 2066: will be unmarked.
! 2067: REQUIRES:
! 2068: - a valid OCI environment handle must be given.
! 2069: DESCRIPTION:
! 2070: If a connection is specified, this function unmarks all dirty objects
! 2071: in that connection. Otherwise, all dirty objects in the cache are
! 2072: unmarked. See OCIObjectUnmark() for more information about unmarking
! 2073: an object.
! 2074: RETURNS:
! 2075: if environment handle or error handle is null, return
! 2076: OCI_INVALID_HANDLE.
! 2077: if operation suceeds, return OCI_SUCCESS.
! 2078: if operation fails, return OCI_ERROR.
! 2079: */
! 2080:
! 2081:
! 2082: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2083: sword OCIDurationBegin(/*_ OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc,
! 2084: OCIDuration parent, OCIDuration *dur _*/);
! 2085: #else /* ANSI C */
! 2086: sword OCIDurationBegin( OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc,
! 2087: OCIDuration parent, OCIDuration *dur );
! 2088: #endif
! 2089: /*
! 2090: NAME: OCIDurationBegin - OCI DURATION BEGIN
! 2091: PARAMETERS:
! 2092: env (IN/OUT) - OCI environment handle initialized in object mode
! 2093: This should be passed NULL, when cartridge services
! 2094: are to be used.
! 2095: err (IN/OUT) - error handle. If there is an error, it is
! 2096: recorded in 'err' and this function returns OCI_ERROR.
! 2097: The error recorded in 'err' can be retrieved by calling
! 2098: OCIErrorGet().
! 2099: svc (IN/OUT) - OCI service handle.
! 2100: parent (IN) - parent for the duration to be started.
! 2101: dur (OUT) - newly created user duration
! 2102: REQUIRES:
! 2103: - a valid OCI environment handle must be given for non-cartridge
! 2104: services.
! 2105: - For cartridge services, NULL should be given for environment handle
! 2106: - A valid service handle must be given in all cases.
! 2107: DESCRIPTION:
! 2108: This function starts a new user duration. A user can have multiple
! 2109: active user durations simultaneously. The user durations do not have
! 2110: to be nested.
! 2111:
! 2112: The object subsystem predefines 3 durations :
! 2113: 1) session - memory allocated with session duration comes from
! 2114: the UGA heap (OCI_DURATION_SESSION). A session
! 2115: duration terminates at the end of the user session.
! 2116: 2) transaction - memory allocated with transaction duration comes
! 2117: from the UGA heap (OCI_DURATION_TRANS). A trans-
! 2118: action duration terminates at the end of the user
! 2119: transaction.
! 2120: 3) call - memory allocated with call duration comes from PGA
! 2121: heap (OCI_DURATION_CALL). A call duration terminates
! 2122: at the end of the user call.
! 2123:
! 2124: Each user duration has a parent duration. A parent duration can be a
! 2125: predefined duration or another user duration. The relationship between
! 2126: a user duration and its parent duration (child duration) are:
! 2127:
! 2128: 1) An user duration is nested within the parent duration. When its
! 2129: parent duration terminates, the user duration will also terminate.
! 2130: 2) The memory allocated with an user duration comes from the heap of
! 2131: its parent duration. For example, if the parent duration of an
! 2132: user duration is call, then the memory allocated with the user
! 2133: duration will also come from the PGA heap.
! 2134:
! 2135: This function can be used as both part of cartridge services as well
! 2136: as without cartridge services.
! 2137: The difference in the function in the case of cartridge and
! 2138: non-cartridge services is:
! 2139: In case of cartridge services, as descibed above a new user
! 2140: duration is created as a child of the "parent" duration.
! 2141: But when used for non-cartridge purposes, when a pre-defined
! 2142: duration is passed in as parent, it is mapped to the cache duration
! 2143: for that connection (which is created if not already present) and
! 2144: the new user duration will be child of the cache duration.
! 2145:
! 2146: RETURNS:
! 2147: if environment handle and service handle is null or if error
! 2148: handle is null return OCI_INVALID_HANDLE.
! 2149: if operation suceeds, return OCI_SUCCESS.
! 2150: if operation fails, return OCI_ERROR.
! 2151: */
! 2152:
! 2153:
! 2154: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2155: sword OCIDurationEnd(/*_ OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc,
! 2156: OCIDuration duration _*/);
! 2157: #else /* ANSI C */
! 2158: sword OCIDurationEnd( OCIEnv *env, OCIError *err, CONST OCISvcCtx *svc,
! 2159: OCIDuration duration );
! 2160: #endif
! 2161: /*
! 2162: NAME: OCIDurationEnd - OCI DURATION END
! 2163: PARAMETERS:
! 2164: env (IN/OUT) - OCI environment handle initialized in object mode
! 2165: This should be passed NULL, when cartridge services
! 2166: are to be used.
! 2167: err (IN/OUT) - error handle. If there is an error, it is
! 2168: recorded in 'err' and this function returns OCI_ERROR.
! 2169: The error recorded in 'err' can be retrieved by calling
! 2170: OCIErrorGet().
! 2171: svc (IN/OUT) - OCI service handle.
! 2172: dur (OUT) - a previously created user duration using
! 2173: OCIDurationBegin()
! 2174: REQUIRES:
! 2175: - a valid OCI environment handle must be given for non-cartridge
! 2176: services.
! 2177: - For cartridge services, NULL should be given for environment handle
! 2178: - A valid service handle must be given in all cases.
! 2179: DESCRIPTION:
! 2180: This function terminates a user duration. All memory allocated for
! 2181: this duration is freed.
! 2182:
! 2183: This function can be used as both part of cartridge services as well
! 2184: as without cartridge services. In both cased, the heap duration
! 2185: is freed and all the allocated memory for that duration is freed.
! 2186: The difference in the function in the case of cartridge and
! 2187: non-cartridge services is:
! 2188: In case of non-cartridge services, if the duration is pre-
! 2189: defined, the associated cache duration (see OCIDurationBegin())
! 2190: is also terminated and the following is done.
! 2191: 1) The child durations are terminated.
! 2192: 2) All objects pinned for this duration are unpinned.
! 2193: 3) All instances allocated for this duration are freed.
! 2194:
! 2195: In case of cartridge services, only the heap duration is
! 2196: freed. All the context entries allocated for that duration are
! 2197: freed from the context hash table..
! 2198:
! 2199: RETURNS:
! 2200: if environment handle and service handle is null or if error
! 2201: handle is null return OCI_INVALID_HANDLE.
! 2202: if operation suceeds, return OCI_SUCCESS.
! 2203: if operation fails, return OCI_ERROR.
! 2204: */
! 2205:
! 2206: /******************************************************************************
! 2207: ** DO NOT USE THE FUNCTIONS BELOW! **
! 2208: ** UNSUPPORTED INTERFACE **
! 2209: ** WILL BE REMOVED/CHANGED IN A FUTURE RELEASE **
! 2210: ******************************************************************************/
! 2211:
! 2212: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2213: sword OCIDurationGetParent(/*_ OCIEnv *env, OCIError *err,
! 2214: OCIDuration duration, OCIDuration *parent _*/);
! 2215: #else /* ANSI C */
! 2216: sword OCIDurationGetParent( OCIEnv *env, OCIError *err,
! 2217: OCIDuration duration, OCIDuration *parent );
! 2218: #endif
! 2219:
! 2220: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2221: sword OCIObjectAlwaysLatest(/*_ OCIEnv *env, OCIError *err, dvoid *object _*/);
! 2222: #else /* ANSI C */
! 2223: sword OCIObjectAlwaysLatest( OCIEnv *env, OCIError *err, dvoid *object );
! 2224: #endif
! 2225:
! 2226: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2227: sword OCIObjectNotAlwaysLatest(/*_ OCIEnv *env, OCIError *err,
! 2228: dvoid *object _*/);
! 2229: #else /* ANSI C */
! 2230: sword OCIObjectNotAlwaysLatest( OCIEnv *env, OCIError *err,
! 2231: dvoid *object );
! 2232: #endif
! 2233:
! 2234: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2235: sword OCIObjectFlushRefresh(/*_ OCIEnv *env, OCIError *err, dvoid *object _*/);
! 2236: #else /* ANSI C */
! 2237: sword OCIObjectFlushRefresh( OCIEnv *env, OCIError *err, dvoid *object);
! 2238: #endif
! 2239:
! 2240: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2241: sword OCIObjectIsLoaded(/*_ OCIEnv *env, OCIError *err, dvoid *ins,
! 2242: boolean *load _*/);
! 2243: #else /* ANSI C */
! 2244: sword OCIObjectIsLoaded( OCIEnv *env, OCIError *err, dvoid *ins,
! 2245: boolean *load);
! 2246: #endif
! 2247:
! 2248: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2249: sword OCIObjectIsDirtied(/*_ OCIEnv *env, OCIError *err, dvoid *ins,
! 2250: boolean *dirty _*/);
! 2251: #else /* ANSI C */
! 2252: sword OCIObjectIsDirtied( OCIEnv *env, OCIError *err, dvoid *ins,
! 2253: boolean *dirty);
! 2254: #endif
! 2255:
! 2256: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2257: sword OCICacheGetObjects(/*_ OCIEnv *env, OCIError *err,
! 2258: CONST OCISvcCtx *svc,
! 2259: OCIObjectProperty property,
! 2260: dvoid *client_context,
! 2261: void (*client_callback)(
! 2262: dvoid *client_context,
! 2263: dvoid *object ) _*/);
! 2264: #else /* ANSI C */
! 2265: sword OCICacheGetObjects( OCIEnv *env, OCIError *err,
! 2266: CONST OCISvcCtx *svc,
! 2267: OCIObjectProperty property,
! 2268: dvoid *client_context,
! 2269: void (*client_callback)(
! 2270: dvoid *client_context,
! 2271: dvoid *object ));
! 2272: #endif
! 2273:
! 2274: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2275: sword OCICacheRegister(/*_ OCIEnv *env, OCIError *err,
! 2276: OCIObjectEvent event,
! 2277: dvoid *client_context,
! 2278: void (*client_callback)(
! 2279: dvoid *client_context,
! 2280: OCIObjectEvent event,
! 2281: dvoid *object ) _*/);
! 2282: #else /* ANSI C */
! 2283: sword OCICacheRegister( OCIEnv *env, OCIError *err,
! 2284: OCIObjectEvent event,
! 2285: dvoid *client_context,
! 2286: void (*client_callback)(
! 2287: dvoid *client_context,
! 2288: OCIObjectEvent event,
! 2289: dvoid *object));
! 2290: #endif
! 2291:
! 2292: #if !defined(__STDC__) && !defined(__cplusplus) /* K&R C - not ANSI C */
! 2293: sword OCICacheFlushRefresh(/*_ OCIEnv *env, OCIError *err,
! 2294: CONST OCISvcCtx *svc, dvoid *context,
! 2295: OCIRef *(*get)(dvoid *context, ub1 *last),
! 2296: OCIRef **ref _*/);
! 2297: #else /* ANSI C */
! 2298: sword OCICacheFlushRefresh( OCIEnv *env, OCIError *err,
! 2299: CONST OCISvcCtx *svc, dvoid *context,
! 2300: OCIRef *(*get)(dvoid *context, ub1 *last),
! 2301: OCIRef **ref );
! 2302: #endif
! 2303:
! 2304: #endif /* ORI_ORACLE */
E-mail: