63d98e39cd
Files correlati : Commento : - Creazione nuova cartella per contenere tutte le librerie esterne - Aggiunta nuova libreria sqlapi per interfacciare campo a vari DB git-svn-id: svn://10.65.10.50/branches/R_10_00@24149 c028cbd2-c16b-5b4b-a496-9718f37d4682
884 lines
42 KiB
C
884 lines
42 KiB
C
/* Copyright (c) 1994, 2003, Oracle Corporation. All rights reserved. */
|
|
|
|
/*
|
|
NAME
|
|
OCI - Oracle Object Interface for External/Internal/Kernel Clients
|
|
|
|
DESCRIPTION
|
|
This header file contains Oracle object interface definitions which
|
|
can be included by external user applications, tools, as well as
|
|
the kernel. It defines types and constants that are common to all
|
|
object interface which is being defined in several other header files
|
|
(e.g., ori.h, ort.h, and orl.h).
|
|
|
|
RELATED DOCUMENTS
|
|
TBD
|
|
|
|
INSPECTION STATUS [[ deletable if no inspection ]]
|
|
Inspection date: [[ date of the last logging meeting ]]
|
|
Inspection status: [[ exited, not exited, or N/A if exit is not a goal ]]
|
|
Estimated increasing cost defects per page:
|
|
Rule sets: [[ rule sets inspected against or planned to be
|
|
inspected against ]]
|
|
|
|
ACCEPTANCE REVIEW STATUS [[ deletable if no approval review ]]
|
|
Review date: [[ date of the meeting where issues were logged and the
|
|
approval status was decided ]]
|
|
Review status: [[ current status: accepted, conditionally accepted,
|
|
major revision required, rejected ]]
|
|
Reviewers: [[ names of the members on the review team ]]
|
|
|
|
PUBLIC FUNCTIONS
|
|
|
|
EXAMPLES
|
|
Examples are given in the description of each function or macro where
|
|
relevant.
|
|
|
|
MODIFIED
|
|
mnanal 06/09/03 - backout of fix 2836388
|
|
mnanal 05/14/03 - bug-2836388
|
|
srseshad 11/27/02 - Change OCI_TYPECODE_BFLOAT/BDOUBLE codes
|
|
rxgovind 10/09/02 - add OCI_TYPECODE_UROWID
|
|
mxyang 09/17/02 - grabtrans 'mmorsi_obj_float'
|
|
srseshad 09/11/02 -
|
|
srseshad 09/01/02 -
|
|
aahluwal 06/03/02 - bug 2360115
|
|
celsbern 10/19/01 - merge LOG to MAIN
|
|
rxgovind 10/16/01 - update typecodes
|
|
rxgovind 09/19/01 - add typecodes
|
|
rkasamse 08/15/01 - add OCI_DURATION_USER_CALLBACK
|
|
jchai 09/24/01 - add type code for PLS_INTEGER
|
|
porangas 08/22/01 - Fix bug#1776434
|
|
schatter 04/09/01 - merge 1456235: define OCI_DURATION_INVALID
|
|
rdani 10/12/00 - 1449943 NOCOPY and PIPELINE
|
|
ciyer 05/26/00 - short names for abstract, overriding
|
|
rkasamse 05/25/00 - OCCI enhancements
|
|
smuralid 05/11/00 - OCITypeMethodFlags - add NOT INSTANTIABLE, OVERRIDING
|
|
rxgovind 05/09/00 - add OCI_TYPECODE_NONE
|
|
tnbui 07/28/99 - Remove OCI_TYPECODE_TIMESTAMP_ITZ
|
|
tnbui 07/21/99 - TS LOCAL TZ
|
|
thoang 06/21/99 - Add OCI_TYPECODE_TIMESTAMP_ITZ
|
|
thoang 03/04/99 - Add datetime datatypes
|
|
rkasamse 10/20/98 - add OCI_ATTR_CACHE_ARRAYFLUSH
|
|
rkasamse 10/29/98 - add OCI_DURATION_CALLOUT
|
|
rkasamse 04/28/98 - OCI_OBJECT_DETECTCHANGE -> OCI_ATTR_OBJECT_DETECTCHAN
|
|
rkasamse 04/28/98 - OCI_OBJECT_NEWNOTNULL -> OCI_ATTR_OBJECT_NEWNOTNULL
|
|
rkasamse 04/23/98 - add OCI_OBJECT_DETECTCHANGE
|
|
rkasamse 04/03/98 - add OCI_OBJECT_NEWNOTNULL
|
|
pmitra 04/01/98 - OCI_LOCK_X_NOWAIT added
|
|
rxgovind 02/18/98 - add OCI_TYPECODE_OPAQUE
|
|
rkasamse 02/13/98 - Add OCI_DURATION_PROCESS
|
|
cxcheng 07/28/97 - fix compile with SLSHORTNAME
|
|
skrishna 07/14/97 - add OCIObjectGetProperty
|
|
cxcheng 04/30/97 - make OCITypeParamMode values consistent with PL/SQL
|
|
skrishna 04/28/97 - undocument OCIObjectProperty & OCIObjectEvent
|
|
cxcheng 03/29/97 - remove all remaining short names
|
|
sthakur 03/20/97 - add casts to constants
|
|
cxcheng 02/21/97 - temporarily put SLSHORTNAME for PL/SQL
|
|
cxcheng 02/06/97 - take out short name support except with SLSHORTNAME
|
|
lchidamb 01/20/97 - update OCIRef comments
|
|
sgollapu 11/19/96 - Add OCI type codes for BOOL,REC,and TAB
|
|
cxcheng 11/19/96 - more typecode changes
|
|
cxcheng 11/13/96 - add #include for ocidfn.h
|
|
cxcheng 11/13/96 - add OCI_TYPECODE_ADT for compatibility
|
|
cxcheng 11/12/96 - add SQLT_NCO for named collection
|
|
cxcheng 11/11/96 - more changes to typecodes
|
|
cxcheng 11/07/96 - #define OCI_TYPECODE_MLSLABEL to SQLT_LAB
|
|
cxcheng 11/06/96 - fix #define omission for OROTCNAT
|
|
cxcheng 10/30/96 - move OCI_TYPECODE_* to ocidfn.h as SQLT_*
|
|
cxcheng 10/28/96 - more beautification changes
|
|
jboonleu 10/29/96 - add flags for freeing object
|
|
dchatter 10/26/96 - delete redef of OCISvcCtx, OCIError, OCIEnv
|
|
cxcheng 10/15/96 - more changes
|
|
cxcheng 10/14/96 - more final fixes to constants
|
|
mluong 10/11/96 -
|
|
mluong 10/11/96 - KOCON and KONSP are in lowercase
|
|
mluong 10/11/96 - add some define per Calvin
|
|
cxcheng 10/09/96 - add #define for OROOCOSFN to OCI_COPY_NOREF
|
|
jboonleu 10/08/96 - change OROOCOSFN to OCICopyFlag
|
|
jboonleu 10/07/96 - use new OCI names for cache options
|
|
cxcheng 10/07/96 - add OROTCS02 for KOTTCBRI and OROTCS03 as spare
|
|
cxcheng 10/07/96 - more lint fixes
|
|
cxcheng 10/02/96 - move oronsp to ko.h as konsp
|
|
cxcheng 10/01/96 - add long names for readability
|
|
cxcheng 10/01/96 - remove orotty and orotal
|
|
rjenkins 09/28/96 - 2k char 4k varchar2
|
|
jboonleu 09/27/96 - add macro used only in beta2
|
|
cxcheng 09/27/96 - move oroenv to oroenv.h
|
|
cxcheng 09/24/96 - remove unnecessary orotyp
|
|
cxcheng 09/25/96 - add typecode OROTCS01 as placeholder for lob pointer
|
|
cxcheng 09/20/96 - add TDO load option orotgo
|
|
jboonleu 09/18/96 - add OROOPOREC
|
|
jboonleu 09/10/96 - add OROOPODFL
|
|
jweisz 08/27/96 - add SQL internal typecode OROTCS00
|
|
cxcheng 08/02/96 - add PLSQL internal typecodes OROTCP..
|
|
cxcheng 08/01/96 - add OROTCFAR to fill up space left by OROTCCAR
|
|
jboonleu 07/16/96 - new pin option
|
|
cxcheng 06/18/96 - add casts to OROTNOPRE and OROTNOSCL
|
|
cxcheng 05/29/96 - change OROTCNPT back to OROTCDOM
|
|
vkrishna 05/27/96 - add OROTCCAR
|
|
cxcheng 05/17/96 - replace OROTCFAR with OROTCCAR
|
|
cxcheng 05/08/96 - change orotmf from ub1 to ub2
|
|
cxcheng 05/07/96 - fix public defines for method types
|
|
cxcheng 04/30/96 - change OROTCDOM to OROTCNPT
|
|
cxcheng 04/15/96 - remove obsolete OROTTYICT
|
|
jboonleu 04/12/96 - add new pin option
|
|
sthakur 04/12/96 - add indicator type and indicator status
|
|
cxcheng 04/10/96 - add function parameter codes for ORT/KOT
|
|
cxcheng 04/03/96 - replace OROTCFAR as OROTCCAR
|
|
jwijaya 03/29/96 - add OROTTCCAR
|
|
jwijaya 03/27/96 - better comments for orotc
|
|
cxcheng 02/23/96 - add typecodes for SMALLINT and VARCHAR2
|
|
skrishna 02/22/96 - add oroind - null indicator type
|
|
cxcheng 02/21/96 - change lob character codes to OROTCCLB, OROTCBLB...
|
|
jboonleu 02/06/96 - new value for predefined duration
|
|
cxcheng 01/12/96 - add OROTCCLO, OROTCBLO, OROTCFIL to orotc
|
|
cxcheng 12/05/95 - add OROTCDOM and OROTCAAT to orotc
|
|
skotsovo 10/30/95 - reserve space for internal 'oid' type
|
|
jwijaya 10/20/95 - support variable-length ref
|
|
cxcheng 10/03/95 - add OROTMFOR for ordering function to orotmf
|
|
cxcheng 10/03/95 - Adding the ordering function type to orotmf
|
|
jboonleu 09/28/95 - set OROODTPRE
|
|
jboonleu 09/25/95 - add oroodt
|
|
skotsovo 03/10/95 - update to only include release 1
|
|
jboonleu 02/15/95 - add OROOPOREC, remove orocro, oroolo
|
|
skotsovo 01/30/95 - add default max lengths for varrays and vstrings
|
|
skotsovo 01/24/95 - categorize sint32, double, and real as number types
|
|
(with precision and scale) instead of scalar types.
|
|
skotsovo 12/20/94 - add release 1 types
|
|
skotsovo 12/12/94 - update according to new ots doc
|
|
skotsovo 12/01/94 - add default precision and scale
|
|
jwijaya 11/15/94 - rename ORONSPTAB to ORONSPEXT
|
|
jwijaya 10/25/94 - tint
|
|
jwijaya 10/06/94 - add namespace
|
|
jwijaya 10/02/94 - connection handle -> connection number
|
|
skotsovo 09/12/94 - keep 0 as uninitialized value for ORT consts
|
|
skotsovo 08/24/94 - fix orotec
|
|
skotsovo 08/17/94 - modify type code names
|
|
skotsovo 08/12/94 - fix 141 lint errors
|
|
skotsovo 07/25/94 - modify categorization of complex types (orotc)
|
|
skotsovo 07/07/94 - change typecode enum values & add decimal type
|
|
skotsovo 07/01/94 - change order of typecodes
|
|
jwijaya 06/15/94 - review
|
|
jboonleu 06/13/94 - add comments for the object cache options
|
|
jwijaya 06/13/94 - adhere to the header file template
|
|
skotsovo 06/09/94 - make ots scalar type names consistent with the ots
|
|
document
|
|
jwijaya 06/07/94 - include oratypes.h instead of s.h
|
|
skotsovo 05/24/94 - change typecodes
|
|
jwijaya 05/23/94 - fix comments of ororef
|
|
skotsovo 05/19/94 - remove type composition
|
|
skotsovo 05/09/94 - modified orotc according to new OTS document
|
|
jwijaya 05/03/94 - oroid and ororef
|
|
jwijaya 01/26/94 - Creation
|
|
*/
|
|
|
|
|
|
#ifndef ORATYPES
|
|
#include <oratypes.h>
|
|
#endif
|
|
|
|
#ifndef OCIDFN_ORACLE
|
|
#include <ocidfn.h>
|
|
#endif
|
|
|
|
#ifndef ORO_ORACLE
|
|
#define ORO_ORACLE
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* SHORT NAMES SUPPORT SECTION */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
#ifdef SLSHORTNAME
|
|
|
|
/* the following are short names that are only supported on IBM mainframes
|
|
with the SLSHORTNAME defined.
|
|
With this all subsequent long names will actually be substituted with
|
|
the short names here */
|
|
|
|
#define OCIDuration oroodt
|
|
#define OCIInd oroind
|
|
#define OCILockOpt oroolm
|
|
#define OCIMarkOpt oroomo
|
|
#define OCIObjectEvent orocev
|
|
#define OCIObjectProperty oroopr
|
|
#define OCIPinOpt oroopo
|
|
#define OCIRef ororef
|
|
#define OCIRefreshOpt orooro
|
|
#define OCITypeCode orotc
|
|
#define OCITypeEncap orotec
|
|
#define OCITypeGetOpt orotgo
|
|
#define OCITypeMethodFlag orotmf
|
|
#define OCITypeParamMode orotpm
|
|
#define OCIObjectPropId oroopi
|
|
#define OCIObjectLifetime oroolft
|
|
#define OCIObjectMarkstatus oroomst
|
|
#define OCI_LOCK_NONE OROOLMNUL
|
|
#define OCI_LOCK_X OROOLMX
|
|
#define OCI_LOCK_X_NOWAIT OROOLMXNW
|
|
#define OCI_MARK_DEFAULT OROOMODFL
|
|
#define OCI_MARK_NONE OROOMONON
|
|
#define OCI_MARK_UPDATE OROOMOUPD
|
|
#define OCI_OBJECTEVENT_AFTER_FLUSH OROCEVAFL
|
|
#define OCI_OBJECTEVENT_AFTER_REFRESH OROCEVARF
|
|
#define OCI_OBJECTEVENT_BEFORE_FLUSH OROCEVBFL
|
|
#define OCI_OBJECTEVENT_BEFORE_REFRESH OROCEVBRF
|
|
#define OCI_OBJECTEVENT_WHEN_LOCK OROCEVWLK
|
|
#define OCI_OBJECTEVENT_WHEN_MARK_DELETED OROCEVWDL
|
|
#define OCI_OBJECTEVENT_WHEN_MARK_UPDATED OROCEVWUP
|
|
#define OCI_OBJECTEVENT_WHEN_UNMARK OROCEVWUM
|
|
#define OCI_OBJECTPROP_DIRTIED OROOPRDRT
|
|
#define OCI_OBJECTPROP_LOADED OROOPRLOD
|
|
#define OCI_OBJECTPROP_LOCKED OROOPRLCK
|
|
#define OCI_PIN_ANY OROOPOANY
|
|
#define OCI_PIN_DEFAULT OROOPODFL
|
|
#define OCI_PIN_LATEST OROOPOLST
|
|
#define OCI_PIN_RECENT OROOPOREC
|
|
#define OCI_REFRESH_LOADED OROOROLOD
|
|
#define OCI_TYPEENCAP_PRIVATE OROTECPVT
|
|
#define OCI_TYPEENCAP_PUBLIC OROTECPUB
|
|
#define OCI_TYPEGET_ALL OROTGOALL
|
|
#define OCI_TYPEGET_HEADER OROTGOHDR
|
|
#define OCI_TYPEMETHOD_CONSTANT OROTMCON
|
|
#define OCI_TYPEMETHOD_CONSTRUCTOR OROTMCSTR
|
|
#define OCI_TYPEMETHOD_DESTRUCTOR OROTMDSTR
|
|
#define OCI_TYPEMETHOD_INLINE OROTMINL
|
|
#define OCI_TYPEMETHOD_MAP OROTMMAP
|
|
#define OCI_TYPEMETHOD_OPERATOR OROTMOP
|
|
#define OCI_TYPEMETHOD_ORDER OROTMOR
|
|
#define OCI_TYPEMETHOD_RNDS OROTMRDS
|
|
#define OCI_TYPEMETHOD_RNPS OROTMRPS
|
|
#define OCI_TYPEMETHOD_SELFISH OROTMSLF
|
|
#define OCI_TYPEMETHOD_VIRTUAL OROTMVRT
|
|
#define OCI_TYPEMETHOD_WNDS OROTMWDS
|
|
#define OCI_TYPEMETHOD_WNPS OROTMWPS
|
|
#define OCI_TYPEMETHOD_ABSTRACT OROTMABSTRACT
|
|
#define OCI_TYPEMETHOD_OVERRIDING OROTMOVERRIDING
|
|
#define OCI_TYPEMETHOD_PIPELINED OROTMPIPELINED
|
|
#define OCI_TYPEPARAM_BYREF OROTPMREF
|
|
#define OCI_TYPEPARAM_IN OROTPMIN
|
|
#define OCI_TYPEPARAM_INOUT OROTPMIO
|
|
#define OCI_TYPEPARAM_OUT OROTPMOUT
|
|
#define OCI_TYPEPARAM_OUTNCPY OROTPMOUTNCPY
|
|
#define OCI_TYPEPARAM_INOUTNCPY OROTPMIONCPY
|
|
|
|
#endif /* SLSHORTNAME */
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* PUBLIC TYPES, CONSTANTS AND MACROS */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* GENERAL OBJECT TYPES, CONSTANTS, MACROS */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
/*------------------------- OBJECT REFERENCE (REF) --------------------------*/
|
|
|
|
typedef struct OCIRef OCIRef;
|
|
/*
|
|
* OCIRef - OCI object REFerence
|
|
*
|
|
* In the Oracle object runtime environment, an object is identified by an
|
|
* object reference (ref) which contains the object identifier plus other
|
|
* runtime information. The contents of a ref is opaque to clients. Use
|
|
* OCIObjectNew() to construct a ref.
|
|
*/
|
|
|
|
|
|
/*--------------------------- OBJECT INDICATOR ------------------------------*/
|
|
|
|
typedef sb2 OCIInd;
|
|
/*
|
|
* OCIInd -- a variable of this type contains (null) indicator information
|
|
*/
|
|
|
|
#define OCI_IND_NOTNULL (OCIInd)0 /* not NULL */
|
|
#define OCI_IND_NULL (OCIInd)(-1) /* NULL */
|
|
#define OCI_IND_BADNULL (OCIInd)(-2) /* BAD NULL */
|
|
#define OCI_IND_NOTNULLABLE (OCIInd)(-3) /* not NULLable */
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* OBJECT CACHE */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
/* To enable object change detection mode, set this to TRUE */
|
|
#define OCI_ATTR_OBJECT_DETECTCHANGE 0x00000020
|
|
|
|
/* To enable object creation with non-NULL attributes by default, set the
|
|
following to TRUE.
|
|
By default, object is created with NULL attributes
|
|
*/
|
|
#define OCI_ATTR_OBJECT_NEWNOTNULL 0x00000010
|
|
|
|
/* To enable sorting of the objects that belong to the same table
|
|
before being flushed through OCICacheFlush.
|
|
Please note that by enabling this object cache will not be flushing
|
|
the objects in the same order they were dirtied */
|
|
#define OCI_ATTR_CACHE_ARRAYFLUSH 0x00000040
|
|
|
|
/*--------------------------- OBJECT PIN OPTION -----------------------------*/
|
|
|
|
enum OCIPinOpt
|
|
{
|
|
/* 0 = uninitialized */
|
|
OCI_PIN_DEFAULT = 1, /* default pin option */
|
|
OCI_PIN_ANY = 3, /* pin any copy of the object */
|
|
OCI_PIN_RECENT = 4, /* pin recent copy of the object */
|
|
OCI_PIN_LATEST = 5 /* pin latest copy of the object */
|
|
};
|
|
typedef enum OCIPinOpt OCIPinOpt;
|
|
|
|
/*
|
|
* OCIPinOpt - OCI object Pin Option
|
|
*
|
|
* In the Oracle object runtime environment, the program has the option to
|
|
* specify which copy of the object to pin.
|
|
*
|
|
* OCI_PINOPT_DEFAULT pins an object using the default pin option. The default
|
|
* pin option can be set as an attribute of the OCI environment handle
|
|
* (OCI_ATTR_PINTOPTION). The value of the default pin option can be
|
|
* OCI_PINOPT_ANY, OCI_PINOPT_RECENT, or OCI_PIN_LATEST. The default option
|
|
* is initialized to OCI_PINOPT_ANY.
|
|
*
|
|
* OCI_PIN_ANY pins any copy of the object. The object is pinned
|
|
* using the following criteria:
|
|
* If the object copy is not loaded, load it from the persistent store.
|
|
* Otherwise, the loaded object copy is returned to the program.
|
|
*
|
|
* OCI_PIN_RECENT pins the latest copy of an object. The object is
|
|
* pinned using the following criteria:
|
|
* If the object is not loaded, load the object from the persistent store
|
|
* from the latest version.
|
|
* If the object is not loaded in the current transaction and it is not
|
|
* dirtied, the object is refreshed from the latest version.
|
|
* Otherwise, the loaded object copy is returned to the program.
|
|
*
|
|
* OCI_PINOPT_LATEST pins the latest copy of an object. The object copy is
|
|
* pinned using the following criteria:
|
|
* If the object copy is not loaded, load it from the persistent store.
|
|
* If the object copy is loaded and dirtied, it is returned to the program.
|
|
* Otherwise, the loaded object copy is refreshed from the persistent store.
|
|
*/
|
|
|
|
|
|
|
|
/*--------------------------- OBJECT LOCK OPTION ----------------------------*/
|
|
|
|
enum OCILockOpt
|
|
{
|
|
/* 0 = uninitialized */
|
|
OCI_LOCK_NONE = 1, /* null (same as no lock) */
|
|
OCI_LOCK_X = 2, /* exclusive lock */
|
|
OCI_LOCK_X_NOWAIT = 3 /* exclusive lock, do not wait */
|
|
};
|
|
typedef enum OCILockOpt OCILockOpt;
|
|
/*
|
|
* OCILockOpt - OCI object LOCK Option
|
|
*
|
|
* This option is used to specify the locking preferences when an object is
|
|
* loaded from the server.
|
|
*/
|
|
|
|
|
|
/*------------------------- OBJECT MODIFYING OPTION -------------------------*/
|
|
|
|
enum OCIMarkOpt
|
|
{
|
|
/* 0 = uninitialized */
|
|
OCI_MARK_DEFAULT = 1, /* default (the same as OCI_MARK_NONE) */
|
|
OCI_MARK_NONE = OCI_MARK_DEFAULT, /* object has not been modified */
|
|
OCI_MARK_UPDATE /* object is to be updated */
|
|
};
|
|
typedef enum OCIMarkOpt OCIMarkOpt;
|
|
/*
|
|
* OCIMarkOpt - OCI object Mark option
|
|
*
|
|
* When the object is marked updated, the client has to specify how the
|
|
* object is intended to be changed.
|
|
*/
|
|
|
|
/*-------------------------- OBJECT Duration --------------------------------*/
|
|
|
|
typedef ub2 OCIDuration;
|
|
|
|
#define OCI_DURATION_INVALID 0xFFFF /* Invalid duration */
|
|
#define OCI_DURATION_BEGIN (OCIDuration)10
|
|
/* beginning sequence of duration */
|
|
#define OCI_DURATION_NULL (OCIDuration)(OCI_DURATION_BEGIN-1)
|
|
/* null duration */
|
|
#define OCI_DURATION_DEFAULT (OCIDuration)(OCI_DURATION_BEGIN-2) /* default */
|
|
#define OCI_DURATION_USER_CALLBACK (OCIDuration)(OCI_DURATION_BEGIN-3)
|
|
#define OCI_DURATION_NEXT (OCIDuration)(OCI_DURATION_BEGIN-4)
|
|
/* next special duration */
|
|
#define OCI_DURATION_SESSION (OCIDuration)(OCI_DURATION_BEGIN)
|
|
/* the end of user session */
|
|
#define OCI_DURATION_TRANS (OCIDuration)(OCI_DURATION_BEGIN+1)
|
|
/* the end of user transaction */
|
|
/******************************************************************************
|
|
** DO NOT USE OCI_DURATION_CALL. IT IS UNSUPPORTED **
|
|
** WILL BE REMOVED/CHANGED IN A FUTURE RELEASE **
|
|
******************************************************************************/
|
|
#define OCI_DURATION_CALL (OCIDuration)(OCI_DURATION_BEGIN+2)
|
|
/* the end of user client/server call */
|
|
#define OCI_DURATION_STATEMENT (OCIDuration)(OCI_DURATION_BEGIN+3)
|
|
|
|
/* This is to be used only during callouts. It is similar to that
|
|
of OCI_DURATION_CALL, but lasts only for the duration of a callout.
|
|
Its heap is from PGA */
|
|
#define OCI_DURATION_CALLOUT (OCIDuration)(OCI_DURATION_BEGIN+4)
|
|
|
|
#define OCI_DURATION_LAST OCI_DURATION_CALLOUT
|
|
/* last of predefined durations */
|
|
|
|
/* This is not being treated as other predefined durations such as
|
|
SESSION, CALL etc, because this would not have an entry in the duration
|
|
table and its functionality is primitive such that only allocate, free,
|
|
resize memory are allowed, but one cannot create subduration out of this
|
|
*/
|
|
#define OCI_DURATION_PROCESS (OCIDuration)(OCI_DURATION_BEGIN-5)
|
|
|
|
/*
|
|
* OCIDuration - OCI object duration
|
|
*
|
|
* A client can specify the duration of which an object is pinned (pin
|
|
* duration) and the duration of which the object is in memory (allocation
|
|
* duration). If the objects are still pinned at the end of the pin duration,
|
|
* the object cache manager will automatically unpin the objects for the
|
|
* client. If the objects still exist at the end of the allocation duration,
|
|
* the object cache manager will automatically free the objects for the client.
|
|
*
|
|
* Objects that are pinned with the option OCI_DURATION_TRANS will get unpinned
|
|
* automatically at the end of the current transaction.
|
|
*
|
|
* Objects that are pinned with the option OCI_DURATION_SESSION will get
|
|
* unpinned automatically at the end of the current session (connection).
|
|
*
|
|
* The option OCI_DURATION_NULL is used when the client does not want to set
|
|
* the pin duration. If the object is already loaded into the cache, then the
|
|
* pin duration will remain the same. If the object is not yet loaded, the
|
|
* pin duration of the object will be set to OCI_DURATION_DEFAULT.
|
|
*/
|
|
|
|
/*----------------------------- OBJECT PROPERTY -----------------------------*/
|
|
|
|
/******************************************************************************
|
|
** DO NOT USE OCIObjectProperty. IT IS UNSUPPORTED **
|
|
** WILL BE REMOVED/CHANGED IN A FUTURE RELEASE **
|
|
******************************************************************************/
|
|
enum OCIObjectProperty
|
|
{
|
|
/* 0 = uninitialized */
|
|
OCI_OBJECTPROP_DIRTIED = 1, /* dirty objects */
|
|
OCI_OBJECTPROP_LOADED, /* objects loaded in the transaction */
|
|
OCI_OBJECTPROP_LOCKED /* locked objects */
|
|
};
|
|
typedef enum OCIObjectProperty OCIObjectProperty;
|
|
/*
|
|
* OCIObjectProperty -- OCI Object Property
|
|
* This specifies the properties of objects in the object cache.
|
|
*/
|
|
|
|
/*------------------------- CACHE REFRESH OPTION ---------------------------*/
|
|
|
|
enum OCIRefreshOpt
|
|
{
|
|
/* 0 = uninitialized */
|
|
OCI_REFRESH_LOADED = 1 /* refresh objects loaded in the transaction */
|
|
};
|
|
typedef enum OCIRefreshOpt OCIRefreshOpt;
|
|
/*
|
|
* OCIRefreshOpt - OCI cache Refresh Option
|
|
* This option is used to specify the set of objects to be refreshed.
|
|
*
|
|
* OCI_REFRESH_LOAD refreshes the objects that are loaded in the current
|
|
* transaction.
|
|
*/
|
|
|
|
/*-------------------------------- OBJECT EVENT -----------------------------*/
|
|
|
|
/******************************************************************************
|
|
** DO NOT USE OCIObjectEvent. IT IS UNSUPPORTED **
|
|
** WILL BE REMOVED/CHANGED IN A FUTURE RELEASE **
|
|
******************************************************************************/
|
|
enum OCIObjectEvent
|
|
{
|
|
/* 0 = uninitialized */
|
|
OCI_OBJECTEVENT_BEFORE_FLUSH = 1, /* before flushing the cache */
|
|
OCI_OBJECTEVENT_AFTER_FLUSH, /* after flushing the cache */
|
|
OCI_OBJECTEVENT_BEFORE_REFRESH, /* before refreshing the cache */
|
|
OCI_OBJECTEVENT_AFTER_REFRESH, /* after refreshing the cache */
|
|
OCI_OBJECTEVENT_WHEN_MARK_UPDATED, /* when an object is marked updated */
|
|
OCI_OBJECTEVENT_WHEN_MARK_DELETED, /* when an object is marked deleted */
|
|
OCI_OBJECTEVENT_WHEN_UNMARK, /* when an object is being unmarked */
|
|
OCI_OBJECTEVENT_WHEN_LOCK /* when an object is being locked */
|
|
};
|
|
typedef enum OCIObjectEvent OCIObjectEvent;
|
|
/*
|
|
* OCIObjectEvent -- OCI Object Event
|
|
* This specifies the kind of event that is supported by the object
|
|
* cache. The program can register a callback that is invoked when the
|
|
* specified event occurs.
|
|
*/
|
|
|
|
/*----------------------------- OBJECT COPY OPTION --------------------------*/
|
|
#define OCI_OBJECTCOPY_NOREF (ub1)0x01
|
|
/*
|
|
* OCIObjectCopyFlag - Object copy flag
|
|
*
|
|
* If OCI_OBJECTCOPY_NOREF is specified when copying an instance, the
|
|
* reference and lob will not be copied to the target instance.
|
|
*/
|
|
|
|
/*----------------------------- OBJECT FREE OPTION --------------------------*/
|
|
#define OCI_OBJECTFREE_FORCE (ub2)0x0001
|
|
#define OCI_OBJECTFREE_NONULL (ub2)0x0002
|
|
#define OCI_OBJECTFREE_HEADER (ub2)0x0004
|
|
/*
|
|
* OCIObjectFreeFlag - Object free flag
|
|
*
|
|
* If OCI_OBJECTCOPY_FORCE is specified when freeing an instance, the instance
|
|
* is freed regardless it is pinned or diritied.
|
|
* If OCI_OBJECTCOPY_NONULL is specified when freeing an instance, the null
|
|
* structure is not freed.
|
|
*/
|
|
|
|
/*----------------------- OBJECT PROPERTY ID -------------------------------*/
|
|
|
|
typedef ub1 OCIObjectPropId;
|
|
#define OCI_OBJECTPROP_LIFETIME 1 /* persistent or transient or value */
|
|
#define OCI_OBJECTPROP_SCHEMA 2 /* schema name of table containing object */
|
|
#define OCI_OBJECTPROP_TABLE 3 /* table name of table containing object */
|
|
#define OCI_OBJECTPROP_PIN_DURATION 4 /* pin duartion of object */
|
|
#define OCI_OBJECTPROP_ALLOC_DURATION 5 /* alloc duartion of object */
|
|
#define OCI_OBJECTPROP_LOCK 6 /* lock status of object */
|
|
#define OCI_OBJECTPROP_MARKSTATUS 7 /* mark status of object */
|
|
#define OCI_OBJECTPROP_VIEW 8 /* is object a view object or not? */
|
|
|
|
/*
|
|
* OCIObjectPropId - OCI Object Property Id
|
|
* Identifies the different properties of objects.
|
|
*/
|
|
|
|
/*----------------------- OBJECT LIFETIME ----------------------------------*/
|
|
|
|
enum OCIObjectLifetime
|
|
{
|
|
/* 0 = uninitialized */
|
|
OCI_OBJECT_PERSISTENT = 1, /* persistent object */
|
|
OCI_OBJECT_TRANSIENT, /* transient object */
|
|
OCI_OBJECT_VALUE /* value object */
|
|
};
|
|
typedef enum OCIObjectLifetime OCIObjectLifetime;
|
|
/*
|
|
* OCIObjectLifetime - OCI Object Lifetime
|
|
* Classifies objects depending upon the lifetime and referenceability
|
|
* of the object.
|
|
*/
|
|
|
|
/*----------------------- OBJECT MARK STATUS -------------------------------*/
|
|
|
|
typedef uword OCIObjectMarkStatus;
|
|
#define OCI_OBJECT_NEW 0x0001 /* new object */
|
|
#define OCI_OBJECT_DELETED 0x0002 /* object marked deleted */
|
|
#define OCI_OBJECT_UPDATED 0x0004 /* object marked updated */
|
|
/*
|
|
* OCIObjectMarkStatus - OCI Object Mark Status
|
|
* Status of the object - new or updated or deleted
|
|
*/
|
|
|
|
/* macros to test the object mark status */
|
|
#define OCI_OBJECT_IS_UPDATED(flag) bit((flag), OCI_OBJECT_UPDATED)
|
|
#define OCI_OBJECT_IS_DELETED(flag) bit((flag), OCI_OBJECT_DELETED)
|
|
#define OCI_OBJECT_IS_NEW(flag) bit((flag), OCI_OBJECT_NEW)
|
|
#define OCI_OBJECT_IS_DIRTY(flag) \
|
|
bit((flag), OCI_OBJECT_UPDATED|OCI_OBJECT_NEW|OCI_OBJECT_DELETED)
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* TYPE MANAGER */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
/*------------------------------ TYPE CODE ----------------------------------*/
|
|
|
|
/*
|
|
* Type manager typecodes
|
|
*
|
|
* These are typecodes designed to be used with the type manager;
|
|
* they also include longer, more readable versions of existing SQLT names.
|
|
* Those types that are directly related to existing SQLT types are #define'd
|
|
* to their SQLT equivalents.
|
|
*
|
|
* The type manager typecodes are designed to be useable for all OCI calls.
|
|
* They are in the range from 192 to 320 for typecodes, so as not to conflict
|
|
* with existing OCI SQLT typecodes (see ocidfn.h).
|
|
*/
|
|
|
|
#define OCI_TYPECODE_REF SQLT_REF /* SQL/OTS OBJECT REFERENCE */
|
|
#define OCI_TYPECODE_DATE SQLT_DAT /* SQL DATE OTS DATE */
|
|
#define OCI_TYPECODE_SIGNED8 27 /* SQL SIGNED INTEGER(8) OTS SINT8 */
|
|
#define OCI_TYPECODE_SIGNED16 28 /* SQL SIGNED INTEGER(16) OTS SINT16 */
|
|
#define OCI_TYPECODE_SIGNED32 29 /* SQL SIGNED INTEGER(32) OTS SINT32 */
|
|
#define OCI_TYPECODE_REAL 21 /* SQL REAL OTS SQL_REAL */
|
|
#define OCI_TYPECODE_DOUBLE 22 /* SQL DOUBLE PRECISION OTS SQL_DOUBLE */
|
|
#define OCI_TYPECODE_BFLOAT SQLT_IBFLOAT /* Binary float */
|
|
#define OCI_TYPECODE_BDOUBLE SQLT_IBDOUBLE /* Binary double */
|
|
#define OCI_TYPECODE_FLOAT SQLT_FLT /* SQL FLOAT(P) OTS FLOAT(P) */
|
|
#define OCI_TYPECODE_NUMBER SQLT_NUM/* SQL NUMBER(P S) OTS NUMBER(P S) */
|
|
#define OCI_TYPECODE_DECIMAL SQLT_PDN
|
|
/* SQL DECIMAL(P S) OTS DECIMAL(P S) */
|
|
#define OCI_TYPECODE_UNSIGNED8 SQLT_BIN
|
|
/* SQL UNSIGNED INTEGER(8) OTS UINT8 */
|
|
#define OCI_TYPECODE_UNSIGNED16 25 /* SQL UNSIGNED INTEGER(16) OTS UINT16 */
|
|
#define OCI_TYPECODE_UNSIGNED32 26 /* SQL UNSIGNED INTEGER(32) OTS UINT32 */
|
|
#define OCI_TYPECODE_OCTET 245 /* SQL ??? OTS OCTET */
|
|
#define OCI_TYPECODE_SMALLINT 246 /* SQL SMALLINT OTS SMALLINT */
|
|
#define OCI_TYPECODE_INTEGER SQLT_INT /* SQL INTEGER OTS INTEGER */
|
|
#define OCI_TYPECODE_RAW SQLT_LVB /* SQL RAW(N) OTS RAW(N) */
|
|
#define OCI_TYPECODE_PTR 32 /* SQL POINTER OTS POINTER */
|
|
#define OCI_TYPECODE_VARCHAR2 SQLT_VCS
|
|
/* SQL VARCHAR2(N) OTS SQL_VARCHAR2(N) */
|
|
#define OCI_TYPECODE_CHAR SQLT_AFC /* SQL CHAR(N) OTS SQL_CHAR(N) */
|
|
#define OCI_TYPECODE_VARCHAR SQLT_CHR
|
|
/* SQL VARCHAR(N) OTS SQL_VARCHAR(N) */
|
|
#define OCI_TYPECODE_MLSLABEL SQLT_LAB /* OTS MLSLABEL */
|
|
#define OCI_TYPECODE_VARRAY 247 /* SQL VARRAY OTS PAGED VARRAY */
|
|
#define OCI_TYPECODE_TABLE 248 /* SQL TABLE OTS MULTISET */
|
|
#define OCI_TYPECODE_OBJECT SQLT_NTY /* SQL/OTS NAMED OBJECT TYPE */
|
|
#define OCI_TYPECODE_OPAQUE 58 /* SQL/OTS Opaque Types */
|
|
#define OCI_TYPECODE_NAMEDCOLLECTION SQLT_NCO
|
|
/* SQL/OTS NAMED COLLECTION TYPE */
|
|
#define OCI_TYPECODE_BLOB SQLT_BLOB /* SQL/OTS BINARY LARGE OBJECT */
|
|
#define OCI_TYPECODE_BFILE SQLT_BFILE /* SQL/OTS BINARY FILE OBJECT */
|
|
#define OCI_TYPECODE_CLOB SQLT_CLOB /* SQL/OTS CHARACTER LARGE OBJECT */
|
|
#define OCI_TYPECODE_CFILE SQLT_CFILE /* SQL/OTS CHARACTER FILE OBJECT */
|
|
|
|
/* the following are ANSI datetime datatypes added in 8.1 */
|
|
#define OCI_TYPECODE_TIME SQLT_TIME /* SQL/OTS TIME */
|
|
#define OCI_TYPECODE_TIME_TZ SQLT_TIME_TZ /* SQL/OTS TIME_TZ */
|
|
#define OCI_TYPECODE_TIMESTAMP SQLT_TIMESTAMP /* SQL/OTS TIMESTAMP */
|
|
#define OCI_TYPECODE_TIMESTAMP_TZ SQLT_TIMESTAMP_TZ /* SQL/OTS TIMESTAMP_TZ */
|
|
|
|
#define OCI_TYPECODE_TIMESTAMP_LTZ SQLT_TIMESTAMP_LTZ /* TIMESTAMP_LTZ */
|
|
|
|
#define OCI_TYPECODE_INTERVAL_YM SQLT_INTERVAL_YM /* SQL/OTS INTRVL YR-MON */
|
|
#define OCI_TYPECODE_INTERVAL_DS SQLT_INTERVAL_DS /* SQL/OTS INTRVL DAY-SEC */
|
|
#define OCI_TYPECODE_UROWID SQLT_RDD /* Urowid type */
|
|
|
|
|
|
#define OCI_TYPECODE_OTMFIRST 228 /* first Open Type Manager typecode */
|
|
#define OCI_TYPECODE_OTMLAST 320 /* last OTM typecode */
|
|
#define OCI_TYPECODE_SYSFIRST 228 /* first OTM system type (internal) */
|
|
#define OCI_TYPECODE_SYSLAST 235 /* last OTM system type (internal) */
|
|
#define OCI_TYPECODE_PLS_INTEGER 266 /* type code for PLS_INTEGER */
|
|
|
|
/* the following are PL/SQL-only internal. They should not be used */
|
|
#define OCI_TYPECODE_ITABLE SQLT_TAB /* PLSQL indexed table */
|
|
#define OCI_TYPECODE_RECORD SQLT_REC /* PLSQL record */
|
|
#define OCI_TYPECODE_BOOLEAN SQLT_BOL /* PLSQL boolean */
|
|
|
|
/* NOTE : The following NCHAR related codes are just short forms for saying
|
|
OCI_TYPECODE_VARCHAR2 with a charset form of SQLCS_NCHAR. These codes are
|
|
intended for use in the OCIAnyData API only and nowhere else. */
|
|
#define OCI_TYPECODE_NCHAR 286
|
|
#define OCI_TYPECODE_NVARCHAR2 287
|
|
#define OCI_TYPECODE_NCLOB 288
|
|
|
|
|
|
/* To indicate absence of typecode being specified */
|
|
#define OCI_TYPECODE_NONE 0
|
|
/* To indicate error has to be taken from error handle - reserved for
|
|
sqlplus use */
|
|
#define OCI_TYPECODE_ERRHP 283
|
|
|
|
/* The OCITypeCode type is interchangeable with the existing SQLT type
|
|
which is a ub2 */
|
|
typedef ub2 OCITypeCode;
|
|
|
|
|
|
/*----------------------- GET OPTIONS FOR TDO ------------------------------*/
|
|
|
|
enum OCITypeGetOpt
|
|
{
|
|
OCI_TYPEGET_HEADER,
|
|
/* load only the header portion of the TDO when getting type */
|
|
OCI_TYPEGET_ALL /* load all attribute and method descriptors as well */
|
|
};
|
|
typedef enum OCITypeGetOpt OCITypeGetOpt;
|
|
|
|
/*
|
|
* OCITypeGetOpt
|
|
*
|
|
* This is the flag passed to OCIGetTypeArray() to indicate how the TDO is
|
|
* going to be loaded into the object cache.
|
|
* OCI_TYPEGET_HEADER implies that only the header portion is to be loaded
|
|
* initially, with the rest loaded in on a 'lazy' basis. Only the header is
|
|
* needed for PL/SQL and OCI operations. OCI_TYPEGET_ALL implies that ALL
|
|
* the attributes and methods belonging to a TDO will be loaded into the
|
|
* object cache in one round trip. Hence it will take much longer to execute,
|
|
* but will ensure that no more loading needs to be done when pinning ADOs
|
|
* etc. This is only needed if your code needs to examine and manipulate
|
|
* attribute and method information.
|
|
*
|
|
* The default is OCI_TYPEGET_HEADER.
|
|
*/
|
|
|
|
|
|
/*------------------------ TYPE ENCAPSULTATION LEVEL ------------------------*/
|
|
|
|
enum OCITypeEncap
|
|
{
|
|
/* 0 = uninitialized */
|
|
OCI_TYPEENCAP_PRIVATE, /* private: only internally visible */
|
|
OCI_TYPEENCAP_PUBLIC /* public: visible to both internally and externally */
|
|
};
|
|
typedef enum OCITypeEncap OCITypeEncap;
|
|
/*
|
|
* OCITypeEncap - OCI Encapsulation Level
|
|
*/
|
|
|
|
|
|
/*---------------------------- TYPE METHOD FLAGS ----------------------------*/
|
|
|
|
enum OCITypeMethodFlag
|
|
{
|
|
OCI_TYPEMETHOD_INLINE = 0x0001, /* inline */
|
|
OCI_TYPEMETHOD_CONSTANT = 0x0002, /* constant */
|
|
OCI_TYPEMETHOD_VIRTUAL = 0x0004, /* virtual */
|
|
OCI_TYPEMETHOD_CONSTRUCTOR = 0x0008, /* constructor */
|
|
OCI_TYPEMETHOD_DESTRUCTOR = 0x0010, /* destructor */
|
|
OCI_TYPEMETHOD_OPERATOR = 0x0020, /* operator */
|
|
OCI_TYPEMETHOD_SELFISH = 0x0040, /* selfish method (generic otherwise) */
|
|
|
|
OCI_TYPEMETHOD_MAP = 0x0080, /* map (relative ordering) */
|
|
OCI_TYPEMETHOD_ORDER = 0x0100, /* order (relative ordering) */
|
|
/* OCI_TYPEMETHOD_MAP and OCI_TYPEMETHOD_ORDER are mutually exclusive */
|
|
|
|
OCI_TYPEMETHOD_RNDS= 0x0200, /* Read no Data State (default) */
|
|
OCI_TYPEMETHOD_WNDS= 0x0400, /* Write no Data State */
|
|
OCI_TYPEMETHOD_RNPS= 0x0800, /* Read no Process State */
|
|
OCI_TYPEMETHOD_WNPS= 0x1000, /* Write no Process State */
|
|
OCI_TYPEMETHOD_ABSTRACT = 0x2000, /* abstract (not instantiable) method */
|
|
OCI_TYPEMETHOD_OVERRIDING = 0x4000, /* overriding method */
|
|
OCI_TYPEMETHOD_PIPELINED = 0x8000 /* method is pipelined */
|
|
};
|
|
typedef enum OCITypeMethodFlag OCITypeMethodFlag;
|
|
|
|
/* macros to test the type method flags */
|
|
#define OCI_METHOD_IS_INLINE(flag) bit((flag), OCI_TYPEMETHOD_INLINE)
|
|
#define OCI_METHOD_IS_CONSTANT(flag) bit((flag), OCI_TYPEMETHOD_CONSTANT)
|
|
#define OCI_METHOD_IS_VIRTUAL(flag) bit((flag), OCI_TYPEMETHOD_VIRTUAL)
|
|
#define OCI_METHOD_IS_CONSTRUCTOR(flag) bit((flag), OCI_TYPEMETHOD_CONSTRUCTOR)
|
|
#define OCI_METHOD_IS_DESTRUCTOR(flag) bit((flag), OCI_TYPEMETHOD_DESTRUCTOR)
|
|
#define OCI_METHOD_IS_OPERATOR(flag) bit((flag), OCI_TYPEMETHOD_OPERATOR)
|
|
#define OCI_METHOD_IS_SELFISH(flag) bit((flag), OCI_TYPEMETHOD_SELFISH)
|
|
#define OCI_METHOD_IS_MAP(flag) bit((flag), OCI_TYPEMETHOD_MAP)
|
|
#define OCI_METHOD_IS_ORDER(flag) bit((flag), OCI_TYPEMETHOD_ORDER)
|
|
#define OCI_METHOD_IS_RNDS(flag) bit((flag), OCI_TYPEMETHOD_RNDS)
|
|
#define OCI_METHOD_IS_WNDS(flag) bit((flag), OCI_TYPEMETHOD_WNDS)
|
|
#define OCI_METHOD_IS_RNPS(flag) bit((flag), OCI_TYPEMETHOD_RNPS)
|
|
#define OCI_METHOD_IS_WNPS(flag) bit((flag), OCI_TYPEMETHOD_WNPS)
|
|
#define OCI_METHOD_IS_ABSTRACT(flag) bit((flag), OCI_TYPEMETHOD_ABSTRACT)
|
|
#define OCI_METHOD_IS_OVERRIDING(flag) bit((flag), OCI_TYPEMETHOD_OVERRIDING)
|
|
#define OCI_METHOD_IS_PIPELINED(flag) bit((flag), OCI_TYPEMETHOD_PIPELINED)
|
|
|
|
#define OCI_TYPEMETHOD_IS_INLINE(flag) bit((flag), OCI_TYPEMETHOD_INLINE)
|
|
#define OCI_TYPEMETHOD_IS_CONSTANT(flag) bit((flag), OCI_TYPEMETHOD_CONSTANT)
|
|
#define OCI_TYPEMETHOD_IS_VIRTUAL(flag) bit((flag), OCI_TYPEMETHOD_VIRTUAL)
|
|
#define OCI_TYPEMETHOD_IS_CONSTRUCTOR(flag) \
|
|
bit((flag), OCI_TYPEMETHOD_CONSTRUCTOR)
|
|
#define OCI_TYPEMETHOD_IS_DESTRUCTOR(flag) \
|
|
bit((flag), OCI_TYPEMETHOD_DESTRUCTOR)
|
|
#define OCI_TYPEMETHOD_IS_OPERATOR(flag) bit((flag), OCI_TYPEMETHOD_OPERATOR)
|
|
#define OCI_TYPEMETHOD_IS_SELFISH(flag) bit((flag), OCI_TYPEMETHOD_SELFISH)
|
|
#define OCI_TYPEMETHOD_IS_MAP(flag) bit((flag), OCI_TYPEMETHOD_MAP)
|
|
#define OCI_TYPEMETHOD_IS_ORDER(flag) bit((flag), OCI_TYPEMETHOD_ORDER)
|
|
#define OCI_TYPEMETHOD_IS_RNDS(flag) bit((flag), OCI_TYPEMETHOD_RNDS)
|
|
#define OCI_TYPEMETHOD_IS_WNDS(flag) bit((flag), OCI_TYPEMETHOD_WNDS)
|
|
#define OCI_TYPEMETHOD_IS_RNPS(flag) bit((flag), OCI_TYPEMETHOD_RNPS)
|
|
#define OCI_TYPEMETHOD_IS_WNPS(flag) bit((flag), OCI_TYPEMETHOD_WNPS)
|
|
#define OCI_TYPEMETHOD_IS_ABSTRACT(flag) bit((flag), OCI_TYPEMETHOD_ABSTRACT)
|
|
#define OCI_TYPEMETHOD_IS_OVERRIDING(flag) \
|
|
bit((flag), OCI_TYPEMETHOD_OVERRIDING)
|
|
#define OCI_TYPEMETHOD_IS_PIPELINED(flag) bit((flag), OCI_TYPEMETHOD_PIPELINED)
|
|
|
|
/* macros to set the type method flags */
|
|
#define OCI_TYPEMETHOD_SET_INLINE(flag) bis((flag), OCI_TYPEMETHOD_INLINE)
|
|
#define OCI_TYPEMETHOD_SET_CONSTANT(flag) bis((flag), OCI_TYPEMETHOD_CONSTANT)
|
|
#define OCI_TYPEMETHOD_SET_VIRTUAL(flag) bis((flag), OCI_TYPEMETHOD_VIRTUAL)
|
|
#define OCI_TYPEMETHOD_SET_CONSTRUCTOR(flag) \
|
|
bis((flag), OCI_TYPEMETHOD_CONSTRUCTOR)
|
|
#define OCI_TYPEMETHOD_SET_DESTRUCTOR(flag) \
|
|
bis((flag), OCI_TYPEMETHOD_DESTRUCTOR)
|
|
#define OCI_TYPEMETHOD_SET_OPERATOR(flag) bis((flag), OCI_TYPEMETHOD_OPERATOR)
|
|
#define OCI_TYPEMETHOD_SET_SELFISH(flag) bis((flag), OCI_TYPEMETHOD_SELFISH)
|
|
#define OCI_TYPEMETHOD_SET_MAP(flag) bis((flag), OCI_TYPEMETHOD_MAP)
|
|
#define OCI_TYPEMETHOD_SET_ORDER(flag) bis((flag), OCI_TYPEMETHOD_ORDER)
|
|
#define OCI_TYPEMETHOD_SET_RNDS(flag) bis((flag), OCI_TYPEMETHOD_RNDS)
|
|
#define OCI_TYPEMETHOD_SET_WNDS(flag) bis((flag), OCI_TYPEMETHOD_WNDS)
|
|
#define OCI_TYPEMETHOD_SET_RNPS(flag) bis((flag), OCI_TYPEMETHOD_RNPS)
|
|
#define OCI_TYPEMETHOD_SET_WNPS(flag) bis((flag), OCI_TYPEMETHOD_WNPS)
|
|
|
|
/* macros to clear the type method flags */
|
|
#define OCI_TYPEMETHOD_CLEAR_INLINE(flag) bic((flag), OCI_TYPEMETHOD_INLINE)
|
|
#define OCI_TYPEMETHOD_CLEAR_CONSTANT(flag) \
|
|
bic((flag), OCI_TYPEMETHOD_CONSTANT)
|
|
#define OCI_TYPEMETHOD_CLEAR_VIRTUAL(flag) bic((flag), OCI_TYPEMETHOD_VIRTUAL)
|
|
#define OCI_TYPEMETHOD_CLEAR_CONSTRUCTOR(flag) \
|
|
bic((flag), OCI_TYPEMETHOD_CONSTRUCTOR)
|
|
#define OCI_TYPEMETHOD_CLEAR_DESTRUCTOR(flag) \
|
|
bic((flag), OCI_TYPEMETHOD_DESTRUCTOR)
|
|
#define OCI_TYPEMETHOD_CLEAR_OPERATOR(flag) \
|
|
bic((flag), OCI_TYPEMETHOD_OPERATOR)
|
|
#define OCI_TYPEMETHOD_CLEAR_SELFISH(flag) bic((flag), OCI_TYPEMETHOD_SELFISH)
|
|
#define OCI_TYPEMETHOD_CLEAR_MAP(flag) bic((flag), OCI_TYPEMETHOD_MAP)
|
|
#define OCI_TYPEMETHOD_CLEAR_ORDER(flag) bic((flag), OCI_TYPEMETHOD_ORDER)
|
|
#define OCI_TYPEMETHOD_CLEAR_RNDS(flag) bic((flag), OCI_TYPEMETHOD_RNDS)
|
|
#define OCI_TYPEMETHOD_CLEAR_WNDS(flag) bic((flag), OCI_TYPEMETHOD_WNDS)
|
|
#define OCI_TYPEMETHOD_CLEAR_RNPS(flag) bic((flag), OCI_TYPEMETHOD_RNPS)
|
|
#define OCI_TYPEMETHOD_CLEAR_WNPS(flag) bic((flag), OCI_TYPEMETHOD_WNPS)
|
|
|
|
/*--------------------------- TYPE PARAMETER MODE ---------------------------*/
|
|
|
|
enum OCITypeParamMode
|
|
{
|
|
/* PL/SQL starts this from 0 */
|
|
OCI_TYPEPARAM_IN = 0, /* in */
|
|
OCI_TYPEPARAM_OUT, /* out */
|
|
OCI_TYPEPARAM_INOUT, /* in-out */
|
|
OCI_TYPEPARAM_BYREF, /* call by reference (implicitly in-out) */
|
|
OCI_TYPEPARAM_OUTNCPY, /* OUT with NOCOPY modifier */
|
|
OCI_TYPEPARAM_INOUTNCPY /* IN OUT with NOCOPY modifier */
|
|
};
|
|
typedef enum OCITypeParamMode OCITypeParamMode;
|
|
|
|
|
|
/*-------------------------------- DEFAULTS ---------------------------------*/
|
|
|
|
/* default binary and decimal precision and scale */
|
|
|
|
#define OCI_NUMBER_DEFAULTPREC ((ub1)0) /* no precision specified */
|
|
#define OCI_NUMBER_DEFAULTSCALE ((sb1)MAXSB1MINVAL)
|
|
/* no binary/decimal scale specified */
|
|
|
|
/* default maximum length for varrays and vstrings (used in sql.bsq) */
|
|
|
|
#define OCI_VARRAY_MAXSIZE 4000
|
|
/* default maximum number of elements for a varray */
|
|
#define OCI_STRING_MAXLEN 4000 /* default maximum length of a vstring */
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* This set of macro is used only in beta2. They should be removed as soon as
|
|
* PLSQL has made the changes of not using these macros.
|
|
*/
|
|
|
|
/* Special duration for allocating memory only. No instance can be allocated
|
|
* given these durations.
|
|
*/
|
|
#define OCICoherency OCIRefreshOpt
|
|
#define OCI_COHERENCY_NONE (OCIRefreshOpt)2
|
|
#define OCI_COHERENCY_NULL (OCIRefreshOpt)4
|
|
#define OCI_COHERENCY_ALWAYS (OCIRefreshOpt)5
|
|
|
|
#endif /* ORO_ORACLE */
|
|
|