1 /**************************************************
2  * sql.h
3  *
4  * These should be consistent with the MS version.
5  *
6  **************************************************/
7 #ifndef __SQL_H
8 #define __SQL_H
9 
10 
11 /****************************
12  * default to 3.51 declare something else before here and you get a whole new ball of wax
13  ***************************/
14 #ifndef ODBCVER
15 #define ODBCVER 0x0351
16 #endif
17 
18 #ifndef __SQLTYPES_H
19 #include "odbc/sqltypes.h"
20 #endif
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 /****************************
27  * some ret values
28  ***************************/
29 #define SQL_NULL_DATA             (-1)
30 #define SQL_DATA_AT_EXEC          (-2)
31 #define SQL_SUCCESS                0
32 #define SQL_SUCCESS_WITH_INFO      1
33 #if (ODBCVER >= 0x0300)
34 #define SQL_NO_DATA              100
35 #endif
36 #define SQL_ERROR                 (-1)
37 #define SQL_INVALID_HANDLE        (-2)
38 #define SQL_STILL_EXECUTING        2
39 #define SQL_NEED_DATA             99
40 #define SQL_SUCCEEDED(rc) (((rc)&(~1))==0)
41 
42 /****************************
43  * use these to indicate string termination to some function
44  ***************************/
45 #define SQL_NTS                   (-3)
46 #define SQL_NTSL                  (-3L)
47 
48 /* maximum message length */
49 #define SQL_MAX_MESSAGE_LENGTH   512
50 
51 /* date/time length constants */
52 #if (ODBCVER >= 0x0300)
53 #define SQL_DATE_LEN           10
54 #define SQL_TIME_LEN            8  /* add P+1 if precision is nonzero */
55 #define SQL_TIMESTAMP_LEN      19  /* add P+1 if precision is nonzero */
56 #endif
57 
58 /* handle type identifiers */
59 #if (ODBCVER >= 0x0300)
60 #define SQL_HANDLE_ENV             1
61 #define SQL_HANDLE_DBC             2
62 #define SQL_HANDLE_STMT            3
63 #define SQL_HANDLE_DESC            4
64 #endif
65 
66 /* environment attribute */
67 #if (ODBCVER >= 0x0300)
68 #define SQL_ATTR_OUTPUT_NTS    10001
69 #endif
70 
71 /* connection attributes */
72 #if (ODBCVER >= 0x0300)
73 #define SQL_ATTR_AUTO_IPD      10001
74 #define SQL_ATTR_METADATA_ID   10014
75 #endif  /* ODBCVER >= 0x0300 */
76 
77 /* statement attributes */
78 #if (ODBCVER >= 0x0300)
79 #define SQL_ATTR_APP_ROW_DESC       10010
80 #define SQL_ATTR_APP_PARAM_DESC     10011
81 #define SQL_ATTR_IMP_ROW_DESC       10012
82 #define SQL_ATTR_IMP_PARAM_DESC     10013
83 #define SQL_ATTR_CURSOR_SCROLLABLE  (-1)
84 #define SQL_ATTR_CURSOR_SENSITIVITY (-2)
85 #endif
86 
87 /* SQL_ATTR_CURSOR_SCROLLABLE values */
88 #if (ODBCVER >= 0x0300)
89 #define SQL_NONSCROLLABLE           0
90 #define SQL_SCROLLABLE              1
91 #endif  /* ODBCVER >= 0x0300 */
92 
93 /* identifiers of fields in the SQL descriptor */
94 #if (ODBCVER >= 0x0300)
95 #define SQL_DESC_COUNT                  1001
96 #define SQL_DESC_TYPE                   1002
97 #define SQL_DESC_LENGTH                 1003
98 #define SQL_DESC_OCTET_LENGTH_PTR       1004
99 #define SQL_DESC_PRECISION              1005
100 #define SQL_DESC_SCALE                  1006
101 #define SQL_DESC_DATETIME_INTERVAL_CODE 1007
102 #define SQL_DESC_NULLABLE               1008
103 #define SQL_DESC_INDICATOR_PTR          1009
104 #define SQL_DESC_DATA_PTR               1010
105 #define SQL_DESC_NAME                   1011
106 #define SQL_DESC_UNNAMED                1012
107 #define SQL_DESC_OCTET_LENGTH           1013
108 #define SQL_DESC_ALLOC_TYPE             1099
109 #endif
110 
111 /* identifiers of fields in the diagnostics area */
112 #if (ODBCVER >= 0x0300)
113 #define SQL_DIAG_RETURNCODE        1
114 #define SQL_DIAG_NUMBER            2
115 #define SQL_DIAG_ROW_COUNT         3
116 #define SQL_DIAG_SQLSTATE          4
117 #define SQL_DIAG_NATIVE            5
118 #define SQL_DIAG_MESSAGE_TEXT      6
119 #define SQL_DIAG_DYNAMIC_FUNCTION  7
120 #define SQL_DIAG_CLASS_ORIGIN      8
121 #define SQL_DIAG_SUBCLASS_ORIGIN   9
122 #define SQL_DIAG_CONNECTION_NAME  10
123 #define SQL_DIAG_SERVER_NAME      11
124 #define SQL_DIAG_DYNAMIC_FUNCTION_CODE 12
125 #endif
126 
127 /* dynamic function codes */
128 #if (ODBCVER >= 0x0300)
129 #define SQL_DIAG_ALTER_DOMAIN           3
130 #define SQL_DIAG_ALTER_TABLE            4
131 #define SQL_DIAG_CALL                   7
132 #define SQL_DIAG_CREATE_ASSERTION       6
133 #define SQL_DIAG_CREATE_CHARACTER_SET   8
134 #define SQL_DIAG_CREATE_COLLATION       10
135 #define SQL_DIAG_CREATE_DOMAIN          23
136 #define SQL_DIAG_CREATE_INDEX          (-1)
137 #define SQL_DIAG_CREATE_SCHEMA          64
138 #define SQL_DIAG_CREATE_TABLE          77
139 #define SQL_DIAG_CREATE_TRANSLATION     79
140 #define SQL_DIAG_CREATE_VIEW           84
141 #define SQL_DIAG_DELETE_WHERE          19
142 #define SQL_DIAG_DROP_ASSERTION         24
143 #define SQL_DIAG_DROP_CHARACTER_SET     25
144 #define SQL_DIAG_DROP_COLLATION         26
145 #define SQL_DIAG_DROP_DOMAIN            27
146 #define SQL_DIAG_DROP_INDEX            (-2)
147 #define SQL_DIAG_DROP_SCHEMA            31
148 #define SQL_DIAG_DROP_TABLE            32
149 #define SQL_DIAG_DROP_TRANSLATION      33
150 #define SQL_DIAG_DROP_VIEW             36
151 #define SQL_DIAG_DYNAMIC_DELETE_CURSOR 38
152 #define SQL_DIAG_DYNAMIC_UPDATE_CURSOR 81
153 #define SQL_DIAG_GRANT                 48
154 #define SQL_DIAG_INSERT                50
155 #define SQL_DIAG_REVOKE                59
156 #define SQL_DIAG_SELECT_CURSOR         85
157 #define SQL_DIAG_UNKNOWN_STATEMENT      0
158 #define SQL_DIAG_UPDATE_WHERE          82
159 #endif  /* ODBCVER >= 0x0300 */
160 
161 /* SQL data type codes */
162 #define SQL_UNKNOWN_TYPE    0
163 #define SQL_CHAR            1
164 #define SQL_NUMERIC         2
165 #define SQL_DECIMAL         3
166 #define SQL_INTEGER         4
167 #define SQL_SMALLINT        5
168 #define SQL_FLOAT           6
169 #define SQL_REAL            7
170 #define SQL_DOUBLE          8
171 #if (ODBCVER >= 0x0300)
172 #define SQL_DATETIME        9
173 #endif
174 #define SQL_VARCHAR        12
175 
176 /* One-parameter shortcuts for date/time data types */
177 #if (ODBCVER >= 0x0300)
178 #define SQL_TYPE_DATE      91
179 #define SQL_TYPE_TIME      92
180 #define SQL_TYPE_TIMESTAMP 93
181 #endif
182 
183 /* Statement attribute values for cursor sensitivity */
184 #if (ODBCVER >= 0x0300)
185 #define SQL_UNSPECIFIED     0
186 #define SQL_INSENSITIVE     1
187 #define SQL_SENSITIVE       2
188 #endif
189 
190 /* GetTypeInfo() request for all data types */
191 #define SQL_ALL_TYPES       0
192 
193 /* Default conversion code for SQLBindCol(), SQLBindParam() and SQLGetData() */
194 #if (ODBCVER >= 0x0300)
195 #define SQL_DEFAULT        99
196 #endif
197 
198 /* SQLGetData() code indicating that the application row descriptor
199  * specifies the data type
200  */
201 #if (ODBCVER >= 0x0300)
202 #define SQL_ARD_TYPE      (-99)
203 #endif
204 
205 /* SQL date/time type subcodes */
206 #if (ODBCVER >= 0x0300)
207 #define SQL_CODE_DATE       1
208 #define SQL_CODE_TIME       2
209 #define SQL_CODE_TIMESTAMP  3
210 #endif
211 
212 /* CLI option values */
213 #if (ODBCVER >= 0x0300)
214 #define SQL_FALSE           0
215 #define SQL_TRUE            1
216 #endif
217 
218 /* values of NULLABLE field in descriptor */
219 #define SQL_NO_NULLS        0
220 #define SQL_NULLABLE        1
221 
222 /* Value returned by SQLGetTypeInfo() to denote that it is
223  * not known whether or not a data type supports null values.
224  */
225 #define SQL_NULLABLE_UNKNOWN  2
226 
227 /* Values returned by SQLGetTypeInfo() to show WHERE clause
228  * supported
229  */
230 #if (ODBCVER >= 0x0300)
231 #define SQL_PRED_NONE     0
232 #define SQL_PRED_CHAR     1
233 #define SQL_PRED_BASIC    2
234 #endif
235 
236 /* values of UNNAMED field in descriptor */
237 #if (ODBCVER >= 0x0300)
238 #define SQL_NAMED           0
239 #define SQL_UNNAMED         1
240 #endif
241 
242 /* values of ALLOC_TYPE field in descriptor */
243 #if (ODBCVER >= 0x0300)
244 #define SQL_DESC_ALLOC_AUTO 1
245 #define SQL_DESC_ALLOC_USER 2
246 #endif
247 
248 /* FreeStmt() options */
249 #define SQL_CLOSE           0
250 #define SQL_DROP            1
251 #define SQL_UNBIND          2
252 #define SQL_RESET_PARAMS    3
253 
254 /* Codes used for FetchOrientation in SQLFetchScroll(),
255    and in SQLDataSources()
256 */
257 #define SQL_FETCH_NEXT      1
258 #define SQL_FETCH_FIRST     2
259 
260 /* Other codes used for FetchOrientation in SQLFetchScroll() */
261 #define SQL_FETCH_LAST      3
262 #define SQL_FETCH_PRIOR     4
263 #define SQL_FETCH_ABSOLUTE  5
264 #define SQL_FETCH_RELATIVE  6
265 
266 /* SQLEndTran() options */
267 #define SQL_COMMIT          0
268 #define SQL_ROLLBACK        1
269 
270 /* null handles returned by SQLAllocHandle() */
271 #define SQL_NULL_HENV       0
272 #define SQL_NULL_HDBC       0
273 #define SQL_NULL_HSTMT      0
274 #if (ODBCVER >= 0x0300)
275 #define SQL_NULL_HDESC      0
276 #define SQL_NULL_DESC       0
277 #endif
278 
279 /* null handle used in place of parent handle when allocating HENV */
280 #if (ODBCVER >= 0x0300)
281 #define SQL_NULL_HANDLE     NULL
282 #endif
283 
284 /* Values that may appear in the result set of SQLSpecialColumns() */
285 #define SQL_SCOPE_CURROW    0
286 #define SQL_SCOPE_TRANSACTION 1
287 #define SQL_SCOPE_SESSION   2
288 
289 #define SQL_PC_UNKNOWN      0
290 #if (ODBCVER >= 0x0300)
291 #define SQL_PC_NON_PSEUDO   1
292 #endif
293 #define SQL_PC_PSEUDO       2
294 
295 /* Reserved value for the IdentifierType argument of SQLSpecialColumns() */
296 #if (ODBCVER >= 0x0300)
297 #define SQL_ROW_IDENTIFIER  1
298 #endif
299 
300 /* Reserved values for UNIQUE argument of SQLStatistics() */
301 #define SQL_INDEX_UNIQUE    0
302 #define SQL_INDEX_ALL       1
303 
304 /* Values that may appear in the result set of SQLStatistics() */
305 #define SQL_INDEX_CLUSTERED 1
306 #define SQL_INDEX_HASHED    2
307 #define SQL_INDEX_OTHER     3
308 
309 /* SQLGetFunctions() values to identify ODBC APIs */
310 #define SQL_API_SQLALLOCCONNECT         1
311 #define SQL_API_SQLALLOCENV             2
312 #if (ODBCVER >= 0x0300)
313 #define SQL_API_SQLALLOCHANDLE       1001
314 #endif
315 #define SQL_API_SQLALLOCSTMT            3
316 #define SQL_API_SQLBINDCOL              4
317 #if (ODBCVER >= 0x0300)
318 #define SQL_API_SQLBINDPARAM         1002
319 #endif
320 #define SQL_API_SQLCANCEL               5
321 #if (ODBCVER >= 0x0300)
322 #define SQL_API_SQLCLOSECURSOR       1003
323 #define SQL_API_SQLCOLATTRIBUTE         6
324 #endif
325 #define SQL_API_SQLCOLUMNS             40
326 #define SQL_API_SQLCONNECT              7
327 #if (ODBCVER >= 0x0300)
328 #define SQL_API_SQLCOPYDESC          1004
329 #endif
330 #define SQL_API_SQLDATASOURCES         57
331 #define SQL_API_SQLDESCRIBECOL          8
332 #define SQL_API_SQLDISCONNECT           9
333 #if (ODBCVER >= 0x0300)
334 #define SQL_API_SQLENDTRAN           1005
335 #endif
336 #define SQL_API_SQLERROR               10
337 #define SQL_API_SQLEXECDIRECT          11
338 #define SQL_API_SQLEXECUTE             12
339 #define SQL_API_SQLFETCH               13
340 #if (ODBCVER >= 0x0300)
341 #define SQL_API_SQLFETCHSCROLL       1021
342 #endif
343 #define SQL_API_SQLFREECONNECT         14
344 #define SQL_API_SQLFREEENV             15
345 #if (ODBCVER >= 0x0300)
346 #define SQL_API_SQLFREEHANDLE        1006
347 #endif
348 #define SQL_API_SQLFREESTMT            16
349 #if (ODBCVER >= 0x0300)
350 #define SQL_API_SQLGETCONNECTATTR    1007
351 #endif
352 #define SQL_API_SQLGETCONNECTOPTION    42
353 #define SQL_API_SQLGETCURSORNAME       17
354 #define SQL_API_SQLGETDATA             43
355 #if (ODBCVER >= 0x0300)
356 #define SQL_API_SQLGETDESCFIELD      1008
357 #define SQL_API_SQLGETDESCREC        1009
358 #define SQL_API_SQLGETDIAGFIELD      1010
359 #define SQL_API_SQLGETDIAGREC        1011
360 #define SQL_API_SQLGETENVATTR        1012
361 #endif
362 #define SQL_API_SQLGETFUNCTIONS        44
363 #define SQL_API_SQLGETINFO             45
364 #if (ODBCVER >= 0x0300)
365 #define SQL_API_SQLGETSTMTATTR       1014
366 #endif
367 #define SQL_API_SQLGETSTMTOPTION       46
368 #define SQL_API_SQLGETTYPEINFO         47
369 #define SQL_API_SQLNUMRESULTCOLS       18
370 #define SQL_API_SQLPARAMDATA           48
371 #define SQL_API_SQLPREPARE             19
372 #define SQL_API_SQLPUTDATA             49
373 #define SQL_API_SQLROWCOUNT            20
374 #if (ODBCVER >= 0x0300)
375 #define SQL_API_SQLSETCONNECTATTR    1016
376 #endif
377 #define SQL_API_SQLSETCONNECTOPTION    50
378 #define SQL_API_SQLSETCURSORNAME       21
379 #if (ODBCVER >= 0x0300)
380 #define SQL_API_SQLSETDESCFIELD      1017
381 #define SQL_API_SQLSETDESCREC        1018
382 #define SQL_API_SQLSETENVATTR        1019
383 #endif
384 #define SQL_API_SQLSETPARAM            22
385 #if (ODBCVER >= 0x0300)
386 #define SQL_API_SQLSETSTMTATTR       1020
387 #endif
388 #define SQL_API_SQLSETSTMTOPTION       51
389 #define SQL_API_SQLSPECIALCOLUMNS      52
390 #define SQL_API_SQLSTATISTICS          53
391 #define SQL_API_SQLTABLES              54
392 #define SQL_API_SQLTRANSACT            23
393 
394 /* Information requested by SQLGetInfo() */
395 #if (ODBCVER >= 0x0300)
396 #define SQL_MAX_DRIVER_CONNECTIONS           0
397 #define SQL_MAXIMUM_DRIVER_CONNECTIONS      SQL_MAX_DRIVER_CONNECTIONS
398 #define SQL_MAX_CONCURRENT_ACTIVITIES        1
399 #define SQL_MAXIMUM_CONCURRENT_ACTIVITIES   SQL_MAX_CONCURRENT_ACTIVITIES
400 #endif
401 #define SQL_DATA_SOURCE_NAME                 2
402 #define SQL_FETCH_DIRECTION                  8
403 #define SQL_SERVER_NAME                     13
404 #define SQL_SEARCH_PATTERN_ESCAPE           14
405 #define SQL_DBMS_NAME                       17
406 #define SQL_DBMS_VER                        18
407 #define SQL_ACCESSIBLE_TABLES               19
408 #define SQL_ACCESSIBLE_PROCEDURES           20
409 #define SQL_CURSOR_COMMIT_BEHAVIOR          23
410 #define SQL_DATA_SOURCE_READ_ONLY           25
411 #define SQL_DEFAULT_TXN_ISOLATION           26
412 #define SQL_IDENTIFIER_CASE                 28
413 #define SQL_IDENTIFIER_QUOTE_CHAR           29
414 #define SQL_MAX_COLUMN_NAME_LEN             30
415 #define SQL_MAXIMUM_COLUMN_NAME_LENGTH      SQL_MAX_COLUMN_NAME_LEN
416 #define SQL_MAX_CURSOR_NAME_LEN             31
417 #define SQL_MAXIMUM_CURSOR_NAME_LENGTH      SQL_MAX_CURSOR_NAME_LEN
418 #define SQL_MAX_SCHEMA_NAME_LEN             32
419 #define SQL_MAXIMUM_SCHEMA_NAME_LENGTH      SQL_MAX_SCHEMA_NAME_LEN
420 #define SQL_MAX_CATALOG_NAME_LEN            34
421 #define SQL_MAXIMUM_CATALOG_NAME_LENGTH     SQL_MAX_CATALOG_NAME_LEN
422 #define SQL_MAX_TABLE_NAME_LEN              35
423 #define SQL_SCROLL_CONCURRENCY              43
424 #define SQL_TXN_CAPABLE                     46
425 #define SQL_TRANSACTION_CAPABLE             SQL_TXN_CAPABLE
426 #define SQL_USER_NAME                       47
427 #define SQL_TXN_ISOLATION_OPTION            72
428 #define SQL_TRANSACTION_ISOLATION_OPTION    SQL_TXN_ISOLATION_OPTION
429 #define SQL_INTEGRITY                       73
430 #define SQL_GETDATA_EXTENSIONS              81
431 #define SQL_NULL_COLLATION                  85
432 #define SQL_ALTER_TABLE                     86
433 #define SQL_ORDER_BY_COLUMNS_IN_SELECT      90
434 #define SQL_SPECIAL_CHARACTERS              94
435 #define SQL_MAX_COLUMNS_IN_GROUP_BY         97
436 #define SQL_MAXIMUM_COLUMNS_IN_GROUP_BY     SQL_MAX_COLUMNS_IN_GROUP_BY
437 #define SQL_MAX_COLUMNS_IN_INDEX            98
438 #define SQL_MAXIMUM_COLUMNS_IN_INDEX        SQL_MAX_COLUMNS_IN_INDEX
439 #define SQL_MAX_COLUMNS_IN_ORDER_BY         99
440 #define SQL_MAXIMUM_COLUMNS_IN_ORDER_BY     SQL_MAX_COLUMNS_IN_ORDER_BY
441 #define SQL_MAX_COLUMNS_IN_SELECT          100
442 #define SQL_MAXIMUM_COLUMNS_IN_SELECT      SQL_MAX_COLUMNS_IN_SELECT
443 #define SQL_MAX_COLUMNS_IN_TABLE           101
444 #define SQL_MAX_INDEX_SIZE                 102
445 #define SQL_MAXIMUM_INDEX_SIZE             SQL_MAX_INDEX_SIZE
446 #define SQL_MAX_ROW_SIZE                   104
447 #define SQL_MAXIMUM_ROW_SIZE               SQL_MAX_ROW_SIZE
448 #define SQL_MAX_STATEMENT_LEN              105
449 #define SQL_MAXIMUM_STATEMENT_LENGTH       SQL_MAX_STATEMENT_LEN
450 #define SQL_MAX_TABLES_IN_SELECT           106
451 #define SQL_MAXIMUM_TABLES_IN_SELECT       SQL_MAX_TABLES_IN_SELECT
452 #define SQL_MAX_USER_NAME_LEN              107
453 #define SQL_MAXIMUM_USER_NAME_LENGTH       SQL_MAX_USER_NAME_LEN
454 #if (ODBCVER >= 0x0300)
455 #define SQL_OJ_CAPABILITIES                115
456 #define SQL_OUTER_JOIN_CAPABILITIES        SQL_OJ_CAPABILITIES
457 #endif /* ODBCVER >= 0x0300 */
458 
459 #if (ODBCVER >= 0x0300)
460 #define SQL_XOPEN_CLI_YEAR               10000
461 #define SQL_CURSOR_SENSITIVITY           10001
462 #define SQL_DESCRIBE_PARAMETER           10002
463 #define SQL_CATALOG_NAME                 10003
464 #define SQL_COLLATION_SEQ                10004
465 #define SQL_MAX_IDENTIFIER_LEN           10005
466 #define SQL_MAXIMUM_IDENTIFIER_LENGTH    SQL_MAX_IDENTIFIER_LEN
467 #endif /* ODBCVER >= 0x0300 */
468 
469 /* SQL_ALTER_TABLE bitmasks */
470 #if (ODBCVER >= 0x0200)
471 #define SQL_AT_ADD_COLUMN                       0x00000001L
472 #define SQL_AT_DROP_COLUMN                      0x00000002L
473 #endif /* ODBCVER >= 0x0200 */
474 
475 #if (ODBCVER >= 0x0300)
476 #define SQL_AT_ADD_CONSTRAINT                   0x00000008L
477 
478 /* The following bitmasks are ODBC extensions and defined in sqlext.h
479 *#define    SQL_AT_COLUMN_SINGLE                    0x00000020L
480 *#define    SQL_AT_ADD_COLUMN_DEFAULT               0x00000040L
481 *#define    SQL_AT_ADD_COLUMN_COLLATION             0x00000080L
482 *#define    SQL_AT_SET_COLUMN_DEFAULT               0x00000100L
483 *#define    SQL_AT_DROP_COLUMN_DEFAULT              0x00000200L
484 *#define    SQL_AT_DROP_COLUMN_CASCADE              0x00000400L
485 *#define    SQL_AT_DROP_COLUMN_RESTRICT             0x00000800L
486 *#define SQL_AT_ADD_TABLE_CONSTRAINT                0x00001000L
487 *#define SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE       0x00002000L
488 *#define SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT      0x00004000L
489 *#define SQL_AT_CONSTRAINT_NAME_DEFINITION          0x00008000L
490 *#define SQL_AT_CONSTRAINT_INITIALLY_DEFERRED       0x00010000L
491 *#define SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE      0x00020000L
492 *#define SQL_AT_CONSTRAINT_DEFERRABLE               0x00040000L
493 *#define SQL_AT_CONSTRAINT_NON_DEFERRABLE           0x00080000L
494 */
495 #endif  /* ODBCVER >= 0x0300 */
496 
497 
498 /* SQL_ASYNC_MODE values */
499 #if (ODBCVER >= 0x0300)
500 #define SQL_AM_NONE                         0
501 #define SQL_AM_CONNECTION                   1
502 #define SQL_AM_STATEMENT                    2
503 #endif
504 
505 /* SQL_CURSOR_COMMIT_BEHAVIOR values */
506 #define SQL_CB_DELETE                       0
507 #define SQL_CB_CLOSE                        1
508 #define SQL_CB_PRESERVE                     2
509 
510 /* SQL_FETCH_DIRECTION bitmasks */
511 #define SQL_FD_FETCH_NEXT                   0x00000001L
512 #define SQL_FD_FETCH_FIRST                  0x00000002L
513 #define SQL_FD_FETCH_LAST                   0x00000004L
514 #define SQL_FD_FETCH_PRIOR                  0x00000008L
515 #define SQL_FD_FETCH_ABSOLUTE               0x00000010L
516 #define SQL_FD_FETCH_RELATIVE               0x00000020L
517 
518 /* SQL_GETDATA_EXTENSIONS bitmasks */
519 #define SQL_GD_ANY_COLUMN                   0x00000001L
520 #define SQL_GD_ANY_ORDER                    0x00000002L
521 
522 /* SQL_IDENTIFIER_CASE values */
523 #define SQL_IC_UPPER                        1
524 #define SQL_IC_LOWER                        2
525 #define SQL_IC_SENSITIVE                    3
526 #define SQL_IC_MIXED                        4
527 
528 /* SQL_OJ_CAPABILITIES bitmasks */
529 /* NB: this means 'outer join', not what  you may be thinking */
530 
531 
532 #if (ODBCVER >= 0x0201)
533 #define SQL_OJ_LEFT                         0x00000001L
534 #define SQL_OJ_RIGHT                        0x00000002L
535 #define SQL_OJ_FULL                         0x00000004L
536 #define SQL_OJ_NESTED                       0x00000008L
537 #define SQL_OJ_NOT_ORDERED                  0x00000010L
538 #define SQL_OJ_INNER                        0x00000020L
539 #define SQL_OJ_ALL_COMPARISON_OPS           0x00000040L
540 #endif
541 
542 /* SQL_SCROLL_CONCURRENCY bitmasks */
543 #define SQL_SCCO_READ_ONLY                  0x00000001L
544 #define SQL_SCCO_LOCK                       0x00000002L
545 #define SQL_SCCO_OPT_ROWVER                 0x00000004L
546 #define SQL_SCCO_OPT_VALUES                 0x00000008L
547 
548 /* SQL_TXN_CAPABLE values */
549 #define SQL_TC_NONE                         0
550 #define SQL_TC_DML                          1
551 #define SQL_TC_ALL                          2
552 #define SQL_TC_DDL_COMMIT                   3
553 #define SQL_TC_DDL_IGNORE                   4
554 
555 /* SQL_TXN_ISOLATION_OPTION bitmasks */
556 #define SQL_TXN_READ_UNCOMMITTED            0x00000001L
557 #define SQL_TRANSACTION_READ_UNCOMMITTED    SQL_TXN_READ_UNCOMMITTED
558 #define SQL_TXN_READ_COMMITTED              0x00000002L
559 #define SQL_TRANSACTION_READ_COMMITTED      SQL_TXN_READ_COMMITTED
560 #define SQL_TXN_REPEATABLE_READ             0x00000004L
561 #define SQL_TRANSACTION_REPEATABLE_READ     SQL_TXN_REPEATABLE_READ
562 #define SQL_TXN_SERIALIZABLE                0x00000008L
563 #define SQL_TRANSACTION_SERIALIZABLE        SQL_TXN_SERIALIZABLE
564 
565 /* SQL_NULL_COLLATION values */
566 #define SQL_NC_HIGH                         0
567 #define SQL_NC_LOW                          1
568 
569     SQLRETURN  SQL_API SQLAllocConnect(SQLHENV EnvironmentHandle,
570                                        SQLHDBC *ConnectionHandle);
571 
572     SQLRETURN  SQL_API SQLAllocEnv(SQLHENV *EnvironmentHandle);
573 
574 #if (ODBCVER >= 0x0300)
575     SQLRETURN  SQL_API SQLAllocHandle(SQLSMALLINT HandleType,
576                                       SQLHANDLE InputHandle, SQLHANDLE *OutputHandle);
577 #endif
578 
579     SQLRETURN  SQL_API SQLAllocStmt(SQLHDBC ConnectionHandle,
580                                     SQLHSTMT *StatementHandle);
581 
582     SQLRETURN  SQL_API SQLBindCol(SQLHSTMT StatementHandle,
583                                   SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
584                                   SQLPOINTER TargetValue, SQLLEN BufferLength,
585                                   SQLLEN *StrLen_or_Ind);
586 
587 #if (ODBCVER >= 0x0300)
588     SQLRETURN  SQL_API SQLBindParam(SQLHSTMT StatementHandle,
589                                     SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType,
590                                     SQLSMALLINT ParameterType, SQLULEN LengthPrecision,
591                                     SQLSMALLINT ParameterScale, SQLPOINTER ParameterValue,
592                                     SQLLEN *StrLen_or_Ind);
593 #endif
594 
595     SQLRETURN  SQL_API SQLCancel(SQLHSTMT StatementHandle);
596 
597 #if (ODBCVER >= 0x0300)
598     SQLRETURN  SQL_API SQLCloseCursor(SQLHSTMT StatementHandle);
599 
600     SQLRETURN  SQL_API SQLColAttribute(SQLHSTMT StatementHandle,
601                                         SQLUSMALLINT ColumnNumber, SQLUSMALLINT FieldIdentifier,
602                                         SQLPOINTER CharacterAttribute, SQLSMALLINT BufferLength,
603                                         SQLSMALLINT *StringLength, SQLLEN *NumericAttribute
604                                         /* spec says (SQLPOINTER) not (SQLEN*) - PAH */ );
605                                         /* Ms now say SQLLEN* http://msdn.microsoft.com/library/en-us/odbc/htm/dasdkodbcoverview_64bit.asp - NG */
606 
607 #endif
608 
609 
610     SQLRETURN  SQL_API SQLColumns(SQLHSTMT StatementHandle,
611                                   SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
612                                   SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
613                                   SQLCHAR *TableName, SQLSMALLINT NameLength3,
614                                   SQLCHAR *ColumnName, SQLSMALLINT NameLength4);
615 
616 
617     SQLRETURN  SQL_API SQLConnect(SQLHDBC ConnectionHandle,
618                                   SQLCHAR *ServerName, SQLSMALLINT NameLength1,
619                                   SQLCHAR *UserName, SQLSMALLINT NameLength2,
620                                   SQLCHAR *Authentication, SQLSMALLINT NameLength3);
621 
622 #if (ODBCVER >= 0x0300)
623     SQLRETURN  SQL_API SQLCopyDesc(SQLHDESC SourceDescHandle,
624                                    SQLHDESC TargetDescHandle);
625 #endif
626 
627     SQLRETURN  SQL_API SQLDataSources(SQLHENV EnvironmentHandle,
628                                       SQLUSMALLINT Direction, SQLCHAR *ServerName,
629                                       SQLSMALLINT BufferLength1, SQLSMALLINT *NameLength1,
630                                       SQLCHAR *Description, SQLSMALLINT BufferLength2,
631                                       SQLSMALLINT *NameLength2);
632 
633     SQLRETURN  SQL_API SQLDescribeCol(SQLHSTMT StatementHandle,
634                                       SQLUSMALLINT ColumnNumber, SQLCHAR *ColumnName,
635                                       SQLSMALLINT BufferLength, SQLSMALLINT *NameLength,
636                                       SQLSMALLINT *DataType, SQLULEN *ColumnSize,
637                                       SQLSMALLINT *DecimalDigits, SQLSMALLINT *Nullable);
638 
639     SQLRETURN  SQL_API SQLDisconnect(SQLHDBC ConnectionHandle);
640 
641 #if (ODBCVER >= 0x0300)
642     SQLRETURN  SQL_API SQLEndTran(SQLSMALLINT HandleType, SQLHANDLE Handle,
643                                   SQLSMALLINT CompletionType);
644 #endif
645 
646     SQLRETURN  SQL_API SQLError(SQLHENV EnvironmentHandle,
647                                 SQLHDBC ConnectionHandle, SQLHSTMT StatementHandle,
648                                 SQLCHAR *Sqlstate, SQLINTEGER *NativeError,
649                                 SQLCHAR *MessageText, SQLSMALLINT BufferLength,
650                                 SQLSMALLINT *TextLength);
651 
652     SQLRETURN  SQL_API SQLExecDirect(SQLHSTMT StatementHandle,
653                                      SQLCHAR *StatementText, SQLINTEGER TextLength);
654 
655     SQLRETURN  SQL_API SQLExecute(SQLHSTMT StatementHandle);
656 
657     SQLRETURN  SQL_API SQLFetch(SQLHSTMT StatementHandle);
658 
659 #if (ODBCVER >= 0x0300)
660     SQLRETURN  SQL_API SQLFetchScroll(SQLHSTMT StatementHandle,
661                                       SQLSMALLINT FetchOrientation, SQLLEN FetchOffset);
662 #endif
663 
664     SQLRETURN  SQL_API SQLFreeConnect(SQLHDBC ConnectionHandle);
665 
666     SQLRETURN  SQL_API SQLFreeEnv(SQLHENV EnvironmentHandle);
667 
668 #if (ODBCVER >= 0x0300)
669     SQLRETURN  SQL_API SQLFreeHandle(SQLSMALLINT HandleType, SQLHANDLE Handle);
670 #endif
671 
672     SQLRETURN  SQL_API SQLFreeStmt(SQLHSTMT StatementHandle,
673                                    SQLUSMALLINT Option);
674 
675 #if (ODBCVER >= 0x0300)
676     SQLRETURN  SQL_API SQLGetConnectAttr(SQLHDBC ConnectionHandle,
677                                          SQLINTEGER Attribute, SQLPOINTER Value,
678                                          SQLINTEGER BufferLength, SQLINTEGER *StringLength);
679 #endif
680 
681     SQLRETURN  SQL_API SQLGetConnectOption(SQLHDBC ConnectionHandle,
682                                            SQLUSMALLINT Option, SQLPOINTER Value);
683 
684     SQLRETURN  SQL_API SQLGetCursorName(SQLHSTMT StatementHandle,
685                                         SQLCHAR *CursorName, SQLSMALLINT BufferLength,
686                                         SQLSMALLINT *NameLength);
687 
688     SQLRETURN  SQL_API SQLGetData(SQLHSTMT StatementHandle,
689                                   SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
690                                   SQLPOINTER TargetValue, SQLLEN BufferLength,
691                                   SQLLEN *StrLen_or_Ind);
692 
693 #if (ODBCVER >= 0x0300)
694     SQLRETURN   SQLGetDescField(SQLHDESC DescriptorHandle,
695                                 SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
696                                 SQLPOINTER Value, SQLINTEGER BufferLength,
697                                 SQLINTEGER *StringLength);
698 
699     SQLRETURN  SQL_API SQLGetDescRec(SQLHDESC DescriptorHandle,
700                                      SQLSMALLINT RecNumber, SQLCHAR *Name,
701                                      SQLSMALLINT BufferLength, SQLSMALLINT *StringLength,
702                                      SQLSMALLINT *Type, SQLSMALLINT *SubType,
703                                      SQLLEN *Length, SQLSMALLINT *Precision,
704                                      SQLSMALLINT *Scale, SQLSMALLINT *Nullable);
705 
706     SQLRETURN  SQL_API SQLGetDiagField(SQLSMALLINT HandleType, SQLHANDLE Handle,
707                                        SQLSMALLINT RecNumber, SQLSMALLINT DiagIdentifier,
708                                        SQLPOINTER DiagInfo, SQLSMALLINT BufferLength,
709                                        SQLSMALLINT *StringLength);
710 
711     SQLRETURN  SQL_API SQLGetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle,
712                                      SQLSMALLINT RecNumber, SQLCHAR *Sqlstate,
713                                      SQLINTEGER *NativeError, SQLCHAR *MessageText,
714                                      SQLSMALLINT BufferLength, SQLSMALLINT *TextLength);
715 
716     SQLRETURN  SQL_API SQLGetEnvAttr(SQLHENV EnvironmentHandle,
717                                      SQLINTEGER Attribute, SQLPOINTER Value,
718                                      SQLINTEGER BufferLength, SQLINTEGER *StringLength);
719 #endif  /* ODBCVER >= 0x0300 */
720 
721     SQLRETURN  SQL_API SQLGetFunctions(SQLHDBC ConnectionHandle,
722                                        SQLUSMALLINT FunctionId, SQLUSMALLINT *Supported);
723 
724     SQLRETURN  SQL_API SQLGetInfo(SQLHDBC ConnectionHandle,
725                                   SQLUSMALLINT InfoType, SQLPOINTER InfoValue,
726                                   SQLSMALLINT BufferLength, SQLSMALLINT *StringLength);
727 
728 #if (ODBCVER >= 0x0300)
729     SQLRETURN  SQL_API SQLGetStmtAttr(SQLHSTMT StatementHandle,
730                                       SQLINTEGER Attribute, SQLPOINTER Value,
731                                       SQLINTEGER BufferLength, SQLINTEGER *StringLength);
732 #endif  /* ODBCVER >= 0x0300 */
733 
734     SQLRETURN  SQL_API SQLGetStmtOption(SQLHSTMT StatementHandle,
735                                         SQLUSMALLINT Option, SQLPOINTER Value);
736 
737     SQLRETURN  SQL_API SQLGetTypeInfo(SQLHSTMT StatementHandle,
738                                       SQLSMALLINT DataType);
739 
740     SQLRETURN  SQL_API SQLNumResultCols(SQLHSTMT StatementHandle,
741                                         SQLSMALLINT *ColumnCount);
742 
743     SQLRETURN  SQL_API SQLParamData(SQLHSTMT StatementHandle,
744                                     SQLPOINTER *Value);
745 
746     SQLRETURN  SQL_API SQLPrepare(SQLHSTMT StatementHandle,
747                                   SQLCHAR *StatementText, SQLINTEGER TextLength);
748 
749     SQLRETURN  SQL_API SQLPutData(SQLHSTMT StatementHandle,
750                                   SQLPOINTER Data, SQLLEN StrLen_or_Ind);
751 
752     SQLRETURN  SQL_API SQLRowCount(SQLHSTMT StatementHandle,
753                                    SQLLEN *RowCount);
754 
755 #if (ODBCVER >= 0x0300)
756     SQLRETURN  SQL_API SQLSetConnectAttr(SQLHDBC ConnectionHandle,
757                                          SQLINTEGER Attribute, SQLPOINTER Value,
758                                          SQLINTEGER StringLength);
759 #endif /* ODBCVER >= 0x0300 */
760 
761     SQLRETURN  SQL_API SQLSetConnectOption(SQLHDBC ConnectionHandle,
762                                            SQLUSMALLINT Option, SQLULEN Value);
763 
764     SQLRETURN  SQL_API SQLSetCursorName(SQLHSTMT StatementHandle,
765                                         SQLCHAR *CursorName, SQLSMALLINT NameLength);
766 
767 #if (ODBCVER >= 0x0300)
768     SQLRETURN  SQL_API SQLSetDescField(SQLHDESC DescriptorHandle,
769                                        SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
770                                        SQLPOINTER Value, SQLINTEGER BufferLength);
771 
772     SQLRETURN  SQL_API SQLSetDescRec(SQLHDESC DescriptorHandle,
773                                      SQLSMALLINT RecNumber, SQLSMALLINT Type,
774                                      SQLSMALLINT SubType, SQLLEN Length,
775                                      SQLSMALLINT Precision, SQLSMALLINT Scale,
776                                      SQLPOINTER Data, SQLLEN *StringLength,
777                                      SQLLEN *Indicator);
778 
779     SQLRETURN  SQL_API SQLSetEnvAttr(SQLHENV EnvironmentHandle,
780                                      SQLINTEGER Attribute, SQLPOINTER Value,
781                                      SQLINTEGER StringLength);
782 #endif /* ODBCVER >= 0x0300 */
783 
784     SQLRETURN  SQL_API SQLSetParam(SQLHSTMT StatementHandle,
785                                    SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType,
786                                    SQLSMALLINT ParameterType, SQLULEN LengthPrecision,
787                                    SQLSMALLINT ParameterScale, SQLPOINTER ParameterValue,
788                                    SQLLEN *StrLen_or_Ind);
789 
790 #if (ODBCVER >= 0x0300)
791     SQLRETURN  SQL_API SQLSetStmtAttr(SQLHSTMT StatementHandle,
792                                       SQLINTEGER Attribute, SQLPOINTER Value,
793                                       SQLINTEGER StringLength);
794 #endif
795 
796     SQLRETURN  SQL_API SQLSetStmtOption(SQLHSTMT StatementHandle,
797                                         SQLUSMALLINT Option, SQLULEN Value);
798 
799     SQLRETURN  SQL_API SQLSpecialColumns(SQLHSTMT StatementHandle,
800                                          SQLUSMALLINT IdentifierType, SQLCHAR *CatalogName,
801                                          SQLSMALLINT NameLength1, SQLCHAR *SchemaName,
802                                          SQLSMALLINT NameLength2, SQLCHAR *TableName,
803                                          SQLSMALLINT NameLength3, SQLUSMALLINT Scope,
804                                          SQLUSMALLINT Nullable);
805 
806     SQLRETURN  SQL_API SQLStatistics(SQLHSTMT StatementHandle,
807                                      SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
808                                      SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
809                                      SQLCHAR *TableName, SQLSMALLINT NameLength3,
810                                      SQLUSMALLINT Unique, SQLUSMALLINT Reserved);
811 
812     SQLRETURN   SQL_API SQLTables(SQLHSTMT StatementHandle,
813                                   SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
814                                   SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
815                                   SQLCHAR *TableName, SQLSMALLINT NameLength3,
816                                   SQLCHAR *TableType, SQLSMALLINT NameLength4);
817 
818     SQLRETURN  SQL_API SQLTransact(SQLHENV EnvironmentHandle,
819                                    SQLHDBC ConnectionHandle, SQLUSMALLINT CompletionType);
820 
821 #ifdef __cplusplus
822 }
823 #endif
824 #endif
825