| TerraLib 4.1

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files
- Examples

- File List
- File Members

E:/Projetos_Primeiro_Semestre_2012/TerraView/terralib/src/terralib/drivers/Oracle/OCI/include/oro.h
Go to the documentation of this file.

    00001 /* Copyright (c) 1994, 2003, Oracle Corporation.  All rights reserved.  */
    00002
    00003 /*
    00004   NAME
    00005     OCI - Oracle Object Interface for External/Internal/Kernel Clients
    00006
    00007   DESCRIPTION
    00008     This header file contains Oracle object interface definitions which
    00009     can be included by external user applications, tools, as well as
    00010     the kernel.  It defines types and constants that are common to all
    00011     object interface which is being defined in several other header files
    00012     (e.g., ori.h, ort.h, and orl.h).
    00013
    00014   RELATED DOCUMENTS
    00015     TBD
    00016
    00017   INSPECTION STATUS [[ deletable if no inspection ]]
    00018     Inspection date:    [[ date of the last logging meeting ]]
    00019     Inspection status:  [[ exited, not exited, or N/A if exit is not a goal ]]
    00020     Estimated increasing cost defects per page:
    00021     Rule sets:          [[ rule sets inspected against or planned to be
    00022                            inspected against ]]
    00023
    00024   ACCEPTANCE REVIEW STATUS [[ deletable if no approval review ]]
    00025     Review date:    [[ date of the meeting where issues were logged and the
    00026                        approval status was decided ]]
    00027     Review status:  [[ current status:  accepted, conditionally accepted,
    00028                        major revision required, rejected ]]
    00029     Reviewers:      [[ names of the members on the review team ]]
    00030
    00031   PUBLIC FUNCTIONS
    00032
    00033   EXAMPLES
    00034     Examples are given in the description of each function or macro where
    00035     relevant.
    00036
    00037   MODIFIED
    00038     mnanal     06/09/03 - backout of fix 2836388
    00039     mnanal     05/14/03 - bug-2836388
    00040     srseshad   11/27/02 - Change OCI_TYPECODE_BFLOAT/BDOUBLE codes
    00041     rxgovind   10/09/02 - add OCI_TYPECODE_UROWID
    00042     mxyang     09/17/02 - grabtrans 'mmorsi_obj_float'
    00043     srseshad   09/11/02 -
    00044     srseshad   09/01/02 -
    00045     aahluwal   06/03/02 - bug 2360115
    00046     celsbern   10/19/01 - merge LOG to MAIN
    00047     rxgovind   10/16/01 - update typecodes
    00048     rxgovind   09/19/01 - add typecodes
    00049     rkasamse   08/15/01 - add OCI_DURATION_USER_CALLBACK
    00050     jchai      09/24/01 - add type code for PLS_INTEGER
    00051     porangas   08/22/01 - Fix bug#1776434
    00052     schatter   04/09/01 - merge 1456235: define OCI_DURATION_INVALID
    00053     rdani      10/12/00 - 1449943 NOCOPY and PIPELINE
    00054     ciyer      05/26/00 - short names for abstract, overriding
    00055     rkasamse   05/25/00 - OCCI enhancements
    00056     smuralid   05/11/00 - OCITypeMethodFlags - add NOT INSTANTIABLE, OVERRIDING
    00057     rxgovind   05/09/00 - add OCI_TYPECODE_NONE
    00058     tnbui      07/28/99 - Remove OCI_TYPECODE_TIMESTAMP_ITZ
    00059     tnbui      07/21/99 - TS LOCAL TZ
    00060     thoang     06/21/99 - Add OCI_TYPECODE_TIMESTAMP_ITZ
    00061     thoang     03/04/99 - Add datetime datatypes
    00062     rkasamse   10/20/98 - add OCI_ATTR_CACHE_ARRAYFLUSH
    00063     rkasamse   10/29/98 - add OCI_DURATION_CALLOUT
    00064     rkasamse   04/28/98 - OCI_OBJECT_DETECTCHANGE -> OCI_ATTR_OBJECT_DETECTCHAN
    00065     rkasamse   04/28/98 - OCI_OBJECT_NEWNOTNULL -> OCI_ATTR_OBJECT_NEWNOTNULL
    00066     rkasamse   04/23/98 - add OCI_OBJECT_DETECTCHANGE
    00067     rkasamse   04/03/98 - add OCI_OBJECT_NEWNOTNULL
    00068     pmitra     04/01/98 - OCI_LOCK_X_NOWAIT added
    00069     rxgovind   02/18/98 - add OCI_TYPECODE_OPAQUE
    00070     rkasamse   02/13/98 - Add OCI_DURATION_PROCESS
    00071     cxcheng    07/28/97 - fix compile with SLSHORTNAME
    00072     skrishna   07/14/97 - add OCIObjectGetProperty
    00073     cxcheng    04/30/97 - make OCITypeParamMode values consistent with PL/SQL
    00074     skrishna   04/28/97 - undocument OCIObjectProperty & OCIObjectEvent
    00075     cxcheng    03/29/97 - remove all remaining short names
    00076     sthakur    03/20/97 - add casts to constants
    00077     cxcheng    02/21/97 - temporarily put SLSHORTNAME for PL/SQL
    00078     cxcheng    02/06/97 - take out short name support except with SLSHORTNAME
    00079     lchidamb   01/20/97 - update OCIRef comments
    00080     sgollapu   11/19/96 - Add OCI type codes for BOOL,REC,and TAB
    00081     cxcheng    11/19/96 - more typecode changes
    00082     cxcheng    11/13/96 - add #include for ocidfn.h
    00083     cxcheng    11/13/96 - add OCI_TYPECODE_ADT for compatibility
    00084     cxcheng    11/12/96 - add SQLT_NCO for named collection
    00085     cxcheng    11/11/96 - more changes to typecodes
    00086     cxcheng    11/07/96 - #define OCI_TYPECODE_MLSLABEL to SQLT_LAB
    00087     cxcheng    11/06/96 - fix #define omission for OROTCNAT
    00088     cxcheng    10/30/96 - move OCI_TYPECODE_* to ocidfn.h as SQLT_*
    00089     cxcheng    10/28/96 - more beautification changes
    00090     jboonleu   10/29/96 - add flags for freeing object
    00091     dchatter   10/26/96 - delete redef of OCISvcCtx, OCIError, OCIEnv
    00092     cxcheng    10/15/96 - more changes
    00093     cxcheng    10/14/96 - more final fixes to constants
    00094     mluong     10/11/96 -
    00095     mluong     10/11/96 -  KOCON and KONSP are in lowercase
    00096     mluong     10/11/96 -  add some define per Calvin
    00097     cxcheng    10/09/96 -  add #define for OROOCOSFN to OCI_COPY_NOREF
    00098     jboonleu   10/08/96 -  change OROOCOSFN to OCICopyFlag
    00099     jboonleu   10/07/96 -  use new OCI names for cache options
    00100     cxcheng    10/07/96 -  add OROTCS02 for KOTTCBRI and OROTCS03 as spare
    00101     cxcheng    10/07/96 -  more lint fixes
    00102     cxcheng    10/02/96 -  move oronsp to ko.h as konsp
    00103     cxcheng    10/01/96 -  add long names for readability
    00104     cxcheng    10/01/96 -  remove orotty and orotal
    00105     rjenkins   09/28/96 -  2k char 4k varchar2
    00106     jboonleu   09/27/96 -  add macro used only in beta2
    00107     cxcheng    09/27/96 -  move oroenv to oroenv.h
    00108     cxcheng    09/24/96 -  remove unnecessary orotyp
    00109     cxcheng    09/25/96 -  add typecode OROTCS01 as placeholder for lob pointer
    00110     cxcheng    09/20/96 -  add TDO load option orotgo
    00111     jboonleu   09/18/96 -  add OROOPOREC
    00112     jboonleu   09/10/96 -  add OROOPODFL
    00113     jweisz     08/27/96 -  add SQL internal typecode OROTCS00
    00114     cxcheng    08/02/96 -  add PLSQL internal typecodes OROTCP..
    00115     cxcheng    08/01/96 -  add OROTCFAR to fill up space left by OROTCCAR
    00116     jboonleu   07/16/96 -  new pin option
    00117     cxcheng    06/18/96 -  add casts to OROTNOPRE and OROTNOSCL
    00118     cxcheng    05/29/96 -  change OROTCNPT back to OROTCDOM
    00119     vkrishna   05/27/96 -  add OROTCCAR
    00120     cxcheng    05/17/96 -  replace OROTCFAR with OROTCCAR
    00121     cxcheng    05/08/96 -  change orotmf from ub1 to ub2
    00122     cxcheng    05/07/96 -  fix public defines for method types
    00123     cxcheng    04/30/96 -  change OROTCDOM to OROTCNPT
    00124     cxcheng    04/15/96 -  remove obsolete OROTTYICT
    00125     jboonleu   04/12/96 -  add new pin option
    00126     sthakur    04/12/96 -  add indicator type and indicator status
    00127     cxcheng    04/10/96 -  add function parameter codes for ORT/KOT
    00128     cxcheng    04/03/96 -  replace OROTCFAR as OROTCCAR
    00129     jwijaya    03/29/96 -  add OROTTCCAR
    00130     jwijaya    03/27/96 -  better comments for orotc
    00131     cxcheng    02/23/96 -  add typecodes for SMALLINT and VARCHAR2
    00132     skrishna   02/22/96 -  add oroind - null indicator type
    00133     cxcheng    02/21/96 -  change lob character codes to OROTCCLB, OROTCBLB...
    00134     jboonleu   02/06/96 -  new value for predefined duration
    00135     cxcheng    01/12/96 -  add OROTCCLO, OROTCBLO, OROTCFIL to orotc
    00136     cxcheng    12/05/95 -  add OROTCDOM and OROTCAAT to orotc
    00137     skotsovo   10/30/95 -  reserve space for internal 'oid' type
    00138     jwijaya    10/20/95 -  support variable-length ref
    00139     cxcheng    10/03/95 -  add OROTMFOR for ordering function to orotmf
    00140     cxcheng    10/03/95 -  Adding the ordering function type to orotmf
    00141     jboonleu   09/28/95 -  set OROODTPRE
    00142     jboonleu   09/25/95 -  add oroodt
    00143     skotsovo   03/10/95 -  update to only include release 1
    00144     jboonleu   02/15/95 -  add OROOPOREC, remove orocro, oroolo
    00145     skotsovo   01/30/95 -  add default max lengths for varrays and vstrings
    00146     skotsovo   01/24/95 -  categorize sint32, double, and real as number types
    00147                            (with precision and scale) instead of scalar types.
    00148     skotsovo   12/20/94 -  add release 1 types
    00149     skotsovo   12/12/94 -  update according to new ots doc
    00150     skotsovo   12/01/94 -  add default precision and scale
    00151     jwijaya    11/15/94 -  rename ORONSPTAB to ORONSPEXT
    00152     jwijaya    10/25/94 -  tint
    00153     jwijaya    10/06/94 -  add namespace
    00154     jwijaya    10/02/94 -  connection handle -> connection number
    00155     skotsovo   09/12/94 -  keep 0 as uninitialized value for ORT consts
    00156     skotsovo   08/24/94 -  fix orotec
    00157     skotsovo   08/17/94 -  modify type code names
    00158     skotsovo   08/12/94 -  fix 141 lint errors
    00159     skotsovo   07/25/94 -  modify categorization of complex types (orotc)
    00160     skotsovo   07/07/94 -  change typecode enum values & add decimal type
    00161     skotsovo   07/01/94 -  change order of typecodes
    00162     jwijaya    06/15/94 -  review
    00163     jboonleu   06/13/94 -  add comments for the object cache options
    00164     jwijaya    06/13/94 -  adhere to the header file template
    00165     skotsovo   06/09/94 -  make ots scalar type names consistent with the ots
    00166                            document
    00167     jwijaya    06/07/94 -  include oratypes.h instead of s.h
    00168     skotsovo   05/24/94 -  change typecodes
    00169     jwijaya    05/23/94 -  fix comments of ororef
    00170     skotsovo   05/19/94 -  remove type composition
    00171     skotsovo   05/09/94 -  modified orotc according to new OTS document
    00172     jwijaya    05/03/94 -  oroid and ororef
    00173     jwijaya    01/26/94 -  Creation
    00174 */
    00175
    00176
    00177 #ifndef ORATYPES
    00178 #include <oratypes.h>
    00179 #endif
    00180
    00181 #ifndef OCIDFN_ORACLE
    00182 #include <ocidfn.h>
    00183 #endif
    00184
    00185 #ifndef ORO_ORACLE
    00186 #define ORO_ORACLE
    00187
    00188 /*---------------------------------------------------------------------------*/
    00189 /*                         SHORT NAMES SUPPORT SECTION                       */
    00190 /*---------------------------------------------------------------------------*/
    00191
    00192 #ifdef SLSHORTNAME
    00193
    00194 /* the following are short names that are only supported on IBM mainframes
    00195    with the SLSHORTNAME defined.
    00196    With this all subsequent long names will actually be substituted with
    00197    the short names here */
    00198
    00199 #define OCIDuration                     oroodt
    00200 #define OCIInd                          oroind
    00201 #define OCILockOpt                      oroolm
    00202 #define OCIMarkOpt                      oroomo
    00203 #define OCIObjectEvent                  orocev
    00204 #define OCIObjectProperty               oroopr
    00205 #define OCIPinOpt                       oroopo
    00206 #define OCIRef                          ororef
    00207 #define OCIRefreshOpt                   orooro
    00208 #define OCITypeCode                     orotc
    00209 #define OCITypeEncap                    orotec
    00210 #define OCITypeGetOpt                   orotgo
    00211 #define OCITypeMethodFlag               orotmf
    00212 #define OCITypeParamMode                orotpm
    00213 #define OCIObjectPropId                 oroopi
    00214 #define OCIObjectLifetime               oroolft
    00215 #define OCIObjectMarkstatus             oroomst
    00216 #define OCI_LOCK_NONE                   OROOLMNUL
    00217 #define OCI_LOCK_X                      OROOLMX
    00218 #define OCI_LOCK_X_NOWAIT               OROOLMXNW
    00219 #define OCI_MARK_DEFAULT                OROOMODFL
    00220 #define OCI_MARK_NONE                   OROOMONON
    00221 #define OCI_MARK_UPDATE                 OROOMOUPD
    00222 #define OCI_OBJECTEVENT_AFTER_FLUSH     OROCEVAFL
    00223 #define OCI_OBJECTEVENT_AFTER_REFRESH   OROCEVARF
    00224 #define OCI_OBJECTEVENT_BEFORE_FLUSH    OROCEVBFL
    00225 #define OCI_OBJECTEVENT_BEFORE_REFRESH  OROCEVBRF
    00226 #define OCI_OBJECTEVENT_WHEN_LOCK       OROCEVWLK
    00227 #define OCI_OBJECTEVENT_WHEN_MARK_DELETED OROCEVWDL
    00228 #define OCI_OBJECTEVENT_WHEN_MARK_UPDATED OROCEVWUP
    00229 #define OCI_OBJECTEVENT_WHEN_UNMARK     OROCEVWUM
    00230 #define OCI_OBJECTPROP_DIRTIED          OROOPRDRT
    00231 #define OCI_OBJECTPROP_LOADED           OROOPRLOD
    00232 #define OCI_OBJECTPROP_LOCKED           OROOPRLCK
    00233 #define OCI_PIN_ANY                     OROOPOANY
    00234 #define OCI_PIN_DEFAULT                 OROOPODFL
    00235 #define OCI_PIN_LATEST                  OROOPOLST
    00236 #define OCI_PIN_RECENT                  OROOPOREC
    00237 #define OCI_REFRESH_LOADED              OROOROLOD
    00238 #define OCI_TYPEENCAP_PRIVATE           OROTECPVT
    00239 #define OCI_TYPEENCAP_PUBLIC            OROTECPUB
    00240 #define OCI_TYPEGET_ALL                 OROTGOALL
    00241 #define OCI_TYPEGET_HEADER              OROTGOHDR
    00242 #define OCI_TYPEMETHOD_CONSTANT         OROTMCON
    00243 #define OCI_TYPEMETHOD_CONSTRUCTOR      OROTMCSTR
    00244 #define OCI_TYPEMETHOD_DESTRUCTOR       OROTMDSTR
    00245 #define OCI_TYPEMETHOD_INLINE           OROTMINL
    00246 #define OCI_TYPEMETHOD_MAP              OROTMMAP
    00247 #define OCI_TYPEMETHOD_OPERATOR         OROTMOP
    00248 #define OCI_TYPEMETHOD_ORDER            OROTMOR
    00249 #define OCI_TYPEMETHOD_RNDS             OROTMRDS
    00250 #define OCI_TYPEMETHOD_RNPS             OROTMRPS
    00251 #define OCI_TYPEMETHOD_SELFISH          OROTMSLF
    00252 #define OCI_TYPEMETHOD_VIRTUAL          OROTMVRT
    00253 #define OCI_TYPEMETHOD_WNDS             OROTMWDS
    00254 #define OCI_TYPEMETHOD_WNPS             OROTMWPS
    00255 #define OCI_TYPEMETHOD_ABSTRACT         OROTMABSTRACT
    00256 #define OCI_TYPEMETHOD_OVERRIDING       OROTMOVERRIDING
    00257 #define OCI_TYPEMETHOD_PIPELINED        OROTMPIPELINED
    00258 #define OCI_TYPEPARAM_BYREF             OROTPMREF
    00259 #define OCI_TYPEPARAM_IN                OROTPMIN
    00260 #define OCI_TYPEPARAM_INOUT             OROTPMIO
    00261 #define OCI_TYPEPARAM_OUT               OROTPMOUT
    00262 #define OCI_TYPEPARAM_OUTNCPY           OROTPMOUTNCPY
    00263 #define OCI_TYPEPARAM_INOUTNCPY         OROTPMIONCPY
    00264
    00265 #endif                                                        /* SLSHORTNAME */
    00266
    00267
    00268 /*---------------------------------------------------------------------------*/
    00269 /*                    PUBLIC TYPES, CONSTANTS AND MACROS                     */
    00270 /*---------------------------------------------------------------------------*/
    00271
    00272 /*---------------------------------------------------------------------------*/
    00273 /*                  GENERAL OBJECT TYPES, CONSTANTS, MACROS                  */
    00274 /*---------------------------------------------------------------------------*/
    00275
    00276 /*------------------------- OBJECT REFERENCE (REF) --------------------------*/
    00277
    00278 typedef struct OCIRef OCIRef;
    00279 /*
    00280  * OCIRef - OCI object REFerence
    00281  *
    00282  * In the Oracle object runtime environment, an object is identified by an
    00283  * object reference (ref) which contains the object identifier plus other
    00284  * runtime information.  The contents of a ref is opaque to clients.  Use
    00285  * OCIObjectNew() to construct a ref.
    00286  */
    00287
    00288
    00289 /*--------------------------- OBJECT INDICATOR ------------------------------*/
    00290
    00291 typedef sb2 OCIInd;
    00292 /*
    00293  * OCIInd -- a variable of this type contains (null) indicator information
    00294  */
    00295
    00296 #define OCI_IND_NOTNULL (OCIInd)0                                /* not NULL */
    00297 #define OCI_IND_NULL (OCIInd)(-1)                                    /* NULL */
    00298 #define OCI_IND_BADNULL (OCIInd)(-2)                             /* BAD NULL */
    00299 #define OCI_IND_NOTNULLABLE (OCIInd)(-3)                     /* not NULLable */
    00300
    00301 /*---------------------------------------------------------------------------*/
    00302 /*                               OBJECT CACHE                                */
    00303 /*---------------------------------------------------------------------------*/
    00304
    00305 /* To enable object change detection mode, set this to TRUE */
    00306 #define OCI_ATTR_OBJECT_DETECTCHANGE            0x00000020
    00307
    00308 /* To enable object creation with  non-NULL attributes by default, set the
    00309    following to TRUE.
    00310    By default, object is created with NULL attributes
    00311 */
    00312 #define OCI_ATTR_OBJECT_NEWNOTNULL   0x00000010
    00313
    00314 /* To enable sorting of the objects that belong to the same table
    00315    before being flushed through OCICacheFlush.
    00316    Please note that by enabling this object cache will not be flushing
    00317    the objects in the same order they were dirtied */
    00318 #define OCI_ATTR_CACHE_ARRAYFLUSH 0x00000040
    00319
    00320 /*--------------------------- OBJECT PIN OPTION -----------------------------*/
    00321
    00322 enum OCIPinOpt
    00323 {
    00324   /* 0 = uninitialized */
    00325   OCI_PIN_DEFAULT = 1,                                 /* default pin option */
    00326   OCI_PIN_ANY = 3,                          /* pin any copy of the object */
    00327   OCI_PIN_RECENT = 4,                    /* pin recent copy of the object */
    00328   OCI_PIN_LATEST = 5                     /* pin latest copy of the object */
    00329 };
    00330 typedef enum OCIPinOpt OCIPinOpt;
    00331
    00332 /*
    00333  * OCIPinOpt - OCI object Pin Option
    00334  *
    00335  * In the Oracle object runtime environment, the program has the option to
    00336  * specify which copy of the object to pin.
    00337  *
    00338  * OCI_PINOPT_DEFAULT pins an object using the default pin option.  The default
    00339  * pin option can be set as an attribute of the OCI environment handle
    00340  * (OCI_ATTR_PINTOPTION).  The value of the default pin option can be
    00341  * OCI_PINOPT_ANY, OCI_PINOPT_RECENT, or OCI_PIN_LATEST. The default option
    00342  * is initialized to OCI_PINOPT_ANY.
    00343  *
    00344  * OCI_PIN_ANY pins any copy of the object.  The object is pinned
    00345  * using the following criteria:
    00346  *   If the object copy is not loaded, load it from the persistent store.
    00347  *   Otherwise, the loaded object copy is returned to the program.
    00348  *
    00349  * OCI_PIN_RECENT pins the latest copy of an object.  The object is
    00350  * pinned using the following criteria:
    00351  *   If the object is not loaded, load the object from the persistent store
    00352  *       from the latest version.
    00353  *   If the object is not loaded in the current transaction and it is not
    00354  *       dirtied, the object is refreshed from the latest version.
    00355  *   Otherwise, the loaded object copy is returned to the program.
    00356  *
    00357  * OCI_PINOPT_LATEST pins the latest copy of an object.  The object copy is
    00358  * pinned using the following criteria:
    00359  *   If the object copy is not loaded, load it from the persistent store.
    00360  *   If the object copy is loaded and dirtied, it is returned to the program.
    00361  *   Otherwise, the loaded object copy is refreshed from the persistent store.
    00362  */
    00363
    00364
    00365
    00366 /*--------------------------- OBJECT LOCK OPTION ----------------------------*/
    00367
    00368 enum OCILockOpt
    00369 {
    00370   /* 0 = uninitialized */
    00371   OCI_LOCK_NONE = 1,                               /* null (same as no lock) */
    00372   OCI_LOCK_X = 2,                                          /* exclusive lock */
    00373   OCI_LOCK_X_NOWAIT = 3                      /* exclusive lock, do not wait  */
    00374 };
    00375 typedef enum OCILockOpt OCILockOpt;
    00376 /*
    00377  * OCILockOpt - OCI object LOCK Option
    00378  *
    00379  * This option is used to specify the locking preferences when an object is
    00380  * loaded from the server.
    00381  */
    00382
    00383
    00384 /*------------------------- OBJECT MODIFYING OPTION -------------------------*/
    00385
    00386 enum OCIMarkOpt
    00387 {
    00388   /* 0 = uninitialized */
    00389   OCI_MARK_DEFAULT = 1,        /* default (the same as OCI_MARK_NONE) */
    00390   OCI_MARK_NONE = OCI_MARK_DEFAULT,   /* object has not been modified */
    00391   OCI_MARK_UPDATE                               /* object is to be updated */
    00392 };
    00393 typedef enum OCIMarkOpt OCIMarkOpt;
    00394 /*
    00395  * OCIMarkOpt - OCI object Mark option
    00396  *
    00397  * When the object is marked updated, the client has to specify how the
    00398  * object is intended to be changed.
    00399  */
    00400
    00401 /*-------------------------- OBJECT Duration --------------------------------*/
    00402
    00403 typedef ub2 OCIDuration;
    00404
    00405 #define  OCI_DURATION_INVALID 0xFFFF                     /* Invalid duration */
    00406 #define  OCI_DURATION_BEGIN (OCIDuration)10
    00407                                            /* beginning sequence of duration */
    00408 #define  OCI_DURATION_NULL (OCIDuration)(OCI_DURATION_BEGIN-1)
    00409                                                             /* null duration */
    00410 #define  OCI_DURATION_DEFAULT (OCIDuration)(OCI_DURATION_BEGIN-2) /* default */
    00411 #define  OCI_DURATION_USER_CALLBACK (OCIDuration)(OCI_DURATION_BEGIN-3)
    00412 #define  OCI_DURATION_NEXT (OCIDuration)(OCI_DURATION_BEGIN-4)
    00413                                                     /* next special duration */
    00414 #define  OCI_DURATION_SESSION (OCIDuration)(OCI_DURATION_BEGIN)
    00415                                                   /* the end of user session */
    00416 #define  OCI_DURATION_TRANS (OCIDuration)(OCI_DURATION_BEGIN+1)
    00417                                               /* the end of user transaction */
    00418 /******************************************************************************
    00419 **  DO NOT USE OCI_DURATION_CALL. IT  IS UNSUPPORTED                         **
    00420 **  WILL BE REMOVED/CHANGED IN A FUTURE RELEASE                              **
    00421 ******************************************************************************/
    00422 #define  OCI_DURATION_CALL (OCIDuration)(OCI_DURATION_BEGIN+2)
    00423                                        /* the end of user client/server call */
    00424 #define  OCI_DURATION_STATEMENT (OCIDuration)(OCI_DURATION_BEGIN+3)
    00425
    00426 /* This is to be used only during callouts.  It is similar to that
    00427 of OCI_DURATION_CALL, but lasts only for the duration of a callout.
    00428 Its heap is from PGA */
    00429 #define  OCI_DURATION_CALLOUT (OCIDuration)(OCI_DURATION_BEGIN+4)
    00430
    00431 #define  OCI_DURATION_LAST OCI_DURATION_CALLOUT
    00432                                              /* last of predefined durations */
    00433
    00434 /* This is not being treated as other predefined durations such as
    00435    SESSION, CALL etc, because this would not have an entry in the duration
    00436    table and its functionality is primitive such that only allocate, free,
    00437    resize memory are allowed, but one cannot create subduration out of this
    00438 */
    00439 #define  OCI_DURATION_PROCESS (OCIDuration)(OCI_DURATION_BEGIN-5)
    00440
    00441 /*
    00442  * OCIDuration - OCI object duration
    00443  *
    00444  * A client can specify the duration of which an object is pinned (pin
    00445  * duration) and the duration of which the object is in memory (allocation
    00446  * duration).  If the objects are still pinned at the end of the pin duration,
    00447  * the object cache manager will automatically unpin the objects for the
    00448  * client. If the objects still exist at the end of the allocation duration,
    00449  * the object cache manager will automatically free the objects for the client.
    00450  *
    00451  * Objects that are pinned with the option OCI_DURATION_TRANS will get unpinned
    00452  * automatically at the end of the current transaction.
    00453  *
    00454  * Objects that are pinned with the option OCI_DURATION_SESSION will get
    00455  * unpinned automatically at the end of the current session (connection).
    00456  *
    00457  * The option OCI_DURATION_NULL is used when the client does not want to set
    00458  * the pin duration.  If the object is already loaded into the cache, then the
    00459  * pin duration will remain the same.  If the object is not yet loaded, the
    00460  * pin duration of the object will be set to OCI_DURATION_DEFAULT.
    00461  */
    00462
    00463 /*----------------------------- OBJECT PROPERTY -----------------------------*/
    00464
    00465 /******************************************************************************
    00466 **  DO NOT USE OCIObjectProperty. IT IS UNSUPPORTED                          **
    00467 **  WILL BE REMOVED/CHANGED IN A FUTURE RELEASE                              **
    00468 ******************************************************************************/
    00469 enum OCIObjectProperty
    00470 {
    00471   /* 0 = uninitialized */
    00472   OCI_OBJECTPROP_DIRTIED = 1,                               /* dirty objects */
    00473   OCI_OBJECTPROP_LOADED,                /* objects loaded in the transaction */
    00474   OCI_OBJECTPROP_LOCKED                                    /* locked objects */
    00475 };
    00476 typedef enum OCIObjectProperty OCIObjectProperty;
    00477 /*
    00478  * OCIObjectProperty -- OCI Object Property
    00479  * This specifies the properties of objects in the object cache.
    00480  */
    00481
    00482 /*------------------------- CACHE REFRESH OPTION ---------------------------*/
    00483
    00484 enum OCIRefreshOpt
    00485 {
    00486   /* 0 = uninitialized */
    00487   OCI_REFRESH_LOADED = 1        /* refresh objects loaded in the transaction */
    00488 };
    00489 typedef enum OCIRefreshOpt OCIRefreshOpt;
    00490 /*
    00491  * OCIRefreshOpt - OCI cache Refresh Option
    00492  * This option is used to specify the set of objects to be refreshed.
    00493  *
    00494  * OCI_REFRESH_LOAD refreshes the objects that are loaded in the current
    00495  * transaction.
    00496  */
    00497
    00498 /*-------------------------------- OBJECT EVENT -----------------------------*/
    00499
    00500 /******************************************************************************
    00501 **  DO NOT USE OCIObjectEvent. IT IS UNSUPPORTED                             **
    00502 **  WILL BE REMOVED/CHANGED IN A FUTURE RELEASE                              **
    00503 ******************************************************************************/
    00504 enum OCIObjectEvent
    00505 {
    00506    /* 0 = uninitialized */
    00507    OCI_OBJECTEVENT_BEFORE_FLUSH = 1,            /* before flushing the cache */
    00508    OCI_OBJECTEVENT_AFTER_FLUSH,                  /* after flushing the cache */
    00509    OCI_OBJECTEVENT_BEFORE_REFRESH,            /* before refreshing the cache */
    00510    OCI_OBJECTEVENT_AFTER_REFRESH,              /* after refreshing the cache */
    00511    OCI_OBJECTEVENT_WHEN_MARK_UPDATED,    /* when an object is marked updated */
    00512    OCI_OBJECTEVENT_WHEN_MARK_DELETED,    /* when an object is marked deleted */
    00513    OCI_OBJECTEVENT_WHEN_UNMARK,          /* when an object is being unmarked */
    00514    OCI_OBJECTEVENT_WHEN_LOCK               /* when an object is being locked */
    00515 };
    00516 typedef enum OCIObjectEvent OCIObjectEvent;
    00517 /*
    00518  * OCIObjectEvent -- OCI Object Event
    00519  * This specifies the kind of event that is supported by the object
    00520  * cache.  The program can register a callback that is invoked when the
    00521  * specified event occurs.
    00522  */
    00523
    00524 /*----------------------------- OBJECT COPY OPTION --------------------------*/
    00525 #define OCI_OBJECTCOPY_NOREF (ub1)0x01
    00526 /*
    00527  * OCIObjectCopyFlag - Object copy flag
    00528  *
    00529  * If OCI_OBJECTCOPY_NOREF is specified when copying an instance, the
    00530  * reference and lob will not be copied to the target instance.
    00531  */
    00532
    00533 /*----------------------------- OBJECT FREE OPTION --------------------------*/
    00534 #define OCI_OBJECTFREE_FORCE      (ub2)0x0001
    00535 #define OCI_OBJECTFREE_NONULL     (ub2)0x0002
    00536 #define OCI_OBJECTFREE_HEADER     (ub2)0x0004
    00537 /*
    00538  * OCIObjectFreeFlag - Object free flag
    00539  *
    00540  * If OCI_OBJECTCOPY_FORCE is specified when freeing an instance, the instance
    00541  * is freed regardless it is pinned or diritied.
    00542  * If OCI_OBJECTCOPY_NONULL is specified when freeing an instance, the null
    00543  * structure is not freed.
    00544  */
    00545
    00546 /*----------------------- OBJECT PROPERTY ID -------------------------------*/
    00547
    00548 typedef ub1 OCIObjectPropId;
    00549 #define OCI_OBJECTPROP_LIFETIME 1       /* persistent or transient or value */
    00550 #define OCI_OBJECTPROP_SCHEMA 2   /* schema name of table containing object */
    00551 #define OCI_OBJECTPROP_TABLE 3     /* table name of table containing object */
    00552 #define OCI_OBJECTPROP_PIN_DURATION 4             /* pin duartion of object */
    00553 #define OCI_OBJECTPROP_ALLOC_DURATION 5         /* alloc duartion of object */
    00554 #define OCI_OBJECTPROP_LOCK 6                      /* lock status of object */
    00555 #define OCI_OBJECTPROP_MARKSTATUS 7                /* mark status of object */
    00556 #define OCI_OBJECTPROP_VIEW 8            /* is object a view object or not? */
    00557
    00558 /*
    00559  * OCIObjectPropId - OCI Object Property Id
    00560  * Identifies the different properties of objects.
    00561  */
    00562
    00563 /*----------------------- OBJECT LIFETIME ----------------------------------*/
    00564
    00565 enum OCIObjectLifetime
    00566 {
    00567    /* 0 = uninitialized */
    00568    OCI_OBJECT_PERSISTENT = 1,                          /* persistent object */
    00569    OCI_OBJECT_TRANSIENT,                                /* transient object */
    00570    OCI_OBJECT_VALUE                                         /* value object */
    00571 };
    00572 typedef enum OCIObjectLifetime OCIObjectLifetime;
    00573 /*
    00574  * OCIObjectLifetime - OCI Object Lifetime
    00575  * Classifies objects depending upon the lifetime and referenceability
    00576  * of the object.
    00577  */
    00578
    00579 /*----------------------- OBJECT MARK STATUS -------------------------------*/
    00580
    00581 typedef uword OCIObjectMarkStatus;
    00582 #define OCI_OBJECT_NEW     0x0001                             /* new object */
    00583 #define OCI_OBJECT_DELETED 0x0002                  /* object marked deleted */
    00584 #define OCI_OBJECT_UPDATED 0x0004                  /* object marked updated */
    00585 /*
    00586  * OCIObjectMarkStatus - OCI Object Mark Status
    00587  * Status of the object - new or updated or deleted
    00588  */
    00589
    00590 /* macros to test the object mark status */
    00591 #define OCI_OBJECT_IS_UPDATED(flag) bit((flag), OCI_OBJECT_UPDATED)
    00592 #define OCI_OBJECT_IS_DELETED(flag) bit((flag), OCI_OBJECT_DELETED)
    00593 #define OCI_OBJECT_IS_NEW(flag) bit((flag), OCI_OBJECT_NEW)
    00594 #define OCI_OBJECT_IS_DIRTY(flag) \
    00595   bit((flag), OCI_OBJECT_UPDATED|OCI_OBJECT_NEW|OCI_OBJECT_DELETED)
    00596
    00597 /*---------------------------------------------------------------------------*/
    00598 /*                               TYPE MANAGER                                */
    00599 /*---------------------------------------------------------------------------*/
    00600
    00601 /*------------------------------ TYPE CODE ----------------------------------*/
    00602
    00603 /*
    00604  * Type manager typecodes
    00605  *
    00606  * These are typecodes designed to be used with the type manager;
    00607  * they also include longer, more readable versions of existing SQLT names.
    00608  * Those types that are directly related to existing SQLT types are #define'd
    00609  * to their SQLT equivalents.
    00610  *
    00611  * The type manager typecodes are designed to be useable for all OCI calls.
    00612  * They are in the range from 192 to 320 for typecodes, so as not to conflict
    00613  * with existing OCI SQLT typecodes (see ocidfn.h).
    00614  */
    00615
    00616 #define OCI_TYPECODE_REF         SQLT_REF        /* SQL/OTS OBJECT REFERENCE */
    00617 #define OCI_TYPECODE_DATE        SQLT_DAT              /* SQL DATE  OTS DATE */
    00618 #define OCI_TYPECODE_SIGNED8     27      /* SQL SIGNED INTEGER(8)  OTS SINT8 */
    00619 #define OCI_TYPECODE_SIGNED16    28    /* SQL SIGNED INTEGER(16)  OTS SINT16 */
    00620 #define OCI_TYPECODE_SIGNED32    29    /* SQL SIGNED INTEGER(32)  OTS SINT32 */
    00621 #define OCI_TYPECODE_REAL        21                /* SQL REAL  OTS SQL_REAL */
    00622 #define OCI_TYPECODE_DOUBLE      22  /* SQL DOUBLE PRECISION  OTS SQL_DOUBLE */
    00623 #define OCI_TYPECODE_BFLOAT      SQLT_IBFLOAT       /* Binary float */
    00624 #define OCI_TYPECODE_BDOUBLE     SQLT_IBDOUBLE  /* Binary double */
    00625 #define OCI_TYPECODE_FLOAT       SQLT_FLT      /* SQL FLOAT(P)  OTS FLOAT(P) */
    00626 #define OCI_TYPECODE_NUMBER      SQLT_NUM/* SQL NUMBER(P S)  OTS NUMBER(P S) */
    00627 #define OCI_TYPECODE_DECIMAL     SQLT_PDN
    00628                                        /* SQL DECIMAL(P S)  OTS DECIMAL(P S) */
    00629 #define OCI_TYPECODE_UNSIGNED8   SQLT_BIN
    00630                                        /* SQL UNSIGNED INTEGER(8)  OTS UINT8 */
    00631 #define OCI_TYPECODE_UNSIGNED16  25  /* SQL UNSIGNED INTEGER(16)  OTS UINT16 */
    00632 #define OCI_TYPECODE_UNSIGNED32  26  /* SQL UNSIGNED INTEGER(32)  OTS UINT32 */
    00633 #define OCI_TYPECODE_OCTET       245                   /* SQL ???  OTS OCTET */
    00634 #define OCI_TYPECODE_SMALLINT    246           /* SQL SMALLINT  OTS SMALLINT */
    00635 #define OCI_TYPECODE_INTEGER     SQLT_INT        /* SQL INTEGER  OTS INTEGER */
    00636 #define OCI_TYPECODE_RAW         SQLT_LVB          /* SQL RAW(N)  OTS RAW(N) */
    00637 #define OCI_TYPECODE_PTR         32              /* SQL POINTER  OTS POINTER */
    00638 #define OCI_TYPECODE_VARCHAR2    SQLT_VCS
    00639                                      /* SQL VARCHAR2(N)  OTS SQL_VARCHAR2(N) */
    00640 #define OCI_TYPECODE_CHAR        SQLT_AFC    /* SQL CHAR(N)  OTS SQL_CHAR(N) */
    00641 #define OCI_TYPECODE_VARCHAR     SQLT_CHR
    00642                                        /* SQL VARCHAR(N)  OTS SQL_VARCHAR(N) */
    00643 #define OCI_TYPECODE_MLSLABEL    SQLT_LAB                    /* OTS MLSLABEL */
    00644 #define OCI_TYPECODE_VARRAY      247         /* SQL VARRAY  OTS PAGED VARRAY */
    00645 #define OCI_TYPECODE_TABLE       248              /* SQL TABLE  OTS MULTISET */
    00646 #define OCI_TYPECODE_OBJECT      SQLT_NTY       /* SQL/OTS NAMED OBJECT TYPE */
    00647 #define OCI_TYPECODE_OPAQUE       58                /*  SQL/OTS Opaque Types */
    00648 #define OCI_TYPECODE_NAMEDCOLLECTION  SQLT_NCO
    00649                                             /* SQL/OTS NAMED COLLECTION TYPE */
    00650 #define OCI_TYPECODE_BLOB        SQLT_BLOB    /* SQL/OTS BINARY LARGE OBJECT */
    00651 #define OCI_TYPECODE_BFILE       SQLT_BFILE    /* SQL/OTS BINARY FILE OBJECT */
    00652 #define OCI_TYPECODE_CLOB        SQLT_CLOB /* SQL/OTS CHARACTER LARGE OBJECT */
    00653 #define OCI_TYPECODE_CFILE       SQLT_CFILE /* SQL/OTS CHARACTER FILE OBJECT */
    00654
    00655 /* the following are ANSI datetime datatypes added in 8.1 */
    00656 #define OCI_TYPECODE_TIME        SQLT_TIME                   /* SQL/OTS TIME */
    00657 #define OCI_TYPECODE_TIME_TZ     SQLT_TIME_TZ             /* SQL/OTS TIME_TZ */
    00658 #define OCI_TYPECODE_TIMESTAMP   SQLT_TIMESTAMP         /* SQL/OTS TIMESTAMP */
    00659 #define OCI_TYPECODE_TIMESTAMP_TZ  SQLT_TIMESTAMP_TZ /* SQL/OTS TIMESTAMP_TZ */
    00660
    00661 #define OCI_TYPECODE_TIMESTAMP_LTZ  SQLT_TIMESTAMP_LTZ /* TIMESTAMP_LTZ */
    00662
    00663 #define OCI_TYPECODE_INTERVAL_YM SQLT_INTERVAL_YM   /* SQL/OTS INTRVL YR-MON */
    00664 #define OCI_TYPECODE_INTERVAL_DS SQLT_INTERVAL_DS  /* SQL/OTS INTRVL DAY-SEC */
    00665 #define OCI_TYPECODE_UROWID      SQLT_RDD                     /* Urowid type */
    00666
    00667
    00668 #define OCI_TYPECODE_OTMFIRST    228     /* first Open Type Manager typecode */
    00669 #define OCI_TYPECODE_OTMLAST     320                    /* last OTM typecode */
    00670 #define OCI_TYPECODE_SYSFIRST    228     /* first OTM system type (internal) */
    00671 #define OCI_TYPECODE_SYSLAST     235      /* last OTM system type (internal) */
    00672 #define OCI_TYPECODE_PLS_INTEGER   266     /* type code for PLS_INTEGER */
    00673
    00674 /* the following are PL/SQL-only internal. They should not be used */
    00675 #define OCI_TYPECODE_ITABLE      SQLT_TAB             /* PLSQL indexed table */
    00676 #define OCI_TYPECODE_RECORD      SQLT_REC                    /* PLSQL record */
    00677 #define OCI_TYPECODE_BOOLEAN     SQLT_BOL                   /* PLSQL boolean */
    00678
    00679 /* NOTE : The following NCHAR related codes are just short forms for saying
    00680    OCI_TYPECODE_VARCHAR2 with a charset form of SQLCS_NCHAR. These codes are
    00681    intended for use in the OCIAnyData API only and nowhere else. */
    00682 #define OCI_TYPECODE_NCHAR       286
    00683 #define OCI_TYPECODE_NVARCHAR2   287
    00684 #define OCI_TYPECODE_NCLOB       288
    00685
    00686
    00687 /* To indicate absence of typecode being specified */
    00688 #define OCI_TYPECODE_NONE          0
    00689 /* To indicate error has to be taken from error handle - reserved for
    00690    sqlplus use */
    00691 #define OCI_TYPECODE_ERRHP         283
    00692
    00693 /* The OCITypeCode type is interchangeable with the existing SQLT type
    00694    which is a ub2 */
    00695 typedef ub2 OCITypeCode;
    00696
    00697
    00698 /*----------------------- GET OPTIONS FOR TDO  ------------------------------*/
    00699
    00700 enum OCITypeGetOpt
    00701 {
    00702   OCI_TYPEGET_HEADER,
    00703                 /* load only the header portion of the TDO when getting type */
    00704   OCI_TYPEGET_ALL       /* load all attribute and method descriptors as well */
    00705 };
    00706 typedef enum OCITypeGetOpt OCITypeGetOpt;
    00707
    00708 /*
    00709  * OCITypeGetOpt
    00710  *
    00711  * This is the flag passed to OCIGetTypeArray() to indicate how the TDO is
    00712  * going to be loaded into the object cache.
    00713  * OCI_TYPEGET_HEADER implies that only the header portion is to be loaded
    00714  * initially, with the rest loaded in on a 'lazy' basis. Only the header is
    00715  * needed for PL/SQL and OCI operations. OCI_TYPEGET_ALL implies that ALL
    00716  * the attributes and methods belonging to a TDO will be loaded into the
    00717  * object cache in one round trip. Hence it will take much longer to execute,
    00718  * but will ensure that no more loading needs to be done when pinning ADOs
    00719  * etc. This is only needed if your code needs to examine and manipulate
    00720  * attribute and method information.
    00721  *
    00722  * The default is OCI_TYPEGET_HEADER.
    00723  */
    00724
    00725
    00726 /*------------------------ TYPE ENCAPSULTATION LEVEL ------------------------*/
    00727
    00728 enum OCITypeEncap
    00729 {
    00730   /* 0 = uninitialized */
    00731   OCI_TYPEENCAP_PRIVATE,                /* private: only internally visible */
    00732   OCI_TYPEENCAP_PUBLIC /* public: visible to both internally and externally */
    00733 };
    00734 typedef enum OCITypeEncap OCITypeEncap;
    00735 /*
    00736  * OCITypeEncap - OCI Encapsulation Level
    00737  */
    00738
    00739
    00740 /*---------------------------- TYPE METHOD FLAGS ----------------------------*/
    00741
    00742 enum OCITypeMethodFlag
    00743 {
    00744   OCI_TYPEMETHOD_INLINE = 0x0001,                                  /* inline */
    00745   OCI_TYPEMETHOD_CONSTANT = 0x0002,                              /* constant */
    00746   OCI_TYPEMETHOD_VIRTUAL = 0x0004,                                /* virtual */
    00747   OCI_TYPEMETHOD_CONSTRUCTOR = 0x0008,                        /* constructor */
    00748   OCI_TYPEMETHOD_DESTRUCTOR = 0x0010,                          /* destructor */
    00749   OCI_TYPEMETHOD_OPERATOR  = 0x0020,                             /* operator */
    00750   OCI_TYPEMETHOD_SELFISH = 0x0040,     /* selfish method (generic otherwise) */
    00751
    00752   OCI_TYPEMETHOD_MAP = 0x0080,                    /* map (relative ordering) */
    00753   OCI_TYPEMETHOD_ORDER  = 0x0100,               /* order (relative ordering) */
    00754   /* OCI_TYPEMETHOD_MAP and OCI_TYPEMETHOD_ORDER are mutually exclusive */
    00755
    00756   OCI_TYPEMETHOD_RNDS= 0x0200,               /* Read no Data State (default) */
    00757   OCI_TYPEMETHOD_WNDS= 0x0400,                        /* Write no Data State */
    00758   OCI_TYPEMETHOD_RNPS= 0x0800,                      /* Read no Process State */
    00759   OCI_TYPEMETHOD_WNPS= 0x1000,                     /* Write no Process State */
    00760   OCI_TYPEMETHOD_ABSTRACT = 0x2000,    /* abstract (not instantiable) method */
    00761   OCI_TYPEMETHOD_OVERRIDING = 0x4000,                   /* overriding method */
    00762   OCI_TYPEMETHOD_PIPELINED = 0x8000                   /* method is pipelined */
    00763 };
    00764 typedef enum OCITypeMethodFlag OCITypeMethodFlag;
    00765
    00766 /* macros to test the type method flags */
    00767 #define OCI_METHOD_IS_INLINE(flag) bit((flag), OCI_TYPEMETHOD_INLINE)
    00768 #define OCI_METHOD_IS_CONSTANT(flag) bit((flag), OCI_TYPEMETHOD_CONSTANT)
    00769 #define OCI_METHOD_IS_VIRTUAL(flag) bit((flag), OCI_TYPEMETHOD_VIRTUAL)
    00770 #define OCI_METHOD_IS_CONSTRUCTOR(flag) bit((flag), OCI_TYPEMETHOD_CONSTRUCTOR)
    00771 #define OCI_METHOD_IS_DESTRUCTOR(flag) bit((flag), OCI_TYPEMETHOD_DESTRUCTOR)
    00772 #define OCI_METHOD_IS_OPERATOR(flag) bit((flag), OCI_TYPEMETHOD_OPERATOR)
    00773 #define OCI_METHOD_IS_SELFISH(flag) bit((flag), OCI_TYPEMETHOD_SELFISH)
    00774 #define OCI_METHOD_IS_MAP(flag) bit((flag), OCI_TYPEMETHOD_MAP)
    00775 #define OCI_METHOD_IS_ORDER(flag) bit((flag), OCI_TYPEMETHOD_ORDER)
    00776 #define OCI_METHOD_IS_RNDS(flag) bit((flag), OCI_TYPEMETHOD_RNDS)
    00777 #define OCI_METHOD_IS_WNDS(flag) bit((flag), OCI_TYPEMETHOD_WNDS)
    00778 #define OCI_METHOD_IS_RNPS(flag) bit((flag), OCI_TYPEMETHOD_RNPS)
    00779 #define OCI_METHOD_IS_WNPS(flag) bit((flag), OCI_TYPEMETHOD_WNPS)
    00780 #define OCI_METHOD_IS_ABSTRACT(flag) bit((flag), OCI_TYPEMETHOD_ABSTRACT)
    00781 #define OCI_METHOD_IS_OVERRIDING(flag) bit((flag), OCI_TYPEMETHOD_OVERRIDING)
    00782 #define OCI_METHOD_IS_PIPELINED(flag) bit((flag), OCI_TYPEMETHOD_PIPELINED)
    00783
    00784 #define OCI_TYPEMETHOD_IS_INLINE(flag) bit((flag), OCI_TYPEMETHOD_INLINE)
    00785 #define OCI_TYPEMETHOD_IS_CONSTANT(flag) bit((flag), OCI_TYPEMETHOD_CONSTANT)
    00786 #define OCI_TYPEMETHOD_IS_VIRTUAL(flag) bit((flag), OCI_TYPEMETHOD_VIRTUAL)
    00787 #define OCI_TYPEMETHOD_IS_CONSTRUCTOR(flag) \
    00788   bit((flag), OCI_TYPEMETHOD_CONSTRUCTOR)
    00789 #define OCI_TYPEMETHOD_IS_DESTRUCTOR(flag) \
    00790   bit((flag), OCI_TYPEMETHOD_DESTRUCTOR)
    00791 #define OCI_TYPEMETHOD_IS_OPERATOR(flag) bit((flag), OCI_TYPEMETHOD_OPERATOR)
    00792 #define OCI_TYPEMETHOD_IS_SELFISH(flag) bit((flag), OCI_TYPEMETHOD_SELFISH)
    00793 #define OCI_TYPEMETHOD_IS_MAP(flag) bit((flag), OCI_TYPEMETHOD_MAP)
    00794 #define OCI_TYPEMETHOD_IS_ORDER(flag) bit((flag), OCI_TYPEMETHOD_ORDER)
    00795 #define OCI_TYPEMETHOD_IS_RNDS(flag) bit((flag), OCI_TYPEMETHOD_RNDS)
    00796 #define OCI_TYPEMETHOD_IS_WNDS(flag) bit((flag), OCI_TYPEMETHOD_WNDS)
    00797 #define OCI_TYPEMETHOD_IS_RNPS(flag) bit((flag), OCI_TYPEMETHOD_RNPS)
    00798 #define OCI_TYPEMETHOD_IS_WNPS(flag) bit((flag), OCI_TYPEMETHOD_WNPS)
    00799 #define OCI_TYPEMETHOD_IS_ABSTRACT(flag) bit((flag), OCI_TYPEMETHOD_ABSTRACT)
    00800 #define OCI_TYPEMETHOD_IS_OVERRIDING(flag) \
    00801   bit((flag), OCI_TYPEMETHOD_OVERRIDING)
    00802 #define OCI_TYPEMETHOD_IS_PIPELINED(flag) bit((flag), OCI_TYPEMETHOD_PIPELINED)
    00803
    00804 /* macros to set the type method flags */
    00805 #define OCI_TYPEMETHOD_SET_INLINE(flag) bis((flag), OCI_TYPEMETHOD_INLINE)
    00806 #define OCI_TYPEMETHOD_SET_CONSTANT(flag) bis((flag), OCI_TYPEMETHOD_CONSTANT)
    00807 #define OCI_TYPEMETHOD_SET_VIRTUAL(flag) bis((flag), OCI_TYPEMETHOD_VIRTUAL)
    00808 #define OCI_TYPEMETHOD_SET_CONSTRUCTOR(flag) \
    00809   bis((flag), OCI_TYPEMETHOD_CONSTRUCTOR)
    00810 #define OCI_TYPEMETHOD_SET_DESTRUCTOR(flag) \
    00811   bis((flag), OCI_TYPEMETHOD_DESTRUCTOR)
    00812 #define OCI_TYPEMETHOD_SET_OPERATOR(flag) bis((flag), OCI_TYPEMETHOD_OPERATOR)
    00813 #define OCI_TYPEMETHOD_SET_SELFISH(flag) bis((flag), OCI_TYPEMETHOD_SELFISH)
    00814 #define OCI_TYPEMETHOD_SET_MAP(flag) bis((flag), OCI_TYPEMETHOD_MAP)
    00815 #define OCI_TYPEMETHOD_SET_ORDER(flag) bis((flag), OCI_TYPEMETHOD_ORDER)
    00816 #define OCI_TYPEMETHOD_SET_RNDS(flag) bis((flag), OCI_TYPEMETHOD_RNDS)
    00817 #define OCI_TYPEMETHOD_SET_WNDS(flag) bis((flag), OCI_TYPEMETHOD_WNDS)
    00818 #define OCI_TYPEMETHOD_SET_RNPS(flag) bis((flag), OCI_TYPEMETHOD_RNPS)
    00819 #define OCI_TYPEMETHOD_SET_WNPS(flag) bis((flag), OCI_TYPEMETHOD_WNPS)
    00820
    00821 /* macros to clear the type method flags */
    00822 #define OCI_TYPEMETHOD_CLEAR_INLINE(flag) bic((flag), OCI_TYPEMETHOD_INLINE)
    00823 #define OCI_TYPEMETHOD_CLEAR_CONSTANT(flag) \
    00824   bic((flag), OCI_TYPEMETHOD_CONSTANT)
    00825 #define OCI_TYPEMETHOD_CLEAR_VIRTUAL(flag) bic((flag), OCI_TYPEMETHOD_VIRTUAL)
    00826 #define OCI_TYPEMETHOD_CLEAR_CONSTRUCTOR(flag) \
    00827   bic((flag), OCI_TYPEMETHOD_CONSTRUCTOR)
    00828 #define OCI_TYPEMETHOD_CLEAR_DESTRUCTOR(flag) \
    00829   bic((flag), OCI_TYPEMETHOD_DESTRUCTOR)
    00830 #define OCI_TYPEMETHOD_CLEAR_OPERATOR(flag) \
    00831   bic((flag), OCI_TYPEMETHOD_OPERATOR)
    00832 #define OCI_TYPEMETHOD_CLEAR_SELFISH(flag) bic((flag), OCI_TYPEMETHOD_SELFISH)
    00833 #define OCI_TYPEMETHOD_CLEAR_MAP(flag) bic((flag), OCI_TYPEMETHOD_MAP)
    00834 #define OCI_TYPEMETHOD_CLEAR_ORDER(flag) bic((flag), OCI_TYPEMETHOD_ORDER)
    00835 #define OCI_TYPEMETHOD_CLEAR_RNDS(flag) bic((flag), OCI_TYPEMETHOD_RNDS)
    00836 #define OCI_TYPEMETHOD_CLEAR_WNDS(flag) bic((flag), OCI_TYPEMETHOD_WNDS)
    00837 #define OCI_TYPEMETHOD_CLEAR_RNPS(flag) bic((flag), OCI_TYPEMETHOD_RNPS)
    00838 #define OCI_TYPEMETHOD_CLEAR_WNPS(flag) bic((flag), OCI_TYPEMETHOD_WNPS)
    00839
    00840 /*--------------------------- TYPE PARAMETER MODE ---------------------------*/
    00841
    00842 enum OCITypeParamMode
    00843 {
    00844   /* PL/SQL starts this from 0 */
    00845   OCI_TYPEPARAM_IN = 0,                                                /* in */
    00846   OCI_TYPEPARAM_OUT,                                                  /* out */
    00847   OCI_TYPEPARAM_INOUT,                                             /* in-out */
    00848   OCI_TYPEPARAM_BYREF,              /* call by reference (implicitly in-out) */
    00849   OCI_TYPEPARAM_OUTNCPY,                         /* OUT with NOCOPY modifier */
    00850   OCI_TYPEPARAM_INOUTNCPY                     /* IN OUT with NOCOPY modifier */
    00851 };
    00852 typedef enum OCITypeParamMode OCITypeParamMode;
    00853
    00854
    00855 /*-------------------------------- DEFAULTS ---------------------------------*/
    00856
    00857 /* default binary and decimal precision and scale */
    00858
    00859 #define OCI_NUMBER_DEFAULTPREC ((ub1)0)            /* no precision specified */
    00860 #define OCI_NUMBER_DEFAULTSCALE ((sb1)MAXSB1MINVAL)
    00861                                         /* no binary/decimal scale specified */
    00862
    00863 /* default maximum length for varrays and vstrings (used in sql.bsq) */
    00864
    00865 #define OCI_VARRAY_MAXSIZE 4000
    00866                           /* default maximum number of elements for a varray */
    00867 #define OCI_STRING_MAXLEN  4000     /* default maximum length of a vstring */
    00868
    00869 /*---------------------------------------------------------------------------*/
    00870 /* This set of macro is used only in beta2. They should be removed as soon as
    00871  * PLSQL has made the changes of not using these macros.
    00872  */
    00873
    00874 /* Special duration for allocating memory only. No instance can be allocated
    00875  * given these durations.
    00876  */
    00877 #define OCICoherency OCIRefreshOpt
    00878 #define OCI_COHERENCY_NONE   (OCIRefreshOpt)2
    00879 #define OCI_COHERENCY_NULL   (OCIRefreshOpt)4
    00880 #define OCI_COHERENCY_ALWAYS (OCIRefreshOpt)5
    00881
    00882 #endif /* ORO_ORACLE */
    00883

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines