~ubuntu-branches/ubuntu/dapper/psqlodbc/dapper

« back to all changes in this revision

Viewing changes to isqlext.h

  • Committer: Bazaar Package Importer
  • Author(s): Peter Eisentraut
  • Date: 2005-06-29 22:14:12 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20050629221412-rtl1ztenrmllmz22
Tags: 1:08.00.0101-3
* Changed dependencies and rebuilt for new unixodbc version
* Updated standards version

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * This file has been modified from the original isqlext.h to add the
3
 
 * missing function prototypes and appropriate #defines. It is designed
4
 
 * to be a drop in replacement for isqlext.h from iodbc.
5
 
 */
6
 
 
7
 
#ifndef _INTRINSIC_SQLEXT_H
8
 
#define _INTRINSIC_SQLEXT_H
9
 
 
10
 
#include "isql.h"
11
 
 
12
 
#define SQL_STILL_EXECUTING                             2
13
 
#define SQL_NEED_DATA                                   99
14
 
 
15
 
/* extend SQL datatypes */
16
 
#define SQL_DATE                                                9
17
 
#define SQL_TIME                                                10
18
 
#define SQL_TIMESTAMP                                   11
19
 
#define SQL_LONGVARCHAR                                 (-1)
20
 
#define SQL_BINARY                                              (-2)
21
 
#define SQL_VARBINARY                                   (-3)
22
 
#define SQL_LONGVARBINARY                               (-4)
23
 
#define SQL_BIGINT                                              (-5)
24
 
#define SQL_TINYINT                                             (-6)
25
 
#define SQL_BIT                                                 (-7)    /* conflict with SQL3 ??? */
26
 
#define SQL_TYPE_DRIVER_START                   (-80)
27
 
 
28
 
/* C to SQL datatype mapping */
29
 
#define SQL_C_DATE                                              SQL_DATE
30
 
#define SQL_C_TIME                                              SQL_TIME
31
 
#define SQL_C_TIMESTAMP                                 SQL_TIMESTAMP
32
 
#define SQL_C_BINARY                                    SQL_BINARY
33
 
#define SQL_C_BIT                                               SQL_BIT
34
 
#define SQL_C_TINYINT                                   SQL_TINYINT
35
 
 
36
 
#define SQL_SIGNED_OFFSET                               (-20)
37
 
#define SQL_UNSIGNED_OFFSET                             (-22)
38
 
 
39
 
#define SQL_C_SLONG                                             (SQL_C_LONG + SQL_SIGNED_OFFSET)
40
 
#define SQL_C_SSHORT                                    (SQL_C_SHORT + SQL_SIGNED_OFFSET)
41
 
#define SQL_C_STINYINT                                  (SQL_TINYINT + SQL_SIGNED_OFFSET)
42
 
#define SQL_C_ULONG                                             (SQL_C_LONG + SQL_UNSIGNED_OFFSET)
43
 
#define SQL_C_USHORT                                    (SQL_C_SHORT + SQL_UNSIGNED_OFFSET)
44
 
#define SQL_C_UTINYINT                                  (SQL_TINYINT + SQL_UNSIGNED_OFFSET)
45
 
#define SQL_C_BOOKMARK                                  SQL_C_ULONG
46
 
 
47
 
#if defined(SQL_TYPE_MIN)
48
 
#undef  SQL_TYPE_MIN
49
 
#define SQL_TYPE_MIN                            SQL_BIT
50
 
/* Note:If SQL_BIT uses SQL3 value (i.e. 14) then,
51
 
 *      SQL_TYPE_MIN need to be defined as SQL_TINYINT
52
 
 *      (i.e. -6).
53
 
 */
54
 
#endif
55
 
 
56
 
#define SQL_ALL_TYPES                                   0
57
 
 
58
 
/* SQLDriverConnect flag values */
59
 
#define SQL_DRIVER_NOPROMPT                             0
60
 
#define SQL_DRIVER_COMPLETE                             1
61
 
#define SQL_DRIVER_PROMPT                               2
62
 
#define SQL_DRIVER_COMPLETE_REQUIRED    3
63
 
 
64
 
/* SQLSetParam extensions */
65
 
#define SQL_DEFAULT_PARAM                               (-5)
66
 
#define SQL_IGNORE                                              (-6)
67
 
 
68
 
/* function number for SQLGetFunctions and _iodbcdm_getproc */
69
 
#define SQL_API_SQLALLOCCONNECT                 1
70
 
#define SQL_API_SQLALLOCENV                             2
71
 
#define SQL_API_SQLALLOCSTMT                    3
72
 
#define SQL_API_SQLBINDCOL                              4
73
 
#define SQL_API_SQLCANCEL                               5
74
 
#define SQL_API_SQLCOLATTRIBUTES                6
75
 
#define SQL_API_SQLCONNECT                              7
76
 
#define SQL_API_SQLDESCRIBECOL                  8
77
 
#define SQL_API_SQLDISCONNECT                   9
78
 
#define SQL_API_SQLERROR                                10
79
 
#define SQL_API_SQLEXECDIRECT                   11
80
 
#define SQL_API_SQLEXECUTE                              12
81
 
#define SQL_API_SQLFETCH                                13
82
 
#define SQL_API_SQLFREECONNECT                  14
83
 
#define SQL_API_SQLFREEENV                              15
84
 
#define SQL_API_SQLFREESTMT                             16
85
 
#define SQL_API_SQLGETCURSORNAME                17
86
 
#define SQL_API_SQLNUMRESULTCOLS                18
87
 
#define SQL_API_SQLPREPARE                              19
88
 
#define SQL_API_SQLROWCOUNT                             20
89
 
#define SQL_API_SQLSETCURSORNAME                21
90
 
#define SQL_API_SQLSETPARAM                             22
91
 
#define SQL_API_SQLTRANSACT                             23
92
 
 
93
 
#define SQL_NUM_FUNCTIONS                               23
94
 
 
95
 
#define SQL_EXT_API_START                               40
96
 
 
97
 
#define SQL_API_SQLCOLUMNS                              40
98
 
 
99
 
#define SQL_API_SQLDRIVERCONNECT                41
100
 
#define SQL_API_SQLGETCONNECTOPTION             42
101
 
#define SQL_API_SQLGETDATA                              43
102
 
#define SQL_API_SQLGETFUNCTIONS                 44
103
 
#define SQL_API_SQLGETINFO                              45
104
 
#define SQL_API_SQLGETSTMTOPTION                46
105
 
#define SQL_API_SQLGETTYPEINFO                  47
106
 
#define SQL_API_SQLPARAMDATA                    48
107
 
#define SQL_API_SQLPUTDATA                              49
108
 
#define SQL_API_SQLSETCONNECTOPTION             50
109
 
#define SQL_API_SQLSETSTMTOPTION                51
110
 
#define SQL_API_SQLSPECIALCOLUMNS               52
111
 
#define SQL_API_SQLSTATISTICS                   53
112
 
#define SQL_API_SQLTABLES                               54
113
 
 
114
 
#define SQL_API_SQLBROWSECONNECT                55
115
 
#define SQL_API_SQLCOLUMNPRIVILEGES             56
116
 
#define SQL_API_SQLDATASOURCES                  57
117
 
#define SQL_API_SQLDESCRIBEPARAM                58
118
 
#define SQL_API_SQLEXTENDEDFETCH                59
119
 
#define SQL_API_SQLFOREIGNKEYS                  60
120
 
#define SQL_API_SQLMORERESULTS                  61
121
 
#define SQL_API_SQLNATIVESQL                    62
122
 
#define SQL_API_SQLNUMPARAMS                    63
123
 
#define SQL_API_SQLPARAMOPTIONS                 64
124
 
#define SQL_API_SQLPRIMARYKEYS                  65
125
 
#define SQL_API_SQLPROCEDURECOLUMNS             66
126
 
#define SQL_API_SQLPROCEDURES                   67
127
 
#define SQL_API_SQLSETPOS                               68
128
 
#define SQL_API_SQLSETSCROLLOPTIONS             69
129
 
#define SQL_API_SQLTABLEPRIVILEGES              70
130
 
 
131
 
#define SQL_API_SQLDRIVERS                              71
132
 
#define SQL_API_SQLBINDPARAMETER                72
133
 
#define SQL_EXT_API_LAST                                SQL_API_SQLBINDPARAMETER
134
 
#define SQL_NUM_EXTENSIONS                              (SQL_EXT_API_LAST - SQL_EXT_API_START + 1)
135
 
 
136
 
#define SQL_API_ALL_FUNCTIONS                   0
137
 
 
138
 
/* SQLGetInfo infor number */
139
 
#define SQL_INFO_FIRST                                  0
140
 
#define SQL_DRIVER_HDBC                                 3
141
 
#define SQL_DRIVER_HENV                                 4
142
 
#define SQL_DRIVER_HSTMT                                5
143
 
#define SQL_DRIVER_NAME                                 6
144
 
#define SQL_ODBC_VER                                    10
145
 
#define SQL_CURSOR_COMMIT_BEHAVIOR              23
146
 
#define SQL_CURSOR_ROLLBACK_BEHAVIOR    24
147
 
#define SQL_DEFAULT_TXN_ISOLATION               26
148
 
 
149
 
#define SQL_TXN_ISOLATION_OPTION                72
150
 
#define SQL_NON_NULLABLE_COLUMNS                75
151
 
 
152
 
#define SQL_DRIVER_HLIB                                 76
153
 
#define SQL_DRIVER_ODBC_VER                             77
154
 
 
155
 
#define SQL_QUALIFIER_LOCATION                  114
156
 
 
157
 
#define SQL_INFO_LAST                                   SQL_QUALIFIER_LOCATION
158
 
 
159
 
#define SQL_INFO_DRIVER_START                   1000
160
 
 
161
 
 
162
 
/* SQL_TXN_ISOLATION_OPTION masks */
163
 
#define SQL_TXN_READ_UNCOMMITTED                0x00000001L
164
 
#define SQL_TXN_READ_COMMITTED                  0x00000002L
165
 
#define SQL_TXN_REPEATABLE_READ                 0x00000004L
166
 
#define SQL_TXN_SERIALIZABLE                    0x00000008L
167
 
#define SQL_TXN_VERSIONING                              0x00000010L
168
 
 
169
 
/* SQL_CURSOR_COMMIT_BEHAVIOR and SQL_CURSOR_ROLLBACK_BEHAVIOR values */
170
 
 
171
 
#define SQL_CB_DELETE                                   0x0000
172
 
#define SQL_CB_CLOSE                                    0x0001
173
 
#define SQL_CB_PRESERVE                                 0x0002
174
 
 
175
 
/* options for SQLGetStmtOption/SQLSetStmtOption */
176
 
#define SQL_QUERY_TIMEOUT                               0
177
 
#define SQL_MAX_ROWS                                    1
178
 
#define SQL_NOSCAN                                              2
179
 
#define SQL_MAX_LENGTH                                  3
180
 
#define SQL_ASYNC_ENABLE                                4
181
 
#define SQL_BIND_TYPE                                   5
182
 
#define SQL_CURSOR_TYPE                                 6
183
 
#define SQL_CONCURRENCY                                 7
184
 
#define SQL_KEYSET_SIZE                                 8
185
 
#define SQL_ROWSET_SIZE                                 9
186
 
#define SQL_SIMULATE_CURSOR                             10
187
 
#define SQL_RETRIEVE_DATA                               11
188
 
#define SQL_USE_BOOKMARKS                               12
189
 
#define SQL_GET_BOOKMARK                                13              /* GetStmtOption Only */
190
 
#define SQL_ROW_NUMBER                                  14              /* GetStmtOption Only */
191
 
#define SQL_STMT_OPT_MAX                                SQL_ROW_NUMBER
192
 
 
193
 
#define SQL_STMT_OPT_MIN                                SQL_QUERY_TIMEOUT
194
 
 
195
 
/*
196
 
 * ODBC 3.0 renames the above to SQL_ATTR_ values. At this time I don't
197
 
 * know if they have also been renumbered or not, I will assume not.
198
 
 */
199
 
#define SQL_ATTR_QUERY_TIMEOUT                  0
200
 
#define SQL_ATTR_MAX_ROWS                               1
201
 
#define SQL_ATTR_NOSCAN                                 2
202
 
#define SQL_ATTR_MAX_LENGTH                             3
203
 
#define SQL_ATTR_ASYNC_ENABLE                   4
204
 
#define SQL_ATTR_BIND_TYPE                              5
205
 
#define SQL_ATTR_CURSOR_TYPE                    6
206
 
#define SQL_ATTR_CONCURRENCY                    7
207
 
#define SQL_ATTR_KEYSET_SIZE                    8
208
 
#define SQL_ATTR_ROWSET_SIZE                    9
209
 
#define SQL_ATTR_SIMULATE_CURSOR                10
210
 
#define SQL_ATTR_RETRIEVE_DATA                  11
211
 
#define SQL_ATTR_USE_BOOKMARKS                  12
212
 
#define SQL_ATTR_GET_BOOKMARK                   13              /* GetStmtOption Only */
213
 
#define SQL_ATTR_ROW_NUMBER                             14              /* GetStmtOption Only */
214
 
 
215
 
/* New in ODBC 3.0      */
216
 
#define SQL_ATTR_APP_PARAM_DESC                 15
217
 
#define SQL_ATTR_APP_ROW_DESC                   16
218
 
#define SQL_ATTR_CURSOR_SCROLLABLE              17
219
 
#define SQL_ATTR_CURSOR_SENSITITY               18
220
 
#define SQL_ATTR_ENABLE_AUTO_IPD                19
221
 
#define SQL_ATTR_FETCH_BOOKMARK_PTR             20
222
 
#define SQL_ATTR_IMP_PARAM_DESC                 21
223
 
#define SQL_ATTR_IMP_ROW_DESC                   22
224
 
#define SQL_ATTR_METADATA_ID                    23
225
 
#define SQL_ATTR_PARAM_BIND_OFFSET_PTR  24
226
 
#define SQL_ATTR_PARAM_BIND_TYPE                25
227
 
#define SQL_ATTR_PARAM_OPERATION_PTR    26
228
 
#define SQL_ATTR_PARAM_STATUS_PTR               27
229
 
#define SQL_ATTR_PARAMS_PROCESSED_PTR   28
230
 
#define SQL_ATTR_PARAMSET_SIZE                  29
231
 
#define SQL_ATTR_ROW_ARRAY_SIZE                 30
232
 
#define SQL_ATTR_ROW_BIND_OFFSET_PTR    31
233
 
#define SQL_ATTR_ROW_OPERATION_PTR              32
234
 
#define SQL_ATTR_ROW_STATUS_PTR                 33
235
 
#define SQL_ATTR_ROWS_FETCHED_PTR               34
236
 
 
237
 
#define SQL_STMT_ATTR_MIN                               SQL_ATTR_QUERY_TIMEOUT
238
 
#define SQL_STMT_ATTR_MAX                               SQL_ATTR_ROWS_FETCHED_PTR
239
 
 
240
 
/* SQL_QUERY_TIMEOUT options */
241
 
#define SQL_QUERY_TIMEOUT_DEFAULT               0UL
242
 
 
243
 
/* SQL_MAX_ROWS options */
244
 
#define SQL_MAX_ROWS_DEFAULT                    0UL
245
 
 
246
 
/* SQL_MAX_LENGTH options */
247
 
#define SQL_MAX_LENGTH_DEFAULT                  0UL
248
 
 
249
 
/* SQL_CONCURRENCY options */
250
 
#define SQL_CONCUR_READ_ONLY                    1
251
 
#define SQL_CONCUR_LOCK                                 2
252
 
#define SQL_CONCUR_ROWVER                               3
253
 
#define SQL_CONCUR_VALUES                               4
254
 
 
255
 
/* options for SQLSetConnectOption/SQLGetConnectOption */
256
 
#define SQL_ACCESS_MODE                                 101
257
 
#define SQL_AUTOCOMMIT                                  102
258
 
#define SQL_LOGIN_TIMEOUT                               103
259
 
#define SQL_OPT_TRACE                                   104
260
 
#define SQL_OPT_TRACEFILE                               105
261
 
#define SQL_TRANSLATE_DLL                               106
262
 
#define SQL_TRANSLATE_OPTION                    107
263
 
#define SQL_TXN_ISOLATION                               108
264
 
#define SQL_CURRENT_QUALIFIER                   109
265
 
#define SQL_ODBC_CURSORS                                110
266
 
#define SQL_QUIET_MODE                                  111
267
 
#define SQL_PACKET_SIZE                                 112
268
 
#define SQL_CONN_OPT_MAX                                SQL_PACKET_SIZE
269
 
#define SQL_CONNECT_OPT_DRVR_START              1000
270
 
 
271
 
#define SQL_CONN_OPT_MIN                                SQL_ACCESS_MODE
272
 
 
273
 
/* SQL_ACCESS_MODE options */
274
 
#define SQL_MODE_READ_WRITE                             0UL
275
 
#define SQL_MODE_READ_ONLY                              1UL
276
 
#define SQL_MODE_DEFAULT                                SQL_MODE_READ_WRITE
277
 
 
278
 
/* SQL_AUTOCOMMIT options */
279
 
#define SQL_AUTOCOMMIT_OFF                              0UL
280
 
#define SQL_AUTOCOMMIT_ON                               1UL
281
 
#define SQL_AUTOCOMMIT_DEFAULT                  SQL_AUTOCOMMIT_ON
282
 
 
283
 
/* SQL_LOGIN_TIMEOUT options */
284
 
#define SQL_LOGIN_TIMEOUT_DEFAULT               15UL
285
 
 
286
 
/* SQL_OPT_TRACE options */
287
 
#define SQL_OPT_TRACE_OFF                               0UL
288
 
#define SQL_OPT_TRACE_ON                                1UL
289
 
#define SQL_OPT_TRACE_DEFAULT                   SQL_OPT_TRACE_OFF
290
 
#define SQL_OPT_TRACE_FILE_DEFAULT              "odbc.log"
291
 
 
292
 
/* SQL_ODBC_CURSORS options */
293
 
#define SQL_CUR_USE_IF_NEEDED                   0UL
294
 
#define SQL_CUR_USE_ODBC                                1UL
295
 
#define SQL_CUR_USE_DRIVER                              2UL
296
 
#define SQL_CUR_DEFAULT                                 SQL_CUR_USE_DRIVER
297
 
 
298
 
/* Column types and scopes in SQLSpecialColumns. */
299
 
#define SQL_BEST_ROWID                                  1
300
 
#define SQL_ROWVER                                              2
301
 
 
302
 
#define SQL_SCOPE_CURROW                                0
303
 
#define SQL_SCOPE_TRANSACTION                   1
304
 
#define SQL_SCOPE_SESSION                               2
305
 
 
306
 
 
307
 
/* SQLExtendedFetch flag values */
308
 
#define SQL_FETCH_NEXT                                  1
309
 
#define SQL_FETCH_FIRST                                 2
310
 
#define SQL_FETCH_LAST                                  3
311
 
#define SQL_FETCH_PRIOR                                 4
312
 
#define SQL_FETCH_ABSOLUTE                              5
313
 
#define SQL_FETCH_RELATIVE                              6
314
 
#define SQL_FETCH_BOOKMARK                              8
315
 
 
316
 
/* Defines for SQLBindParameter/SQLProcedureColumns */
317
 
#define SQL_PARAM_TYPE_UNKNOWN                  0
318
 
#define SQL_PARAM_INPUT                                 1
319
 
#define SQL_PARAM_INPUT_OUTPUT                  2
320
 
#define SQL_RESULT_COL                                  3
321
 
#define SQL_PARAM_OUTPUT                                4
322
 
#define SQL_RETURN_VALUE                                5
323
 
 
324
 
/* Defines used by Driver Manager for mapping SQLSetParam to SQLBindParameter */
325
 
#define SQL_PARAM_TYPE_DEFAULT                  SQL_PARAM_INPUT_OUTPUT
326
 
#define SQL_SETPARAM_VALUE_MAX                  (-1L)
327
 
 
328
 
/* SQLStatistics flag values */
329
 
#define SQL_INDEX_UNIQUE                                0
330
 
#define SQL_INDEX_ALL                                   1
331
 
 
332
 
#define SQL_QUICK                                               0
333
 
#define SQL_ENSURE                                              1
334
 
 
335
 
/* SQLSetScrollOption flag values */
336
 
#define SQL_SCROLL_FORWARD_ONLY                 0L
337
 
#define SQL_SCROLL_KEYSET_DRIVEN                (-1L)
338
 
#define SQL_SCROLL_DYNAMIC                              (-2L)
339
 
#define SQL_SCROLL_STATIC                               (-3L)
340
 
 
341
 
/* Everything below has been added to the original isqlext.h that comes
342
 
 * with iodbc.
343
 
*/
344
 
 
345
 
#define SCHAR   signed char
346
 
#define FLOAT   float
347
 
#define DOUBLE  double
348
 
 
349
 
/* SQL DATA TYPES */
350
 
typedef UCHAR SQLCHAR;
351
 
typedef SWORD SQLSMALLINT;
352
 
typedef UWORD SQLUSMALLINT;
353
 
typedef SDWORD SQLINTEGER;
354
 
typedef UDWORD SQLUINTEGER;
355
 
typedef FLOAT SQLREAL;
356
 
typedef DOUBLE SQLDOUBLE;
357
 
typedef DOUBLE SQLFLOAT;
358
 
typedef SCHAR SQLSCHAR;
359
 
typedef UDWORD BOOKMARK;
360
 
 
361
 
#ifdef GCC                                              /* Because I know GCC supports 64 bit ints */
362
 
 
363
 
typedef long long int ODBCINT64;
364
 
typedef unsigned ODBCINT64 SQLUBIGINT;
365
 
typedef ODBCINT64 SQLBIGINT;
366
 
 
367
 
#else                                                   /* Used even on platforms with 64 bit ints
368
 
                                                                 * but not GCC */
369
 
 
370
 
typedef struct
371
 
{
372
 
        SQLUINTEGER dwLowWord;
373
 
        SQLUINTEGER dwHighWord;
374
 
} SQLUBIGINT;
375
 
 
376
 
typedef struct
377
 
{
378
 
        SQLUINTEGER dwLowWord;
379
 
        SQLINTEGER      dwHighWord;
380
 
} SQLBIGINT;
381
 
#endif   /* GCC */
382
 
 
383
 
typedef struct tagDATE_STRUCT
384
 
{
385
 
        SQLSMALLINT year;
386
 
        SQLUSMALLINT month;
387
 
        SQLUSMALLINT day;
388
 
} DATE_STRUCT,
389
 
 
390
 
SQL_DATE_STRUCT;
391
 
 
392
 
typedef struct tagTIME_STRUCT
393
 
{
394
 
        SQLUSMALLINT hour;
395
 
        SQLUSMALLINT minute;
396
 
        SQLUSMALLINT second;
397
 
} TIME_STRUCT,
398
 
 
399
 
SQL_TIME_STRUCT;
400
 
 
401
 
typedef struct tagTIMESTAMP_STRUCT
402
 
{
403
 
        SQLSMALLINT year;
404
 
        SQLUSMALLINT month;
405
 
        SQLUSMALLINT day;
406
 
        SQLUSMALLINT hour;
407
 
        SQLUSMALLINT minute;
408
 
        SQLUSMALLINT second;
409
 
        SQLUINTEGER fraction;
410
 
} TIMESTAMP_STRUCT,
411
 
 
412
 
SQL_TIMESTAMP_STRUCT;
413
 
 
414
 
/* postodbc doesn't use these but what the heck */
415
 
/* Don't know what SQL_MAX_NUMERIC_LEN should be so I can't include this. It's
416
 
 * ODBC 3.0 anyway.
417
 
 
418
 
typedef struct tagSQL_NUMERIC_STRUCT {
419
 
        SQLCHAR         precision;
420
 
        SQLSCHAR        scale;
421
 
        SQLCHAR         sign;
422
 
        SQLCHAR         val[SQL_MAX_NUMERIC_LEN];
423
 
} SQL_NUMERIC_STRUCT;
424
 
 
425
 
*/
426
 
 
427
 
typedef struct tagSQLGUID
428
 
{
429
 
        DWORD           Data1;
430
 
        WORD            Data2;
431
 
        WORD            Data3;
432
 
        BYTE            Data4[8];
433
 
} SQLGUID;
434
 
 
435
 
typedef enum
436
 
{
437
 
        SQL_IS_YEAR = 1,
438
 
        SQL_IS_MONTH = 2,
439
 
        SQL_IS_DAY = 3,
440
 
        SQL_IS_HOUR = 4,
441
 
        SQL_IS_MINUTE = 5,
442
 
        SQL_IS_SECOND = 6,
443
 
        SQL_IS_YEAR_TO_MONTH = 7,
444
 
        SQL_IS_DAY_TO_HOUR = 8,
445
 
        SQL_IS_DAY_TO_MINUTE = 9,
446
 
        SQL_IS_DAY_TO_SECOND = 10,
447
 
        SQL_IS_HOUR_TO_MINUTE = 11,
448
 
        SQL_IS_HOUR_TO_SECOND = 12,
449
 
        SQL_IS_MINUTE_TO_SECOND = 13
450
 
} SQLINTERVAL;
451
 
 
452
 
typedef struct tagSQL_YEAR_MONTH
453
 
{
454
 
        SQLUINTEGER year;
455
 
        SQLUINTEGER month;
456
 
} SQL_YEAR_MONTH_STRUCT;
457
 
 
458
 
typedef struct tagSQL_DAY_SECOND
459
 
{
460
 
        SQLUINTEGER day;
461
 
        SQLUINTEGER hour;
462
 
        SQLUINTEGER minute;
463
 
        SQLUINTEGER second;
464
 
        SQLUINTEGER fraction;
465
 
} SQL_DAY_SECOND_STRUCT;
466
 
 
467
 
typedef struct tagSQL_INTERVAL_STRUCT
468
 
{
469
 
        SQLINTERVAL interval_type;
470
 
        SQLSMALLINT interval_sign;
471
 
        union
472
 
        {
473
 
                SQL_YEAR_MONTH_STRUCT year_month;
474
 
                SQL_DAY_SECOND_STRUCT day_second;
475
 
        }                       intval;
476
 
} SQL_INTERVAL_STRUCT;
477
 
 
478
 
#define SQL_MAX_OPTION_STRING_LENGTH    256
479
 
#define SQL_NUM_EXTENSIONS      (SQL_EXT_API_LAST - SQL_EXT_API_START + 1)
480
 
 
481
 
/* defines for SQL datatypes */
482
 
/*
483
 
#define SQL_TYPE_DATE
484
 
#define SQL_TYPE_TIME
485
 
#define SQL_TYPE_TIMESTAMP
486
 
#define SQL_CODE_DATE
487
 
#define SQL_CODE_TIME
488
 
#define SQL_CODE_TIMESTAMP
489
 
#define SQL_CODE_MONTH
490
 
#define SQL_CODE_YEAR
491
 
#define SQL_CODE_YEAR_TO_MONTH
492
 
#define SQL_CODE_DAY
493
 
#define SQL_CODE_HOUR
494
 
#define SQL_CODE_MINUTE
495
 
#define SQL_CODE_SECOND
496
 
#define SQL_CODE_DAY_TO_HOUR
497
 
#define SQL_CODE_DAY_TO_MINUTE
498
 
#define SQL_CODE_DAY_TO_SECOND
499
 
#define SQL_CODE_HOUR_TO_MINUTE
500
 
#define SQL_CODE_HOUR_TO_SECOND
501
 
#define SQL_CODE_MINUTE_TO_SECOND
502
 
*/
503
 
#define SQL_INTERVAL_YEAR                               (-80)
504
 
#define SQL_INTERVAL_MONTH                              (-81)
505
 
#define SQL_INTERVAL_YEAR_TO_MONTH              (-82)
506
 
#define SQL_INTERVAL_DAY                                (-83)
507
 
#define SQL_INTERVAL_HOUR                               (-84)
508
 
#define SQL_INTERVAL_MINUTE                             (-85)
509
 
#define SQL_INTERVAL_SECOND                             (-86)
510
 
#define SQL_INTERVAL_DAY_TO_HOUR                (-87)
511
 
#define SQL_INTERVAL_DAY_TO_MINUTE              (-88)
512
 
#define SQL_INTERVAL_DAY_TO_SECOND              (-89)
513
 
#define SQL_INTERVAL_HOUR_TO_MINUTE             (-90)
514
 
#define SQL_INTERVAL_HOUR_TO_SECOND             (-91)
515
 
#define SQL_INTERVAL_MINUTE_TO_SECOND   (-92)
516
 
 
517
 
#define SQL_UNICODE                                             (-95)
518
 
#define SQL_UNICODE_VARCHAR                             (-96)
519
 
#define SQL_UNICODE_LONGVARCHAR                 (-97)
520
 
#define SQL_UNICODE_CHAR                                SQL_UNICODE
521
 
 
522
 
/* C to SQL data types */
523
 
/*
524
 
#define SQL_C_TYPE_DATE                                 SQL_TYPE_DATE
525
 
#define SQL_C_TYPE_TIME                                 SQL_TYPE_TIME
526
 
#define SQL_C_TYPE_TIMESTAMP                    SQL_TYPE_TIMESTAMP
527
 
#define SQL_C_GUID                                              SQLGUID
528
 
*/
529
 
#define SQL_C_INTERVAL_MONTH                    SQL_INTERVAL_MONTH
530
 
#define SQL_C_INTERVAL_YEAR                             SQL_INTERVAL_YEAR
531
 
#define SQL_C_INTERVAL_YEAR_TO_MONTH    SQL_INTERVAL_YEAR_TO_MONTH
532
 
#define SQL_C_INTERVAL_DAY                              SQL_INTERVAL_DAY
533
 
#define SQL_C_INTERVAL_HOUR                             SQL_INTERVAL_HOUR
534
 
#define SQL_C_INTERVAL_MINUTE                   SQL_INTERVAL_MINUTE
535
 
#define SQL_C_INTERVAL_SECOND                   SQL_INTERVAL_SECOND
536
 
#define SQL_C_INTERVAL_DAY_TO_HOUR              SQL_INTERVAL_DAY_TO_HOUR
537
 
#define SQL_C_INTERVAL_DAY_TO_MINUTE    SQL_INTERVAL_DAY_TO_MINUTE
538
 
#define SQL_C_INTERVAL_DAY_TO_SECOND    SQL_INTERVAL_DAY_TO_SECOND
539
 
#define SQL_C_INTERVAL_HOUR_TO_MINUTE   SQL_INTERVAL_HOUR_TO_MINUTE
540
 
#define SQL_C_INTERVAL_HOUR_TO_SECOND   SQL_INTERVAL_HOUR_TO_SECOND
541
 
#define SQL_C_INTERVAL_MINUTE_TO_SECOND SQL_INTERVAL_MINUTE_TO_SECOND
542
 
#define SQL_C_NUMERIC                                   SQL_NUMERIC
543
 
#define SQL_C_VARBOOKMARK                               SQL_C_BINARY
544
 
#define SQL_C_SBIGINT                                   (SQL_BIGINT + SQL_SIGNED_OFFSET)
545
 
#define SQL_C_UBIGINT                                   (SQL_BIGINT + SQL_UNSIGNED_OFFSET)
546
 
 
547
 
#define SQL_TRUE        1UL
548
 
#define SQL_FALSE       0UL
549
 
 
550
 
/* SQLGetData */
551
 
#define SQL_NO_TOTAL                                    (-4)
552
 
 
553
 
/* SQLBindParameter */
554
 
#define SQL_LEN_DATA_AT_EXEC_OFFSET             (-100)
555
 
#define SQL_LEN_DATA_AT_EXEC(length)    (-length+SQL_LEN_DATA_AT_EXEC_OFFSET)
556
 
 
557
 
#define SQL_LEN_BINARY_ATTR_OFFSET              (-100)
558
 
#define SQL_LEN_BINARY_ATTR(length)             (-(length)+SQL_LEN_BINARY_ATTR_OFFSET)
559
 
 
560
 
/* SQLExtendedFetch - row status */
561
 
#define SQL_ROW_SUCCESS                                 0
562
 
#define SQL_ROW_DELETED                                 1
563
 
#define SQL_ROW_UPDATED                                 2
564
 
#define SQL_ROW_NOROW                                   3
565
 
#define SQL_ROW_ADDED                                   4
566
 
#define SQL_ROW_ERROR                                   5
567
 
 
568
 
/* SQLForeignKeys - rule flags */
569
 
#define SQL_CASCADE                                             0
570
 
#define SQL_RESTRICT                                    1
571
 
#define SQL_SET_NULL                                    2
572
 
#define SQL_NO_ACTION                                   3               /* ODBC 3.0 */
573
 
#define SQL_SET_DEFAULT                                 4
574
 
 
575
 
/* SQLForeignKeys - Deferrability (ODBC 3.0) */
576
 
#define SQL_INITIALLY_DEFERRED                  5
577
 
#define SQL_INITIALLY_IMMEDIATE                 6
578
 
#define SQL_NOT_DEFFERABLE                              2
579
 
 
580
 
/* Constants not in isqlext.h but needed by the driver. I have no idea
581
 
* if these correspond correctly with those from Microsoft or not. I don't
582
 
* know that it matters as long as the symbolic names are used. I simply
583
 
* assigned the numbers in the order they appear in the SQLGetInfo function
584
 
* of postodbc.
585
 
*/
586
 
 
587
 
/*
588
 
 *      SQLGetInfo
589
 
 */
590
 
#define SQL_ACTIVE_CONNECTIONS                  0
591
 
#define SQL_ACTIVE_STATEMENTS                   1
592
 
#define SQL_DATA_SOURCE_NAME                    2
593
 
#define SQL_DRIVER_VER                                  7
594
 
#define SQL_FETCH_DIRECTION                             8
595
 
#define SQL_ODBC_API_CONFORMANCE                9
596
 
#define SQL_ROW_UPDATES                                 11
597
 
#define SQL_ODBC_SAG_CLI_CONFORMANCE    12
598
 
#define SQL_SERVER_NAME                                 13
599
 
#define SQL_SEARCH_PATTERN_ESCAPE               14
600
 
#define SQL_ODBC_SQL_CONFORMANCE                15
601
 
#define SQL_DBMS_NAME                                   17
602
 
#define SQL_DBMS_VER                                    18
603
 
#define SQL_ACCESSIBLE_TABLES                   19
604
 
#define SQL_ACCESSIBLE_PROCEDURES               20
605
 
#define SQL_PROCEDURES                                  21
606
 
#define SQL_CONCAT_NULL_BEHAVIOR                22
607
 
#define SQL_DATA_SOURCE_READ_ONLY               25
608
 
#define SQL_EXPRESSIONS_IN_ORDERBY              27
609
 
#define SQL_IDENTIFIER_CASE                             28
610
 
#define SQL_IDENTIFIER_QUOTE_CHAR               29
611
 
#define SQL_MAX_COLUMN_NAME_LEN                 30
612
 
#define SQL_MAX_CURSOR_NAME_LEN                 31
613
 
#define SQL_MAX_OWNER_NAME_LEN                  32
614
 
#define SQL_MAX_PROCEDURE_NAME_LEN              33
615
 
#define SQL_MAX_QUALIFIER_NAME_LEN              34
616
 
#define SQL_MAX_TABLE_NAME_LEN                  35
617
 
#define SQL_MULT_RESULT_SETS                    36
618
 
#define SQL_MULTIPLE_ACTIVE_TXN                 37
619
 
#define SQL_OUTER_JOINS                                 38
620
 
#define SQL_OWNER_TERM                                  39
621
 
#define SQL_PROCEDURE_TERM                              40
622
 
#define SQL_QUALIFIER_NAME_SEPARATOR    41
623
 
#define SQL_QUALIFIER_TERM                              42
624
 
#define SQL_SCROLL_CONCURRENCY                  43
625
 
#define SQL_SCROLL_OPTIONS                              44
626
 
#define SQL_TABLE_TERM                                  45
627
 
#define SQL_TXN_CAPABLE                                 46
628
 
#define SQL_USER_NAME                                   47
629
 
#define SQL_CONVERT_FUNCTIONS                   48
630
 
#define SQL_NUMERIC_FUNCTIONS                   49
631
 
#define SQL_STRING_FUNCTIONS                    50
632
 
#define SQL_SYSTEM_FUNCTIONS                    51
633
 
#define SQL_TIMEDATE_FUNCTIONS                  52
634
 
#define SQL_CONVERT_BIGINT                              53
635
 
#define SQL_CONVERT_BINARY                              54
636
 
#define SQL_CONVERT_BIT                                 55
637
 
#define SQL_CONVERT_CHAR                                56
638
 
#define SQL_CONVERT_DATE                                57
639
 
#define SQL_CONVERT_DECIMAL                             58
640
 
#define SQL_CONVERT_DOUBLE                              59
641
 
#define SQL_CONVERT_FLOAT                               60
642
 
#define SQL_CONVERT_INTEGER                             61
643
 
#define SQL_CONVERT_LONGVARCHAR                 62
644
 
#define SQL_CONVERT_NUMERIC                             63
645
 
#define SQL_CONVERT_REAL                                64
646
 
#define SQL_CONVERT_SMALLINT                    65
647
 
#define SQL_CONVERT_TIME                                66
648
 
#define SQL_CONVERT_TIMESTAMP                   67
649
 
#define SQL_CONVERT_TINYINT                             68
650
 
#define SQL_CONVERT_VARBINARY                   69
651
 
#define SQL_CONVERT_VARCHAR                             70
652
 
#define SQL_CONVERT_LONGVARBINARY               71
653
 
#define SQL_ODBC_SQL_OPT_IEF                    73
654
 
#define SQL_CORRELATION_NAME                    74
655
 
#define SQL_LOCK_TYPES                                  78
656
 
#define SQL_POS_OPERATIONS                              79
657
 
#define SQL_POSITIONED_STATEMENTS               80
658
 
#define SQL_GETDATA_EXTENSIONS                  81
659
 
#define SQL_BOOKMARK_PERSISTENCE                82
660
 
#define SQL_STATIC_SENSITIVITY                  83
661
 
#define SQL_FILE_USAGE                                  84
662
 
#define SQL_NULL_COLLATION                              85
663
 
#define SQL_ALTER_TABLE                                 86
664
 
#define SQL_COLUMN_ALIAS                                87
665
 
#define SQL_GROUP_BY                                    88
666
 
#define SQL_KEYWORDS                                    89
667
 
#define SQL_ORDER_BY_COLUMNS_IN_SELECT  90
668
 
#define SQL_OWNER_USAGE                                 91
669
 
#define SQL_QUALIFIER_USAGE                             92
670
 
#define SQL_QUOTED_IDENTIFIER_CASE              93
671
 
#define SQL_SPECIAL_CHARACTERS                  94
672
 
#define SQL_SUBQUERIES                                  95
673
 
#define SQL_UNION                                               96
674
 
#define SQL_MAX_COLUMNS_IN_GROUP_BY             97
675
 
#define SQL_MAX_COLUMNS_IN_INDEX                98
676
 
#define SQL_MAX_COLUMNS_IN_ORDER_BY             99
677
 
#define SQL_MAX_COLUMNS_IN_SELECT               100
678
 
#define SQL_MAX_COLUMNS_IN_TABLE                101
679
 
#define SQL_MAX_INDEX_SIZE                              102
680
 
#define SQL_MAX_ROW_SIZE_INCLUDES_LONG  103
681
 
#define SQL_MAX_ROW_SIZE                                104
682
 
#define SQL_MAX_STATEMENT_LEN                   105
683
 
#define SQL_MAX_TABLES_IN_SELECT                106
684
 
#define SQL_MAX_USER_NAME_LEN                   107
685
 
#define SQL_MAX_CHAR_LITERAL_LEN                108
686
 
#define SQL_TIMEDATE_ADD_INTERVALS              109
687
 
#define SQL_TIMEDATE_DIFF_INTERVALS             110
688
 
#define SQL_NEED_LONG_DATA_LEN                  111
689
 
#define SQL_MAX_BINARY_LITERAL_LEN              112
690
 
#define SQL_LIKE_ESCAPE_CLAUSE                  113
691
 
 
692
 
#define SQL_OJ_CAPABILITIES                             65003
693
 
/* ODBC 3.0 alias */
694
 
#define SQL_MAX_SCHEMA_NAME_LEN                 SQL_MAX_OWNER_NAME_LEN
695
 
 
696
 
/* Bit Masks describing the behaviour of the GetInfo functions named above */
697
 
/*
698
 
 * alter table behaviour(4 byte val)
699
 
 */
700
 
#define SQL_AT_ADD_COLUMN                               0x00000001L
701
 
#define SQL_AT_DROP_COLUMN                              0x00000002L
702
 
 
703
 
/*
704
 
 * BookMark Persistence, a SQLUINTEGER bitmask(ie 4 bytes)
705
 
*/
706
 
#define SQL_BP_CLOSE                                    0x00000001L
707
 
#define SQL_BP_DELETE                                   0x00000002L
708
 
#define SQL_BP_DROP                                             0x00000004L
709
 
#define SQL_BP_TRANSACTION                              0x00000008L
710
 
#define SQL_BP_UPDATE                                   0x00000010L
711
 
#define SQL_BP_OTHER_HSTMT                              0x00000020L
712
 
#define SQL_BP_SCROLL                                   0x00000040L
713
 
 
714
 
/*
715
 
 * Conversion bitmasks for testing which conversions are supported by
716
 
 * the driver. An application compares the returned bitmask with these
717
 
 * to determine which conversions are supported. The driver ANDS these
718
 
 * for the returned bitmask to indicate the supported conversions.(type
719
 
 * is SQLUINTEGER, i.e. 4 bytes). Note that these masks are defined in
720
 
 * alphabetical order, I have no idea if this maps to MS's SDK.
721
 
 */
722
 
#define SQL_CVT_CHAR                                    0x00000001L
723
 
#define SQL_CVT_NUMERIC                                 0x00000002L
724
 
#define SQL_CVT_DECIMAL                                 0x00000004L
725
 
#define SQL_CVT_INTEGER                                 0x00000008L
726
 
#define SQL_CVT_SMALLINT                                0x00000010L
727
 
#define SQL_CVT_FLOAT                                   0x00000020L
728
 
#define SQL_CVT_REAL                                    0x00000040L
729
 
#define SQL_CVT_DOUBLE                                  0x00000080L
730
 
#define SQL_CVT_VARCHAR                                 0x00000100L
731
 
#define SQL_CVT_LONGVARCHAR                             0x00000200L
732
 
#define SQL_CVT_BINARY                                  0x00000400L
733
 
#define SQL_CVT_VARBINARY                               0x00000800L
734
 
#define SQL_CVT_BIT                                             0x00001000L
735
 
#define SQL_CVT_TINYINT                                 0x00002000L
736
 
#define SQL_CVT_BIGINT                                  0x00004000L
737
 
#define SQL_CVT_DATE                                    0x00008000L
738
 
#define SQL_CVT_TIME                                    0x00010000L
739
 
#define SQL_CVT_TIMESTAMP                               0x00020000L
740
 
#define SQL_CVT_LONGVARBINARY                   0x00040000L
741
 
 
742
 
 
743
 
/*      extras added in ODBC 3.0 */
744
 
#define SQL_CVT_INTERVAL_YEAR_MONTH             0x00080000L
745
 
#define SQL_CVT_INTERVAL_DAY_TIME               0x00100000L
746
 
 
747
 
/*
748
 
 *      concat null behaviour(2 byte val)
749
 
 */
750
 
#define SQL_CB_NULL                                             0x0000
751
 
#define SQL_CB_NON_NULL                                 0x0001
752
 
 
753
 
/*
754
 
 *      correlation name
755
 
 */
756
 
#define SQL_CN_NONE                                             0x0000
757
 
#define SQL_CN_DIFFERENT                                0x0001
758
 
#define SQL_CN_ANY                                              0x0002
759
 
 
760
 
/*
761
 
 * Fetch Direction. A SQLINTEGER bitmask enumerating the supported fetch
762
 
 * direction options. This information type has been deprecated in
763
 
 * ODBC 3.0.
764
 
 */
765
 
#define SQL_FD_FETCH_NEXT                               0x00000001L
766
 
#define SQL_FD_FETCH_FIRST                              0x00000002L
767
 
#define SQL_FD_FETCH_LAST                               0x00000004L
768
 
#define SQL_FD_FETCH_PRIOR                              0x00000008L
769
 
#define SQL_FD_FETCH_ABSOLUTE                   0x00000010L
770
 
#define SQL_FD_FETCH_RELATIVE                   0x00000020L
771
 
#define SQL_FD_FETCH_RESUME                             0x00000040L
772
 
#define SQL_FD_FETCH_BOOKMARK                   0x00000080L
773
 
 
774
 
/*
775
 
 * Conversion bitmasks for testing which function conversions are supported by
776
 
 * the driver. An application compares the returned bitmask with these
777
 
 * to determine which conversions are supported. The driver ANDS these
778
 
 * for the returned bitmask to indicate the supported conversions.(type
779
 
 * is SQLUINTEGER, i.e. 4 bytes). Note that these masks are defined in
780
 
 * alphabetical order, I have no idea if this maps to MS's SDK.
781
 
 */
782
 
#define SQL_FN_CVT_CONVERT                              0x00000001L
783
 
#define SQL_FN_CVT_CAST                                 0x00000002L
784
 
 
785
 
/*
786
 
 * File Usage. A SQLUSMALLINT indicating how a singel-tier driver treats
787
 
 * files in a data source.
788
 
 */
789
 
#define SQL_FILE_NOT_SUPPORTED                  0x0000
790
 
#define SQL_FILE_TABLE                                  0x0001
791
 
#define SQL_FILE_QUALIFIER                              0x0002
792
 
#define SQL_FILE_CATALOG                                SQL_FILE_CATALOG
793
 
 
794
 
/*
795
 
 * GetData Extensions. A SQLUINTEGER(4 bytes) bitmask enumerating extensions
796
 
 * to SQLGetData.
797
 
 */
798
 
#define SQL_GD_ANY_COLUMN                               0x00000001L
799
 
#define SQL_GD_ANY_ORDER                                0x00000002L
800
 
#define SQL_GD_BLOCK                                    0x00000004L
801
 
#define SQL_GD_BOUND                                    0x00000008L
802
 
 
803
 
/*
804
 
 * Group By. A SQLUSMALLINT value specifying the relationship between the
805
 
 * columns in the GROUP BY clause and the non-aggregated columns in the
806
 
 * select list.
807
 
*/
808
 
#define SQL_GB_NOT_SUPPORTED                    0x0000
809
 
#define SQL_GB_GROUP_BY_EQUALS_SELECT   0x0001
810
 
#define SQL_GB_GROUP_BY_CONTAINS_SELECT 0x0002
811
 
#define SQL_GB_NO_RELATION                              0x0003
812
 
 
813
 
/* added in ODBC 3.0 */
814
 
#define SQL_GB_COLLATE                                  0x0004
815
 
 
816
 
/*
817
 
 * Identifier Case. A SQLUSMALLINT indicating how identifiers are handled.
818
 
 */
819
 
#define SQL_IC_UPPER                                    0x0001
820
 
#define SQL_IC_LOWER                                    0x0002
821
 
#define SQL_IC_SENSITIVE                                0x0003
822
 
#define SQL_IC_MIXED                                    0x0004
823
 
 
824
 
/*
825
 
 * Lock types. A SQLINTEGER bitmask enumerating the supported lock types for
826
 
 * the fLock argument in SQLSetPos. Depreciated in 3.0.
827
 
 */
828
 
#define SQL_LCK_NO_CHANGE                               0x00000001L
829
 
#define SQL_LCK_EXCLUSIVE                               0x00000002L
830
 
#define SQL_LCK_UNLOCK                                  0x00000004L
831
 
 
832
 
/*
833
 
 * Non Nullable Columns. A SQLUSMALLINT value indicating if the data source
834
 
 * supports NOT NULL in columns.
835
 
 */
836
 
#define SQL_NNC_NULL                                    0x0000
837
 
#define SQL_NNC_NON_NULL                                0x0001
838
 
 
839
 
/*
840
 
 * Null Collation. A SQLUSMALLINT value specifying where NULLS are sorted in
841
 
 * a result set.
842
 
 */
843
 
#define SQL_NC_HIGH                                             0x0001
844
 
#define SQL_NC_LOW                                              0x0003
845
 
#define SQL_NC_START                                    0x0002
846
 
#define SQL_NC_END                                              0x0004
847
 
 
848
 
/*
849
 
 * Numeric Functions. A SQLUINTEGER bitmask enumerating the scalar numeric
850
 
 * functions supported by the driver and associated data source.
851
 
 */
852
 
#define SQL_FN_NUM_ABS                                  0x00000001L
853
 
#define SQL_FN_NUM_ACOS                                 0x00000002L
854
 
#define SQL_FN_NUM_ASIN                                 0x00000004L
855
 
#define SQL_FN_NUM_ATAN                                 0x00000008L
856
 
#define SQL_FN_NUM_ATAN2                                0x00000010L
857
 
#define SQL_FN_NUM_CEILING                              0x00000020L
858
 
#define SQL_FN_NUM_COS                                  0x00000040L
859
 
#define SQL_FN_NUM_COT                                  0x00000080L
860
 
#define SQL_FN_NUM_EXP                                  0x00000100L
861
 
#define SQL_FN_NUM_FLOOR                                0x00000200L
862
 
#define SQL_FN_NUM_LOG                                  0x00000400L
863
 
#define SQL_FN_NUM_MOD                                  0x00000800L
864
 
#define SQL_FN_NUM_SIGN                                 0x00001000L
865
 
#define SQL_FN_NUM_SIN                                  0x00002000L
866
 
#define SQL_FN_NUM_SQRT                                 0x00004000L
867
 
#define SQL_FN_NUM_TAN                                  0x00008000L
868
 
#define SQL_FN_NUM_PI                                   0x00010000L
869
 
#define SQL_FN_NUM_RAND                                 0x00020000L
870
 
 
871
 
/* Added in ODBC 2.0 */
872
 
#define SQL_FN_NUM_DEGREES                              0x00040000L
873
 
#define SQL_FN_NUM_LOG10                                0x00080000L
874
 
#define SQL_FN_NUM_POWER                                0x00100000L
875
 
#define SQL_FN_NUM_RADIANS                              0x00200000L
876
 
#define SQL_FN_NUM_ROUND                                0x00400000L
877
 
#define SQL_FN_NUM_TRUNCATE                             0x00800000L
878
 
 
879
 
/*
880
 
 * Outer Join Capabilites. A SQLUINTEGER bitmask enumerating the types of
881
 
 * outer joins supported by the driver and data source.
882
 
 */
883
 
#define SQL_OJ_LEFT                                             0x00000001L
884
 
#define SQL_OJ_RIGHT                                    0x00000002L
885
 
#define SQL_OJ_FULL                                             0x00000004L
886
 
#define SQL_OJ_NESTED                                   0x00000008L
887
 
#define SQL_OJ_NOT_ORDERED                              0x00000010L
888
 
#define SQL_OJ_INNER                                    0x00000020L
889
 
#define SQL_OJ_ALL_COMPARISON_OPS               0x00000040L
890
 
 
891
 
/*
892
 
 * ODBC API Conformance. A SQLSMALLINT value indicating a drivers ODBC
893
 
 * level conformance. Depreciated in 3.0.
894
 
 */
895
 
#define SQL_OAC_NONE                                    0x0000
896
 
#define SQL_OAC_LEVEL1                                  0x0001
897
 
#define SQL_OAC_LEVEL2                                  0x0002
898
 
 
899
 
/*
900
 
 * ODBC SAG CLI Conformance. A SQLSMALLINT value indicating a drivers
901
 
 * SAG CLI conformance.
902
 
 */
903
 
#define SQL_OSCC_NOT_COMPLIANT                  0x0000
904
 
#define SQL_OSCC_COMPLIANT                              0x0001
905
 
 
906
 
/*
907
 
 * ODBC SQL Conformance. A SQLSMALLINT value indicating a drivers SQL
908
 
 * grammar support. Depreciated in 3.0.
909
 
 */
910
 
#define SQL_OSC_MINIMUM                                 0x0000
911
 
#define SQL_OSC_CORE                                    0x0001
912
 
#define SQL_OSC_EXTENDED                                0x0002
913
 
 
914
 
/*
915
 
 * Owner Usage. A SQLUINTEGER bitmask.
916
 
 */
917
 
#define SQL_OU_DML_STATEMENTS                   0x00000001L
918
 
#define SQL_OU_PROCEDURE_INVOCATION             0x00000002L
919
 
#define SQL_OU_TABLE_DEFINITION                 0x00000004L
920
 
#define SQL_OU_INDEX_DEFINITION                 0x00000008L
921
 
#define SQL_OU_PRIVILEGE_DEFINITION             0x00000010L
922
 
 
923
 
/*
924
 
 * Schema Usage. A SQLUINTEGER bitmask enumerating the statements in which
925
 
 * schemas can be used. Renamed in ODBC 3.0 from SQL_OWNER_USAGE
926
 
 */
927
 
#define SQL_SU_DML_STATEMENTS                   SQL_OU_DML_STATEMENTS
928
 
#define SQL_SU_PROCEDURE_INVOCATION             SQL_OU_PROCEDURE_INVOCATION
929
 
#define SQL_SU_TABLE_DEFINITION                 SQL_OU_TABLE_DEFINITION
930
 
#define SQL_SU_INDEX_DEFINITION                 SQL_OU_INDEX_DEFINITION
931
 
#define SQL_SU_PRIVILEGE_DEFINITION             SQL_OU_PRIVILEGE_DEFINITION
932
 
 
933
 
/*
934
 
 * Pos. Operations. A SQLINTEGER bitmask enumerating the supported operations
935
 
 * in SQLSetPos. Depreciated in ODBC 3.0.
936
 
 */
937
 
#define SQL_POS_POSITION                                0x00000001L
938
 
#define SQL_POS_REFRESH                                 0x00000002L
939
 
#define SQL_POS_UPDATE                                  0x00000004L
940
 
#define SQL_POS_DELETE                                  0x00000008L
941
 
#define SQL_POS_ADD                                             0x00000010L
942
 
 
943
 
/*
944
 
 *      SQLSetPos
945
 
 */
946
 
#define SQL_ENTIRE_ROWSET                               0
947
 
 
948
 
#define SQL_POSITION                                    0
949
 
#define SQL_REFRESH                                             1
950
 
#define SQL_UPDATE                                              2
951
 
#define SQL_DELETE                                              3
952
 
#define SQL_ADD                                                 4
953
 
 
954
 
/*
955
 
 * SQLSetPos Lock options
956
 
*/
957
 
#define SQL_LOCK_NO_CHANGE                              0
958
 
#define SQL_LOCK_EXCLUSIVE                              1
959
 
#define SQL_LOCK_UNLOCK                                 2
960
 
 
961
 
#define SQL_POSITION_TO(hstmt,irow)             \
962
 
        SQLSetPos(hstmt,irow,SQL_POSITION,SQL_LOCK_NO_CHANGE)
963
 
#define SQL_LOCK_RECORD(hstmt,irow,fLock) \
964
 
        SQLSetPos(hstmt,irow,SQL_POSITION,fLock)
965
 
#define SQL_REFRESH_RECORD(hstmt,irow,fLock) \
966
 
        SQLSetPos(hstmt,irow,SQL_REFRESH,fLock)
967
 
#define SQL_UPDATE_RECORD(hstmt,irow) \
968
 
        SQLSetPos(hstmt,irow,SQL_UPDATE,SQL_LOCK_NO_CHANGE)
969
 
#define SQL_DELETE_RECORD(hstmt,irow) \
970
 
        SQLSetPos(hstmt,irow,SQL_DELETE,SQL_LOCK_NO_CHANGE)
971
 
#define SQL_ADD_RECORD(hstmt,irow) \
972
 
        SQLSetPos(hstmt,irow,SQL_ADD,SQL_LOCK_NO_CHANGE)
973
 
 
974
 
/*
975
 
 * Positioned Statements. A SQLINTEGER bitmask enumerating the supported
976
 
 * positioned SQL statements.
977
 
 */
978
 
#define SQL_PS_POSITIONED_DELETE                0x00000001L
979
 
#define SQL_PS_POSITIONED_UPDATE                0x00000002L
980
 
#define SQL_PS_SELECT_FOR_UPDATE                0x00000004L
981
 
 
982
 
/* Qualifier Location. A SQLUSMALLINT value indicating the position of the
983
 
 * catalog in a qualified table name.
984
 
 */
985
 
#define SQL_QL_START                                    0x0001
986
 
#define SQL_QL_END                                              0x0002
987
 
 
988
 
/*
989
 
 * Qualifier Usage. A SQLUINTEGER bitmask.
990
 
 */
991
 
#define SQL_QU_DML_STATEMENTS                   0x00000001L
992
 
#define SQL_QU_PROCEDURE_INVOCATION             0x00000002L
993
 
#define SQL_QU_TABLE_DEFINITION                 0x00000004L
994
 
#define SQL_QU_INDEX_DEFINITION                 0x00000008L
995
 
#define SQL_QU_PRIVILEGE_DEFINITION             0x00000010L
996
 
 
997
 
/* The above is renamed in ODBC 3.0 to Catalog Usage. */
998
 
#define SQL_CU_DML_STATEMENTS                   SQL_QU_DML_STATEMENTS
999
 
#define SQL_CU_PROCEDURE_INVOCATION             SQL_QU_PROCEDURE_INVOCATION
1000
 
#define SQL_CU_TABLE_DEFINITION                 SQL_QU_TABLE_DEFINITION
1001
 
#define SQL_CU_INDEX_DEFINITION                 SQL_QU_INDEX_DEFINITION
1002
 
#define SQL_CU_PRIVILEGE_DEFINITION             SQL_QU_PRIVILEGE_DEFINITION
1003
 
 
1004
 
/* ODBC 3.0 renamed the above to Catalog Location. */
1005
 
#define SQL_CL_START                                    SQL_QL_START
1006
 
#define SQL_CL_END                                              SQL_QL_END
1007
 
 
1008
 
/*
1009
 
 * Scroll Concurrency. A SQLINTEGER bitmask enumerating the concurrency
1010
 
 * control options supported for the cursor. Depreciated in ODBC 3.0.
1011
 
 */
1012
 
#define SQL_SCCO_READ_ONLY                              0x00000001L
1013
 
#define SQL_SCCO_LOCK                                   0x00000002L
1014
 
#define SQL_SCCO_OPT_ROWVER                             0x00000004L
1015
 
#define SQL_SCCO_OPT_VALUES                             0x00000008L
1016
 
 
1017
 
 
1018
 
/*
1019
 
 * Scroll Options. A SQLUINTEGER bitmask enumerating the scroll options
1020
 
 * supported for scrollable cursors.
1021
 
 */
1022
 
#define SQL_SO_FORWARD_ONLY                             0x00000001L
1023
 
#define SQL_SO_KEYSET_DRIVEN                    0x00000002L
1024
 
#define SQL_SO_DYNAMIC                                  0x00000004L
1025
 
#define SQL_SO_MIXED                                    0x00000008L
1026
 
#define SQL_SO_STATIC                                   0x00000010L
1027
 
 
1028
 
/*
1029
 
 * Static Sensitity. A SQLINTEGER bitmask enumerating whether changes made
1030
 
 * by an application to a static or keyset-driven cursor through SQLSetPos
1031
 
 * or positioned update or delete statements can be detected by that
1032
 
 * application.
1033
 
 */
1034
 
#define SQL_SS_ADDITIONS                                0x00000001L
1035
 
#define SQL_SS_DELETIONS                                0x00000002L
1036
 
#define SQL_SS_UPDATES                                  0x00000004L
1037
 
 
1038
 
/*
1039
 
 * String Functions. A SQLUINTEGER bitmask enumerating the scalar string
1040
 
 * functions supported by the driver and associated data source.
1041
 
 */
1042
 
#define SQL_FN_STR_CONCAT                               0x00000001L
1043
 
#define SQL_FN_STR_INSERT                               0x00000002L
1044
 
#define SQL_FN_STR_LEFT                                 0x00000004L
1045
 
#define SQL_FN_STR_LTRIM                                0x00000008L
1046
 
#define SQL_FN_STR_LENGTH                               0x00000010L
1047
 
#define SQL_FN_STR_LOCATE                               0x00000020L
1048
 
#define SQL_FN_STR_LCASE                                0x00000040L
1049
 
#define SQL_FN_STR_REPEAT                               0x00000080L
1050
 
#define SQL_FN_STR_REPLACE                              0x00000100L
1051
 
#define SQL_FN_STR_RIGHT                                0x00000200L
1052
 
#define SQL_FN_STR_RTRIM                                0x00000400L
1053
 
#define SQL_FN_STR_SUBSTRING                    0x00000800L
1054
 
#define SQL_FN_STR_UCASE                                0x00001000L
1055
 
#define SQL_FN_STR_ASCII                                0x00002000L
1056
 
#define SQL_FN_STR_CHAR                                 0x00004000L
1057
 
#define SQL_FN_STR_DIFFERENCE                   0x00008000L
1058
 
#define SQL_FN_STR_LOCATE_2                             0x00010000L
1059
 
#define SQL_FN_STR_SOUNDEX                              0x00020000L
1060
 
#define SQL_FN_STR_SPACE                                0x00040000L
1061
 
 
1062
 
/* introduced in ODBC 3.0 */
1063
 
#define SQL_FN_STR_BIT_LENGTH                   0x00080000L
1064
 
#define SQL_FN_STR_CHAR_LENGTH                  0x00100000L
1065
 
#define SQL_FN_STR_CHARACTER_LENGTH             0x00200000L
1066
 
#define SQL_FN_STR_OCTET_LENGTH                 0x00400000L
1067
 
#define SQL_FN_STR_POSITION                             0x00800000L
1068
 
 
1069
 
/*
1070
 
 * Subqueries. A SQLUINTEGER bitmask enumerating the predicates that support
1071
 
 * subqueries.
1072
 
 */
1073
 
#define SQL_SQ_COMPARISON                               0x00000001L
1074
 
#define SQL_SQ_EXISTS                                   0x00000002L
1075
 
#define SQL_SQ_IN                                               0x00000004L
1076
 
#define SQL_SQ_QUANTIFIED                               0x00000008L
1077
 
#define SQL_SQ_CORRELATED_SUBQUERIES    0x00000010L
1078
 
 
1079
 
/*
1080
 
 * System Functions. A SQLUINTEGER bitmask enumerating the scalar system
1081
 
 * functions supported by the driver and associated data source.
1082
 
 */
1083
 
#define SQL_FN_SYS_USERNAME                             0x00000001L
1084
 
#define SQL_FN_SYS_DBNAME                               0x00000002L
1085
 
#define SQL_FN_SYS_IFNULL                               0x00000004L
1086
 
 
1087
 
/*
1088
 
 * Time-Date add and diff intervals. A SQLUINTEGER bitmask enumerating the
1089
 
 * timestamp intervals supported by the driver and associated data source
1090
 
 *      for the TIMESTAMPADD and TIMESTAMPDIFF scalar function.
1091
 
 */
1092
 
#define SQL_FN_TSI_FRAC_SECOND                  0x00000001L
1093
 
#define SQL_FN_TSI_SECOND                               0x00000002L
1094
 
#define SQL_FN_TSI_MINUTE                               0x00000004L
1095
 
#define SQL_FN_TSI_HOUR                                 0x00000008L
1096
 
#define SQL_FN_TSI_DAY                                  0x00000010L
1097
 
#define SQL_FN_TSI_WEEK                                 0x00000020L
1098
 
#define SQL_FN_TSI_MONTH                                0x00000040L
1099
 
#define SQL_FN_TSI_QUARTER                              0x00000080L
1100
 
#define SQL_FN_TSI_YEAR                                 0x00000100L
1101
 
 
1102
 
/*
1103
 
 * Time/Date functions. A SQLUINTEGER bitmask enumerating the scalar date
1104
 
 * and time functions supported by the driver and associated data source.
1105
 
 */
1106
 
#define SQL_FN_TD_NOW                                   0x00000001L
1107
 
#define SQL_FN_TD_CURDATE                               0x00000002L
1108
 
#define SQL_FN_TD_DAYOFMONTH                    0x00000004L
1109
 
#define SQL_FN_TD_DAYOFWEEK                             0x00000008L
1110
 
#define SQL_FN_TD_DAYOFYEAR                             0x00000010L
1111
 
#define SQL_FN_TD_MONTH                                 0x00000020L
1112
 
#define SQL_FN_TD_QUARTER                               0x00000040L
1113
 
#define SQL_FN_TD_WEEK                                  0x00000080L
1114
 
#define SQL_FN_TD_YEAR                                  0x00000100L
1115
 
#define SQL_FN_TD_CURTIME                               0x00000200L
1116
 
#define SQL_FN_TD_HOUR                                  0x00000400L
1117
 
#define SQL_FN_TD_MINUTE                                0x00000800L
1118
 
#define SQL_FN_TD_SECOND                                0x00001000L
1119
 
#define SQL_FN_TD_TIMESTAMPADD                  0x00002000L
1120
 
#define SQL_FN_TD_TIMESTAMPDIFF                 0x00004000L
1121
 
#define SQL_FN_TD_DAYNAME                               0x00008000L
1122
 
#define SQL_FN_TD_MONTHNAME                             0x00010000L
1123
 
 
1124
 
/* Added in ODBC 3.0 */
1125
 
#define SQL_FN_TD_CURRENT_DATE                  0x00020000L
1126
 
#define SQL_FN_TD_CURRENT_TIME                  0x00040000L
1127
 
#define SQL_FN_TD_CURRENT_TIMESTAMP             0x00080000L
1128
 
#define SQL_FN_TD_EXTRACT                               0x00100000L
1129
 
 
1130
 
/*
1131
 
 * Transaction Capable. A SQLUSMALLINT value describing the transaction
1132
 
 * support in the driver or data source.
1133
 
 */
1134
 
#define SQL_TC_NONE                                             0x0000
1135
 
#define SQL_TC_DML                                              0x0001
1136
 
#define SQL_TC_ALL                                              0x0002
1137
 
#define SQL_TC_DDL_COMMIT                               0x0003
1138
 
#define SQL_TC_DDL_IGNORE                               0x0004
1139
 
 
1140
 
/*
1141
 
 * Unions. A SQLUINTEGER bitmask enumerating the support for the UNION
1142
 
 * clause.
1143
 
 */
1144
 
#define SQL_U_UNION                                             0x00000001L
1145
 
#define SQL_U_UNION_ALL                                 0x00000002L
1146
 
 
1147
 
 
1148
 
/* SQLStatistics: Type, Smallint */
1149
 
#define SQL_TABLE_STAT                                  0
1150
 
#define SQL_INDEX_CLUSTERED                             1
1151
 
#define SQL_INDEX_HASHED                                2
1152
 
#define SQL_INDEX_OTHER                                 3
1153
 
 
1154
 
/* SQLProcedures: Type: Smallint */
1155
 
#define SQL_PT_UNKNOWN                                  0
1156
 
#define SQL_PT_PROCEDURE                                1
1157
 
#define SQL_PT_FUNCTION                                 2
1158
 
 
1159
 
/* SQLSpecialColumns: PSEUDO_COLUMN: Smallint */
1160
 
#define SQL_PC_UNKNOWN                                  0
1161
 
#define SQL_PC_PSEUDO                                   1
1162
 
#define SQL_PC_NOT_PSEUDO                               2
1163
 
 
1164
 
/* SQLSet/Get/StmtOptions: ASYNC_ENABLE. A SQLUINTEGER */
1165
 
#define SQL_ASYNC_ENABLE_OFF                    0UL
1166
 
#define SQL_ASYNC_ENABLE_ON                             1UL
1167
 
#define SQL_ASYNC_ENABLE_DEFAULT                SQL_ASYNC_ENABLE_OFF
1168
 
 
1169
 
/*
1170
 
 * SQLSet/GetStmtOptions: CONCURRENCY. A SQLUINTEGER. Note most of these
1171
 
 * are above in the original isqlext.h code.
1172
 
 */
1173
 
#define SQL_CONCUR_DEFAULT                              SQL_CONCUR_READ_ONLY
1174
 
 
1175
 
