Files correlati : Commento : - Creazione nuova cartella per contenere tutte le librerie esterne - Aggiunta nuova libreria sqlapi per interfacciare campo a vari DB git-svn-id: svn://10.65.10.50/branches/R_10_00@24149 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			2096 lines
		
	
	
		
			102 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			2096 lines
		
	
	
		
			102 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* Copyright (c) 1994, 2006, Oracle. All rights reserved.  */
 | 
						|
 | 
						|
/*
 | 
						|
  NAME
 | 
						|
    ORI - OCI navigational interface
 | 
						|
 | 
						|
  DESCRIPTION
 | 
						|
 | 
						|
    This section is intended to give a brief introduction to the navigational
 | 
						|
    interfaces.  Readers can refer to the documents listed in the section 
 | 
						|
    'RELATED DOCUMENTS' for more information. 
 | 
						|
 | 
						|
    PURPOSE 
 | 
						|
       The Oracle Call Interface (OCI) supports navigational access of objects.
 | 
						|
       In the navigational paradigm, data is represented as a graph of objects 
 | 
						|
       connected by references.  Objects in the graph are reached by following
 | 
						|
       the references.
 | 
						|
 | 
						|
    OBJECT ENVIRONMENT
 | 
						|
 | 
						|
      The object environment is initialized when the OCI environment handle is
 | 
						|
      initialized with the object option.  An object environment contains a
 | 
						|
      heap which buffers type instances in memory.  The object environment also
 | 
						|
      contains an object cache which keeps track of the objects in the object 
 | 
						|
      environment.  Readers can refer to the "Functional Specification for 
 | 
						|
      Programmatic Interface" for more information about the object 
 | 
						|
      environment. 
 | 
						|
 | 
						|
    INSTANCE, OBJECT AND VALUE
 | 
						|
 | 
						|
      An OTS instance is an occurence of a type specified by the Oracle Type 
 | 
						|
      System (OTS). This section describes how an OTS instance can be 
 | 
						|
      represented in OCI. In OCI, an OTS instance can be classified based on
 | 
						|
      the type, the lifetime and referencability (see the figure below):
 | 
						|
 | 
						|
      1) A persistent object is an instance of an object type. A persistent
 | 
						|
         object resides in a row of a table in the server and can exist longer
 | 
						|
         than the duration of a session (connection). Persistent objects can be
 | 
						|
         identified by object references which contain the object identifiers.
 | 
						|
         A persistent object is obtained by pinning its object reference.
 | 
						|
 | 
						|
      2) A transient object is an instance of an object type. A transient 
 | 
						|
         object cannot exist longer than the duration of a session, and it is 
 | 
						|
         used to contain temporary computing results. Transient objects can 
 | 
						|
         also be identified by references which contain transient object
 | 
						|
         identifiers.
 | 
						|
 | 
						|
      3) A value is an instance of an user-defined type (object type or 
 | 
						|
         collection type) or any built-in OTS type.  Unlike objects, values of 
 | 
						|
         object types are identified by memory pointers, rather than by 
 | 
						|
         references.  
 | 
						|
 | 
						|
         A value can be standalone or embbeded.  A standalone value is usually
 | 
						|
         obtained by issuing a select statement.  OCI also allows the client
 | 
						|
         program to select a row of object table into a value by issuing a SQL
 | 
						|
         statement.  Thus, a referenceable object (in the database) can be 
 | 
						|
         represented as a value (which cannot be identified by a reference).
 | 
						|
         A standalone value can also be an out-of-line attribute in an object 
 | 
						|
         (e.g varchar, raw) or an out-of-line element in a collection (e.g.
 | 
						|
         varchar, raw, object).
 | 
						|
      
 | 
						|
         An embedded value is phyiscally included in a containing instance.
 | 
						|
         An embedded value can be an in-line attribute in an object (e.g.
 | 
						|
         number, nested object) or an in-line element in a collection.
 | 
						|
 | 
						|
         All values are considered to be transient by OCI, e.g. OCI does not
 | 
						|
         support automatic flushing a value to the database, and the client has
 | 
						|
         to explicitly execute a SQL statement to store a value into the 
 | 
						|
         database. For embedded values, they are flushed when their containing
 | 
						|
         instance are flushed.
 | 
						|
 | 
						|
 | 
						|
                                OTS instance
 | 
						|
                                 |        |  
 | 
						|
                                 v        v
 | 
						|
                               object    value         (type)
 | 
						|
                               |    |
 | 
						|
                               v    v
 | 
						|
                       persistent  transient           (lifetime)
 | 
						|
                  
 | 
						|
 
 | 
						|
                     persistent obj   transient obj     value  
 | 
						|
      ---------------------------------------------------------------
 | 
						|
      |              |              |               |  object type, |
 | 
						|
      | type         | object type  |  object type  |  built-in,    |
 | 
						|
      |              |              |               |  collection   |
 | 
						|
      ---------------------------------------------------------------
 | 
						|
      | maximum      | until object |  session      | session       |
 | 
						|
      | lifetime     | is deleted   |               |               | 
 | 
						|
      ---------------------------------------------------------------
 | 
						|
      | referencable |    yes       |     yes       |    no         |    
 | 
						|
      ---------------------------------------------------------------
 | 
						|
      | embeddable   |    no        |     no        |    yes        |    
 | 
						|
      ---------------------------------------------------------------
 | 
						|
 | 
						|
    REFERENCEABLE OBJECT, STANDALONE OBJECT, EMBEDDED OBJECT
 | 
						|
 | 
						|
       In the reminding of this include file, the following term will be used:
 | 
						|
       1) The term 'object' can be generally referred to a persistent object,
 | 
						|
          a transient object, a standalone value of object type, or an embedded
 | 
						|
          value of object type.
 | 
						|
       2) The term 'referenceable object' refers to a persistent object or a 
 | 
						|
          transient object.
 | 
						|
       3) The term 'standalone object' refers to a persistent object, a
 | 
						|
          transient object or a standalone value of object type.
 | 
						|
       4) The term 'embedded object' referes to a embbeded value of object 
 | 
						|
          type.
 | 
						|
 | 
						|
    META ATTRIBUTES 
 | 
						|
 | 
						|
      There is a set of meta-attributes that are defined for standalone 
 | 
						|
      objects.  A meta-attribute can be transient or persistent. A 
 | 
						|
      transient meta-attribute is applicable to an instance only when it is 
 | 
						|
      in memory. A persistent meta-attribute can be applicable to an instance 
 | 
						|
      that is in the disk. 
 | 
						|
 | 
						|
      The set of user visible meta-attributes for persistent objects are:
 | 
						|
      1) existent (persistent) : Does the object exist?
 | 
						|
      2) nullness (persistent) : Null information of the instance
 | 
						|
      3) locked   (persistent) : Is the object locked?
 | 
						|
      4) pinned    (transient) : Is the object being accessed by the client?
 | 
						|
      5) dirty     (transient) : Has the object been modified?
 | 
						|
      6) allocation duration (transient) : see below
 | 
						|
      7) pin duration        (transient) : see below
 | 
						|
 | 
						|
      The set of user visible meta-attributes for transient objects are:
 | 
						|
      1) existent  (transient) : Does the object exist?
 | 
						|
      2) nullness  (transient) : Null information of the instance 
 | 
						|
      3) pinned    (transient) : Is the object being accessed by the client? 
 | 
						|
      4) dirty     (transient) : Has the object been modified?
 | 
						|
      4) allocation duration (transient) : see below
 | 
						|
      5) pin duration        (transient) : see below
 | 
						|
 | 
						|
      The set of user visible meta-attributes for standalone values of object  
 | 
						|
      type or collections are:
 | 
						|
      1) allocation duration (transient) : see below
 | 
						|
      2) nullness            (transient) : Null information of the instance 
 | 
						|
                                           (of an object type)
 | 
						|
 | 
						|
    NULLNESS OF AN INSTANCE 
 | 
						|
 | 
						|
      Each standalone object is associated with a null structure which keeps 
 | 
						|
      the null information about the object.  A null indicates the absence of 
 | 
						|
      data. The null structure itself contains null indicators that represent:
 | 
						|
        1) atomic nullness : a null value that pertains to the whole object 
 | 
						|
        2) null status of the individual attribute in the object 
 | 
						|
 | 
						|
      The layout of a null structure in memory resembles that of the object,
 | 
						|
      except that the null structure has additional indicators to represent 
 | 
						|
      the atomic nullness for each object. 
 | 
						|
 | 
						|
      An non-existent object is different than an object that is atomically 
 | 
						|
      null. A atomically null object is an existing object that has no data. 
 | 
						|
 | 
						|
    MEMORY LAYOUT OF AN OBJECT
 | 
						|
 | 
						|
      A standalone object in memory is composed of a top level memory chunk, 
 | 
						|
      a null structure and optionally, a number of secondary memory chunks. 
 | 
						|
      For a DEPARTMENT object type,
 | 
						|
 | 
						|
          OBJECT TYPE department
 | 
						|
          {
 | 
						|
              dep_name      varchar2(20),
 | 
						|
              budget        number,
 | 
						|
              manager       person,              /o person is an object type o/
 | 
						|
              employees     collection of person
 | 
						|
          }
 | 
						|
 | 
						|
      Each instance of DEPARTMENT will has a top level memory chunk which
 | 
						|
      contains the top level attributes such as dep_name, budget, manager and
 | 
						|
      employees.  The attributes dep_name and employees are themselves pointers
 | 
						|
      to the additional memory (the secondary memory chunks). The secondary
 | 
						|
      memory is for the out-of-line attribute (e.g. varray).
 | 
						|
 | 
						|
    CONSISTENCY MODEL
 | 
						|
 | 
						|
      Each pin operation behaves like a distinct SQL select.  Thus, the object 
 | 
						|
      cache does not guarantee consistency for a graph of objects.  In order to
 | 
						|
      retrieve a consistent graph of objects, the user has to explicitly start 
 | 
						|
      a serializable transaction or a read-only transaction. 
 | 
						|
 | 
						|
    DURATION
 | 
						|
      In OCI, a duration is used to specify 
 | 
						|
 | 
						|
        1) the length of memory allocation of an instance 
 | 
						|
           When each instance is allocated, it is associate with an allocation
 | 
						|
           duration.  The memory occupied by the object is freed automatically 
 | 
						|
           at the end of its allocation duration. The allocation duration of an
 | 
						|
           instance cannot be changed.  
 | 
						|
 | 
						|
        2) the length of pinning of an object
 | 
						|
           When each object is pinned, the client has to give a pin duration 
 | 
						|
           which specify the length of time that the object is intended to be
 | 
						|
           used.  It is an user error to specify a pin duration longer than an
 | 
						|
           allocation duration of the object. An object is completely unpinned 
 | 
						|
           at the end of its pin duration (see OCIObjectUnpin()). 
 | 
						|
 | 
						|
      An OCI program can use the allocation duration and the pin duration to 
 | 
						|
      automatically free the memory of the instances:
 | 
						|
       1) Transient objects and values are freed at the end of the allocation
 | 
						|
          duration.
 | 
						|
       2) Persistent objects ARE freed at the end of the allocation duration.
 | 
						|
          Persistent objects CAN be freed at the end of the pin duration when
 | 
						|
          the objects are completely unpinned. The persistent objects are said
 | 
						|
          to be aged out. See OCIObjectUnpin() for more details.
 | 
						|
 | 
						|
      There are 3 predefined duration: session, transaction, call.  The time 
 | 
						|
      spans of these durations are defined based on the programming model 
 | 
						|
      presented by OCI. The call duration is mapped to the transaction 
 | 
						|
      duration in the client-side environment. See oro.h for the macros defined
 | 
						|
      for these 3 durations.
 | 
						|
 | 
						|
      A pin duration can be promoted. For example, if an object is pinned with
 | 
						|
      duration 1, and the object is later pinned with duration 2, the pin 
 | 
						|
      routine will try to find a duration that is longer or equal to the 
 | 
						|
      length of both duration 1 and duration 2.  The pin duration of the object
 | 
						|
      is set to the that duration. The object is automatically unpinned only 
 | 
						|
      after both duration 1 and duration 2 are terminated. 
 | 
						|
 | 
						|
  RELATED DOCUMENTS
 | 
						|
    "Functional Specification for Oracle Object RDBMS" 
 | 
						|
    "Functional Specification for Programmatic Interfaces" 
 | 
						|
    "Functional Specification for the Oracle Type System (OTS)" 
 | 
						|
 | 
						|
  INSPECTION STATUS 
 | 
						|
    Inspection date:
 | 
						|
    Inspection status:
 | 
						|
    Estimated increasing cost defects per page:
 | 
						|
    Rule sets:        
 | 
						|
 | 
						|
  ACCEPTANCE REVIEW STATUS 
 | 
						|
    Review date:   
 | 
						|
    Review status:
 | 
						|
    Reviewers: 
 | 
						|
 | 
						|
  PUBLIC FUNCTIONS
 | 
						|
    OCIObjectNew - OCI new a standalone instance 
 | 
						|
    OCIObjectPin - OCI pin an object by reference
 | 
						|
    OCIObjectUnpin - OCI unpin a referenceable object
 | 
						|
    OCIObjectPinCountReset - OCI reset the pin count of a referenceable object 
 | 
						|
    OCIObjectLock - OCI lock a persistent object
 | 
						|
    OCIObjectLockNoWait - OCI lock a persistent object
 | 
						|
    OCIObjectMarkUpdate - OCI mark a referenceable object as updated
 | 
						|
    OCIObjectUnmark - OCI unmark a dirtied referenceable object 
 | 
						|
    OCIObjectUnmarkByRef - OCI unmark a dirtied object by reference 
 | 
						|
    OCIObjectFree - OCI free a standalone instance 
 | 
						|
    OCIObjectMarkDelete - OCI mark a referenceable object as deleted 
 | 
						|
    OCIObjectMarkDeleteByRef - OCI mark a referenceable object as deleted by 
 | 
						|
                               giving a reference
 | 
						|
    OCIObjectFlush - OCI flush a persistent object
 | 
						|
    OCIObjectRefresh - OCI refresh a persistent object 
 | 
						|
    OCIObjectCopy - OCI CoPy one object to another
 | 
						|
    OCIObjectGetTypeRef - OCI get the Type Reference of a standalone object 
 | 
						|
    OCIObjectGetObjectRef - OCI get the Object's Reference 
 | 
						|
    OCIObjectGetInd - OCI get Null Structure of an standalone object 
 | 
						|
    OCIObjectExists - OCI get the existence of a referenceable object
 | 
						|
    OCIObjectGetProperty - get object property
 | 
						|
    OCIObjectIsLocked - OCI get the lock status of a referenceable object
 | 
						|
    OCIObjectIsDirty - OCI get the dirty status of a referenceable object
 | 
						|
    OCIObjectPinTable - OCI get Table object 
 | 
						|
    OCIObjectArrayPin - OCI pin array of objects 
 | 
						|
    OCIObjectGetPrimayKeyTypeRef - OCI get the Ref for the primary key OID's 
 | 
						|
                                   type 
 | 
						|
    OCIObjectMakeObjectRef - OCI Create a pk or sys generated REF  
 | 
						|
 | 
						|
    OCIObjectGetNewOID - OCI Create a new Object ID
 | 
						|
 | 
						|
    OCICacheFlush - OCI flsuh the modified persistent objects in the cache
 | 
						|
    OCICacheRefresh - OCI refresh persistent objects in the cache 
 | 
						|
    OCICacheUnpin - OCI unpin referenceable objects in the cache
 | 
						|
    OCICacheFree - OCI free all instances in the environment
 | 
						|
    OCICacheUnmark - OCI unmark all dirty referenceable objects in the cache 
 | 
						|
 | 
						|
  PRIVATE FUNCTIONS
 | 
						|
    None
 | 
						|
 | 
						|
  EXAMPLES 
 | 
						|
 | 
						|
    The following types will be used in the examples in this section: 
 | 
						|
 | 
						|
    OBJECT TYPE professor
 | 
						|
    (
 | 
						|
        varchar2  name;
 | 
						|
        number    department;
 | 
						|
        number    num_of_students; 
 | 
						|
    );
 | 
						|
 | 
						|
    OBJECT TYPE course 
 | 
						|
    (
 | 
						|
        varchar2   name;
 | 
						|
        number     grade; 
 | 
						|
    );
 | 
						|
 | 
						|
    OBJECT TYPE student
 | 
						|
    (
 | 
						|
        vstring      name;
 | 
						|
        number       department;
 | 
						|
        ref          advisor;                      /o advisor is a professor o/
 | 
						|
        collection   courses;
 | 
						|
    );
 | 
						|
 | 
						|
    EXAMPLE 1
 | 
						|
 | 
						|
      Here is a set of examples to illustrate the usages of some of the
 | 
						|
      orio and oric functions.  
 | 
						|
 | 
						|
      OCIenv    *env;              /o OCI environment handle o/
 | 
						|
      OCIError  *err;              /o OCI error handle o/
 | 
						|
      OCISvcCtx *svc;              /o OCI service handle o/
 | 
						|
 | 
						|
      void   *stu_tbl;            /o pointer to the student table o/
 | 
						|
      OCIType *stu_tdo;            /o student type tdo o/
 | 
						|
 | 
						|
      OCIRef    *stu2_ref;         /o object reference to student object o/
 | 
						|
      student   *stu1;             /o pointer to the student object o/
 | 
						|
      student   *stu2;             /o pointer to the student object o/
 | 
						|
      professor *pro;              /o pointer to the professor object o/
 | 
						|
 | 
						|
      /o Initialize the OCI environment handle, error handle and service
 | 
						|
         handle and login to the database o/ 
 | 
						|
      ...
 | 
						|
 | 
						|
      /o CREATE A PERSISTENT OBJECT o/
 | 
						|
 | 
						|
      /o get the table object of student o/
 | 
						|
      if (OCIObjectPinTable(env, err, svc, "ORACLEU", sizeof("ORACLEU"), 
 | 
						|
          "STUDENT_TABLE", sizeof("STUDENT_TABLE"), (OCIRef *)0, 
 | 
						|
          OCI_DURATION_NULL, &stu_tbl) != OCI_SUCCESS)
 | 
						|
          /o error handling code o/ 
 | 
						|
 | 
						|
      /o get type object of student o/
 | 
						|
      if (OCITypeByName(env, err, svc, "ORACLEU", sizeof("ORACLEU"), 
 | 
						|
          "STUDENT", sizeof("STUDENT"), OCI_DURATION_NULL, OCI_TYPEGET_HEADER,
 | 
						|
          &stu_tdo) != OCI_SUCCESS)
 | 
						|
          /o error handling code o/ 
 | 
						|
 | 
						|
      /o create a persistent object 'mark' (of type student) o/ 
 | 
						|
      if (OCIObjectNew(env, err, svc, OCI_TYPECODE_ADT, stu_tdo, stu_tbl, 
 | 
						|
            OCI_DURATION_TRANS, (ub1)FALSE, (void **)&stu1) != OCI_SUCCESS)
 | 
						|
          /o error handling code o/
 | 
						|
 | 
						|
      /o RETRIEVE OBJECTS IN PERSISTENT STORES o/ 
 | 
						|
 | 
						|
      /o Use OCI to retrieve a reference to student object 'joe'.
 | 
						|
       o The retrieved reference is bound to the variable stu2_ref.
 | 
						|
       o/ 
 | 
						|
 | 
						|
      /o pin/retrieve the student "joe" by reference o/ 
 | 
						|
      if (OCIObjectPin(env, err, &stu2_ref, (OCIComplexObject *)0, OCI_PIN_ANY,
 | 
						|
                  OCI_DURATION_TRANS, OCI_LOCK_X, &stu2) != OCI_SUCCESS)
 | 
						|
          /o error handling code o/ 
 | 
						|
 | 
						|
      /o pin/retrieve the advisor of student "joe" by reference o/ 
 | 
						|
      if (OCIObjectPin(env, err, &stu2->advisor, (OCIComplexObject *)0,
 | 
						|
          OCI_PIN_ANY, OCI_DURATION_TRANS, OCI_LOCK_X, &pro) != OCI_SUCCESS)
 | 
						|
          /o error handling code o/ 
 | 
						|
 | 
						|
      /o MODIFY OBJECTS o/
 | 
						|
 | 
						|
      /o initialize the newly created object "mark" o/
 | 
						|
      DISCARD OCIStringAssignText(env, err, "mark", sizeof("mark"), 
 | 
						|
                                    &stu1->name);
 | 
						|
      department = 522;
 | 
						|
      DISCARD OCINumberFromInt(err, &department, sizeof(department), 
 | 
						|
                                    OCI_NUMBER_UNSIGNED, &stu1->department);
 | 
						|
 | 
						|
      /o assign advisor to student "mark" o/
 | 
						|
      DISCARD OCIRefAssign(env, err, &stu2->advisor, &stu1->advisor);
 | 
						|
 | 
						|
      /o update student "joe". o/  
 | 
						|
      department = 533;
 | 
						|
      DISCARD OCINumberFromInt(err, &department, sizeof(department), 
 | 
						|
                                    OCI_NUMBER_UNSIGNED, &stu2->department);
 | 
						|
      DISCARD OCIObjectMarkUpdate(env, err, stu2);
 | 
						|
 | 
						|
      /o UNPIN OBJECTS AFTER FINSIHED PROCESSING THEM o/ 
 | 
						|
 | 
						|
      /o unpin the student object "mark" o/
 | 
						|
      if (OCIObjectUnpin(env, err, stu1) != OCI_SUCCESS)
 | 
						|
          /o error handling code o/ 
 | 
						|
 | 
						|
      /o unpin the student object "joe" o/
 | 
						|
      if (OCIObjectUnpin(env, err, stu2) != OCI_SUCCESS)
 | 
						|
          /o error handling code o/ 
 | 
						|
 | 
						|
      /o unpin the professor object o/
 | 
						|
      if (OCIObjectUnpin(env, err, pro) != OCI_SUCCESS)
 | 
						|
          /o error handling code o/ 
 | 
						|
 | 
						|
      /o unpin the type object o/
 | 
						|
      if (OCIObjectUnpin(env, err, stu_tdo) != OCI_SUCCESS)
 | 
						|
          /o error handling code o/ 
 | 
						|
 | 
						|
      /o unpin the table object o/
 | 
						|
      if (OCIObjectUnpin(env, err, stu_tbl) != OCI_SUCCESS)
 | 
						|
          /o error handling code o/ 
 | 
						|
 | 
						|
      /o FLUSH MODIFIED OBJECTS BACK TO PERSISTENT STORE o/
 | 
						|
 | 
						|
      if (OCICacheFlush(env, err, svc, (void *)0, ((OCIRef*)(*)())0, 
 | 
						|
                       (OCIRef *)0) != OCI_SUCCESS)
 | 
						|
          /o error handling code o/
 | 
						|
 | 
						|
      /o commit transaction o/
 | 
						|
 | 
						|
    END OF EXAMPLE 1
 | 
						|
 | 
						|
  NOTES
 | 
						|
    This file has been subsetted to contain only the routines that will
 | 
						|
    be in the first release.
 | 
						|
 | 
						|
  MODIFIED
 | 
						|
    dmukhin    06/29/05 - ANSI prototypes; miscellaneous cleanup 
 | 
						|
    srseshad   03/12/03 - convert oci public api to ansi
 | 
						|
    aahluwal   06/03/02 - bug 2360115
 | 
						|
    bpalaval   02/09/01 - Change text to oratext.
 | 
						|
    rkasamse   06/21/00 - add ociobjectgetnewoid
 | 
						|
    rkasamse   05/24/00 - add OCIObjectSetData
 | 
						|
    whe        09/01/99 - 976457:check __cplusplus for C++ code
 | 
						|
    smuralid   10/29/98 - add comments for OCIObjectMakeObjectRef              
 | 
						|
    mkrishna   08/19/98 - change OCIGetPkTypeRef to OCIObjectGetPrimaryKeyTypeR
 | 
						|
    mkrishna   08/10/98 - add OCIObjectMakeObjectRef & OCIObjectGetPkTypeRef
 | 
						|
    rkasamse   06/22/98 - add comments for OCIDurationBegin(End)
 | 
						|
    pmitra     04/01/98 - OCIObjectLockNoWait added                            
 | 
						|
    pmitra     11/05/97 - [573769] OCIObjectArrayPin pos parameter cannot be NU
 | 
						|
    cxcheng    07/29/97 - fix compile for short names
 | 
						|
    skrishna   07/14/97 - add OCIObjectGetProperty
 | 
						|
    skrishna   04/30/97 - OCIObjectFlushRefresh: remove duplicate declaration
 | 
						|
    skrishna   04/24/97 - flag unsupported functions
 | 
						|
    sthakur    03/20/97 - modify flag argument to OCIObjectFree
 | 
						|
    skrishna   03/18/97 - fix ifdef for supporting ansi and k&r proto-types
 | 
						|
    cxcheng    02/19/97 - remove short names support
 | 
						|
    cxcheng    02/06/97 - take out short name support except with SLSHORTNAME
 | 
						|
    sthakur    12/20/96 - fix a typepo in OCIOBjectArrayPin
 | 
						|
    jboonleu   11/07/96 - modify comments
 | 
						|
    cxcheng    10/28/96 - more beautification changes
 | 
						|
    jboonleu   10/24/96 - add flag to OCIObjectFree
 | 
						|
    jboonleu   10/22/96 - change interface of OCICacheFlush
 | 
						|
    cxcheng    10/18/96 - rename OCIObjectPinArray to OCIObjectArrayPin
 | 
						|
    cxcheng    10/14/96 - more renaming of types
 | 
						|
    jboonleu   10/09/96 - add new interfaces
 | 
						|
    cxcheng    10/09/96 - more lint fixes
 | 
						|
    cxcheng    10/08/96 - more lint fixes
 | 
						|
    jboonleu   09/27/96 - fix lint errors
 | 
						|
    jboonleu   10/07/96 - beautify ori.h after conversion to long names
 | 
						|
    cxcheng    10/04/96 - replace short names with long names
 | 
						|
    sthakur    08/20/96 - add COR context to OCIObjectPin
 | 
						|
    mluong     07/17/96 - add back orioglk, oriogdr, oriogiv, and oriocur.
 | 
						|
    jboonleu   07/17/96 - rename refresh option to conherency option 
 | 
						|
    jboonleu   07/16/96 - change comment for cache consistency
 | 
						|
    jwijaya    07/03/96 - add ANSI prototypes
 | 
						|
    jboonleu   06/12/96 - update comment
 | 
						|
    jboonleu   05/08/96 -  change description of OCIDurationGetParent
 | 
						|
    jboonleu   05/01/96 -  add OROOCOSFN
 | 
						|
    skrishna   04/08/96 -  change ori*() to take OCIEnv* and OCIError* instead
 | 
						|
                           of oroenv*
 | 
						|
    jboonleu   01/04/96 -  interface change
 | 
						|
    jboonleu   10/24/95 -  support of variable ref
 | 
						|
    jboonleu   02/15/95 -  new interface
 | 
						|
    sthakur    01/05/95 -  pass username to origrgc 
 | 
						|
    skotsovo   12/07/94 -  update example 
 | 
						|
    jwijaya    11/15/94 -  rename ORONSPTAB to ORONSPEXT 
 | 
						|
    jwijaya    10/06/94 -  add namespace to oriopnm() 
 | 
						|
    jwijaya    10/02/94 -  connection handle -> connection number 
 | 
						|
    jboonleu   08/16/94 -  fix lint errors 
 | 
						|
    jboonleu   07/20/94 -  change interface of OCICacheFlush 
 | 
						|
    tanguyen   07/18/94 -  add oriocpe, change OCIObjectCopy to oriocps
 | 
						|
    tcheng     07/15/94 -  add init param maximum_sga_heap_size 
 | 
						|
    tcheng     07/13/94 -  change origini to get param string 
 | 
						|
    jboonleu   07/05/94 -  change sccs string from sccid to a comment 
 | 
						|
    jboonleu   07/01/94 -  Add examples to ORIO* and ORIC* functions 
 | 
						|
    tanguyen   06/30/94 -  Fix the ORI_ORACLE ifdef
 | 
						|
    skotsovo   06/27/94 -  include all public functions in public functions 
 | 
						|
                           list at top of header file
 | 
						|
    tcheng     06/27/94 -  modify comments according to new template 
 | 
						|
    tanguyen   06/24/94 -  fix comments for OCIObjectCopy 
 | 
						|
    tcheng     06/24/94 -  fix comments in origrgc()
 | 
						|
    tanguyen   06/21/94 -  fix comments and format 
 | 
						|
    tcheng     06/20/94 -  commenting origini/trm/err/rgc/urg() functions
 | 
						|
    tanguyen   06/16/94 -  fix descriptions of ref operations 
 | 
						|
    tanguyen   06/16/94 -  clarifies refs comparison 
 | 
						|
    tanguyen   05/12/94 -  adds more interfaces (OCIObjectMarkUpdate)
 | 
						|
    jwijaya    05/10/94 -  fix examples, add origurg, change origcon to origrgc
 | 
						|
    tanguyen   05/03/94 -  remove unnecessary 'type' argument from 
 | 
						|
                           'OCIObjectCopy'
 | 
						|
    tanguyen   03/08/94 -  clarifies comments
 | 
						|
    jwijaya    02/16/94 -  more questions
 | 
						|
    jwijaya    02/11/94 -  more comments
 | 
						|
    jwijaya    02/10/94 -  identify optional arguments
 | 
						|
    jwijaya    02/07/94 -  Creation
 | 
						|
*/
 | 
						|
 | 
						|
 | 
						|
#ifndef ORATYPES
 | 
						|
#include <oratypes.h>
 | 
						|
#endif
 | 
						|
#ifndef ORO_ORACLE
 | 
						|
#include <oro.h>
 | 
						|
#endif
 | 
						|
#ifndef OCI_ORACLE
 | 
						|
#include <oci.h>
 | 
						|
#endif
 | 
						|
#ifndef ORT_ORACLE
 | 
						|
#include <ort.h>
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef ORI_ORACLE
 | 
						|
#define ORI_ORACLE
 | 
						|
 | 
						|
/*---------------------------------------------------------------------------*/
 | 
						|
/*                         SHORT NAMES SUPPORT SECTION                       */
 | 
						|
/*---------------------------------------------------------------------------*/
 | 
						|
 | 
						|
#ifdef SLSHORTNAME
 | 
						|
 | 
						|
/* the following are short names that are only supported on IBM mainframes
 | 
						|
   with the SLSHORTNAME defined.
 | 
						|
   With this all subsequent long names will actually be substituted with
 | 
						|
   the short names here */
 | 
						|
 | 
						|
#define OCIDurationBegin                 origbgu
 | 
						|
#define OCIDurationEnd                   origedu
 | 
						|
#define OCIDurationGetParent             origpdr
 | 
						|
#define OCICacheFlushRefresh             oricfrh
 | 
						|
#define OCICacheUnpin                    oricunp
 | 
						|
#define OCICacheFree                     oricfre
 | 
						|
#define OCICacheUnmark                   oricumk
 | 
						|
#define OCICacheGetObjects               oricgpr
 | 
						|
#define OCICacheRegister                 oricscb
 | 
						|
#define OCIObjectUnpin                   oriounp
 | 
						|
#define OCIObjectPinCountReset           orioupz
 | 
						|
#define OCIObjectLock                    oriolck
 | 
						|
#define OCIObjectLockNoWait              oriolnw
 | 
						|
#define OCIObjectMarkUpdate              orioupd
 | 
						|
#define OCIObjectUnmark                  orioumk
 | 
						|
#define OCIObjectUnmarkByRef             orioumr
 | 
						|
#define OCIObjectAlwaysLatest            oriomkl
 | 
						|
#define OCIObjectNotAlwaysLatest         oriouml
 | 
						|
#define OCIObjectMarkDeleteByRef         oriordl
 | 
						|
#define OCIObjectMarkDelete              oriopdl
 | 
						|
#define OCIObjectFlush                   oriofls
 | 
						|
#define OCIObjectFlushRefresh            oriofrh
 | 
						|
#define OCIObjectCopy                    oriocpy
 | 
						|
#define OCIObjectGetTypeRef              oriogtr
 | 
						|
#define OCIObjectGetObjectRef            oriogor
 | 
						|
#define OCIObjectGetInd                  oriogns
 | 
						|
#define OCIObjectExists                  oriogex
 | 
						|
#define OCIObjectGetProperty             oriogpr
 | 
						|
#define OCIObjectRefresh                 oriorfs
 | 
						|
#define OCIObjectPinTable                oriogtb
 | 
						|
#define OCIObjectGetPrimaryKeyTypeRef    oriogpf
 | 
						|
#define OCIObjectMakeObjectRef           oriomrf
 | 
						|
 | 
						|
#define OCIObjectNew                     orionew
 | 
						|
#define OCIObjectPin                     oriopin
 | 
						|
#define OCIObjectFree                    oriofre
 | 
						|
#define OCIObjectArrayPin                orioapn
 | 
						|
#define OCIObjectIsDirty                 oriodrt
 | 
						|
#define OCIObjectIsDirtied               oriodrd
 | 
						|
#define OCIObjectIsLoaded                orioldd
 | 
						|
#define OCICacheFlush                    oricfls
 | 
						|
#define OCICacheRefresh                  oricrfs
 | 
						|
 | 
						|
#endif                                                        /* SLSHORTNAME */
 | 
						|
 | 
						|
/*---------------------------------------------------------------------------*/
 | 
						|
/*                       PUBLIC TYPES AND CONSTANTS                          */
 | 
						|
/*---------------------------------------------------------------------------*/
 | 
						|
 | 
						|
/* Also see oro.h. */
 | 
						|
 | 
						|
/*---------------------------------------------------------------------------*/
 | 
						|
/*                           PUBLIC FUNCTIONS                                */
 | 
						|
/*---------------------------------------------------------------------------*/
 | 
						|
/*---------------------------------------------------------------------------*/
 | 
						|
/*                       OBJECT/INSTANCE OPERATIONS                          */
 | 
						|
/*---------------------------------------------------------------------------*/
 | 
						|
 | 
						|
/*--------------------------- OCIObjectNew ----------------------------------*/
 | 
						|
sword OCIObjectNew(    OCIEnv *env, OCIError *err, const OCISvcCtx *svc,
 | 
						|
                       OCITypeCode typecode, OCIType *tdo, void  *table, 
 | 
						|
                       OCIDuration duration, boolean value, 
 | 
						|
                       void  **instance    );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectNew - OCI new (create) a standalone instance
 | 
						|
   PARAMETERS:
 | 
						|
        env  (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err  (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                        recorded in 'err' and this function returns OCI_ERROR.
 | 
						|
                        The error recorded in 'err' can be retrieved by calling
 | 
						|
                        OCIErrorGet().
 | 
						|
        svc      (IN) - OCI service handle.  
 | 
						|
        typecode (IN) - the typecode of the type of the instance. 
 | 
						|
        tdo      (IN, optional) - pointer to the type descriptor object. The 
 | 
						|
                        TDO describes the type of the instance that is to be 
 | 
						|
                        created. Refer to OCITypeByName() for obtaining a TDO. 
 | 
						|
                        The TDO is required for creating a named type (e.g. an
 | 
						|
                        object or a collection).
 | 
						|
        table (IN, optional) - pointer to a table object which specifies a 
 | 
						|
                        table in the server.  This parameter can be set to NULL
 | 
						|
                        if no table is given. See the description below to find
 | 
						|
                        out how the table object and the TDO are used together
 | 
						|
                        to determine the kind of instances (persistent, 
 | 
						|
                        transient, value) to be created. Also see 
 | 
						|
                        OCIObjectPinTable() for retrieving a table object.
 | 
						|
        duration (IN) - this is an overloaded parameter. The use of this
 | 
						|
                        parameter is based on the kind of the instance that is 
 | 
						|
                        to be created.
 | 
						|
                        a) persistent object. This parameter specifies the
 | 
						|
                           pin duration.
 | 
						|
                        b) transient object. This parameter specififes the 
 | 
						|
                           allocation duration and pin duration. 
 | 
						|
                        c) value. This parameter specifies the allocation
 | 
						|
                           duration. 
 | 
						|
        value    (IN)  - specifies whether the created object is a value.
 | 
						|
                         If TRUE, then a value is created. Otherwise, a 
 | 
						|
                         referenceable object is created.  If the instance is 
 | 
						|
                         not an object, then this parameter is ignored.
 | 
						|
        instance (OUT) - address of the newly created instance
 | 
						|
                  
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function creates a new instance of the type specified by the 
 | 
						|
        typecode or the TDO. Based on the parameters 'typecode' (or 'tdo'), 
 | 
						|
        'value' and 'table', different kinds of instances can be created:
 | 
						|
            
 | 
						|
                                     The parameter 'table' is not NULL?
 | 
						|
 | 
						|
                                               yes              no
 | 
						|
             ----------------------------------------------------------------
 | 
						|
             | object type (value=TRUE)   |   value         |   value       |
 | 
						|
             ----------------------------------------------------------------
 | 
						|
             | object type (value=FALSE)  | persistent obj  | transient obj |
 | 
						|
       type  ----------------------------------------------------------------
 | 
						|
             | built-in type              |   value         |   value       |
 | 
						|
             ----------------------------------------------------------------
 | 
						|
             | collection type            |   value         |   value       |
 | 
						|
             ----------------------------------------------------------------
 | 
						|
 | 
						|
        This function allocates the top level memory chunk of an OTS instance.
 | 
						|
        The attributes in the top level memory are initialized (e.g. an 
 | 
						|
        attribute of varchar2 is initialized to a vstring of 0 length). 
 | 
						|
 | 
						|
        If the instance is an object, the object is marked existed but is 
 | 
						|
        atomically null. 
 | 
						|
 | 
						|
        FOR PERSISTENT OBJECTS:
 | 
						|
        The object is marked dirty and existed.  The allocation duration for 
 | 
						|
        the object is session. The object is pinned and the pin duration is 
 | 
						|
        specified by the given parameter 'duration'.
 | 
						|
 | 
						|
        FOR TRANSIENT OBJECTS:
 | 
						|
        The object is pinned. The allocation duration and the pin duration are 
 | 
						|
        specified by the given parameter 'duration'.
 | 
						|
 | 
						|
        FOR VALUES:
 | 
						|
        The allocation duration is specified by the given parameter 'duration'.
 | 
						|
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
 */
 | 
						|
 | 
						|
