blob: 873c5a76af19ecbd8dc9dfaf1e59906ad68830c4 [file] [log] [blame]
Tang Cheng03c0b0a2015-01-12 11:19:45 +08001/* 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
80struct 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 */
124struct 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
150typedef struct cda_def Cda_Def;
151
152/* the logon data area (LDA)
153 is the same shape as the CDA */
154typedef 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 */