Tang Cheng | 03c0b0a | 2015-01-12 11:19:45 +0800 | [diff] [blame^] | 1 | /* Copyright (c) 1991, 2005, Oracle. All rights reserved. */ |
| 2 | /* Copyright (c) 1991, 2005, Oracle. All rights reserved. */ |
| 3 | /* |
| 4 | NAME |
| 5 | ocidfn.h - OCI Definations |
| 6 | NOTES |
| 7 | Shipped to users. |
| 8 | MODIFIED (MM/DD/YY) |
| 9 | mbastawa 09/16/05 - dbhygiene |
| 10 | dmukhin 06/29/05 - ANSI prototypes; miscellaneous cleanup |
| 11 | srseshad 11/25/02 - change binary float/double codes |
| 12 | srseshad 11/14/02 - Add SQLT_IBFLOAT, SQLT_IBDOUBLE |
| 13 | mxyang 09/17/02 - grabtrans 'mmorsi_obj_float' |
| 14 | srseshad 09/06/02 - Add binary float/double |
| 15 | aahluwal 06/04/02 - bug 2360115 |
| 16 | kmuthukk 05/02/00 - add SQLT_PNTY |
| 17 | amangal 07/30/99 - Merge into 8.1.6 : Bug 879031 |
| 18 | tnbui 07/28/99 - Remove SQLT_TIMESTAMP_ITZ |
| 19 | tnbui 07/21/99 - SQLT_TIMESTAMP_LTZ |
| 20 | tnbui 06/16/99 - TIMESTAMP WITH IMPLICIT TIME ZONE |
| 21 | whe 04/07/99 - bug#810075 |
| 22 | whe 03/19/99 - lrg 32079 etc.: move HDA def from ocidem.h to ocidfn. |
| 23 | skmishra 05/10/98 - |
| 24 | vyanaman 04/16/98 - update sql92 datatypes |
| 25 | khnguyen 01/16/98 - |
| 26 | khnguyen 12/23/97 - SQLT* for datetimes and intervals |
| 27 | tanguyen 08/19/97 - |
| 28 | dchatter 03/18/97 - porting exception 390897 |
| 29 | dchatter 05/02/97 - merge porting exception |
| 30 | dalpern 12/04/96 - SQLCS_LIT_NULL added |
| 31 | cxcheng 11/14/96 - add SQLT_BFILE/SQLT_CFILE to fix compile prob |
| 32 | cxcheng 11/12/96 - add SQLT_NCO for named collection |
| 33 | lchidamb 10/17/96 - add SQLT_VST and SQLT_ODT |
| 34 | sgollapu 10/14/96 - Mutual exclusion of ocidfn and sqldef |
| 35 | sgollapu 10/07/96 - OCI Simplification |
| 36 | aroy 09/09/96 - add SQLCS* definitions |
| 37 | slari 08/07/96 - add SQLT_RDD, rowid descriptor |
| 38 | slari 06/12/96 - remove SQLT_TTBL |
| 39 | dchatter 04/21/96 - prepare for merge into main |
| 40 | slari 08/24/95 - b299432, define CDA_SIZE |
| 41 | zwalcott 02/28/96 - add SQLT_BFILEE and SQLT_CFILEE. |
| 42 | lchidamb 02/22/96 - make dtys consistent with dtydef.h |
| 43 | lchidamb 02/16/96 - add SQLT_BFILEE and SQLT_CFILEE |
| 44 | lchidamb 01/30/96 - rename new datatypes for v8 |
| 45 | lchidamb 09/06/95 - add new datatypes |
| 46 | slari 05/11/95 - add OCI_EV_DEF and OCI_EV_TSF |
| 47 | dchatter 04/06/95 - add ifdef flags around OCI_flags |
| 48 | dchatter 03/08/95 - piece values |
| 49 | dchatter 03/06/95 - merge changes from branch 1.2.720.3 |
| 50 | jfbrown 02/17/95 - merge changes from branch 1.2.720.2 |
| 51 | dchatter 02/08/95 - olog call modes |
| 52 | jfbrown 02/03/95 - remove non-printable characters |
| 53 | lchidamb 12/06/94 - merge changes from branch 1.2.720.1 |
| 54 | lchidamb 10/04/94 - added field chk to cda_head, cda_def |
| 55 | dchatter 07/05/94 - SQLT_CUR added |
| 56 | rkooi2 11/27/92 - Changing e* datatypes to s* |
| 57 | rkooi2 10/26/92 - More portability mods |
| 58 | rkooi2 10/22/92 - Added #ifndef ORATYPES ... |
| 59 | rkooi2 10/18/92 - Changes to make it portable. |
| 60 | sjain 03/16/92 - Creation |
| 61 | */ |
| 62 | |
| 63 | /* |
| 64 | * ocidfn.h |
| 65 | * |
| 66 | * Common header file for OCI C sample programs. |
| 67 | * This header declares the cursor and logon data area structure. |
| 68 | * The types used are defined in <oratypes.h>. |
| 69 | * |
| 70 | */ |
| 71 | |
| 72 | #ifndef OCIDFN |
| 73 | #define OCIDFN |
| 74 | |
| 75 | #include <oratypes.h> |
| 76 | |
| 77 | /* The cda_head struct is strictly PRIVATE. It is used |
| 78 | internally only. Do not use this struct in OCI programs. */ |
| 79 | |
| 80 | struct cda_head { |
| 81 | sb2 v2_rc; |
| 82 | ub2 ft; |
| 83 | ub4 rpc; |
| 84 | ub2 peo; |
| 85 | ub1 fc; |
| 86 | ub1 rcs1; |
| 87 | ub2 rc; |
| 88 | ub1 wrn; |
| 89 | ub1 rcs2; |
| 90 | sword rcs3; |
| 91 | struct { |
| 92 | struct { |
| 93 | ub4 rcs4; |
| 94 | ub2 rcs5; |
| 95 | ub1 rcs6; |
| 96 | } rd; |
| 97 | ub4 rcs7; |
| 98 | ub2 rcs8; |
| 99 | } rid; |
| 100 | sword ose; |
| 101 | ub1 chk; |
| 102 | void *rcsp; |
| 103 | }; |
| 104 | |
| 105 | /* |
| 106 | ** Size of HDA area: |
| 107 | ** 512 for 64 bit arquitectures |
| 108 | ** 256 for 32 bit arquitectures |
| 109 | */ |
| 110 | |
| 111 | #if defined(SS_64BIT_SERVER) || defined(__64BIT__) |
| 112 | # define HDA_SIZE 512 |
| 113 | #else |
| 114 | # define HDA_SIZE 256 |
| 115 | #endif |
| 116 | |
| 117 | #if defined(SS_64BIT_SERVER) || defined(__64BIT__) |
| 118 | #define CDA_SIZE 88 |
| 119 | #else |
| 120 | # define CDA_SIZE 64 |
| 121 | #endif |
| 122 | |
| 123 | /* the real CDA, padded to CDA_SIZE bytes in size */ |
| 124 | struct cda_def { |
| 125 | sb2 v2_rc; /* V2 return code */ |
| 126 | ub2 ft; /* SQL function type */ |
| 127 | ub4 rpc; /* rows processed count */ |
| 128 | ub2 peo; /* parse error offset */ |
| 129 | ub1 fc; /* OCI function code */ |
| 130 | ub1 rcs1; /* filler area */ |
| 131 | ub2 rc; /* V7 return code */ |
| 132 | ub1 wrn; /* warning flags */ |
| 133 | ub1 rcs2; /* reserved */ |
| 134 | sword rcs3; /* reserved */ |
| 135 | struct { /* rowid structure */ |
| 136 | struct { |
| 137 | ub4 rcs4; |
| 138 | ub2 rcs5; |
| 139 | ub1 rcs6; |
| 140 | } rd; |
| 141 | ub4 rcs7; |
| 142 | ub2 rcs8; |
| 143 | } rid; |
| 144 | sword ose; /* OSD dependent error */ |
| 145 | ub1 chk; |
| 146 | void *rcsp; /* pointer to reserved area */ |
| 147 | ub1 rcs9[CDA_SIZE - sizeof (struct cda_head)]; /* filler */ |
| 148 | }; |
| 149 | |
| 150 | typedef struct cda_def Cda_Def; |
| 151 | |
| 152 | /* the logon data area (LDA) |
| 153 | is the same shape as the CDA */ |
| 154 | typedef struct cda_def Lda_Def; |
| 155 | |
| 156 | /* OCI Environment Modes for opinit call */ |
| 157 | #define OCI_EV_DEF 0 /* default single-threaded environment */ |
| 158 | #define OCI_EV_TSF 1 /* thread-safe environment */ |
| 159 | |
| 160 | /* OCI Logon Modes for olog call */ |
| 161 | #define OCI_LM_DEF 0 /* default login */ |
| 162 | #define OCI_LM_NBL 1 /* non-blocking logon */ |
| 163 | |
| 164 | /* |
| 165 | * since sqllib uses both ocidef and ocidfn the following defines |
| 166 | * need to be guarded |
| 167 | */ |
| 168 | #ifndef OCI_FLAGS |
| 169 | #define OCI_FLAGS |
| 170 | |
| 171 | /* OCI_*_PIECE defines the piece types that are returned or set |
| 172 | */ |
| 173 | #define OCI_ONE_PIECE 0 /* there or this is the only piece */ |
| 174 | #define OCI_FIRST_PIECE 1 /* the first of many pieces */ |
| 175 | #define OCI_NEXT_PIECE 2 /* the next of many pieces */ |
| 176 | #define OCI_LAST_PIECE 3 /* the last piece of this column */ |
| 177 | #endif |
| 178 | |
| 179 | #ifndef SQLDEF |
| 180 | |
| 181 | /* input data types */ |
| 182 | #define SQLT_CHR 1 /* (ORANET TYPE) character string */ |
| 183 | #define SQLT_NUM 2 /* (ORANET TYPE) oracle numeric */ |
| 184 | #define SQLT_INT 3 /* (ORANET TYPE) integer */ |
| 185 | #define SQLT_FLT 4 /* (ORANET TYPE) Floating point number */ |
| 186 | #define SQLT_STR 5 /* zero terminated string */ |
| 187 | #define SQLT_VNU 6 /* NUM with preceding length byte */ |
| 188 | #define SQLT_PDN 7 /* (ORANET TYPE) Packed Decimal Numeric */ |
| 189 | #define SQLT_LNG 8 /* long */ |
| 190 | #define SQLT_VCS 9 /* Variable character string */ |
| 191 | #define SQLT_NON 10 /* Null/empty PCC Descriptor entry */ |
| 192 | #define SQLT_RID 11 /* rowid */ |
| 193 | #define SQLT_DAT 12 /* date in oracle format */ |
| 194 | #define SQLT_VBI 15 /* binary in VCS format */ |
| 195 | #define SQLT_BFLOAT 21 /* Native Binary float*/ |
| 196 | #define SQLT_BDOUBLE 22 /* NAtive binary double */ |
| 197 | #define SQLT_BIN 23 /* binary data(DTYBIN) */ |
| 198 | #define SQLT_LBI 24 /* long binary */ |
| 199 | #define SQLT_UIN 68 /* unsigned integer */ |
| 200 | #define SQLT_SLS 91 /* Display sign leading separate */ |
| 201 | #define SQLT_LVC 94 /* Longer longs (char) */ |
| 202 | #define SQLT_LVB 95 /* Longer long binary */ |
| 203 | #define SQLT_AFC 96 /* Ansi fixed char */ |
| 204 | #define SQLT_AVC 97 /* Ansi Var char */ |
| 205 | #define SQLT_IBFLOAT 100 /* binary float canonical */ |
| 206 | #define SQLT_IBDOUBLE 101 /* binary double canonical */ |
| 207 | #define SQLT_CUR 102 /* cursor type */ |
| 208 | #define SQLT_RDD 104 /* rowid descriptor */ |
| 209 | #define SQLT_LAB 105 /* label type */ |
| 210 | #define SQLT_OSL 106 /* oslabel type */ |
| 211 | |
| 212 | #define SQLT_NTY 108 /* named object type */ |
| 213 | #define SQLT_REF 110 /* ref type */ |
| 214 | #define SQLT_CLOB 112 /* character lob */ |
| 215 | #define SQLT_BLOB 113 /* binary lob */ |
| 216 | #define SQLT_BFILEE 114 /* binary file lob */ |
| 217 | #define SQLT_CFILEE 115 /* character file lob */ |
| 218 | #define SQLT_RSET 116 /* result set type */ |
| 219 | #define SQLT_NCO 122 /* named collection type (varray or nested table) */ |
| 220 | #define SQLT_VST 155 /* OCIString type */ |
| 221 | #define SQLT_ODT 156 /* OCIDate type */ |
| 222 | |
| 223 | /* datetimes and intervals */ |
| 224 | #define SQLT_DATE 184 /* ANSI Date */ |
| 225 | #define SQLT_TIME 185 /* TIME */ |
| 226 | #define SQLT_TIME_TZ 186 /* TIME WITH TIME ZONE */ |
| 227 | #define SQLT_TIMESTAMP 187 /* TIMESTAMP */ |
| 228 | #define SQLT_TIMESTAMP_TZ 188 /* TIMESTAMP WITH TIME ZONE */ |
| 229 | #define SQLT_INTERVAL_YM 189 /* INTERVAL YEAR TO MONTH */ |
| 230 | #define SQLT_INTERVAL_DS 190 /* INTERVAL DAY TO SECOND */ |
| 231 | #define SQLT_TIMESTAMP_LTZ 232 /* TIMESTAMP WITH LOCAL TZ */ |
| 232 | |
| 233 | #define SQLT_PNTY 241 /* pl/sql representation of named types */ |
| 234 | |
| 235 | /* cxcheng: this has been added for backward compatibility - |
| 236 | it needs to be here because ocidfn.h can get included ahead of sqldef.h */ |
| 237 | #define SQLT_FILE SQLT_BFILEE /* binary file lob */ |
| 238 | #define SQLT_CFILE SQLT_CFILEE |
| 239 | #define SQLT_BFILE SQLT_BFILEE |
| 240 | |
| 241 | /* CHAR/NCHAR/VARCHAR2/NVARCHAR2/CLOB/NCLOB char set "form" information */ |
| 242 | #define SQLCS_IMPLICIT 1 /* for CHAR, VARCHAR2, CLOB w/o a specified set */ |
| 243 | #define SQLCS_NCHAR 2 /* for NCHAR, NCHAR VARYING, NCLOB */ |
| 244 | #define SQLCS_EXPLICIT 3 /* for CHAR, etc, with "CHARACTER SET ..." syntax */ |
| 245 | #define SQLCS_FLEXIBLE 4 /* for PL/SQL "flexible" parameters */ |
| 246 | #define SQLCS_LIT_NULL 5 /* for typecheck of NULL and empty_clob() lits */ |
| 247 | |
| 248 | #endif /* SQLDEF */ |
| 249 | #endif /* OCIDFN */ |