/*--------------------------- OCIObjectPin ----------------------------------*/
 | 
						|
sword OCIObjectPin(    OCIEnv *env, OCIError *err, OCIRef *object_ref, 
 | 
						|
                       OCIComplexObject *corhdl, OCIPinOpt pin_option, 
 | 
						|
                       OCIDuration pin_duration, 
 | 
						|
                       OCILockOpt lock_option, void  **object    );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectPin - OCI pin a referenceable object
 | 
						|
   PARAMETERS:
 | 
						|
        env        (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err        (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                              recorded in 'err' and this function returns 
 | 
						|
                              OCI_ERROR. The error recorded in 'err' can be 
 | 
						|
                              retrieved by calling OCIErrorGet().
 | 
						|
        object_ref     (IN) - the reference to the object. 
 | 
						|
        corhdl         (IN) - handle for complex object retrieval. 
 | 
						|
        pin_option     (IN) - See description below.
 | 
						|
        pin_duration   (IN) - The duration of which the object is being accesed
 | 
						|
                              by a client. The object is implicitly unpinned at
 | 
						|
                              the end of the pin duration. 
 | 
						|
                              If OCI_DURATION_NULL is passed, there is no pin 
 | 
						|
                              promotion if the object is already loaded into 
 | 
						|
                              the cache. If the object is not yet loaded, then 
 | 
						|
                              the pin duration is set to OCI_DURATION_DEFAULT. 
 | 
						|
        lock_option    (IN) - lock option (e.g., exclusive). If a lock option
 | 
						|
                              is specified, the object is locked in the server.
 | 
						|
                              See 'oro.h' for description about lock option. 
 | 
						|
        object        (OUT) - the pointer to the pinned object.
 | 
						|
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
   DESCRIPTION:
 | 
						|
 | 
						|
        This function pins a referenceable object instance given the object
 | 
						|
        reference. The process of pinning serves three purposes:
 | 
						|
 | 
						|
        1) locate an object given its reference. This is done by the object
 | 
						|
           cache which keeps track of the objects in the object heap.  
 | 
						|
 | 
						|
        2) notify the object cache that an object is being in use. An object 
 | 
						|
           can be pinned many times. A pinned object will remain in memory 
 | 
						|
           until it is completely unpinned (see OCIObjectUnpin()). 
 | 
						|
 | 
						|
        3) notify the object cache that a persistent object is being in use 
 | 
						|
           such that the persistent object cannot be aged out.  Since a 
 | 
						|
           persistent object can be loaded from the server whenever is needed, 
 | 
						|
           the memory utilization can be increased if a completely unpinned 
 | 
						|
           persistent object can be freed (aged out), even before the 
 | 
						|
           allocation duration is expired.  
 | 
						|
 | 
						|
        Also see OCIObjectUnpin() for more information about unpinning.
 | 
						|
 | 
						|
        FOR PERSISTENT OBJECTS:
 | 
						|
 | 
						|
        When pinning a persistent object, if it is not in the cache, the object
 | 
						|
        will be fetched from the persistent store. The allocation duration of
 | 
						|
        the object is session. If the object is already in the cache, it is
 | 
						|
        returned to the client.  The object will be locked in the server if a 
 | 
						|
        lock option is specified. 
 | 
						|
 | 
						|
        This function will return an error for a non-existent object.  
 | 
						|
 | 
						|
        A pin option is used to specify the copy of the object that is to be 
 | 
						|
        retrieved: 
 | 
						|
 | 
						|
        1) If option is OCI_PIN_ANY (pin any), if the object is already 
 | 
						|
           in the environment heap, return this object. Otherwise, the object 
 | 
						|
           is retrieved from the database.  This option is useful when the 
 | 
						|
           client knows that he has the exclusive access to the data in a 
 | 
						|
           session.
 | 
						|
 | 
						|
        2) If option is OCI_PIN_LATEST (pin latest), if the object is 
 | 
						|
           not cached, it is retrieved from the database.  If the object is 
 | 
						|
           cached, it is refreshed with the latest version. See 
 | 
						|
           OCIObjectRefresh() for more information about refreshing.
 | 
						|
 | 
						|
        3) If option is OCI_PIN_RECENT (pin recent), if the object is loaded
 | 
						|
           into the cache in the current transaction, the object is returned.
 | 
						|
           If the object is not loaded in the current transaction, the object
 | 
						|
           is refreshed from the server.
 | 
						|
 | 
						|
        FOR TRANSIENT OBJECTS:
 | 
						|
 | 
						|
        This function will return an error if the transient object has already 
 | 
						|
        been freed. This function does not return an error if an exclusive 
 | 
						|
        lock is specified in the lock option. 
 | 
						|
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
 */
 | 
						|
 | 
						|
/*------------------------------ OCIObjectUnpin -----------------------------*/
 | 
						|
sword OCIObjectUnpin(    OCIEnv *env, OCIError *err, void  *object    );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectUnpin - OCI unpin a referenceable object
 | 
						|
   PARAMETERS:
 | 
						|
        env   (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err   (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                         recorded in 'err' and this function returns OCI_ERROR.
 | 
						|
                         The error recorded in 'err' can be retrieved by 
 | 
						|
                         calling OCIErrorGet().
 | 
						|
        object    (IN) - pointer to an object
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
        - The specified object must be pinned.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function unpins an object.  An object is completely unpinned when 
 | 
						|
          1) the object was unpinned N times after it has been pinned N times
 | 
						|
             (by calling OCIObjectPin()).
 | 
						|
          2) it is the end of the pin duration
 | 
						|
          3) the function OCIObjectPinCountReset() is called 
 | 
						|
 | 
						|
        There is a pin count associated with each object which is incremented
 | 
						|
        whenever an object is pinned. When the pin count of the object is zero,
 | 
						|
        the object is said to be completely unpinned. An unpinned object can
 | 
						|
        be freed without error.
 | 
						|
 | 
						|
        FOR PERSISTENT OBJECTS:
 | 
						|
        When a persistent object is completely unpinned, it becomes a candidate
 | 
						|
        for aging. The memory of an object is freed when it is aged out. Aging
 | 
						|
        is used to maximize the utilization of memory.  An dirty object cannot 
 | 
						|
        be aged out unless it is flushed.
 | 
						|
 | 
						|
        FOR TRANSIENT OBJECTS:
 | 
						|
        The pin count of the object is decremented. A transient can be freed
 | 
						|
        only at the end of its allocation duration or when it is explicitly
 | 
						|
        deleted by calling OCIObjectFree().
 | 
						|
 | 
						|
        FOR VALUE:
 | 
						|
        This function will return an error for value.
 | 
						|
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
 */
 | 
						|
 | 
						|
/*---------------------------- OCIObjectPinCountReset -----------------------*/
 | 
						|
sword OCIObjectPinCountReset(    OCIEnv *env, OCIError *err, void  *object   );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectPinCountReset - OCI resets the pin count of a referenceable
 | 
						|
                                  object
 | 
						|
   PARAMETERS:
 | 
						|
        env   (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err   (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                         recorded in 'err' and this function returns OCI_ERROR.
 | 
						|
                         The error recorded in 'err' can be retrieved by
 | 
						|
                         calling OCIErrorGet().
 | 
						|
        object    (IN) - pointer to an object
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
        - The specified object must be pinned.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function completely unpins an object.  When an object is 
 | 
						|
        completely unpinned, it can be freed without error.  
 | 
						|
 | 
						|
        FOR PERSISTENT OBJECTS:
 | 
						|
        When a persistent object is completely unpinned, it becomes a candidate
 | 
						|
        for aging. The memory of an object is freed when it is aged out. Aging
 | 
						|
        is used to maximize the utilization of memory.  An dirty object cannot 
 | 
						|
        be aged out unless it is flushed.
 | 
						|
 | 
						|
        FOR TRANSIENT OBJECTS:
 | 
						|
        The pin count of the object is decremented. A transient can be freed
 | 
						|
        only at the end of its allocation duration or when it is explicitly
 | 
						|
        freed by calling OCIObjectFree().
 | 
						|
 | 
						|
        FOR VALUE:
 | 
						|
        This function will return an error for value.
 | 
						|
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
 */
 | 
						|
 | 
						|
/*--------------------------- OCIObjectLock ---------------------------------*/
 | 
						|
sword OCIObjectLock(    OCIEnv *env, OCIError *err, void  *object    );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectLock - OCI lock a persistent object
 | 
						|
   PARAMETERS:
 | 
						|
        env   (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err   (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                         recorded in 'err' and this function returns OCI_ERROR.
 | 
						|
                         The error recorded in 'err' can be retrieved by
 | 
						|
                         calling OCIErrorGet().
 | 
						|
        object    (IN) - pointer to the persistent object 
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
        - The specified object must be pinned.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function locks a persistent object at the server. Unlike
 | 
						|
        OCIObjectLockNoWait() this function waits if another user currently
 | 
						|
        holds a lock on the desired object. This function
 | 
						|
        returns an error if:
 | 
						|
          1) the object is non-existent.
 | 
						|
 | 
						|
        This function will return an error for transient objects and values.
 | 
						|
        The lock of an object is released at the end of a transaction.
 | 
						|
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
*/
 | 
						|
 | 
						|
/*------------------------ OCIObjectLockNoWait ------------------------------*/
 | 
						|
sword OCIObjectLockNoWait(    OCIEnv *env, OCIError *err, void  *object    );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectLockNoWait - OCI lock a persistent object, do not wait for
 | 
						|
                               the lock, return error if lock not available
 | 
						|
   PARAMETERS:
 | 
						|
        env   (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err   (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                         recorded in 'err' and this function returns OCI_ERROR.
 | 
						|
                         The error recorded in 'err' can be retrieved by
 | 
						|
                         calling OCIErrorGet().
 | 
						|
        object    (IN) - pointer to the persistent object 
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
        - The specified object must be pinned.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function locks a persistent object at the server. Unlike
 | 
						|
        OCIObjectLock() this function will not wait if another user holds
 | 
						|
        the lock on the desired object. This function returns an error if:
 | 
						|
          1) the object is non-existent.
 | 
						|
          2) the object is currently locked by another user in which
 | 
						|
             case this function returns with an error.
 | 
						|
 | 
						|
        This function will return an error for transient objects and values.
 | 
						|
        The lock of an object is released at the end of a transaction.
 | 
						|
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
*/
 | 
						|
 | 
						|
/*--------------------------- OCIObjectMarkUpdate ---------------------------*/
 | 
						|
sword OCIObjectMarkUpdate(    OCIEnv *env, OCIError *err, void  *object    );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectMarkUpdate - OCI marks an object as updated
 | 
						|
   PARAMETERS:
 | 
						|
        env   (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err   (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                         recorded in 'err' and this function returns OCI_ERROR.
 | 
						|
                         The error recorded in 'err' can be retrieved by
 | 
						|
                         calling OCIErrorGet().
 | 
						|
        object    (IN) - pointer to the persistent object 
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
        - The specified object must be pinned.
 | 
						|
   DESCRIPTION:
 | 
						|
        FOR PERSISTENT OBJECTS:
 | 
						|
        This function marks the specified persistent object as updated. The
 | 
						|
        persistent objects will be written to the server when the object cache
 | 
						|
        is flushed.  The object is not locked or flushed by this function. It
 | 
						|
        is an error to update a deleted object.  
 | 
						|
 | 
						|
        After an object is marked updated and flushed, this function must be
 | 
						|
        called again to mark the object as updated if it has been dirtied
 | 
						|
        after it is being flushed.
 | 
						|
 | 
						|
        FOR TRANSIENT OBJECTS:
 | 
						|
        This function marks the specified transient object as updated. The
 | 
						|
        transient objects will NOT be written to the server. It is an error
 | 
						|
        to update a deleted object.
 | 
						|
 | 
						|
        FOR VALUES:
 | 
						|
        It is an no-op for values.
 | 
						|
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
 */
 | 
						|
 | 
						|
/*----------------------------- OCIObjectUnmark -----------------------------*/
 | 
						|
sword OCIObjectUnmark(    OCIEnv *env, OCIError *err, void  *object    );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectUnmark - OCI unmarks an object 
 | 
						|
   PARAMETERS:
 | 
						|
        env   (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err   (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                         recorded in 'err' and this function returns OCI_ERROR.
 | 
						|
                         The error recorded in 'err' can be retrieved by
 | 
						|
                         calling OCIErrorGet().
 | 
						|
        object    (IN) - pointer to the persistent object
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
        - The specified object must be pinned.
 | 
						|
   DESCRIPTION:
 | 
						|
        FOR PERSISTENT OBJECTS AND TRANSIENT OBJECTS:
 | 
						|
        This function unmarks the specified persistent object as dirty. Changes
 | 
						|
        that are made to the object will not be written to the server. If the
 | 
						|
        object is marked locked, it remains marked locked.  The changes that
 | 
						|
        have already made to the object will not be undone implicitly. 
 | 
						|
 
 | 
						|
        FOR VALUES:
 | 
						|
        It is an no-op for values.
 | 
						|
 
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS.
 | 
						|
        if operation fails, return OCI_ERROR.
 | 
						|
 */
 | 
						|
 | 
						|
/*----------------------------- OCIObjectUnmarkByRef ------------------------*/
 | 
						|
sword OCIObjectUnmarkByRef(    OCIEnv *env, OCIError *err, OCIRef *ref    );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectUnmarkByRef - OCI unmarks an object by Ref
 | 
						|
   PARAMETERS:
 | 
						|
        env   (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err   (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                         recorded in 'err' and this function returns OCI_ERROR.
 | 
						|
                         The error recorded in 'err' can be retrieved by
 | 
						|
                         calling OCIErrorGet().
 | 
						|
        ref   (IN) - reference of the object
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
        - The specified object must be pinned.
 | 
						|
   DESCRIPTION:
 | 
						|
        FOR PERSISTENT OBJECTS AND TRANSIENT OBJECTS:
 | 
						|
        This function unmarks the specified persistent object as dirty. Changes
 | 
						|
        that are made to the object will not be written to the server. If the
 | 
						|
        object is marked locked, it remains marked locked.  The changes that
 | 
						|
        have already made to the object will not be undone implicitly.
 | 
						|
 
 | 
						|
        FOR VALUES:
 | 
						|
        It is an no-op for values.
 | 
						|
 
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS.
 | 
						|
        if operation fails, return OCI_ERROR.
 | 
						|
 */
 | 
						|
 | 
						|
/*--------------------------- OCIObjectFree ---------------------------------*/
 | 
						|
sword OCIObjectFree(    OCIEnv *env, OCIError *err, void  *instance, 
 | 
						|
                        ub2 flags   );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectFree - OCI free (and unpin) an standalone instance 
 | 
						|
   PARAMETERS:
 | 
						|
        env    (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err    (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                          recorded in 'err' and this function returns 
 | 
						|
                          OCI_ERROR.  The error recorded in 'err' can be 
 | 
						|
                          retrieved by calling OCIErrorGet().
 | 
						|
        instance   (IN) - pointer to a standalone instance.
 | 
						|
        flags      (IN) - If OCI_OBJECT_FREE_FORCE is set, free the object
 | 
						|
                          even if it is pinned or dirty.
 | 
						|
                          If OCI_OBJECT_FREE_NONULL is set, the null
 | 
						|
                          structure will not be freed. 
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
        - The instance to be freed must be standalone.
 | 
						|
        - If the instance is a referenceable object, the object must be pinned.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function deallocates all the memory allocated for an OTS instance,
 | 
						|
        including the null structure.
 | 
						|
 | 
						|
        FOR PERSISTENT OBJECTS:
 | 
						|
        This function will return an error if the client is attempting to free 
 | 
						|
        a dirty persistent object that has not been flushed. The client should 
 | 
						|
        either flush the persistent object or set the parameter 'flag' to  
 | 
						|
        OCI_OBJECT_FREE_FORCE.
 | 
						|
 | 
						|
        This function will call OCIObjectUnpin() once to check if the object 
 | 
						|
        can be completely unpin. If it succeeds, the rest of the function will 
 | 
						|
        proceed to free the object.  If it fails, then an error is returned 
 | 
						|
        unless the parameter 'flag' is set to OCI_OBJECT_FREE_FORCE.
 | 
						|
 
 | 
						|
        Freeing a persistent object in memory will not change the persistent 
 | 
						|
        state of that object at the server.  For example, the object will 
 | 
						|
        remain locked after the object is freed.
 | 
						|
 | 
						|
        FOR TRANSIENT OBJECTS:
 | 
						|
 | 
						|
        This function will call OCIObjectUnpin() once to check if the object 
 | 
						|
        can be completely unpin. If it succeeds, the rest of the function will 
 | 
						|
        proceed to free the object.  If it fails, then an error is returned 
 | 
						|
        unless the parameter 'flag' is set to OCI_OBJECT_FREE_FORCE. 
 | 
						|
 | 
						|
        FOR VALUES:
 | 
						|
        The memory of the object is freed immediately. 
 | 
						|
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
*/
 | 
						|
 | 
						|
/*----------------------- OCIObjectMarkDeleteByRef --------------------------*/
 | 
						|
sword OCIObjectMarkDeleteByRef(    OCIEnv *env, OCIError *err, 
 | 
						|
                                   OCIRef *object_ref);
 | 
						|
/*
 | 
						|
   NAME: OCIObjectMarkDeleteByRef - OCI "delete" (and unpin) an object given
 | 
						|
                                    a reference
 | 
						|
   PARAMETERS:
 | 
						|
        env     (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err     (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                           recorded in 'err' and this function returns 
 | 
						|
                           OCI_ERROR.  The error recorded in 'err' can be 
 | 
						|
                           retrieved by calling OCIErrorGet().
 | 
						|
        object_ref  (IN) - ref of the object to be deleted
 | 
						|
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function marks the object designated by 'object_ref' as deleted.
 | 
						|
 | 
						|
        FOR PERSISTENT OBJECTS:
 | 
						|
        If the object is not loaded, then a temporary object is created and is 
 | 
						|
        marked deleted. Otherwise, the object is marked deleted.  
 | 
						|
 | 
						|
        The object is deleted in the server when the object is flushed.
 | 
						|
 | 
						|
        FOR TRANSIENT OBJECTS:
 | 
						|
        The object is marked deleted.  The object is not freed until it is
 | 
						|
        unpinned.
 | 
						|
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
 */
 | 
						|
 | 
						|
/*--------------------------- OCIObjectMarkDelete ---------------------------*/
 | 
						|
sword OCIObjectMarkDelete(    OCIEnv *env, OCIError *err, void  *instance    );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectMarkDelete - OCI "delete" an instance given a Pointer 
 | 
						|
   PARAMETERS:
 | 
						|
        env    (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err    (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                          recorded in 'err' and this function returns 
 | 
						|
                          OCI_ERROR.  The error recorded in 'err' can be 
 | 
						|
                          retrieved by calling OCIErrorGet().
 | 
						|
        instance   (IN) - pointer to the instance 
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
        - The instance must be standalone.
 | 
						|
        - If the instance is a referenceable object, then it must be pinned.
 | 
						|
   DESCRIPTION:
 | 
						|
 | 
						|
        FOR PERSISTENT OBJECTS:
 | 
						|
        The object is marked deleted.  The memory of the object is not freed.
 | 
						|
        The object is deleted in the server when the object is flushed.
 | 
						|
 | 
						|
        FOR TRANSIENT OBJECTS:
 | 
						|
        The object is marked deleted.  The memory of the object is not freed.
 | 
						|
 | 
						|
        FOR VALUES: 
 | 
						|
        This function frees a value immediately. 
 | 
						|
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
 */
 | 
						|
 | 
						|
/*---------------------------- OCIObjectFlush -------------------------------*/
 | 
						|
sword OCIObjectFlush(    OCIEnv *env, OCIError *err, void  *object    );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectFlush - OCI flush a persistent object
 | 
						|
   PARAMETERS:
 | 
						|
        env    (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err    (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                          recorded in 'err' and this function returns 
 | 
						|
                          OCI_ERROR.  The error recorded in 'err' can be 
 | 
						|
                          retrieved by calling OCIErrorGet().
 | 
						|
        object     (IN) - pointer to the persistent object 
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
        - The specified object must be pinned.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function flushes a modified persistent object to the server.
 | 
						|
        An exclusive lock is obtained implicitly for the object when flushed.
 | 
						|
 | 
						|
        When the object is written to the server, triggers may be fired.
 | 
						|
        Objects can be modified by the triggers at the server.  To keep the  
 | 
						|
        objects in the object cache being coherent with the database, the
 | 
						|
        clients can free or refresh the objects in the cache. 
 | 
						|
 | 
						|
        This function will return an error for transient objects and values.
 | 
						|
        
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
 */
 | 
						|
 | 
						|
/*------------------------ OCIObjectRefresh ---------------------------------*/
 | 
						|
sword OCIObjectRefresh(    OCIEnv *env, OCIError *err, void  *object    );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectRefresh - OCI refresh a persistent object
 | 
						|
   PARAMETERS:
 | 
						|
        env    (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err    (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                          recorded in 'err' and this function returns 
 | 
						|
                          OCI_ERROR.  The error recorded in 'err' can be 
 | 
						|
                          retrieved by calling OCIErrorGet().
 | 
						|
        object     (IN) - pointer to the persistent object 
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
        - The specified object must be pinned.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function refreshes an unmarked object with data retrieved from the
 | 
						|
        latest snapshot in the server. An object should be refreshed when the 
 | 
						|
        objects in the cache are inconsistent with the objects at 
 | 
						|
        the server:
 | 
						|
        1) When an object is flushed to the server, triggers can be fired to
 | 
						|
           modify more objects in the server.  The same objects (modified by 
 | 
						|
           the triggers) in the object cache become obsolete.
 | 
						|
        2) When the user issues a SQL or executes a PL/SQL procedure to modify
 | 
						|
           any object in the server, the same object in the cache becomes
 | 
						|
           obsolete.
 | 
						|
 | 
						|
        The object that is refreshed will be 'replaced-in-place'. When an
 | 
						|
        object is 'replaced-in-place', the top level memory of the object will 
 | 
						|
        be reused so that new data can be loaded into the same memory address. 
 | 
						|
        The top level memory of the null structre is also reused. Unlike the
 | 
						|
        top level memory chunk, the secondary memory chunks may be resized and
 | 
						|
        reallocated.  The client should be careful when holding onto a pointer 
 | 
						|
        to the secondary memory chunk (e.g. assigning the address of a 
 | 
						|
        secondary memory to a local variable), since this pointer can become 
 | 
						|
        invalid after the object is refreshed.
 | 
						|
 | 
						|
        The object state will be modified as followed after being refreshed: 
 | 
						|
          - existent : set to appropriate value
 | 
						|
          - pinned   : unchanged 
 | 
						|
          - allocation duration : unchanged 
 | 
						|
          - pin duration : unchanged 
 | 
						|
        
 | 
						|
        This function is an no-op for transient objects or values.
 | 
						|
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
 */
 | 
						|
 | 
						|
/*---------------------------- OCIObjectCopy --------------------------------*/
 | 
						|
sword OCIObjectCopy(    OCIEnv *env, OCIError *err, const OCISvcCtx *svc, 
 | 
						|
                        void  *source, void  *null_source,
 | 
						|
                        void  *target, void  *null_target, OCIType *tdo, 
 | 
						|
                        OCIDuration duration, ub1 option    );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectCopy - OCI copy one instance to another
 | 
						|
   PARAMETERS:
 | 
						|
        env     (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err     (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                           recorded in 'err' and this function returns 
 | 
						|
                           OCI_ERROR.  The error recorded in 'err' can be 
 | 
						|
                           retrieved by calling OCIErrorGet().
 | 
						|
        svc         (IN) - OCI service context handle
 | 
						|
        source      (IN) - pointer to the source instance 
 | 
						|
        null_source (IN) - pointer to the null structure of the source
 | 
						|
        target      (IN) - pointer to the target instance
 | 
						|
        null_target (IN) - pointer to the null structure of the target 
 | 
						|
        tdo         (IN) - the TDO for both source and target
 | 
						|
        duration    (IN) - allocation duration of the target memory
 | 
						|
        option      (IN) - specify the copy option:
 | 
						|
                        OROOCOSFN - Set Reference to Null. All references
 | 
						|
                        in the source will not be copied to the target. The
 | 
						|
                        references in the target are set to null. 
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
        - If source or target is referenceable, it must be pinned.
 | 
						|
        - The target or the containing instance of the target must be already
 | 
						|
          be instantiated (e.g. created by OCIObjectNew()).
 | 
						|
        - The source and target instances must be of the same type. If the
 | 
						|
          source and target are located in a different databases, then the
 | 
						|
          same type must exist in both databases.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function copies the contents of the 'source' instance to the
 | 
						|
        'target' instance. This function performs a deep-copy such that the 
 | 
						|
        data that is copied/duplicated include:
 | 
						|
        a) all the top level attributes (see the exceptions below)
 | 
						|
        b) all the secondary memory (of the source) that is reachable from the
 | 
						|
           top level attributes.
 | 
						|
        c) the null structure of the instance
 | 
						|
 | 
						|
        Memory is allocated with the specified allocation duration. 
 | 
						|
 | 
						|
        Certain data items are not copied: 
 | 
						|
        a) If the option OCI_OBJECTCOPY_NOREF is specified, then all references
 | 
						|
           in the source are not copied. Instead, the references in the target
 | 
						|
           are set to null.
 | 
						|
        b) If the attribute is a LOB, then it is set to null.
 | 
						|
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
 */
 | 
						|
 | 
						|
/*---------------------------- OCIObjectGetTypeRef --------------------------*/
 | 
						|
sword OCIObjectGetTypeRef(    OCIEnv *env, OCIError *err, void  *instance, 
 | 
						|
                              OCIRef *type_ref    );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectGetTypeRef - get the type reference of a standalone object
 | 
						|
   PARAMETERS:
 | 
						|
        env   (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err   (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                         recorded in 'err' and this function returns 
 | 
						|
                         OCI_ERROR.  The error recorded in 'err' can be 
 | 
						|
                         retrieved by calling OCIErrorGet().
 | 
						|
        instance  (IN) - pointer to an standalone instance 
 | 
						|
        type_ref (OUT) - reference to the type of the object.  The reference 
 | 
						|
                         must already be allocated.
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
        - The instance must be standalone.
 | 
						|
        - If the object is referenceable, the specified object must be pinned.
 | 
						|
        - The reference must already be allocated.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function returns a reference to the TDO of a standalone instance. 
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
 */
 | 
						|
 | 
						|
/*--------------------------- OCIObjectGetObjectRef -------------------------*/
 | 
						|
sword OCIObjectGetObjectRef(    OCIEnv *env, OCIError *err, void  *object, 
 | 
						|
                                OCIRef *object_ref    );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectGetObjectRef - OCI get the object reference of an 
 | 
						|
                                 referenceable object
 | 
						|
   PARAMETERS:
 | 
						|
        env     (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err     (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                           recorded in 'err' and this function returns 
 | 
						|
                           OCI_ERROR.  The error recorded in 'err' can be 
 | 
						|
                           retrieved by calling OCIErrorGet().
 | 
						|
        object      (IN) - pointer to a persistent object
 | 
						|
        object_ref (OUT) - reference of the given object. The reference must 
 | 
						|
                           already be allocated.
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
        - The specified object must be pinned.
 | 
						|
        - The reference must already be allocated.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function returns a reference to the given object.  It returns an 
 | 
						|
        error for values. 
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
 */
 | 
						|
 | 
						|
/*--------------------------- OCIObjectMakeObjectRef -----------------------*/
 | 
						|
sword OCIObjectMakeObjectRef(    OCIEnv *env, OCIError *err, 
 | 
						|
                                 const OCISvcCtx *svc, void  * table,
 | 
						|
                                 void  **values, ub4 array_len, 
 | 
						|
                                 OCIRef *object_ref    );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectMakeObjectRef - OCI Create an object reference to a 
 | 
						|
                                 referenceable object.
 | 
						|
   PARAMETERS:
 | 
						|
        env     (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err     (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                           recorded in 'err' and this function returns 
 | 
						|
                           OCI_ERROR.  The error recorded in 'err' can be 
 | 
						|
                           retrieved by calling OCIErrorGet().
 | 
						|
        svc         (IN) - the service context
 | 
						|
        table       (IN) - A pointer to the table object (must be pinned)
 | 
						|
        attrlist    (IN) - A list of values (OCI type values) from which
 | 
						|
                           the ref is to be created.
 | 
						|
        attrcnt     (IN)  - The length of the attrlist array. 
 | 
						|
        object_ref (OUT) - reference of the given object. The reference must 
 | 
						|
                           already be allocated. 
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
        - The specified table object must be pinned.
 | 
						|
        - The reference must already be allocated.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function creates a reference given the values that make up the 
 | 
						|
        reference and also a pointer to the table object. 
 | 
						|
        Based on the table's OID property, whether it is a pk based OID or
 | 
						|
        a system generated OID, the function creates a sys-generated REF or
 | 
						|
        a pk based REF.
 | 
						|
        In case of system generated REFs pass in a OCIRaw which is 16 bytes
 | 
						|
        long contatining the sys generated OID.
 | 
						|
        In case of PK refs pass in the OCI equivalent for numbers, chars etc..
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
 */
 | 
						|
 | 
						|
/*--------------------------- OCIObjectGetPrimaryKeyTypeRef --------------- */ 
 | 
						|
sword OCIObjectGetPrimaryKeyTypeRef( OCIEnv *env, OCIError *err,
 | 
						|
                                     const OCISvcCtx *svc, void  *table, 
 | 
						|
                                     OCIRef *type_ref );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectGetPrimaryKeyTypeRef - OCI get the REF to the pk OID type 
 | 
						|
   PARAMETERS:
 | 
						|
        env     (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err     (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                           recorded in 'err' and this function returns 
 | 
						|
                           OCI_ERROR.  The error recorded in 'err' can be 
 | 
						|
                           retrieved by calling OCIErrorGet().
 | 
						|
        svc     (IN)     - the service context 
 | 
						|
        table   (IN)     - pointer to the table object
 | 
						|
        type_ref   (OUT) - reference of the pk type. The reference must 
 | 
						|
                           already be allocated.
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
        - The specified table object must be pinned.
 | 
						|
        - The reference must already be allocated.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function returns a reference to the pk type.  It returns an 
 | 
						|
        error for values.  If the table is not a Pk oid table/view, then
 | 
						|
        it returns error.
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
 */
 | 
						|
 | 
						|
/*-------------------------- OCIObjectGetInd --------------------------------*/
 | 
						|
sword OCIObjectGetInd(    OCIEnv *env, OCIError *err, void  *instance, 
 | 
						|
                          void  **null_struct    );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectGetInd - OCI get the null structure of a standalone object  
 | 
						|
   PARAMETERS:
 | 
						|
        env     (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err     (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                           recorded in 'err' and this function returns 
 | 
						|
                           OCI_ERROR.  The error recorded in 'err' can be 
 | 
						|
                           retrieved by calling OCIErrorGet().
 | 
						|
        instance      (IN) - pointer to the instance 
 | 
						|
        null_struct (OUT) - null structure 
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
        - The object must be standalone.
 | 
						|
        - If the object is referenceable, the specified object must be pinned.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function returns the null structure of an instance. This function
 | 
						|
        will allocate the top level memory of the null structure if it is not
 | 
						|
        already allocated. If an null structure cannot be allocated for the 
 | 
						|
        instance, then an error is returned. This function only works for 
 | 
						|
        ADT or row type instance. 
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
 */
 | 
						|
 | 
						|
/*------------------------- OCIObjectExists --------------------------------*/
 | 
						|
sword OCIObjectExists(OCIEnv *env, OCIError *err, void  *ins, boolean *exist); 
 | 
						|
/*
 | 
						|
   NAME: OCIObjectExist - OCI checks if the object exists 
 | 
						|
   PARAMETERS:
 | 
						|
        env       (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err       (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                             recorded in 'err' and this function returns 
 | 
						|
                             OCI_ERROR.  The error recorded in 'err' can be 
 | 
						|
                             retrieved by calling OCIErrorGet().
 | 
						|
        ins           (IN) - pointer to an instance 
 | 
						|
        exist        (OUT) - return TRUE if the object exists
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
        - The object must be standalone.
 | 
						|
        - if object is a referenceable, it must be pinned.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function returns the existence of an instance. If the instance
 | 
						|
        is a value, this function always returns TRUE.
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
 */
 | 
						|
 | 
						|
/*------------------------- OCIObjectGetProperty ---------------------------*/
 | 
						|
sword OCIObjectGetProperty(OCIEnv *envh, OCIError *errh, const void  *obj, 
 | 
						|
                           OCIObjectPropId propertyId,
 | 
						|
                           void  *property, ub4 *size );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectGetProperty - OCIObject Get Property of given object
 | 
						|
   PARAMETERS:
 | 
						|
        env       (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err       (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                             recorded in 'err' and this function returns
 | 
						|
                             OCI_ERROR.  The error recorded in 'err' can be
 | 
						|
                             retrieved by calling OCIErrorGet().
 | 
						|
        obj           (IN) - object whose property is returned
 | 
						|
        propertyId    (IN) - id which identifies the desired property
 | 
						|
        property     (OUT) - buffer into which the desired property is
 | 
						|
                             copied
 | 
						|
        size      (IN/OUT) - on input specifies the size of the property buffer
 | 
						|
                             passed by caller, on output will contain the 
 | 
						|
                             size in bytes of the property returned.
 | 
						|
                             This parameter is required for string type 
 | 
						|
                             properties only (e.g OCI_OBJECTPROP_SCHEMA,
 | 
						|
                             OCI_OBJECTPROP_TABLE). For non-string
 | 
						|
                             properties this parameter is ignored since
 | 
						|
                             the size is fixed.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function returns the specified property of the object.
 | 
						|
        The desired property is identified by 'propertyId'. The property
 | 
						|
        value is copied into 'property' and for string typed properties
 | 
						|
        the string size is returned via 'size'. 
 | 
						|
        
 | 
						|
        Objects are classified as persistent, transient and value
 | 
						|
        depending upon the lifetime and referenceability of the object.
 | 
						|
        Some of the properties are applicable only to persistent
 | 
						|
        objects and some others only apply to persistent and 
 | 
						|
        transient objects. An error is returned if the user tries to 
 | 
						|
        get a property which in not applicable to the given object. 
 | 
						|
        To avoid such an error, the user should first check whether
 | 
						|
        the object is persistent or transient or value 
 | 
						|
        (OCI_OBJECTPROP_LIFETIME property) and then appropriately
 | 
						|
        query for other properties.
 | 
						|
 | 
						|
        The different property ids and the corresponding type of 
 | 
						|
        'property' argument is given below.
 | 
						|
 | 
						|
          OCI_OBJECTPROP_LIFETIME 
 | 
						|
            This identifies whether the given object is a persistent
 | 
						|
            object (OCI_OBJECT_PERSISTENT) or a 
 | 
						|
            transient object (OCI_OBJECT_TRANSIENT) or a
 | 
						|
            value instance (OCI_OBJECT_VALUE).
 | 
						|
            'property' argument must be a pointer to a variable of 
 | 
						|
            type OCIObjectLifetime.
 | 
						|
            
 | 
						|
          OCI_OBJECTPROP_SCHEMA
 | 
						|
            This returns the schema name of the table in which the 
 | 
						|
            object exists. An error is returned if the given object 
 | 
						|
            points to a transient instance or a value. If the input 
 | 
						|
            buffer is not big enough to hold the schema name an error 
 | 
						|
            is returned, the error message will communicate the 
 | 
						|
            required size. Upon success, the size of the returned 
 | 
						|
            schema name in bytes is returned via 'size'.
 | 
						|
            'property' argument must be an array of type text and 'size'
 | 
						|
            should be set to size of array in bytes by the caller.
 | 
						|
 | 
						|
          OCI_OBJECTPROP_TABLE
 | 
						|
            This returns the table name in which the object exists. An 
 | 
						|
            error is returned if the given object points to a 
 | 
						|
            transient instance or a value. If the input buffer is not 
 | 
						|
            big enough to hold the table name an error is returned, 
 | 
						|
            the error message will communicate the required size. Upon 
 | 
						|
            success, the size of the returned table name in bytes is 
 | 
						|
            returned via 'size'. 'property' argument must be an array 
 | 
						|
            of type text and 'size' should be set to size of array in 
 | 
						|
            bytes by the caller.
 | 
						|
            
 | 
						|
          OCI_OBJECTPROP_PIN_DURATION
 | 
						|
            This returns the pin duration of the object.
 | 
						|
            An error is returned if the given object points to a value 
 | 
						|
            instance. Valid pin durations are: OCI_DURATION_SESSION and
 | 
						|
            OCI_DURATION_TRANS.
 | 
						|
            'property' argument must be a pointer to a variable of type 
 | 
						|
            OCIDuration.
 | 
						|
            
 | 
						|
          OCI_OBJECTPROP_ALLOC_DURATION
 | 
						|
            This returns the allocation duration of the object.
 | 
						|
            Valid allocation durations are: OCI_DURATION_SESSION and
 | 
						|
            OCI_DURATION_TRANS.
 | 
						|
            'property' argument must be a pointer to a variable of type 
 | 
						|
            OCIDuration.
 | 
						|
            
 | 
						|
          OCI_OBJECTPROP_LOCK
 | 
						|
            This returns the lock status of the 
 | 
						|
            object. The possible lock status is enumerated by OCILockOpt.
 | 
						|
            An error is returned if the given object points to a transient
 | 
						|
            or value instance.
 | 
						|
            'property' argument must be a pointer to a variable of 
 | 
						|
            type OCILockOpt.
 | 
						|
            Note, the lock status of an object can also be retrieved by
 | 
						|
            calling OCIObjectIsLocked().
 | 
						|
 | 
						|
          OCI_OBJECTPROP_MARKSTATUS
 | 
						|
            This returns the status flag which indicates whether the
 | 
						|
            object is a new object, updated object and/or deleted object.
 | 
						|
            The following macros can be used to test the mark status
 | 
						|
            flag:
 | 
						|
 | 
						|
              OCI_OBJECT_IS_UPDATED(flag)
 | 
						|
              OCI_OBJECT_IS_DELETED(flag)
 | 
						|
              OCI_OBJECT_IS_NEW(flag)
 | 
						|
              OCI_OBJECT_IS_DIRTY(flag)
 | 
						|
 | 
						|
            An object is dirty if it is a new object or marked deleted or 
 | 
						|
            marked updated.
 | 
						|
            An error is returned if the given object points to a transient
 | 
						|
            or value instance. 'property' argument must be of type 
 | 
						|
            OCIObjectMarkStatus.
 | 
						|
            
 | 
						|
          OCI_OBJECTPROP_VIEW
 | 
						|
            This identifies whether the specified object is a view object
 | 
						|
            or not. If property value returned is TRUE, it indicates the
 | 
						|
            object is a view otherwise it is not.
 | 
						|
            'property' argument must be of type boolean.
 | 
						|
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS.
 | 
						|
        if operation fails, return OCI_ERROR. Possible errors are TBD
 | 
						|
 */
 | 
						|
 | 
						|
/*---------------------------- OCIObjectIsLocked --------------------------*/
 | 
						|
sword OCIObjectIsLocked(    OCIEnv *env, OCIError *err, void  *ins,
 | 
						|
                              boolean *lock);
 | 
						|
/*
 | 
						|
   NAME: OCIObjectIsLocked - OCI get the lock status of a standalone object
 | 
						|
   PARAMETERS:
 | 
						|
        env       (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err       (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                             recorded in 'err' and this function returns
 | 
						|
                             OCI_ERROR.  The error recorded in 'err' can be
 | 
						|
                             retrieved by calling OCIErrorGet().
 | 
						|
        ins           (IN) - pointer to an instance
 | 
						|
        lock         (OUT) - return value for the lock status.
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
        - The instance must be standalone.
 | 
						|
        - If the object is referenceable, the specified object must be pinned.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function returns the lock status of an instance. If the instance
 | 
						|
        is a value, this function always returns FALSE.
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS.
 | 
						|
        if operation fails, return OCI_ERROR.
 | 
						|
 */
 | 
						|
 | 
						|
/*------------------------- OCIObjectIsDirty ------------------------------*/
 | 
						|
sword OCIObjectIsDirty(    OCIEnv *env, OCIError *err, void  *ins,
 | 
						|
                           boolean *dirty);
 | 
						|
/*
 | 
						|
   NAME: OCIObjectIsDirty - OCI get the dirty status of a standalone object
 | 
						|
   PARAMETERS:
 | 
						|
        env       (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err       (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                             recorded in 'err' and this function returns
 | 
						|
                             OCI_ERROR.  The error recorded in 'err' can be
 | 
						|
                             retrieved by calling OCIErrorGet().
 | 
						|
        ins           (IN) - pointer to an instance
 | 
						|
        dirty        (OUT) - return value for the dirty status.
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
        - The instance must be standalone.
 | 
						|
        - if instance is an object, the instance must be pinned.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function returns the dirty status of an instance. If the instance
 | 
						|
        is a value, this function always returns FALSE.
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS.
 | 
						|
        if operation fails, return OCI_ERROR.
 | 
						|
 */
 | 
						|
 | 
						|
/*--------------------------- OCIObjectPinTable -----------------------------*/
 | 
						|
sword OCIObjectPinTable(    OCIEnv *env, OCIError *err, const OCISvcCtx *svc, 
 | 
						|
                  const oratext *schema_name, 
 | 
						|
                  ub4 s_n_length, const oratext *object_name, ub4 o_n_length, 
 | 
						|
                  const OCIRef *scope_obj_ref, OCIDuration pin_duration, 
 | 
						|
                  void ** object    );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectPinTable - OCI get table object 
 | 
						|
   PARAMETERS:
 | 
						|
        env       (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err       (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                             recorded in 'err' and this function returns 
 | 
						|
                             OCI_ERROR.  The error recorded in 'err' can be 
 | 
						|
                             retrieved by calling OCIErrorGet().
 | 
						|
        svc                     (IN) - OCI service context handle
 | 
						|
        schema_name   (IN, optional) - schema name of the table 
 | 
						|
        s_n_length    (IN, optional) - length of the schema name
 | 
						|
        object_name   (IN) - name of the table 
 | 
						|
        o_n_length    (IN) - length of the table name
 | 
						|
        scope_obj_ref (IN, optional) - reference of the scoping object
 | 
						|
        pin_duration  (IN) - pin duration. See description in OCIObjectPin(). 
 | 
						|
        object       (OUT) - the pinned table object
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function pin a table object with the specified pin duration. 
 | 
						|
        The client can unpin the object by calling OCIObjectUnpin(). See 
 | 
						|
        OCIObjectPin() and OCIObjectUnpin() for more information about pinning
 | 
						|
        and unpinning. 
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
 */
 | 
						|
 | 
						|
/*------------------------- OCIObjectArrayPin -------------------------------*/
 | 
						|
sword OCIObjectArrayPin(OCIEnv *env, OCIError *err, OCIRef **ref_array, 
 | 
						|
                  ub4 array_size, OCIComplexObject **cor_array,
 | 
						|
                  ub4 cor_array_size, OCIPinOpt pin_option, 
 | 
						|
                  OCIDuration pin_duration, OCILockOpt lock, 
 | 
						|
                  void  **obj_array, ub4 *pos    );
 | 
						|
/*
 | 
						|
   NAME: OCIObjectArrayPin - ORIO array pin 
 | 
						|
   PARAMETERS:
 | 
						|
        env       (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err       (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                             recorded in 'err' and this function returns 
 | 
						|
                             OCI_ERROR.  The error recorded in 'err' can be 
 | 
						|
                             retrieved by calling OCIErrorGet().
 | 
						|
        ref_array     (IN) - array of references to be pinned 
 | 
						|
        array_size    (IN) - number of elements in the array of references 
 | 
						|
        pin_option    (IN) - pin option. See OCIObjectPin().
 | 
						|
        pin_duration  (IN) - pin duration. See OCIObjectPin(). 
 | 
						|
        lock_option   (IN) - lock option. See OCIObjectPin().
 | 
						|
        obj_array    (OUT) - If this argument is not NULL, the pinned objects 
 | 
						|
                             will be returned in the array. The user must 
 | 
						|
                             allocate this array with element type being 
 | 
						|
                             'void *'. The size of this array is identical to
 | 
						|
                             'array'. 
 | 
						|
        pos          (OUT) - If there is an error, this argument will contain
 | 
						|
                             the element that is causing the error.  Note that
 | 
						|
                             this argument is set to 1 for the first element in
 | 
						|
                             the ref_array. 
 | 
						|
   REQUIRE:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
        - If 'obj_array' is not NULL, then it must already be allocated and
 | 
						|
             the size of 'obj_array' is 'array_size'. 
 | 
						|
   DESCRIPTION:
 | 
						|
        This function pin an array of references.  All the pinned objects are 
 | 
						|
        retrieved from the database in one network roundtrip.  If the user 
 | 
						|
        specifies an output array ('obj_array'), then the address of the 
 | 
						|
        pinned objects will be assigned to the elements in the array. See
 | 
						|
        OCIObjectPin() for more information about pinning.
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
 */
 | 
						|
 | 
						|
/*---------------------------------------------------------------------------*/
 | 
						|
/*                           HEAP/CACHE OPERATIONS                           */
 | 
						|
/*---------------------------------------------------------------------------*/
 | 
						|
 | 
						|
/*--------------------------- OCICacheFlush ---------------------------------*/
 | 
						|
sword OCICacheFlush(    OCIEnv *env, OCIError *err, const OCISvcCtx *svc, 
 | 
						|
                  void  *context, OCIRef *(*get)(void  *context, ub1 *last),
 | 
						|
                  OCIRef **ref  );
 | 
						|
/*
 | 
						|
   NAME: OCICacheFlush - OCI flush persistent objects 
 | 
						|
   PARAMETERS:
 | 
						|
        env (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                      recorded in 'err' and this function returns 
 | 
						|
                      OCI_ERROR.  The error recorded in 'err' can be 
 | 
						|
                      retrieved by calling OCIErrorGet().
 | 
						|
        svc      (IN) [optional] - OCI service context.  If null pointer is
 | 
						|
                      specified, then the dirty objects in all connections
 | 
						|
                      will be flushed.
 | 
						|
        context  (IN) [optional] - specifies an user context that is an 
 | 
						|
                      argument to the client callback function 'get'. This 
 | 
						|
                      parameter is set to NULL if there is no user context.
 | 
						|
        get      (IN) [optional] - an client-defined function which acts an 
 | 
						|
                      iterator to retrieve a batch of dirty objects that need 
 | 
						|
                      to be flushed. If the function is not NULL, this function
 | 
						|
                      will be called to get a reference of a dirty object.  
 | 
						|
                      This is repeated until a null reference is returned by 
 | 
						|
                      the client function or the parameter 'last' is set to 
 | 
						|
                      TRUE. The parameter 'context' is passed to get() 
 | 
						|
                      for each invocation of the client function.  This 
 | 
						|
                      parameter should be NULL if user callback is not given.
 | 
						|
                      If the object that is returned by the client function is
 | 
						|
                      not a dirtied persistent object, the object is ignored.
 | 
						|
                      All the objects that are returned from the client
 | 
						|
                      function must be from newed or pinned the same service 
 | 
						|
                      context, otherwise, an error is signalled. Note that the 
 | 
						|
                      returned objects are flushed in the order in which they
 | 
						|
                      are marked dirty.
 | 
						|
        ref     (OUT) [optional] - if there is an error in flushing the 
 | 
						|
                      objects, (*ref) will point to the object that
 | 
						|
                      is causing the error.  If 'ref' is NULL, then the object 
 | 
						|
                      will not be returned.  If '*ref' is NULL, then a 
 | 
						|
                      reference will be allocated and set to point to the 
 | 
						|
                      object.  If '*ref' is not NULL, then the reference of
 | 
						|
                      the object is copied into the given space. If the
 | 
						|
                      error is not caused by any of the dirtied object,
 | 
						|
                      the given ref is initalized to be a NULL reference
 | 
						|
                      (OCIRefIsNull(*ref) is TRUE).
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function flushes the modified persistent objects from the 
 | 
						|
        environment heap to the server. The objects are flushed in the order 
 | 
						|
        that they are marked updated or deleted. 
 | 
						|
 | 
						|
        See OCIObjectFlush() for more information about flushing.
 | 
						|
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
 */
 | 
						|
 | 
						|
/*--------------------------- OCICacheRefresh -------------------------------*/
 | 
						|
sword OCICacheRefresh(OCIEnv *env, OCIError *err, const OCISvcCtx *svc,
 | 
						|
                  OCIRefreshOpt option, void  *context,
 | 
						|
                  OCIRef *(*get)(void  *context), OCIRef **ref);
 | 
						|
/*
 | 
						|
   NAME: OCICacheRefresh - OCI ReFreSh persistent objects 
 | 
						|
   PARAMETERS:
 | 
						|
        env (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                       recorded in 'err' and this function returns 
 | 
						|
                       OCI_ERROR.  The error recorded in 'err' can be 
 | 
						|
                       retrieved by calling OCIErrorGet().
 | 
						|
        svc     (IN) [optional] - OCI service context.  If null pointer is
 | 
						|
                      specified, then the persistent objects in all connections
 | 
						|
                      will be refreshed. 
 | 
						|
        option   (IN) [optional] - if OCI_REFRESH_LOAD is specified, all
 | 
						|
                      objects that is loaded within the transaction are
 | 
						|
                      refreshed. If the option is OCI_REFERSH_LOAD and the
 | 
						|
                      parameter 'get' is not NULL, this function will ignore
 | 
						|
                      the parameter. 
 | 
						|
        context  (IN) [optional] - specifies an user context that is an 
 | 
						|
                      argument to the client callback function 'get'. This 
 | 
						|
                      parameter is set to NULL if there is no user context.
 | 
						|
        get      (IN) [optional] - an client-defined function which acts an 
 | 
						|
                      iterator to retrieve a batch of objects that need to be
 | 
						|
                      refreshed. If the function is not NULL, this function
 | 
						|
                      will be called to get a reference of an object.  If 
 | 
						|
                      the reference is not NULL, then the object will be 
 | 
						|
                      refreshed.  These steps are repeated until a null 
 | 
						|
                      reference is returned by this function.  The parameter
 | 
						|
                      'context' is passed to get() for each invocation of the
 | 
						|
                      client function.  This parameter should be NULL if user 
 | 
						|
                      callback is not given.
 | 
						|
        ref     (OUT) [optional] - if there is an error in refreshing the
 | 
						|
                      objects, (*ref) will point to the object that
 | 
						|
                      is causing the error.  If 'ref' is NULL, then the object
 | 
						|
                      will not be returned.  If '*ref' is NULL, then a
 | 
						|
                      reference will be allocated and set to point to the
 | 
						|
                      object.  If '*ref' is not NULL, then the reference of
 | 
						|
                      the object is copied into the given space. If the
 | 
						|
                      error is not caused by any of the object,
 | 
						|
                      the given ref is initalized to be a NULL reference
 | 
						|
                      (OCIRefIsNull(*ref) is TRUE).
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function refreshes all pinned persistent objects. All unpinned 
 | 
						|
        persistent objects are freed.  See OCIObjectRefresh() for more 
 | 
						|
        information about refreshing.
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
 */
 | 
						|
 | 
						|
/*---------------------------- OCICacheUnpin --------------------------------*/
 | 
						|
sword OCICacheUnpin(    OCIEnv *env, OCIError *err, const OCISvcCtx *svc    );
 | 
						|
/*
 | 
						|
   NAME: OCICacheUnpin - OCI UNPin objects 
 | 
						|
   PARAMETERS:
 | 
						|
        env (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                       recorded in 'err' and this function returns 
 | 
						|
                       OCI_ERROR.  The error recorded in 'err' can be 
 | 
						|
                       retrieved by calling OCIErrorGet().
 | 
						|
        svc     (IN) [optional] - OCI service context. If null pointer is
 | 
						|
                       specified, then the objects in all connections
 | 
						|
                       will be unpinned.
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
   DESCRIPTION:
 | 
						|
        If a connection is specified, this function completely unpins the 
 | 
						|
        persistent objects in that connection. Otherwise, all persistent 
 | 
						|
        objects in the heap are completely unpinned. All transient objects in 
 | 
						|
        the heap are also completely unpinned. See OCIObjectUnpin() for more 
 | 
						|
        information about unpinning.
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
 */
 | 
						|
 | 
						|
/*----------------------------- OCICacheFree --------------------------------*/
 | 
						|
sword OCICacheFree(    OCIEnv *env, OCIError *err, const OCISvcCtx *svc    ); 
 | 
						|
/*
 | 
						|
   NAME: OCICacheFree - OCI FREe instances 
 | 
						|
   PARAMETERS:
 | 
						|
        env (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                       recorded in 'err' and this function returns 
 | 
						|
                       OCI_ERROR.  The error recorded in 'err' can be 
 | 
						|
                       retrieved by calling OCIErrorGet().
 | 
						|
        svc     (IN) [optional] - OCI service context. If null pointer is
 | 
						|
                       specified, then the objects in all connections
 | 
						|
                       will be freed.
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
   DESCRIPTION:
 | 
						|
        If a connection is specified, this function frees the persistent 
 | 
						|
        objects, transient objects and values allocated for that connection.  
 | 
						|
        Otherwise, all persistent objects, transient objects and values in the 
 | 
						|
        heap are freed. Objects are freed regardless of their pin count.  See 
 | 
						|
        OCIObjectFree() for more information about freeing an instance.
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return 
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS. 
 | 
						|
        if operation fails, return OCI_ERROR. 
 | 
						|
*/
 | 
						|
 | 
						|
/*---------------------------- OCICacheUnmark -------------------------------*/
 | 
						|
sword OCICacheUnmark(    OCIEnv *env, OCIError *err, const OCISvcCtx *svc    );
 | 
						|
/*
 | 
						|
   NAME: OCICacheUnmark - OCI Unmark all dirty objects
 | 
						|
   PARAMETERS:
 | 
						|
        env (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
        err (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                       recorded in 'err' and this function returns
 | 
						|
                       OCI_ERROR.  The error recorded in 'err' can be
 | 
						|
                       retrieved by calling OCIErrorGet().
 | 
						|
        svc     (IN) [optional] - OCI service context. If null pointer is
 | 
						|
                       specified, then the objects in all connections
 | 
						|
                       will be unmarked. 
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given.
 | 
						|
   DESCRIPTION:
 | 
						|
        If a connection is specified, this function unmarks all dirty objects 
 | 
						|
        in that connection.  Otherwise, all dirty objects in the cache are
 | 
						|
        unmarked. See OCIObjectUnmark() for more information about unmarking
 | 
						|
        an object.
 | 
						|
   RETURNS:
 | 
						|
        if environment handle or error handle is null, return
 | 
						|
        OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS.
 | 
						|
        if operation fails, return OCI_ERROR.
 | 
						|
 */
 | 
						|
 | 
						|
 | 
						|
sword OCIDurationBegin(    OCIEnv *env, OCIError *err, const OCISvcCtx *svc, 
 | 
						|
                           OCIDuration parent, OCIDuration *dur    );
 | 
						|
/*
 | 
						|
   NAME: OCIDurationBegin - OCI DURATION BEGIN
 | 
						|
   PARAMETERS:
 | 
						|
        env  (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
                        This should be passed NULL, when cartridge services
 | 
						|
                        are to be used.
 | 
						|
        err  (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                        recorded in 'err' and this function returns OCI_ERROR.
 | 
						|
                        The error recorded in 'err' can be retrieved by calling
 | 
						|
                       OCIErrorGet().
 | 
						|
        svc  (IN/OUT) - OCI service handle.  
 | 
						|
        parent   (IN) - parent for the duration to be started.
 | 
						|
        dur     (OUT) - newly created user duration 
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given for non-cartridge
 | 
						|
          services.
 | 
						|
        - For cartridge services, NULL should be given for environment handle
 | 
						|
        - A valid service handle must be given in all cases.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function starts a new user duration.  A user can have multiple
 | 
						|
        active user durations simultaneously. The user durations do not have
 | 
						|
        to be nested.
 | 
						|
 
 | 
						|
        The object subsystem predefines 3 durations :
 | 
						|
          1) session     - memory allocated with session duration comes from
 | 
						|
                           the UGA heap (OCI_DURATION_SESSION). A session 
 | 
						|
                           duration terminates at the end of the user session.
 | 
						|
          2) transaction - memory allocated with transaction duration comes
 | 
						|
                           from the UGA heap (OCI_DURATION_TRANS). A trans-
 | 
						|
                           action duration terminates at the end of the user
 | 
						|
                           transaction.
 | 
						|
          3) call        - memory allocated with call duration comes from PGA
 | 
						|
                           heap (OCI_DURATION_CALL). A call duration terminates
 | 
						|
                           at the end of the user call.
 | 
						|
 
 | 
						|
        Each user duration has a parent duration.  A parent duration can be a
 | 
						|
        predefined duration or another user duration.  The relationship between
 | 
						|
        a user duration and its parent duration (child duration) are:
 | 
						|
 
 | 
						|
         1) An user duration is nested within the parent duration. When its
 | 
						|
             parent duration terminates, the user duration will also terminate.
 | 
						|
         2) The memory allocated with an user duration comes from the heap of
 | 
						|
             its parent duration. For example, if the parent duration of an
 | 
						|
             user duration is call, then the memory allocated with the user
 | 
						|
             duration will also come from the PGA heap.
 | 
						|
 | 
						|
        This function can be used as both part of cartridge services as well 
 | 
						|
        as without cartridge services.
 | 
						|
        The difference in the function in the case of cartridge and 
 | 
						|
        non-cartridge services is:
 | 
						|
                In case of cartridge services, as descibed above a new user
 | 
						|
        duration is created as a child of the "parent" duration.
 | 
						|
                But when used for non-cartridge purposes, when a pre-defined
 | 
						|
        duration is passed in as parent, it is mapped to the cache duration
 | 
						|
        for that connection (which is created if not already present) and 
 | 
						|
        the new user duration will be child of the cache duration.
 | 
						|
 | 
						|
   RETURNS:
 | 
						|
        if environment handle and service handle is null or if error 
 | 
						|
        handle is null return OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS.
 | 
						|
        if operation fails, return OCI_ERROR.
 | 
						|
 */
 | 
						|
 | 
						|
 | 
						|
sword OCIDurationEnd(    OCIEnv *env, OCIError *err, const OCISvcCtx *svc, 
 | 
						|
                         OCIDuration duration    );
 | 
						|
/*
 | 
						|
   NAME: OCIDurationEnd - OCI DURATION END
 | 
						|
   PARAMETERS:
 | 
						|
        env  (IN/OUT) - OCI environment handle initialized in object mode
 | 
						|
                        This should be passed NULL, when cartridge services
 | 
						|
                        are to be used.
 | 
						|
        err  (IN/OUT) - error handle. If there is an error, it is
 | 
						|
                        recorded in 'err' and this function returns OCI_ERROR.
 | 
						|
                        The error recorded in 'err' can be retrieved by calling
 | 
						|
                       OCIErrorGet().
 | 
						|
        svc  (IN/OUT) - OCI service handle.  
 | 
						|
        dur     (OUT) - a previously created user duration using 
 | 
						|
                        OCIDurationBegin()
 | 
						|
   REQUIRES:
 | 
						|
        - a valid OCI environment handle must be given for non-cartridge
 | 
						|
          services.
 | 
						|
        - For cartridge services, NULL should be given for environment handle
 | 
						|
        - A valid service handle must be given in all cases.
 | 
						|
   DESCRIPTION:
 | 
						|
        This function terminates a user duration.  All memory allocated for
 | 
						|
        this duration is freed.
 | 
						|
 | 
						|
        This function can be used as both part of cartridge services as well 
 | 
						|
        as without cartridge services.  In both cased, the heap duration
 | 
						|
        is freed and all the allocated memory for that duration is freed.
 | 
						|
        The difference in the function in the case of cartridge and 
 | 
						|
        non-cartridge services is:
 | 
						|
                In case of non-cartridge services, if the duration is pre-
 | 
						|
        defined, the associated cache duration (see OCIDurationBegin())
 | 
						|
        is also terminated and the following is done.
 | 
						|
          1) The child durations are terminated.
 | 
						|
          2) All objects pinned for this duration are unpinned.
 | 
						|
          3) All instances allocated for this duration are freed.
 | 
						|
 | 
						|
                In case of cartridge services, only the heap duration is
 | 
						|
        freed.  All the context entries allocated for that duration are 
 | 
						|
        freed from the context hash table..
 | 
						|
 | 
						|
   RETURNS:
 | 
						|
        if environment handle and service handle is null or if error 
 | 
						|
        handle is null return OCI_INVALID_HANDLE.
 | 
						|
        if operation suceeds, return OCI_SUCCESS.
 | 
						|
        if operation fails, return OCI_ERROR.
 | 
						|
 */
 | 
						|
 | 
						|
/******************************************************************************
 | 
						|
**          DO  NOT  USE  THE  FUNCTIONS  BELOW!                             **
 | 
						|
**          UNSUPPORTED INTERFACE                                            **
 | 
						|
**          WILL BE REMOVED/CHANGED IN A FUTURE RELEASE                      **
 | 
						|
******************************************************************************/
 | 
						|
 | 
						|
sword OCIDurationGetParent(    OCIEnv *env, OCIError *err, 
 | 
						|
                               OCIDuration duration, OCIDuration *parent    );
 | 
						|
 | 
						|
sword OCIObjectAlwaysLatest(    OCIEnv *env, OCIError *err, void  *object    );
 | 
						|
 | 
						|
sword OCIObjectNotAlwaysLatest(    OCIEnv *env, OCIError *err, 
 | 
						|
                                   void  *object    );
 | 
						|
 | 
						|
sword OCIObjectFlushRefresh(    OCIEnv *env, OCIError *err, void  *object);
 | 
						|
 | 
						|
sword OCIObjectIsLoaded(    OCIEnv *env, OCIError *err, void  *ins, 
 | 
						|
                              boolean *load);
 | 
						|
 | 
						|
sword OCIObjectIsDirtied(    OCIEnv *env, OCIError *err, void  *ins,
 | 
						|
                              boolean *dirty);
 | 
						|
 | 
						|
sword OCICacheGetObjects(       OCIEnv *env, OCIError *err,
 | 
						|
                                const OCISvcCtx *svc,
 | 
						|
                                OCIObjectProperty property,
 | 
						|
                                void  *client_context,
 | 
						|
                                void (*client_callback)(
 | 
						|
                                    void  *client_context,
 | 
						|
                                    void  *object  ));
 | 
						|
 | 
						|
sword OCICacheRegister(      OCIEnv *env, OCIError *err,
 | 
						|
                             OCIObjectEvent event,
 | 
						|
                             void  *client_context,
 | 
						|
                             void (*client_callback)(
 | 
						|
                                    void  *client_context,
 | 
						|
                                    OCIObjectEvent event,
 | 
						|
                                    void  *object));
 | 
						|
 | 
						|
sword OCICacheFlushRefresh(    OCIEnv *env, OCIError *err, 
 | 
						|
                               const OCISvcCtx *svc, void  *context,
 | 
						|
                               OCIRef *(*get)(void  *context, ub1 *last),
 | 
						|
                               OCIRef **ref    );
 | 
						|
 | 
						|
sword OCIObjectSetData(OCIEnv *env, OCIError *err, void  *obj_hdr, 
 | 
						|
        void  *data);
 | 
						|
 | 
						|
sword OCIObjectGetNewOID(OCIEnv *env, OCIError *err, OCISvcCtx *svc, 
 | 
						|
        ub1 *oid);
 | 
						|
 | 
						|
 | 
						|
#endif /* ORI_ORACLE */
 |