Annotation of win32/sql/oracle/include/oci/oro.h, revision 1.1

1.1     ! parser      1: /* Copyright (c) Oracle Corporation 1994, 1995, 1996, 1997, 1998, 1999.  All Rights Reserved. */
        !             2: 
        !             3: /*
        !             4:   NAME
        !             5:     OCI - Oracle Object Interface for External/Internal/Kernel Clients
        !             6: 
        !             7:   DESCRIPTION
        !             8:     This header file contains Oracle object interface definitions which
        !             9:     can be included by external user applications, tools, as well as
        !            10:     the kernel.  It defines types and constants that are common to all
        !            11:     object interface which is being defined in several other header files
        !            12:     (e.g., ori.h, ort.h, and orl.h).
        !            13: 
        !            14:   RELATED DOCUMENTS
        !            15:     TBD
        !            16: 
        !            17:   INSPECTION STATUS [[ deletable if no inspection ]]
        !            18:     Inspection date:    [[ date of the last logging meeting ]]
        !            19:     Inspection status:  [[ exited, not exited, or N/A if exit is not a goal ]]
        !            20:     Estimated increasing cost defects per page:
        !            21:     Rule sets:          [[ rule sets inspected against or planned to be 
        !            22:                            inspected against ]]
        !            23: 
        !            24:   ACCEPTANCE REVIEW STATUS [[ deletable if no approval review ]]
        !            25:     Review date:    [[ date of the meeting where issues were logged and the 
        !            26:                        approval status was decided ]] 
        !            27:     Review status:  [[ current status:  accepted, conditionally accepted, 
        !            28:                        major revision required, rejected ]]
        !            29:     Reviewers:      [[ names of the members on the review team ]]
        !            30: 
        !            31:   PUBLIC FUNCTIONS
        !            32: 
        !            33:   EXAMPLES
        !            34:     Examples are given in the description of each function or macro where
        !            35:     relevant.
        !            36: 
        !            37:   MODIFIED
        !            38:     tnbui      07/28/99 - Remove OCI_TYPECODE_TIMESTAMP_ITZ                    
        !            39:     tnbui      07/21/99 - TS LOCAL TZ                                          
        !            40:     thoang     06/21/99 - Add OCI_TYPECODE_TIMESTAMP_ITZ
        !            41:     thoang     03/04/99 - Add datetime datatypes
        !            42:     rkasamse   10/20/98 - add OCI_ATTR_CACHE_ARRAYFLUSH
        !            43:     rkasamse   10/29/98 - add OCI_DURATION_CALLOUT
        !            44:     rkasamse   04/28/98 - OCI_OBJECT_DETECTCHANGE -> OCI_ATTR_OBJECT_DETECTCHAN
        !            45:     rkasamse   04/28/98 - OCI_OBJECT_NEWNOTNULL -> OCI_ATTR_OBJECT_NEWNOTNULL  
        !            46:     rkasamse   04/23/98 - add OCI_OBJECT_DETECTCHANGE
        !            47:     rkasamse   04/03/98 - add OCI_OBJECT_NEWNOTNULL                            
        !            48:     pmitra     04/01/98 - OCI_LOCK_X_NOWAIT added                              
        !            49:     rxgovind   02/18/98 - add OCI_TYPECODE_OPAQUE
        !            50:     rkasamse   02/13/98 - Add OCI_DURATION_PROCESS
        !            51:     rkasamse   12/02/97 -
        !            52:     cxcheng    07/28/97 - fix compile with SLSHORTNAME
        !            53:     skrishna   07/14/97 - add OCIObjectGetProperty
        !            54:     cxcheng    04/30/97 - make OCITypeParamMode values consistent with PL/SQL
        !            55:     skrishna   04/28/97 - undocument OCIObjectProperty & OCIObjectEvent
        !            56:     cxcheng    03/29/97 - remove all remaining short names
        !            57:     sthakur    03/20/97 - add casts to constants
        !            58:     cxcheng    02/21/97 - temporarily put SLSHORTNAME for PL/SQL
        !            59:     cxcheng    02/06/97 - take out short name support except with SLSHORTNAME
        !            60:     lchidamb   01/20/97 - update OCIRef comments
        !            61:     sgollapu   11/19/96 - Add OCI type codes for BOOL,REC,and TAB
        !            62:     cxcheng    11/19/96 - more typecode changes
        !            63:     cxcheng    11/13/96 - add #include for ocidfn.h
        !            64:     cxcheng    11/13/96 - add OCI_TYPECODE_ADT for compatibility
        !            65:     cxcheng    11/12/96 - add SQLT_NCO for named collection
        !            66:     cxcheng    11/11/96 - more changes to typecodes
        !            67:     cxcheng    11/07/96 - #define OCI_TYPECODE_MLSLABEL to SQLT_LAB
        !            68:     cxcheng    11/06/96 - fix #define omission for OROTCNAT
        !            69:     cxcheng    10/30/96 - move OCI_TYPECODE_* to ocidfn.h as SQLT_*
        !            70:     cxcheng    10/28/96 - more beautification changes
        !            71:     jboonleu   10/29/96 - add flags for freeing object
        !            72:     dchatter   10/26/96 - delete redef of OCISvcCtx, OCIError, OCIEnv
        !            73:     cxcheng    10/15/96 - more changes
        !            74:     cxcheng    10/14/96 - more final fixes to constants
        !            75:     mluong     10/11/96 -
        !            76:     mluong     10/11/96 -  KOCON and KONSP are in lowercase
        !            77:     mluong     10/11/96 -  add some define per Calvin
        !            78:     cxcheng    10/09/96 -  add #define for OROOCOSFN to OCI_COPY_NOREF
        !            79:     jboonleu   10/08/96 -  change OROOCOSFN to OCICopyFlag
        !            80:     jboonleu   10/07/96 -  use new OCI names for cache options
        !            81:     cxcheng    10/07/96 -  add OROTCS02 for KOTTCBRI and OROTCS03 as spare
        !            82:     cxcheng    10/07/96 -  more lint fixes
        !            83:     cxcheng    10/02/96 -  move oronsp to ko.h as konsp
        !            84:     cxcheng    10/01/96 -  add long names for readability
        !            85:     cxcheng    10/01/96 -  remove orotty and orotal
        !            86:     rjenkins   09/28/96 -  2k char 4k varchar2
        !            87:     jboonleu   09/27/96 -  add macro used only in beta2
        !            88:     cxcheng    09/27/96 -  move oroenv to oroenv.h
        !            89:     cxcheng    09/24/96 -  remove unnecessary orotyp
        !            90:     cxcheng    09/25/96 -  add typecode OROTCS01 as placeholder for lob pointer
        !            91:     cxcheng    09/20/96 -  add TDO load option orotgo
        !            92:     jboonleu   09/18/96 -  add OROOPOREC
        !            93:     jboonleu   09/10/96 -  add OROOPODFL
        !            94:     jweisz     08/27/96 -  add SQL internal typecode OROTCS00
        !            95:     cxcheng    08/02/96 -  add PLSQL internal typecodes OROTCP..
        !            96:     cxcheng    08/01/96 -  add OROTCFAR to fill up space left by OROTCCAR
        !            97:     jboonleu   07/16/96 -  new pin option
        !            98:     cxcheng    06/18/96 -  add casts to OROTNOPRE and OROTNOSCL
        !            99:     cxcheng    05/29/96 -  change OROTCNPT back to OROTCDOM
        !           100:     vkrishna   05/27/96 -  add OROTCCAR
        !           101:     cxcheng    05/17/96 -  replace OROTCFAR with OROTCCAR
        !           102:     cxcheng    05/08/96 -  change orotmf from ub1 to ub2
        !           103:     cxcheng    05/07/96 -  fix public defines for method types
        !           104:     cxcheng    04/30/96 -  change OROTCDOM to OROTCNPT
        !           105:     cxcheng    04/15/96 -  remove obsolete OROTTYICT
        !           106:     jboonleu   04/12/96 -  add new pin option
        !           107:     sthakur    04/12/96 -  add indicator type and indicator status
        !           108:     cxcheng    04/10/96 -  add function parameter codes for ORT/KOT
        !           109:     cxcheng    04/03/96 -  replace OROTCFAR as OROTCCAR
        !           110:     jwijaya    03/29/96 -  add OROTTCCAR
        !           111:     jwijaya    03/27/96 -  better comments for orotc
        !           112:     cxcheng    02/23/96 -  add typecodes for SMALLINT and VARCHAR2
        !           113:     skrishna   02/22/96 -  add oroind - null indicator type
        !           114:     cxcheng    02/21/96 -  change lob character codes to OROTCCLB, OROTCBLB...
        !           115:     jboonleu   02/06/96 -  new value for predefined duration
        !           116:     cxcheng    01/12/96 -  add OROTCCLO, OROTCBLO, OROTCFIL to orotc
        !           117:     cxcheng    12/05/95 -  add OROTCDOM and OROTCAAT to orotc
        !           118:     skotsovo   10/30/95 -  reserve space for internal 'oid' type
        !           119:     jwijaya    10/20/95 -  support variable-length ref
        !           120:     cxcheng    10/03/95 -  add OROTMFOR for ordering function to orotmf
        !           121:     cxcheng    10/03/95 -  Adding the ordering function type to orotmf
        !           122:     jboonleu   09/28/95 -  set OROODTPRE 
        !           123:     jboonleu   09/25/95 -  add oroodt
        !           124:     skotsovo   03/10/95 -  update to only include release 1 
        !           125:     jboonleu   02/15/95 -  add OROOPOREC, remove orocro, oroolo
        !           126:     skotsovo   01/30/95 -  add default max lengths for varrays and vstrings 
        !           127:     skotsovo   01/24/95 -  categorize sint32, double, and real as number types 
        !           128:                           (with precision and scale) instead of scalar types.
        !           129:     skotsovo   12/20/94 -  add release 1 types 
        !           130:     skotsovo   12/12/94 -  update according to new ots doc
        !           131:     skotsovo   12/01/94 -  add default precision and scale 
        !           132:     jwijaya    11/15/94 -  rename ORONSPTAB to ORONSPEXT 
        !           133:     jwijaya    10/25/94 -  tint 
        !           134:     jwijaya    10/06/94 -  add namespace 
        !           135:     jwijaya    10/02/94 -  connection handle -> connection number 
        !           136:     skotsovo   09/12/94 -  keep 0 as uninitialized value for ORT consts 
        !           137:     skotsovo   08/24/94 -  fix orotec 
        !           138:     skotsovo   08/17/94 -  modify type code names 
        !           139:     skotsovo   08/12/94 -  fix 141 lint errors 
        !           140:     skotsovo   07/25/94 -  modify categorization of complex types (orotc) 
        !           141:     skotsovo   07/07/94 -  change typecode enum values & add decimal type
        !           142:     skotsovo   07/01/94 -  change order of typecodes 
        !           143:     jwijaya    06/15/94 -  review 
        !           144:     jboonleu   06/13/94 -  add comments for the object cache options
        !           145:     jwijaya    06/13/94 -  adhere to the header file template 
        !           146:     skotsovo   06/09/94 -  make ots scalar type names consistent with the ots 
        !           147:                            document 
        !           148:     jwijaya    06/07/94 -  include oratypes.h instead of s.h 
        !           149:     skotsovo   05/24/94 -  change typecodes 
        !           150:     jwijaya    05/23/94 -  fix comments of ororef 
        !           151:     skotsovo   05/19/94 -  remove type composition 
        !           152:     skotsovo   05/09/94 -  modified orotc according to new OTS document
        !           153:     jwijaya    05/03/94 -  oroid and ororef
        !           154:     jwijaya    01/26/94 -  Creation
        !           155: */
        !           156: 
        !           157: 
        !           158: #ifndef ORATYPES
        !           159: #include <oratypes.h>
        !           160: #endif
        !           161: 
        !           162: #ifndef OCIDFN_ORACLE
        !           163: #include <ocidfn.h>
        !           164: #endif
        !           165: 
        !           166: #ifndef ORO_ORACLE
        !           167: #define ORO_ORACLE
        !           168: 
        !           169: /*---------------------------------------------------------------------------*/
        !           170: /*                         SHORT NAMES SUPPORT SECTION                       */
        !           171: /*---------------------------------------------------------------------------*/
        !           172: 
        !           173: #ifdef SLSHORTNAME
        !           174: 
        !           175: /* the following are short names that are only supported on IBM mainframes
        !           176:    with the SLSHORTNAME defined.
        !           177:    With this all subsequent long names will actually be substituted with
        !           178:    the short names here */
        !           179: 
        !           180: #define OCIDuration                     oroodt
        !           181: #define OCIInd                          oroind
        !           182: #define OCILockOpt                      oroolm
        !           183: #define OCIMarkOpt                      oroomo
        !           184: #define OCIObjectEvent                  orocev
        !           185: #define OCIObjectProperty               oroopr
        !           186: #define OCIPinOpt                       oroopo
        !           187: #define OCIRef                          ororef
        !           188: #define OCIRefreshOpt                   orooro
        !           189: #define OCITypeCode                     orotc
        !           190: #define OCITypeEncap                    orotec
        !           191: #define OCITypeGetOpt                   orotgo
        !           192: #define OCITypeMethodFlag               orotmf
        !           193: #define OCITypeParamMode                orotpm
        !           194: #define OCIObjectPropId                 oroopi
        !           195: #define OCIObjectLifetime               oroolft
        !           196: #define OCIObjectMarkstatus             oroomst
        !           197: #define OCI_LOCK_NONE                   OROOLMNUL
        !           198: #define OCI_LOCK_X                      OROOLMX
        !           199: #define OCI_LOCK_X_NOWAIT               OROOLMXNW
        !           200: #define OCI_MARK_DEFAULT                OROOMODFL
        !           201: #define OCI_MARK_NONE                   OROOMONON
        !           202: #define OCI_MARK_UPDATE                 OROOMOUPD
        !           203: #define OCI_OBJECTEVENT_AFTER_FLUSH     OROCEVAFL
        !           204: #define OCI_OBJECTEVENT_AFTER_REFRESH   OROCEVARF
        !           205: #define OCI_OBJECTEVENT_BEFORE_FLUSH    OROCEVBFL
        !           206: #define OCI_OBJECTEVENT_BEFORE_REFRESH  OROCEVBRF
        !           207: #define OCI_OBJECTEVENT_WHEN_LOCK       OROCEVWLK
        !           208: #define OCI_OBJECTEVENT_WHEN_MARK_DELETED OROCEVWDL
        !           209: #define OCI_OBJECTEVENT_WHEN_MARK_UPDATED OROCEVWUP
        !           210: #define OCI_OBJECTEVENT_WHEN_UNMARK     OROCEVWUM
        !           211: #define OCI_OBJECTPROP_DIRTIED          OROOPRDRT
        !           212: #define OCI_OBJECTPROP_LOADED           OROOPRLOD
        !           213: #define OCI_OBJECTPROP_LOCKED           OROOPRLCK
        !           214: #define OCI_PIN_ANY                     OROOPOANY
        !           215: #define OCI_PIN_DEFAULT                 OROOPODFL
        !           216: #define OCI_PIN_LATEST                  OROOPOLST
        !           217: #define OCI_PIN_RECENT                  OROOPOREC
        !           218: #define OCI_REFRESH_LOADED              OROOROLOD
        !           219: #define OCI_TYPEENCAP_PRIVATE           OROTECPVT
        !           220: #define OCI_TYPEENCAP_PUBLIC            OROTECPUB
        !           221: #define OCI_TYPEGET_ALL                 OROTGOALL
        !           222: #define OCI_TYPEGET_HEADER              OROTGOHDR
        !           223: #define OCI_TYPEMETHOD_CONSTANT         OROTMFCON
        !           224: #define OCI_TYPEMETHOD_CONSTRUCTOR      OROTMFCSTR
        !           225: #define OCI_TYPEMETHOD_DESTRUCTOR       OROTMFDSTR
        !           226: #define OCI_TYPEMETHOD_INLINE           OROTMFINL
        !           227: #define OCI_TYPEMETHOD_MAP              OROTMFMAP
        !           228: #define OCI_TYPEMETHOD_OPERATOR         OROTMFOP
        !           229: #define OCI_TYPEMETHOD_ORDER            OROTMFOR
        !           230: #define OCI_TYPEMETHOD_RNDS             OROTMFRDS
        !           231: #define OCI_TYPEMETHOD_RNPS             OROTMFRPS
        !           232: #define OCI_TYPEMETHOD_SELFISH          OROTMFSLF
        !           233: #define OCI_TYPEMETHOD_VIRTUAL          OROTMFVRT
        !           234: #define OCI_TYPEMETHOD_WNDS             OROTMFWDS
        !           235: #define OCI_TYPEMETHOD_WNPS             OROTMFWPS
        !           236: #define OCI_TYPEPARAM_BYREF             OROTPMREF
        !           237: #define OCI_TYPEPARAM_IN                OROTPMIN
        !           238: #define OCI_TYPEPARAM_INOUT             OROTPMIO
        !           239: #define OCI_TYPEPARAM_OUT               OROTPMOUT
        !           240: 
        !           241: #endif                                                        /* SLSHORTNAME */
        !           242: 
        !           243: 
        !           244: /*---------------------------------------------------------------------------*/
        !           245: /*                    PUBLIC TYPES, CONSTANTS AND MACROS                     */
        !           246: /*---------------------------------------------------------------------------*/
        !           247: 
        !           248: /*---------------------------------------------------------------------------*/
        !           249: /*                  GENERAL OBJECT TYPES, CONSTANTS, MACROS                  */
        !           250: /*---------------------------------------------------------------------------*/
        !           251: 
        !           252: /*------------------------- OBJECT REFERENCE (REF) --------------------------*/
        !           253: 
        !           254: typedef struct OCIRef OCIRef;
        !           255: /*
        !           256:  * OCIRef - OCI object REFerence
        !           257:  *
        !           258:  * In the Oracle object runtime environment, an object is identified by an 
        !           259:  * object reference (ref) which contains the object identifier plus other 
        !           260:  * runtime information.  The contents of a ref is opaque to clients.  Use
        !           261:  * OCIObjectNew() to construct a ref.
        !           262:  */
        !           263: 
        !           264: 
        !           265: /*--------------------------- OBJECT INDICATOR ------------------------------*/
        !           266: 
        !           267: typedef sb2 OCIInd;
        !           268: /*
        !           269:  * OCIInd -- a variable of this type contains (null) indicator information
        !           270:  */
        !           271: 
        !           272: #define OCI_IND_NOTNULL (OCIInd)0                                /* not NULL */
        !           273: #define OCI_IND_NULL (OCIInd)(-1)                                    /* NULL */
        !           274: #define OCI_IND_BADNULL (OCIInd)(-2)                             /* BAD NULL */
        !           275: #define OCI_IND_NOTNULLABLE (OCIInd)(-3)                     /* not NULLable */
        !           276: 
        !           277: /*---------------------------------------------------------------------------*/
        !           278: /*                               OBJECT CACHE                                */
        !           279: /*---------------------------------------------------------------------------*/
        !           280: 
        !           281: /* To enable object change detection mode, set this to TRUE */
        !           282: #define OCI_ATTR_OBJECT_DETECTCHANGE           0x00000020
        !           283: 
        !           284: /* To enable object creation with  non-NULL attributes by default, set the
        !           285:    following to TRUE.
        !           286:    By default, object is created with NULL attributes
        !           287: */
        !           288: #define OCI_ATTR_OBJECT_NEWNOTNULL   0x00000010
        !           289: 
        !           290: /* To enable sorting of the objects that belong to the same table
        !           291:    before being flushed through OCICacheFlush.
        !           292:    Please note that by enabling this object cache will not be flushing
        !           293:    the objects in the same order they were dirtied */
        !           294: #define OCI_ATTR_CACHE_ARRAYFLUSH 0x00000040
        !           295: 
        !           296: /*--------------------------- OBJECT PIN OPTION -----------------------------*/
        !           297: 
        !           298: enum OCIPinOpt
        !           299: {
        !           300:   /* 0 = uninitialized */
        !           301:   OCI_PIN_DEFAULT = 1,                                 /* default pin option */
        !           302:   OCI_PIN_ANY = 3,                          /* pin any copy of the object */
        !           303:   OCI_PIN_RECENT = 4,                    /* pin recent copy of the object */
        !           304:   OCI_PIN_LATEST = 5                     /* pin latest copy of the object */
        !           305: };
        !           306: typedef enum OCIPinOpt OCIPinOpt;
        !           307: 
        !           308: /*
        !           309:  * OCIPinOpt - OCI object Pin Option 
        !           310:  *
        !           311:  * In the Oracle object runtime environment, the program has the option to
        !           312:  * specify which copy of the object to pin.  
        !           313:  *
        !           314:  * OCI_PINOPT_DEFAULT pins an object using the default pin option.  The default
        !           315:  * pin option can be set as an attribute of the OCI environment handle 
        !           316:  * (OCI_ATTR_PINTOPTION).  The value of the default pin option can be
        !           317:  * OCI_PINOPT_ANY, OCI_PINOPT_RECENT, or OCI_PIN_LATEST. The default option
        !           318:  * is initialized to OCI_PINOPT_ANY.
        !           319:  *
        !           320:  * OCI_PIN_ANY pins any copy of the object.  The object is pinned 
        !           321:  * using the following criteria:
        !           322:  *   If the object copy is not loaded, load it from the persistent store.
        !           323:  *   Otherwise, the loaded object copy is returned to the program. 
        !           324:  * 
        !           325:  * OCI_PIN_RECENT pins the latest copy of an object.  The object is 
        !           326:  * pinned using the following criteria:
        !           327:  *   If the object is not loaded, load the object from the persistent store
        !           328:  *       from the latest version.
        !           329:  *   If the object is not loaded in the current transaction and it is not 
        !           330:  *       dirtied, the object is refreshed from the latest version.
        !           331:  *   Otherwise, the loaded object copy is returned to the program. 
        !           332:  *
        !           333:  * OCI_PINOPT_LATEST pins the latest copy of an object.  The object copy is 
        !           334:  * pinned using the following criteria:
        !           335:  *   If the object copy is not loaded, load it from the persistent store.
        !           336:  *   If the object copy is loaded and dirtied, it is returned to the program.
        !           337:  *   Otherwise, the loaded object copy is refreshed from the persistent store.
        !           338:  */
        !           339: 
        !           340: 
        !           341: 
        !           342: /*--------------------------- OBJECT LOCK OPTION ----------------------------*/
        !           343: 
        !           344: enum OCILockOpt
        !           345: {
        !           346:   /* 0 = uninitialized */
        !           347:   OCI_LOCK_NONE = 1,                               /* null (same as no lock) */
        !           348:   OCI_LOCK_X = 2,                                          /* exclusive lock */
        !           349:   OCI_LOCK_X_NOWAIT = 3                      /* exclusive lock, do not wait  */
        !           350: };
        !           351: typedef enum OCILockOpt OCILockOpt;
        !           352: /*
        !           353:  * OCILockOpt - OCI object LOCK Option 
        !           354:  *
        !           355:  * This option is used to specify the locking preferences when an object is
        !           356:  * loaded from the server.
        !           357:  */
        !           358: 
        !           359: 
        !           360: /*------------------------- OBJECT MODIFYING OPTION -------------------------*/
        !           361: 
        !           362: enum OCIMarkOpt
        !           363: {
        !           364:   /* 0 = uninitialized */
        !           365:   OCI_MARK_DEFAULT = 1,        /* default (the same as OCI_MARK_NONE) */
        !           366:   OCI_MARK_NONE = OCI_MARK_DEFAULT,   /* object has not been modified */
        !           367:   OCI_MARK_UPDATE                               /* object is to be updated */
        !           368: };
        !           369: typedef enum OCIMarkOpt OCIMarkOpt;
        !           370: /*
        !           371:  * OCIMarkOpt - OCI object Mark option
        !           372:  *
        !           373:  * When the object is marked updated, the client has to specify how the
        !           374:  * object is intended to be changed.  
        !           375:  */
        !           376: 
        !           377: /*-------------------------- OBJECT Duration --------------------------------*/
        !           378:  
        !           379: typedef ub2 OCIDuration;
        !           380:  
        !           381: #define  OCI_DURATION_BEGIN (OCIDuration)10
        !           382:                                            /* beginning sequence of duration */
        !           383: #define  OCI_DURATION_NULL (OCIDuration)(OCI_DURATION_BEGIN-1)
        !           384:                                                             /* null duration */
        !           385: #define  OCI_DURATION_DEFAULT (OCIDuration)(OCI_DURATION_BEGIN-2) /* default */
        !           386: #define  OCI_DURATION_NEXT (OCIDuration)(OCI_DURATION_BEGIN-3)
        !           387:                                                     /* next special duration */
        !           388: #define  OCI_DURATION_SESSION (OCIDuration)(OCI_DURATION_BEGIN)
        !           389:                                                   /* the end of user session */
        !           390: #define  OCI_DURATION_TRANS (OCIDuration)(OCI_DURATION_BEGIN+1)
        !           391:                                               /* the end of user transaction */
        !           392: /******************************************************************************
        !           393: **  DO NOT USE OCI_DURATION_CALL. IT  IS UNSUPPORTED                         **
        !           394: **  WILL BE REMOVED/CHANGED IN A FUTURE RELEASE                              **
        !           395: ******************************************************************************/
        !           396: #define  OCI_DURATION_CALL (OCIDuration)(OCI_DURATION_BEGIN+2)
        !           397:                                        /* the end of user client/server call */
        !           398: #define  OCI_DURATION_STATEMENT (OCIDuration)(OCI_DURATION_BEGIN+3)
        !           399: 
        !           400: /* This is to be used only during callouts.  It is similar to that 
        !           401: of OCI_DURATION_CALL, but lasts only for the duration of a callout.
        !           402: Its heap is from PGA */
        !           403: #define  OCI_DURATION_CALLOUT (OCIDuration)(OCI_DURATION_BEGIN+4)
        !           404: 
        !           405: #define  OCI_DURATION_LAST OCI_DURATION_CALLOUT /* last of predefined durations */
        !           406: 
        !           407: /* This is not being treated as other predefined durations such as 
        !           408:    SESSION, CALL etc, because this would not have an entry in the duration
        !           409:    table and its functionality is primitive such that only allocate, free,
        !           410:    resize memory are allowed, but one cannot create subduration out of this
        !           411: */ 
        !           412: #define  OCI_DURATION_PROCESS (OCIDuration)(OCI_DURATION_BEGIN-4) 
        !           413:  
        !           414: /*
        !           415:  * OCIDuration - OCI object duration
        !           416:  *
        !           417:  * A client can specify the duration of which an object is pinned (pin
        !           418:  * duration) and the duration of which the object is in memory (allocation
        !           419:  * duration).  If the objects are still pinned at the end of the pin duration,
        !           420:  * the object cache manager will automatically unpin the objects for the
        !           421:  * client. If the objects still exist at the end of the allocation duration,
        !           422:  * the object cache manager will automatically free the objects for the client.
        !           423:  *
        !           424:  * Objects that are pinned with the option OCI_DURATION_TRANS will get unpinned
        !           425:  * automatically at the end of the current transaction.
        !           426:  *
        !           427:  * Objects that are pinned with the option OCI_DURATION_SESSION will get
        !           428:  * unpinned automatically at the end of the current session (connection).
        !           429:  *
        !           430:  * The option OCI_DURATION_NULL is used when the client does not want to set
        !           431:  * the pin duration.  If the object is already loaded into the cache, then the
        !           432:  * pin duration will remain the same.  If the object is not yet loaded, the
        !           433:  * pin duration of the object will be set to OCI_DURATION_DEFAULT.
        !           434:  */
        !           435: 
        !           436: /*----------------------------- OBJECT PROPERTY -----------------------------*/
        !           437:  
        !           438: /******************************************************************************
        !           439: **  DO NOT USE OCIObjectProperty. IT IS UNSUPPORTED                          **
        !           440: **  WILL BE REMOVED/CHANGED IN A FUTURE RELEASE                              **
        !           441: ******************************************************************************/
        !           442: enum OCIObjectProperty
        !           443: {
        !           444:   /* 0 = uninitialized */
        !           445:   OCI_OBJECTPROP_DIRTIED = 1,                               /* dirty objects */
        !           446:   OCI_OBJECTPROP_LOADED,                /* objects loaded in the transaction */
        !           447:   OCI_OBJECTPROP_LOCKED                                    /* locked objects */
        !           448: };
        !           449: typedef enum OCIObjectProperty OCIObjectProperty;
        !           450: /*
        !           451:  * OCIObjectProperty -- OCI Object Property
        !           452:  * This specifies the properties of objects in the object cache.
        !           453:  */
        !           454: 
        !           455: /*------------------------- CACHE REFRESH OPTION ---------------------------*/
        !           456: 
        !           457: enum OCIRefreshOpt
        !           458: {
        !           459:   /* 0 = uninitialized */
        !           460:   OCI_REFRESH_LOADED = 1        /* refresh objects loaded in the transaction */
        !           461: };
        !           462: typedef enum OCIRefreshOpt OCIRefreshOpt; 
        !           463: /*
        !           464:  * OCIRefreshOpt - OCI cache Refresh Option
        !           465:  * This option is used to specify the set of objects to be refreshed. 
        !           466:  *
        !           467:  * OCI_REFRESH_LOAD refreshes the objects that are loaded in the current  
        !           468:  * transaction. 
        !           469:  */
        !           470: 
        !           471: /*-------------------------------- OBJECT EVENT -----------------------------*/
        !           472: 
        !           473: /******************************************************************************
        !           474: **  DO NOT USE OCIObjectEvent. IT IS UNSUPPORTED                             **
        !           475: **  WILL BE REMOVED/CHANGED IN A FUTURE RELEASE                              **
        !           476: ******************************************************************************/
        !           477: enum OCIObjectEvent
        !           478: {
        !           479:    /* 0 = uninitialized */
        !           480:    OCI_OBJECTEVENT_BEFORE_FLUSH = 1,            /* before flushing the cache */
        !           481:    OCI_OBJECTEVENT_AFTER_FLUSH,                  /* after flushing the cache */
        !           482:    OCI_OBJECTEVENT_BEFORE_REFRESH,            /* before refreshing the cache */
        !           483:    OCI_OBJECTEVENT_AFTER_REFRESH,              /* after refreshing the cache */
        !           484:    OCI_OBJECTEVENT_WHEN_MARK_UPDATED,    /* when an object is marked updated */
        !           485:    OCI_OBJECTEVENT_WHEN_MARK_DELETED,    /* when an object is marked deleted */
        !           486:    OCI_OBJECTEVENT_WHEN_UNMARK,          /* when an object is being unmarked */
        !           487:    OCI_OBJECTEVENT_WHEN_LOCK               /* when an object is being locked */
        !           488: };
        !           489: typedef enum OCIObjectEvent OCIObjectEvent;
        !           490: /*
        !           491:  * OCIObjectEvent -- OCI Object Event 
        !           492:  * This specifies the kind of event that is supported by the object
        !           493:  * cache.  The program can register a callback that is invoked when the  
        !           494:  * specified event occurs.
        !           495:  */
        !           496: 
        !           497: /*----------------------------- OBJECT COPY OPTION --------------------------*/
        !           498: #define OCI_OBJECTCOPY_NOREF (ub1)0x01 
        !           499: /*
        !           500:  * OCIObjectCopyFlag - Object copy flag
        !           501:  *
        !           502:  * If OCI_OBJECTCOPY_NOREF is specified when copying an instance, the 
        !           503:  * reference and lob will not be copied to the target instance.
        !           504:  */
        !           505: 
        !           506: /*----------------------------- OBJECT FREE OPTION --------------------------*/
        !           507: #define OCI_OBJECTFREE_FORCE      (ub2)0x0001
        !           508: #define OCI_OBJECTFREE_NONULL     (ub2)0x0002
        !           509: /*
        !           510:  * OCIObjectFreeFlag - Object free flag
        !           511:  *
        !           512:  * If OCI_OBJECTCOPY_FORCE is specified when freeing an instance, the instance
        !           513:  * is freed regardless it is pinned or diritied.
        !           514:  * If OCI_OBJECTCOPY_NONULL is specified when freeing an instance, the null 
        !           515:  * structure is not freed.
        !           516:  */
        !           517: 
        !           518: /*----------------------- OBJECT PROPERTY ID -------------------------------*/
        !           519: 
        !           520: typedef ub1 OCIObjectPropId;
        !           521: #define OCI_OBJECTPROP_LIFETIME 1       /* persistent or transient or value */
        !           522: #define OCI_OBJECTPROP_SCHEMA 2   /* schema name of table containing object */
        !           523: #define OCI_OBJECTPROP_TABLE 3     /* table name of table containing object */
        !           524: #define OCI_OBJECTPROP_PIN_DURATION 4             /* pin duartion of object */
        !           525: #define OCI_OBJECTPROP_ALLOC_DURATION 5         /* alloc duartion of object */
        !           526: #define OCI_OBJECTPROP_LOCK 6                      /* lock status of object */
        !           527: #define OCI_OBJECTPROP_MARKSTATUS 7                /* mark status of object */
        !           528: #define OCI_OBJECTPROP_VIEW 8            /* is object a view object or not? */
        !           529: 
        !           530: /*
        !           531:  * OCIObjectPropId - OCI Object Property Id
        !           532:  * Identifies the different properties of objects.
        !           533:  */
        !           534: 
        !           535: /*----------------------- OBJECT LIFETIME ----------------------------------*/
        !           536: 
        !           537: enum OCIObjectLifetime
        !           538: {
        !           539:    /* 0 = uninitialized */
        !           540:    OCI_OBJECT_PERSISTENT = 1,                          /* persistent object */
        !           541:    OCI_OBJECT_TRANSIENT,                                /* transient object */
        !           542:    OCI_OBJECT_VALUE                                         /* value object */
        !           543: };
        !           544: typedef enum OCIObjectLifetime OCIObjectLifetime;
        !           545: /*
        !           546:  * OCIObjectLifetime - OCI Object Lifetime
        !           547:  * Classifies objects depending upon the lifetime and referenceability 
        !           548:  * of the object.
        !           549:  */
        !           550: 
        !           551: /*----------------------- OBJECT MARK STATUS -------------------------------*/
        !           552: 
        !           553: typedef uword OCIObjectMarkStatus;
        !           554: #define OCI_OBJECT_NEW     0x0001                             /* new object */
        !           555: #define OCI_OBJECT_DELETED 0x0002                  /* object marked deleted */
        !           556: #define OCI_OBJECT_UPDATED 0x0004                  /* object marked updated */
        !           557: /*
        !           558:  * OCIObjectMarkStatus - OCI Object Mark Status
        !           559:  * Status of the object - new or updated or deleted
        !           560:  */
        !           561: 
        !           562: /* macros to test the object mark status */ 
        !           563: #define OCI_OBJECT_IS_UPDATED(flag) bit((flag), OCI_OBJECT_UPDATED)
        !           564: #define OCI_OBJECT_IS_DELETED(flag) bit((flag), OCI_OBJECT_DELETED)
        !           565: #define OCI_OBJECT_IS_NEW(flag) bit((flag), OCI_OBJECT_NEW)
        !           566: #define OCI_OBJECT_IS_DIRTY(flag) \
        !           567:   bit((flag), OCI_OBJECT_UPDATED|OCI_OBJECT_NEW|OCI_OBJECT_DELETED)
        !           568: 
        !           569: /*---------------------------------------------------------------------------*/
        !           570: /*                               TYPE MANAGER                                */
        !           571: /*---------------------------------------------------------------------------*/
        !           572: 
        !           573: /*------------------------------ TYPE CODE ----------------------------------*/
        !           574: 
        !           575: /*
        !           576:  * Type manager typecodes
        !           577:  *
        !           578:  * These are typecodes designed to be used with the type manager;
        !           579:  * they also include longer, more readable versions of existing SQLT names.
        !           580:  * Those types that are directly related to existing SQLT types are #define'd
        !           581:  * to their SQLT equivalents.
        !           582:  *
        !           583:  * The type manager typecodes are designed to be useable for all OCI calls.
        !           584:  * They are in the range from 192 to 320 for typecodes, so as not to conflict
        !           585:  * with existing OCI SQLT typecodes (see ocidfn.h).
        !           586:  */
        !           587: 
        !           588: #define OCI_TYPECODE_REF         SQLT_REF        /* SQL/OTS OBJECT REFERENCE */
        !           589: #define OCI_TYPECODE_DATE        SQLT_DAT              /* SQL DATE  OTS DATE */
        !           590: #define OCI_TYPECODE_SIGNED8     27     /* SQL SIGNED INTEGER(8)  OTS SINT8 */
        !           591: #define OCI_TYPECODE_SIGNED16    28    /* SQL SIGNED INTEGER(16)  OTS SINT16 */
        !           592: #define OCI_TYPECODE_SIGNED32    29    /* SQL SIGNED INTEGER(32)  OTS SINT32 */
        !           593: #define OCI_TYPECODE_REAL        21                /* SQL REAL  OTS SQL_REAL */
        !           594: #define OCI_TYPECODE_DOUBLE      22  /* SQL DOUBLE PRECISION  OTS SQL_DOUBLE */
        !           595: #define OCI_TYPECODE_FLOAT       SQLT_FLT      /* SQL FLOAT(P)  OTS FLOAT(P) */
        !           596: #define OCI_TYPECODE_NUMBER      SQLT_NUM/* SQL NUMBER(P S)  OTS NUMBER(P S) */
        !           597: #define OCI_TYPECODE_DECIMAL     SQLT_PDN
        !           598:                                        /* SQL DECIMAL(P S)  OTS DECIMAL(P S) */
        !           599: #define OCI_TYPECODE_UNSIGNED8   SQLT_BIN
        !           600:                                        /* SQL UNSIGNED INTEGER(8)  OTS UINT8 */
        !           601: #define OCI_TYPECODE_UNSIGNED16  25  /* SQL UNSIGNED INTEGER(16)  OTS UINT16 */
        !           602: #define OCI_TYPECODE_UNSIGNED32  26  /* SQL UNSIGNED INTEGER(32)  OTS UINT32 */
        !           603: #define OCI_TYPECODE_OCTET       245                   /* SQL ???  OTS OCTET */
        !           604: #define OCI_TYPECODE_SMALLINT    246           /* SQL SMALLINT  OTS SMALLINT */
        !           605: #define OCI_TYPECODE_INTEGER     SQLT_INT        /* SQL INTEGER  OTS INTEGER */
        !           606: #define OCI_TYPECODE_RAW         SQLT_LVB          /* SQL RAW(N)  OTS RAW(N) */
        !           607: #define OCI_TYPECODE_PTR         32              /* SQL POINTER  OTS POINTER */
        !           608: #define OCI_TYPECODE_VARCHAR2    SQLT_VCS
        !           609:                                      /* SQL VARCHAR2(N)  OTS SQL_VARCHAR2(N) */
        !           610: #define OCI_TYPECODE_CHAR        SQLT_AFC    /* SQL CHAR(N)  OTS SQL_CHAR(N) */
        !           611: #define OCI_TYPECODE_VARCHAR     SQLT_CHR
        !           612:                                        /* SQL VARCHAR(N)  OTS SQL_VARCHAR(N) */
        !           613: #define OCI_TYPECODE_MLSLABEL    SQLT_LAB                    /* OTS MLSLABEL */
        !           614: #define OCI_TYPECODE_VARRAY      247         /* SQL VARRAY  OTS PAGED VARRAY */
        !           615: #define OCI_TYPECODE_TABLE       248              /* SQL TABLE  OTS MULTISET */
        !           616: #define OCI_TYPECODE_OBJECT      SQLT_NTY       /* SQL/OTS NAMED OBJECT TYPE */
        !           617: #define OCI_TYPECODE_OPAQUE       58                /*  SQL/OTS Opaque Types */
        !           618: #define OCI_TYPECODE_NAMEDCOLLECTION  SQLT_NCO
        !           619:                                             /* SQL/OTS NAMED COLLECTION TYPE */
        !           620: #define OCI_TYPECODE_BLOB        SQLT_BLOB    /* SQL/OTS BINARY LARGE OBJECT */
        !           621: #define OCI_TYPECODE_BFILE       SQLT_BFILE    /* SQL/OTS BINARY FILE OBJECT */
        !           622: #define OCI_TYPECODE_CLOB        SQLT_CLOB /* SQL/OTS CHARACTER LARGE OBJECT */
        !           623: #define OCI_TYPECODE_CFILE       SQLT_CFILE /* SQL/OTS CHARACTER FILE OBJECT */
        !           624: 
        !           625: /* the following are ANSI datetime datatypes added in 8.1 */
        !           626: #define OCI_TYPECODE_TIME        SQLT_TIME                   /* SQL/OTS TIME */
        !           627: #define OCI_TYPECODE_TIME_TZ     SQLT_TIME_TZ             /* SQL/OTS TIME_TZ */
        !           628: #define OCI_TYPECODE_TIMESTAMP   SQLT_TIMESTAMP         /* SQL/OTS TIMESTAMP */
        !           629: #define OCI_TYPECODE_TIMESTAMP_TZ  SQLT_TIMESTAMP_TZ /* SQL/OTS TIMESTAMP_TZ */
        !           630: 
        !           631: #define OCI_TYPECODE_TIMESTAMP_LTZ  SQLT_TIMESTAMP_LTZ /* TIMESTAMP_LTZ */
        !           632: 
        !           633: #define OCI_TYPECODE_INTERVAL_YM SQLT_INTERVAL_YM   /* SQL/OTS INTRVL YR-MON */
        !           634: #define OCI_TYPECODE_INTERVAL_DS SQLT_INTERVAL_DS  /* SQL/OTS INTRVL DAY-SEC */
        !           635: 
        !           636: #define OCI_TYPECODE_OTMFIRST    228     /* first Open Type Manager typecode */
        !           637: #define OCI_TYPECODE_OTMLAST     320                    /* last OTM typecode */
        !           638: #define OCI_TYPECODE_SYSFIRST    228     /* first OTM system type (internal) */
        !           639: #define OCI_TYPECODE_SYSLAST     235      /* last OTM system type (internal) */
        !           640: 
        !           641: /* the following are PL/SQL-only internal. They should not be used */
        !           642: #define OCI_TYPECODE_ITABLE      SQLT_TAB             /* PLSQL indexed table */
        !           643: #define OCI_TYPECODE_RECORD      SQLT_REC                    /* PLSQL record */
        !           644: #define OCI_TYPECODE_BOOLEAN     SQLT_BOL                   /* PLSQL boolean */
        !           645: 
        !           646: /* The OCITypeCode type is interchangeable with the existing SQLT type
        !           647:    which is a ub2 */
        !           648: typedef ub2 OCITypeCode;
        !           649: 
        !           650: 
        !           651: /*----------------------- GET OPTIONS FOR TDO  ------------------------------*/
        !           652: 
        !           653: enum OCITypeGetOpt
        !           654: {
        !           655:   OCI_TYPEGET_HEADER,
        !           656:                 /* load only the header portion of the TDO when getting type */
        !           657:   OCI_TYPEGET_ALL       /* load all attribute and method descriptors as well */
        !           658: };
        !           659: typedef enum OCITypeGetOpt OCITypeGetOpt;
        !           660: 
        !           661: /*
        !           662:  * OCITypeGetOpt
        !           663:  *
        !           664:  * This is the flag passed to OCIGetTypeArray() to indicate how the TDO is
        !           665:  * going to be loaded into the object cache.
        !           666:  * OCI_TYPEGET_HEADER implies that only the header portion is to be loaded
        !           667:  * initially, with the rest loaded in on a 'lazy' basis. Only the header is
        !           668:  * needed for PL/SQL and OCI operations. OCI_TYPEGET_ALL implies that ALL
        !           669:  * the attributes and methods belonging to a TDO will be loaded into the
        !           670:  * object cache in one round trip. Hence it will take much longer to execute,
        !           671:  * but will ensure that no more loading needs to be done when pinning ADOs
        !           672:  * etc. This is only needed if your code needs to examine and manipulate
        !           673:  * attribute and method information.
        !           674:  *
        !           675:  * The default is OCI_TYPEGET_HEADER.
        !           676:  */
        !           677: 
        !           678: 
        !           679: /*------------------------ TYPE ENCAPSULTATION LEVEL ------------------------*/
        !           680: 
        !           681: enum OCITypeEncap
        !           682: {
        !           683:   /* 0 = uninitialized */
        !           684:   OCI_TYPEENCAP_PRIVATE,                /* private: only internally visible */
        !           685:   OCI_TYPEENCAP_PUBLIC /* public: visible to both internally and externally */
        !           686: };
        !           687: typedef enum OCITypeEncap OCITypeEncap;
        !           688: /*
        !           689:  * OCITypeEncap - OCI Encapsulation Level
        !           690:  */
        !           691: 
        !           692: 
        !           693: /*---------------------------- TYPE METHOD FLAGS ----------------------------*/
        !           694: 
        !           695: enum OCITypeMethodFlag
        !           696: {
        !           697:   OCI_TYPEMETHOD_INLINE = 0x0001,                                  /* inline */
        !           698:   OCI_TYPEMETHOD_CONSTANT = 0x0002,                              /* constant */
        !           699:   OCI_TYPEMETHOD_VIRTUAL = 0x0004,                                /* virtual */
        !           700:   OCI_TYPEMETHOD_CONSTRUCTOR = 0x0008,                        /* constructor */
        !           701:   OCI_TYPEMETHOD_DESTRUCTOR = 0x0010,                          /* destructor */
        !           702:   OCI_TYPEMETHOD_OPERATOR  = 0x0020,                             /* operator */
        !           703:   OCI_TYPEMETHOD_SELFISH = 0x0040,     /* selfish method (generic otherwise) */
        !           704: 
        !           705:   OCI_TYPEMETHOD_MAP = 0x0080,                    /* map (relative ordering) */
        !           706:   OCI_TYPEMETHOD_ORDER  = 0x0100,               /* order (relative ordering) */
        !           707:   /* OCI_TYPEMETHOD_MAP and OCI_TYPEMETHOD_ORDER are mutually exclusive */
        !           708: 
        !           709:   OCI_TYPEMETHOD_RNDS= 0x0200,               /* Read no Data State (default) */
        !           710:   OCI_TYPEMETHOD_WNDS= 0x0400,                        /* Write no Data State */
        !           711:   OCI_TYPEMETHOD_RNPS= 0x0800,                      /* Read no Process State */
        !           712:   OCI_TYPEMETHOD_WNPS= 0x1000                      /* Write no Process State */
        !           713: };
        !           714: typedef enum OCITypeMethodFlag OCITypeMethodFlag;
        !           715: 
        !           716: /* macros to test the type method flags */
        !           717: #define OCI_METHOD_IS_INLINE(flag) bit((flag), OCI_TYPEMETHOD_INLINE)
        !           718: #define OCI_METHOD_IS_CONSTANT(flag) bit((flag), OCI_TYPEMETHOD_CONSTANT)
        !           719: #define OCI_METHOD_IS_VIRTUAL(flag) bit((flag), OCI_TYPEMETHOD_VIRTUAL)
        !           720: #define OCI_METHOD_IS_CONSTRUCTOR(flag) bit((flag), OCI_TYPEMETHOD_CONSTRUCTOR)
        !           721: #define OCI_METHOD_IS_DESTRUCTOR(flag) bit((flag), OCI_TYPEMETHOD_DESTRUCTOR)
        !           722: #define OCI_METHOD_IS_OPERATOR(flag) bit((flag), OCI_TYPEMETHOD_OPERATOR)
        !           723: #define OCI_METHOD_IS_SELFISH(flag) bit((flag), OCI_TYPEMETHOD_SELFISH)
        !           724: #define OCI_METHOD_IS_MAP(flag) bit((flag), OCI_TYPEMETHOD_MAP)
        !           725: #define OCI_METHOD_IS_ORDER(flag) bit((flag), OCI_TYPEMETHOD_ORDER)
        !           726: #define OCI_METHOD_IS_RNDS(flag) bit((flag), OCI_TYPEMETHOD_RNDS)
        !           727: #define OCI_METHOD_IS_WNDS(flag) bit((flag), OCI_TYPEMETHOD_WNDS)
        !           728: #define OCI_METHOD_IS_RNPS(flag) bit((flag), OCI_TYPEMETHOD_RNPS)
        !           729: #define OCI_METHOD_IS_WNPS(flag) bit((flag), OCI_TYPEMETHOD_WNPS)
        !           730: #define OCI_TYPEMETHOD_IS_INLINE(flag) bit((flag), OCI_TYPEMETHOD_INLINE)
        !           731: #define OCI_TYPEMETHOD_IS_CONSTANT(flag) bit((flag), OCI_TYPEMETHOD_CONSTANT)
        !           732: #define OCI_TYPEMETHOD_IS_VIRTUAL(flag) bit((flag), OCI_TYPEMETHOD_VIRTUAL)
        !           733: #define OCI_TYPEMETHOD_IS_CONSTRUCTOR(flag) \
        !           734:   bit((flag), OCI_TYPEMETHOD_CONSTRUCTOR)
        !           735: #define OCI_TYPEMETHOD_IS_DESTRUCTOR(flag) \
        !           736:   bit((flag), OCI_TYPEMETHOD_DESTRUCTOR)
        !           737: #define OCI_TYPEMETHOD_IS_OPERATOR(flag) bit((flag), OCI_TYPEMETHOD_OPERATOR)
        !           738: #define OCI_TYPEMETHOD_IS_SELFISH(flag) bit((flag), OCI_TYPEMETHOD_SELFISH)
        !           739: #define OCI_TYPEMETHOD_IS_MAP(flag) bit((flag), OCI_TYPEMETHOD_MAP)
        !           740: #define OCI_TYPEMETHOD_IS_ORDER(flag) bit((flag), OCI_TYPEMETHOD_ORDER)
        !           741: #define OCI_TYPEMETHOD_IS_RNDS(flag) bit((flag), OCI_TYPEMETHOD_RNDS)
        !           742: #define OCI_TYPEMETHOD_IS_WNDS(flag) bit((flag), OCI_TYPEMETHOD_WNDS)
        !           743: #define OCI_TYPEMETHOD_IS_RNPS(flag) bit((flag), OCI_TYPEMETHOD_RNPS)
        !           744: #define OCI_TYPEMETHOD_IS_WNPS(flag) bit((flag), OCI_TYPEMETHOD_WNPS)
        !           745: 
        !           746: /* macros to set the type method flags */
        !           747: #define OCI_TYPEMETHOD_SET_INLINE(flag) bis((flag), OCI_TYPEMETHOD_INLINE)
        !           748: #define OCI_TYPEMETHOD_SET_CONSTANT(flag) bis((flag), OCI_TYPEMETHOD_CONSTANT)
        !           749: #define OCI_TYPEMETHOD_SET_VIRTUAL(flag) bis((flag), OCI_TYPEMETHOD_VIRTUAL)
        !           750: #define OCI_TYPEMETHOD_SET_CONSTRUCTOR(flag) \
        !           751:   bis((flag), OCI_TYPEMETHOD_CONSTRUCTOR)
        !           752: #define OCI_TYPEMETHOD_SET_DESTRUCTOR(flag) \
        !           753:   bis((flag), OCI_TYPEMETHOD_DESTRUCTOR)
        !           754: #define OCI_TYPEMETHOD_SET_OPERATOR(flag) bis((flag), OCI_TYPEMETHOD_OPERATOR)
        !           755: #define OCI_TYPEMETHOD_SET_SELFISH(flag) bis((flag), OCI_TYPEMETHOD_SELFISH)
        !           756: #define OCI_TYPEMETHOD_SET_MAP(flag) bis((flag), OCI_TYPEMETHOD_MAP)
        !           757: #define OCI_TYPEMETHOD_SET_ORDER(flag) bis((flag), OCI_TYPEMETHOD_ORDER)
        !           758: #define OCI_TYPEMETHOD_SET_RNDS(flag) bis((flag), OCI_TYPEMETHOD_RNDS)
        !           759: #define OCI_TYPEMETHOD_SET_WNDS(flag) bis((flag), OCI_TYPEMETHOD_WNDS)
        !           760: #define OCI_TYPEMETHOD_SET_RNPS(flag) bis((flag), OCI_TYPEMETHOD_RNPS)
        !           761: #define OCI_TYPEMETHOD_SET_WNPS(flag) bis((flag), OCI_TYPEMETHOD_WNPS)
        !           762: 
        !           763: /* macros to clear the type method flags */
        !           764: #define OCI_TYPEMETHOD_CLEAR_INLINE(flag) bic((flag), OCI_TYPEMETHOD_INLINE)
        !           765: #define OCI_TYPEMETHOD_CLEAR_CONSTANT(flag) \
        !           766:   bic((flag), OCI_TYPEMETHOD_CONSTANT)
        !           767: #define OCI_TYPEMETHOD_CLEAR_VIRTUAL(flag) bic((flag), OCI_TYPEMETHOD_VIRTUAL)
        !           768: #define OCI_TYPEMETHOD_CLEAR_CONSTRUCTOR(flag) \
        !           769:   bic((flag), OCI_TYPEMETHOD_CONSTRUCTOR)
        !           770: #define OCI_TYPEMETHOD_CLEAR_DESTRUCTOR(flag) \
        !           771:   bic((flag), OCI_TYPEMETHOD_DESTRUCTOR)
        !           772: #define OCI_TYPEMETHOD_CLEAR_OPERATOR(flag) \
        !           773:   bic((flag), OCI_TYPEMETHOD_OPERATOR)
        !           774: #define OCI_TYPEMETHOD_CLEAR_SELFISH(flag) bic((flag), OCI_TYPEMETHOD_SELFISH)
        !           775: #define OCI_TYPEMETHOD_CLEAR_MAP(flag) bic((flag), OCI_TYPEMETHOD_MAP)
        !           776: #define OCI_TYPEMETHOD_CLEAR_ORDER(flag) bic((flag), OCI_TYPEMETHOD_ORDER)
        !           777: #define OCI_TYPEMETHOD_CLEAR_RNDS(flag) bic((flag), OCI_TYPEMETHOD_RNDS)
        !           778: #define OCI_TYPEMETHOD_CLEAR_WNDS(flag) bic((flag), OCI_TYPEMETHOD_WNDS)
        !           779: #define OCI_TYPEMETHOD_CLEAR_RNPS(flag) bic((flag), OCI_TYPEMETHOD_RNPS)
        !           780: #define OCI_TYPEMETHOD_CLEAR_WNPS(flag) bic((flag), OCI_TYPEMETHOD_WNPS)
        !           781: 
        !           782: /*--------------------------- TYPE PARAMETER MODE ---------------------------*/
        !           783: 
        !           784: enum OCITypeParamMode
        !           785: {
        !           786:   /* PL/SQL starts this from 0 */
        !           787:   OCI_TYPEPARAM_IN = 0,                                                /* in */
        !           788:   OCI_TYPEPARAM_OUT,                                                  /* out */
        !           789:   OCI_TYPEPARAM_INOUT,                                             /* in-out */
        !           790:   OCI_TYPEPARAM_BYREF               /* call by reference (implicitly in-out) */
        !           791: };
        !           792: typedef enum OCITypeParamMode OCITypeParamMode;
        !           793: 
        !           794: 
        !           795: /*-------------------------------- DEFAULTS ---------------------------------*/
        !           796: 
        !           797: /* default binary and decimal precision and scale */
        !           798: 
        !           799: #define OCI_NUMBER_DEFAULTPREC ((ub1)0)            /* no precision specified */
        !           800: #define OCI_NUMBER_DEFAULTSCALE ((sb1)MAXSB1MINVAL)
        !           801:                                         /* no binary/decimal scale specified */
        !           802: 
        !           803: /* default maximum length for varrays and vstrings (used in sql.bsq) */
        !           804: 
        !           805: #define OCI_VARRAY_MAXSIZE 4000
        !           806:                           /* default maximum number of elements for a varray */
        !           807: #define OCI_STRING_MAXLEN  4000     /* default maximum length of a vstring */
        !           808: 
        !           809: /*---------------------------------------------------------------------------*/
        !           810: /* This set of macro is used only in beta2. They should be removed as soon as
        !           811:  * PLSQL has made the changes of not using these macros.
        !           812:  */
        !           813:  
        !           814: /* Special duration for allocating memory only. No instance can be allocated
        !           815:  * given these durations.
        !           816:  */
        !           817: #define OCICoherency OCIRefreshOpt
        !           818: #define OCI_COHERENCY_NONE   (OCIRefreshOpt)2
        !           819: #define OCI_COHERENCY_NULL   (OCIRefreshOpt)4
        !           820: #define OCI_COHERENCY_ALWAYS (OCIRefreshOpt)5
        !           821: 
        !           822: 
        !           823: #endif /* ORO_ORACLE */
        !           824: 

E-mail: