📄 oro.h
字号:
/*----------------------- 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_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_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) */
/* 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 */
/* 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 */
};
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_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)
/* 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) */
};
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 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -