⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oro.h

📁 ORACLE访问接口
💻 H
📖 第 1 页 / 共 3 页
字号:
/*----------------------- 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 + -