/*
1176
 
 * SQLSet/GetStmtOptions: CURSOR_SCROLLABLE. A SQLUINTEGER. Added in ODBC
1177
 
 * 3.0.
1178
 
 */
1179
 
#define SQL_NONSCROLLABLE                               0UL
1180
 
#define SQL_SCROLLABLE                                  1UL
1181
 
#define SQL_CURSOR_SCROLLABLE_DEFAULT   SQL_NONSCROLLABLE
1182
 
 
1183
 
/*
1184
 
 * SQLSet/GetStmtOptions: CURSOR_SENSITITY. A SQLUINTEGER. Added in ODBC
1185
 
 * 3.0.
1186
 
 */
1187
 
#define SQL_UNSPECIFIED                                 0UL
1188
 
#define SQL_INSENSITIVE                                 1UL
1189
 
#define SQL_SENSITIVIE                                  2UL
1190
 
#define SQL_CURSOR_SENSITIVITY_DEFAULT  SQL_UNSPECIFIED
1191
 
 
1192
 
/*
1193
 
 * SQLSet/GetStmtOptions: CURSOR_TYPE: A SQLUINTEGER value that specifies the
1194
 
 * cursor type
1195
 
 */
1196
 
#define SQL_CURSOR_FORWARD_ONLY                 0UL
1197
 
#define SQL_CURSOR_KEYSET_DRIVEN                1UL
1198
 
#define SQL_CURSOR_DYNAMIC                              2UL
1199
 
#define SQL_CURSOR_STATIC                               3UL
1200
 
#define SQL_CURSOR_DEFAULT                              SQL_CURSOR_FORWARD_ONLY
1201
 
 
1202
 
/*
1203
 
 * ENABLE_AUTO_IPD: A SQLUINTEGER, either SQL_TRUE or SQL_FALSE. Default
1204
 
 * dependent on connection option SQL_ATTR_AUTO_IPD. Added in ODBC 3.0.
1205
 
 */
1206
 
 
1207
 
/*
1208
 
 * METADATA_ID: A SQLUINTEGER, either SQL_TRUE or SQL_FALSE. Added in
1209
 
 * ODBC 3.0.
1210
 
 */
1211
 
#define SQL_ATTR_METADATA_ID_DEFAULT    SQL_FALSE
1212
 
 
1213
 
/*
1214
 
 * SQLSet/GetStmtOptions: NOSCAN. A SQLUINTEGER value that indicates whether
1215
 
 * the driver should scan SQL strings for escape sequences.
1216
 
 */
1217
 
#define SQL_NOSCAN_OFF                                  0UL
1218
 
#define SQL_NOSCAN_ON                                   1UL
1219
 
#define SQL_NOSCAN_DEFAULT                              SQL_NOSCAN_OFF
1220
 
 
1221
 
/*
1222
 
 * SQLSet/GetStmtOptions: PARAM_OPERATION: SQLUSMALLINT *. Added in ODBC 3.0
1223
 
 *
1224
 
 */
1225
 
#define SQL_PARAM_PROCEED                               0
1226
 
#define SQL_PARAM_IGNORE                                1
1227
 
 
1228
 
/*
1229
 
 * SQLSet/GetStmtOptions: PARAM_STATUS: SQLUSMALLINT *. Added in ODBC 3.0
1230
 
 *
1231
 
*/
1232
 
#define SQL_PARAM_SUCCESS                               0
1233
 
#define SQL_PARAM_SUCCESS_WITH_INFO             6
1234
 
#define SQL_PARAM_ERROR                                 5
1235
 
#define SQL_PARAM_UNUSED                                7
1236
 
#define SQL_PARAM_DIAG_UNAVAILABLE              1
1237
 
 
1238
 
/*
1239
 
 * SQLSet/GetStmtOptions: RETRIEVE_DATA: SQLUINTEGER value.
1240
 
 */
1241
 
#define SQL_RD_OFF                                              0UL
1242
 
#define SQL_RD_ON                                               1UL
1243
 
#define SQL_RD_DEFAULT                                  SQL_RD_ON
1244
 
 
1245
 
/*
1246
 
 * SQLSet/GetStmtOptions: BIND_TYPE: SQLUINTEGER. sets binding orientation.
1247
 
 */
1248
 
#define SQL_BIND_BY_COLUMN                              0UL
1249
 
#define SQL_BIND_TYPE_DEFAULT                   SQL_BIND_BY_COLUMN
1250
 
 
1251
 
/*
1252
 
 * SQLSet/GetStmtOptions: ROW_OPERATION: SQLUSMALLINT *. Added in ODBC 3.0
1253
 
 */
1254
 
#define SQL_ROW_PROCEED                                 0
1255
 
#define SQL_ROW_IGNORE                                  1
1256
 
 
1257
 
/*
1258
 
 *      SQL_ROWSET_SIZE
1259
 
 */
1260
 
#define SQL_ROWSET_SIZE_DEFAULT                 1UL
1261
 
 
1262
 
/*
1263
 
 *      SQL_KEYSET_SIZE
1264
 
 */
1265
 
#define SQL_KEYSET_SIZE_DEFAULT                 0UL
1266
 
 
1267
 
/*
1268
 
 * SQLSet/GetStmtOptions: SIMULATE_CURSOR: SQLUINTEGER value that specifies
1269
 
 * whether drivers that simulate positioned update and delete statements
1270
 
 * guarantee that such statements affect only a single row.
1271
 
 */
1272
 
#define SQL_SC_NON_UNIQUE                               0UL
1273
 
#define SQL_SC_TRY_UNIQUE                               1UL
1274
 
#define SQL_SC_UNIQUE                                   2UL
1275
 
 
1276
 
/*
1277
 
 * SQLSet/GetStmtOptions: USE_BOOKMARKS: SQLUINTEGER value that specifies
1278
 
 * whether an application will use bookmarks with a cursor.
1279
 
 */
1280
 
#define SQL_UB_OFF                                              0UL
1281
 
#define SQL_UB_ON                                               1UL
1282
 
#define SQL_UB_FIXED                                    SQL_UB_ON               /* Deprecated in ODBC
1283
 
                                                                                                                 * 3.0 */
1284
 
#define SQL_UB_VARIABLE                                 2UL             /* Added in ODBC 3.0 */
1285
 
#define SQL_UB_DEFAULT                                  SQL_UB_OFF
1286
 
 
1287
 
/* Deprecated */
1288
 
#define SQL_DATABASE_NAME                               16
1289
 
#define SQL_FD_FETCH_PREV                               SQL_FD_FETCH_PRIOR
1290
 
#define SQL_FETCH_PREV                                  SQL_FETCH_PRIOR
1291
 
#define SQL_CONCUR_TIMESTAMP                    SQL_CONCUR_ROWVER
1292
 
#define SQL_SCCO_OPT_TIMESTAMP                  SQL_SCCO_OPT_ROWVER
1293
 
#define SQL_CC_DELETE                                   SQL_CB_DELETE
1294
 
#define SQL_CR_DELETE                                   SQL_CB_DELETE
1295
 
#define SQL_CC_CLOSE                                    SQL_CB_CLOSE
1296
 
#define SQL_CR_CLOSE                                    SQL_CB_CLOSE
1297
 
#define SQL_CC_PRESERVE                                 SQL_CB_PRESERVE
1298
 
#define SQL_CR_PRESERVE                                 SQL_CB_PRESERVE
1299
 
#define SQL_FETCH_RESUME                                7
1300
 
#define SQL_SCROLL_FORWARD_ONLY                 0L
1301
 
#define SQL_SCROLL_KEYSET_DRIVEN                (-1L)
1302
 
#define SQL_SCROLL_DYNAMIC                              (-2L)
1303
 
#define SQL_SCROLL_STATIC                               (-3L)
1304
 
 
1305
 
/*
1306
 
 *      ODBC keywords
1307
 
 */
1308
 
#define SQL_ODBC_KEYWORDS \
1309
 
"ABSOLUTE,ACTION,ADA,ADD,ALL,ALLOCATE,ALTER,AND,ANY,ARE,AS,"\
1310
 
"ASC,ASSERTION,AT,AUTHORIZATION,AVG,"\
1311
 
"BEGIN,BETWEEN,BIT,BIT_LENGTH,BOTH,BY,CASCADE,CASCADED,CASE,CAST,CATALOG,"\
1312
 
"CHAR,CHAR_LENGTH,CHARACTER,CHARACTER_LENGTH,CHECK,CLOSE,COALESCE,"\
1313
 
"COBOL,COLLATE,COLLATION,COLUMN,COMMIT,CONNECT,CONNECTION,CONSTRAINT,"\
1314
 
"CONSTRAINTS,CONTINUE,CONVERT,CORRESPONDING,COUNT,CREATE,CROSS,CURRENT,"\
1315
 
"CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_USER,CURSOR,"\
1316
 
"DATE,DAY,DEALLOCATE,DEC,DECIMAL,DECLARE,DEFAULT,DEFERRABLE,"\
1317
 
"DEFERRED,DELETE,DESC,DESCRIBE,DESCRIPTOR,DIAGNOSTICS,DISCONNECT,"\
1318
 
"DISTINCT,DOMAIN,DOUBLE,DROP,"\
1319
 
"ELSE,END,END-EXEC,ESCAPE,EXCEPT,EXCEPTION,EXEC,EXECUTE,"\
1320
 
"EXISTS,EXTERNAL,EXTRACT,"\
1321
 
"FALSE,FETCH,FIRST,FLOAT,FOR,FOREIGN,FORTRAN,FOUND,FROM,FULL,"\
1322
 
"GET,GLOBAL,GO,GOTO,GRANT,GROUP,HAVING,HOUR,"\
1323
 
"IDENTITY,IMMEDIATE,IN,INCLUDE,INDEX,INDICATOR,INITIALLY,INNER,"\
1324
 
"INPUT,INSENSITIVE,INSERT,INTEGER,INTERSECT,INTERVAL,INTO,IS,ISOLATION,"\
1325
 
"JOIN,KEY,LANGUAGE,LAST,LEADING,LEFT,LEVEL,LIKE,LOCAL,LOWER,"\
1326
 
"MATCH,MAX,MIN,MINUTE,MODULE,MONTH,MUMPS,"\
1327
 
"NAMES,NATIONAL,NATURAL,NCHAR,NEXT,NO,NONE,NOT,NULL,NULLIF,NUMERIC,"\
1328
 
"OCTET_LENGTH,OF,ON,ONLY,OPEN,OPTION,OR,ORDER,OUTER,OUTPUT,OVERLAPS,"\
1329
 
"PAD,PARTIAL,PASCAL,PLI,POSITION,PRECISION,PREPARE,PRESERVE,"\
1330
 
"PRIMARY,PRIOR,PRIVILEGES,PROCEDURE,PUBLIC,"\
1331
 
"REFERENCES,RELATIVE,RESTRICT,REVOKE,RIGHT,ROLLBACK,ROWS,"\
1332
 
"SCHEMA,SCROLL,SECOND,SECTION,SELECT,SEQUENCE,SESSION,SESSION_USER,SET,SIZE,"\
1333
 
"SMALLINT,SOME,SPACE,SQL,SQLCA,SQLCODE,SQLERROR,SQLSTATE,SQLWARNING,"\
1334
 
"SUBSTRING,SUM,SYSTEM_USER,"\
1335
 
"TABLE,TEMPORARY,THEN,TIME,TIMESTAMP,TIMEZONE_HOUR,TIMEZONE_MINUTE,"\
1336
 
"TO,TRAILING,TRANSACTION,TRANSLATE,TRANSLATION,TRIM,TRUE,"\
1337
 
"UNION,UNIQUE,UNKNOWN,UPDATE,UPPER,USAGE,USER,USING,"\
1338
 
"VALUE,,VARCHAR,VARYING,VIEW,WHEN,WHENEVER,WHERE,WITH,WORK,YEAR"
1339
 
 
1340
 
#ifdef __cplusplus
1341
 
extern          "C"
1342
 
{
1343
 
#endif
1344
 
 
1345
 
RETCODE SQL_API SQLSetConnectOption(HDBC, UWORD, UDWORD);
1346
 
RETCODE SQL_API SQLNumResultCols(HSTMT, SWORD FAR *);
1347
 
 
1348
 
/*
1349
 
 *       function prototypes previously missing from isqlext.h
1350
 
 */
1351
 
RETCODE SQL_API SQLColumns(HSTMT hstmt,
1352
 
                   UCHAR FAR * szTableQualifier,
1353
 
                   SWORD cbTableQualifier,
1354
 
                   UCHAR FAR * szTableOwner,
1355
 
                   SWORD cbTableOwner,
1356
 
                   UCHAR FAR * szTableName,
1357
 
                   SWORD cbTableName,
1358
 
                   UCHAR FAR * szColumnName,
1359
 
                   SWORD cbColumnName);
1360
 
 
1361
 
RETCODE SQL_API SQLDriverConnect(HDBC hdbc,
1362
 
                                 HWND hwnd,
1363
 
                                 UCHAR FAR * szConnStrIn,
1364
 
                                 SWORD cbConnStrIn,
1365
 
                                 UCHAR FAR * szConnStrOut,
1366
 
                                 SWORD cbConnStrOutMax,
1367
 
                                 SWORD FAR * pcbConnStrOut,
1368
 
                                 UWORD fDriverCompletion);
1369
 
 
1370
 
RETCODE SQL_API SQLGetConnectOption(HDBC hdbc,
1371
 
                                        UWORD fOption,
1372
 
                                        PTR pvParam);
1373
 
 
1374
 
RETCODE SQL_API SQLGetData(HSTMT hstmt,
1375
 
                   UWORD icol,
1376
 
                   SWORD fCType,
1377
 
                   PTR rgbValue,
1378
 
                   SDWORD cbValueMax,
1379
 
                   SDWORD FAR * pcbValue);
1380
 
 
1381
 
RETCODE SQL_API SQLGetFunctions(HDBC hdbc,
1382
 
                                UWORD fFunction,
1383
 
                                UWORD FAR * pfExists);
1384
 
 
1385
 
RETCODE SQL_API SQLGetInfo(HDBC hdbc,
1386
 
                   UWORD fInfoType,
1387
 
                   PTR rgbInfoValue,
1388
 
                   SWORD cbInfoValueMax,
1389
 
                   SWORD FAR * pcbInfoValue);
1390
 
 
1391
 
RETCODE SQL_API SQLGetStmtOption(HSTMT hstmt,
1392
 
                                 UWORD fOption,
1393
 
                                 PTR pvParam);
1394
 
 
1395
 
RETCODE SQL_API SQLGetTypeInfo(HSTMT hstmt,
1396
 
                           SWORD fSqlType);
1397
 
 
1398
 
RETCODE SQL_API SQLParamData(HSTMT hstmt,
1399
 
                         PTR FAR * prgbValue);
1400
 
 
1401
 
RETCODE SQL_API SQLPutData(HSTMT hstmt,
1402
 
                   PTR rgbValue,
1403
 
                   SDWORD cbValue);
1404
 
 
1405
 
RETCODE SQL_API SQLSetStmtOption(HSTMT hstmt,
1406
 
                                 UWORD fOption,
1407
 
                                 UDWORD vParam);
1408
 
 
1409
 
RETCODE SQL_API SQLSpecialColumns(HSTMT hstmt,
1410
 
                                  UWORD fColType,
1411
 
                                  UCHAR FAR * szTableQualifier,
1412
 
                                  SWORD cbTableQualifier,
1413
 
                                  UCHAR FAR * szTableOwner,
1414
 
                                  SWORD cbTableOwner,
1415
 
                                  UCHAR FAR * szTableName,
1416
 
                                  SWORD cbTableName,
1417
 
                                  UWORD fScope,
1418
 
                                  UWORD fNullable);
1419
 
 
1420
 
RETCODE SQL_API SQLStatistics(HSTMT hstmt,
1421
 
                          UCHAR FAR * szTableQualifier,
1422
 
                          SWORD cbTableQualifier,
1423
 
                          UCHAR FAR * szTableOwner,
1424
 
                          SWORD cbTableOwner,
1425
 
                          UCHAR FAR * szTableName,
1426
 
                          SWORD cbTableName,
1427
 
                          UWORD fUnique,
1428
 
                          UWORD fAccuracy);
1429
 
 
1430
 
RETCODE SQL_API SQLTables(HSTMT hstmt,
1431
 
                  UCHAR FAR * szTableQualifier,
1432
 
                  SWORD cbTableQualifier,
1433
 
                  UCHAR FAR * szTableOwner,
1434
 
                  SWORD cbTableOwner,
1435
 
                  UCHAR FAR * szTableName,
1436
 
                  SWORD cbTableName,
1437
 
                  UCHAR FAR * szTableType,
1438
 
                  SWORD cbTableType);
1439
 
 
1440
 
RETCODE SQL_API SQLBrowseConnect(HDBC hdbc,
1441
 
                                 UCHAR FAR * szConnStrIn,
1442
 
                                 SWORD cbConnStrIn,
1443
 
                                 UCHAR FAR * szConnStrOut,
1444
 
                                 SWORD cbConnStrOutMax,
1445
 
                                 SWORD FAR * pcbConnStrOut);
1446
 
 
1447
 
RETCODE SQL_API SQLColumnPrivileges(HSTMT hstmt,
1448
 
                                        UCHAR FAR * szTableQualifier,
1449
 
                                        SWORD cbTableQualifier,
1450
 
                                        UCHAR FAR * szTableOwner,
1451
 
                                        SWORD cbTableOwner,
1452
 
                                        UCHAR FAR * szTableName,
1453
 
                                        SWORD cbTableName,
1454
 
                                        UCHAR FAR * szColumnName,
1455
 
                                        SWORD cbColumnName);
1456
 
 
1457
 
RETCODE SQL_API SQLDescribeParam(HSTMT hstmt,
1458
 
                                 UWORD ipar,
1459
 
                                 SWORD FAR * pfSqlType,
1460
 
                                 UDWORD FAR * pcbColDef,
1461
 
                                 SWORD FAR * pibScale,
1462
 
                                 SWORD FAR * pfNullable);
1463
 
 
1464
 
RETCODE SQL_API SQLExtendedFetch(HSTMT hstmt,
1465
 
                                 UWORD fFetchType,
1466
 
                                 SDWORD irow,
1467
 
                                 UDWORD FAR * pcrow,
1468
 
                                 UWORD FAR * rgfRowStatus);
1469
 
 
1470
 
RETCODE SQL_API SQLForeignKeys(HSTMT hstmt,
1471
 
                           UCHAR FAR * szPkTableQualifier,
1472
 
                           SWORD cbPkTableQualifier,
1473
 
                           UCHAR FAR * szPkTableOwner,
1474
 
                           SWORD cbPkTableOwner,
1475
 
                           UCHAR FAR * szPkTableName,
1476
 
                           SWORD cbPkTableName,
1477
 
                           UCHAR FAR * szFkTableQualifier,
1478
 
                           SWORD cbFkTableQualifier,
1479
 
                           UCHAR FAR * szFkTableOwner,
1480
 
                           SWORD cbFkTableOwner,
1481
 
                           UCHAR FAR * szFkTableName,
1482
 
                           SWORD cbFkTableName);
1483
 
 
1484
 
RETCODE SQL_API SQLMoreResults(HSTMT hstmt);
1485
 
 
1486
 
RETCODE SQL_API SQLNativeSql(HDBC hdbc,
1487
 
                         UCHAR FAR * szSqlStrIn,
1488
 
                         SDWORD cbSqlStrIn,
1489
 
                         UCHAR FAR * szSqlStr,
1490
 
                         SDWORD cbSqlStrMax,
1491
 
                         SDWORD FAR * pcbSqlStr);
1492
 
 
1493
 
RETCODE SQL_API SQLNumParams(HSTMT hstmt,
1494
 
                         SWORD FAR * pcpar);
1495
 
 
1496
 
RETCODE SQL_API SQLParamOptions(HSTMT hstmt,
1497
 
                                UDWORD crow,
1498
 
                                UDWORD FAR * pirow);
1499
 
 
1500
 
RETCODE SQL_API SQLPrimaryKeys(HSTMT hstmt,
1501
 
                           UCHAR FAR * szTableQualifier,
1502
 
                           SWORD cbTableQualifier,
1503
 
                           UCHAR FAR * szTableOwner,
1504
 
                           SWORD cbTableOwner,
1505
 
                           UCHAR FAR * szTableName,
1506
 
                           SWORD cbTableName);
1507
 
 
1508
 
RETCODE SQL_API SQLProcedureColumns(HSTMT hstmt,
1509
 
                                        UCHAR FAR * szProcQualifier,
1510
 
                                        SWORD cbProcQualifier,
1511
 
                                        UCHAR FAR * szProcOwner,
1512
 
                                        SWORD cbProcOwner,
1513
 
                                        UCHAR FAR * szProcName,
1514
 
                                        SWORD cbProcName,
1515
 
                                        UCHAR FAR * szColumnName,
1516
 
                                        SWORD cbColumnName);
1517
 
 
1518
 
RETCODE SQL_API SQLProcedures(HSTMT hstmt,
1519
 
                          UCHAR FAR * szProcQualifier,
1520
 
                          SWORD cbProcQualifier,
1521
 
                          UCHAR FAR * szProcOwner,
1522
 
                          SWORD cbProcOwner,
1523
 
                          UCHAR FAR * szProcName,
1524
 
                          SWORD cbProcName);
1525
 
 
1526
 
RETCODE SQL_API SQLSetPos(HSTMT hstmt,
1527
 
                  UWORD irow,
1528
 
                  UWORD fOption,
1529
 
                  UWORD fLock);
1530
 
 
1531
 
RETCODE SQL_API SQLTablePrivileges(HSTMT hstmt,
1532
 
                                   UCHAR FAR * szTableQualifier,
1533
 
                                   SWORD cbTableQualifier,
1534
 
                                   UCHAR FAR * szTableOwner,
1535
 
                                   SWORD cbTableOwner,
1536
 
                                   UCHAR FAR * szTableName,
1537
 
                                   SWORD cbTableName);
1538
 
 
1539
 
RETCODE SQL_API SQLBindParameter(HSTMT hstmt,
1540
 
                                 UWORD ipar,
1541
 
                                 SWORD fParamType,
1542
 
                                 SWORD fCType,
1543
 
                                 SWORD fSqlType,
1544
 
                                 UDWORD cbColDef,
1545
 
                                 SWORD ibScale,
1546
 
                                 PTR rgbValue,
1547
 
                                 SDWORD cbValueMax,
1548
 
                                 SDWORD FAR * pcbValue);
1549
 
 
1550
 
RETCODE SQL_API SQLSetScrollOptions(HSTMT hstmt,
1551
 
                                        UWORD fConcurrency,
1552
 
                                        SDWORD crowKeyset,
1553
 
                                        UWORD crowRowset);
1554
 
 
1555
 
 
1556
 
#ifdef __cplusplus
1557
 
}
1558
 
#endif
1559
 
 
1560
 
#endif