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: