Annotation of win32/sql/oracle/include/oci/oro.h, revision 1.1.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: