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.
7
#ifndef _INTRINSIC_SQLEXT_H
8
#define _INTRINSIC_SQLEXT_H
12
#define SQL_STILL_EXECUTING 2
13
#define SQL_NEED_DATA 99
15
/* extend SQL datatypes */
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)
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
36
#define SQL_SIGNED_OFFSET (-20)
37
#define SQL_UNSIGNED_OFFSET (-22)
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
47
#if defined(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
56
#define SQL_ALL_TYPES 0
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
64
/* SQLSetParam extensions */
65
#define SQL_DEFAULT_PARAM (-5)
66
#define SQL_IGNORE (-6)
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
93
#define SQL_NUM_FUNCTIONS 23
95
#define SQL_EXT_API_START 40
97
#define SQL_API_SQLCOLUMNS 40
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
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
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)
136
#define SQL_API_ALL_FUNCTIONS 0
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
149
#define SQL_TXN_ISOLATION_OPTION 72
150
#define SQL_NON_NULLABLE_COLUMNS 75
152
#define SQL_DRIVER_HLIB 76
153
#define SQL_DRIVER_ODBC_VER 77
155
#define SQL_QUALIFIER_LOCATION 114
157
#define SQL_INFO_LAST SQL_QUALIFIER_LOCATION
159
#define SQL_INFO_DRIVER_START 1000
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
169
/* SQL_CURSOR_COMMIT_BEHAVIOR and SQL_CURSOR_ROLLBACK_BEHAVIOR values */
171
#define SQL_CB_DELETE 0x0000
172
#define SQL_CB_CLOSE 0x0001
173
#define SQL_CB_PRESERVE 0x0002
175
/* options for SQLGetStmtOption/SQLSetStmtOption */
176
#define SQL_QUERY_TIMEOUT 0
177
#define SQL_MAX_ROWS 1
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
193
#define SQL_STMT_OPT_MIN SQL_QUERY_TIMEOUT
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.
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 */
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
237
#define SQL_STMT_ATTR_MIN SQL_ATTR_QUERY_TIMEOUT
238
#define SQL_STMT_ATTR_MAX SQL_ATTR_ROWS_FETCHED_PTR
240
/* SQL_QUERY_TIMEOUT options */
241
#define SQL_QUERY_TIMEOUT_DEFAULT 0UL
243
/* SQL_MAX_ROWS options */
244
#define SQL_MAX_ROWS_DEFAULT 0UL
246
/* SQL_MAX_LENGTH options */
247
#define SQL_MAX_LENGTH_DEFAULT 0UL
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
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
271
#define SQL_CONN_OPT_MIN SQL_ACCESS_MODE
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
278
/* SQL_AUTOCOMMIT options */
279
#define SQL_AUTOCOMMIT_OFF 0UL
280
#define SQL_AUTOCOMMIT_ON 1UL
281
#define SQL_AUTOCOMMIT_DEFAULT SQL_AUTOCOMMIT_ON
283
/* SQL_LOGIN_TIMEOUT options */
284
#define SQL_LOGIN_TIMEOUT_DEFAULT 15UL
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"
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
298
/* Column types and scopes in SQLSpecialColumns. */
299
#define SQL_BEST_ROWID 1
302
#define SQL_SCOPE_CURROW 0
303
#define SQL_SCOPE_TRANSACTION 1
304
#define SQL_SCOPE_SESSION 2
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
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
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)
328
/* SQLStatistics flag values */
329
#define SQL_INDEX_UNIQUE 0
330
#define SQL_INDEX_ALL 1
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)
341
/* Everything below has been added to the original isqlext.h that comes
345
#define SCHAR signed char
347
#define DOUBLE double
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;
361
#ifdef GCC /* Because I know GCC supports 64 bit ints */
363
typedef long long int ODBCINT64;
364
typedef unsigned ODBCINT64 SQLUBIGINT;
365
typedef ODBCINT64 SQLBIGINT;
367
#else /* Used even on platforms with 64 bit ints
372
SQLUINTEGER dwLowWord;
373
SQLUINTEGER dwHighWord;
378
SQLUINTEGER dwLowWord;
379
SQLINTEGER dwHighWord;
383
typedef struct tagDATE_STRUCT
392
typedef struct tagTIME_STRUCT
401
typedef struct tagTIMESTAMP_STRUCT
409
SQLUINTEGER fraction;
412
SQL_TIMESTAMP_STRUCT;
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
418
typedef struct tagSQL_NUMERIC_STRUCT {
422
SQLCHAR val[SQL_MAX_NUMERIC_LEN];
423
} SQL_NUMERIC_STRUCT;
427
typedef struct tagSQLGUID
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
452
typedef struct tagSQL_YEAR_MONTH
456
} SQL_YEAR_MONTH_STRUCT;
458
typedef struct tagSQL_DAY_SECOND
464
SQLUINTEGER fraction;
465
} SQL_DAY_SECOND_STRUCT;
467
typedef struct tagSQL_INTERVAL_STRUCT
469
SQLINTERVAL interval_type;
470
SQLSMALLINT interval_sign;
473
SQL_YEAR_MONTH_STRUCT year_month;
474
SQL_DAY_SECOND_STRUCT day_second;
476
} SQL_INTERVAL_STRUCT;
478
#define SQL_MAX_OPTION_STRING_LENGTH 256
479
#define SQL_NUM_EXTENSIONS (SQL_EXT_API_LAST - SQL_EXT_API_START + 1)
481
/* defines for SQL datatypes */
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
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
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)
517
#define SQL_UNICODE (-95)
518
#define SQL_UNICODE_VARCHAR (-96)
519
#define SQL_UNICODE_LONGVARCHAR (-97)
520
#define SQL_UNICODE_CHAR SQL_UNICODE
522
/* C to SQL data types */
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
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)
548
#define SQL_FALSE 0UL
551
#define SQL_NO_TOTAL (-4)
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)
557
#define SQL_LEN_BINARY_ATTR_OFFSET (-100)
558
#define SQL_LEN_BINARY_ATTR(length) (-(length)+SQL_LEN_BINARY_ATTR_OFFSET)
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
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
575
/* SQLForeignKeys - Deferrability (ODBC 3.0) */
576
#define SQL_INITIALLY_DEFERRED 5
577
#define SQL_INITIALLY_IMMEDIATE 6
578
#define SQL_NOT_DEFFERABLE 2
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
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
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
692
#define SQL_OJ_CAPABILITIES 65003
694
#define SQL_MAX_SCHEMA_NAME_LEN SQL_MAX_OWNER_NAME_LEN
696
/* Bit Masks describing the behaviour of the GetInfo functions named above */
698
* alter table behaviour(4 byte val)
700
#define SQL_AT_ADD_COLUMN 0x00000001L
701
#define SQL_AT_DROP_COLUMN 0x00000002L
704
* BookMark Persistence, a SQLUINTEGER bitmask(ie 4 bytes)
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
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.
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
743
/* extras added in ODBC 3.0 */
744
#define SQL_CVT_INTERVAL_YEAR_MONTH 0x00080000L
745
#define SQL_CVT_INTERVAL_DAY_TIME 0x00100000L
748
* concat null behaviour(2 byte val)
750
#define SQL_CB_NULL 0x0000
751
#define SQL_CB_NON_NULL 0x0001
756
#define SQL_CN_NONE 0x0000
757
#define SQL_CN_DIFFERENT 0x0001
758
#define SQL_CN_ANY 0x0002
761
* Fetch Direction. A SQLINTEGER bitmask enumerating the supported fetch
762
* direction options. This information type has been deprecated in
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
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.
782
#define SQL_FN_CVT_CONVERT 0x00000001L
783
#define SQL_FN_CVT_CAST 0x00000002L
786
* File Usage. A SQLUSMALLINT indicating how a singel-tier driver treats
787
* files in a data source.
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
795
* GetData Extensions. A SQLUINTEGER(4 bytes) bitmask enumerating extensions
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
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
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
813
/* added in ODBC 3.0 */
814
#define SQL_GB_COLLATE 0x0004
817
* Identifier Case. A SQLUSMALLINT indicating how identifiers are handled.
819
#define SQL_IC_UPPER 0x0001
820
#define SQL_IC_LOWER 0x0002
821
#define SQL_IC_SENSITIVE 0x0003
822
#define SQL_IC_MIXED 0x0004
825
* Lock types. A SQLINTEGER bitmask enumerating the supported lock types for
826
* the fLock argument in SQLSetPos. Depreciated in 3.0.
828
#define SQL_LCK_NO_CHANGE 0x00000001L
829
#define SQL_LCK_EXCLUSIVE 0x00000002L
830
#define SQL_LCK_UNLOCK 0x00000004L
833
* Non Nullable Columns. A SQLUSMALLINT value indicating if the data source
834
* supports NOT NULL in columns.
836
#define SQL_NNC_NULL 0x0000
837
#define SQL_NNC_NON_NULL 0x0001
840
* Null Collation. A SQLUSMALLINT value specifying where NULLS are sorted in
843
#define SQL_NC_HIGH 0x0001
844
#define SQL_NC_LOW 0x0003
845
#define SQL_NC_START 0x0002
846
#define SQL_NC_END 0x0004
849
* Numeric Functions. A SQLUINTEGER bitmask enumerating the scalar numeric
850
* functions supported by the driver and associated data source.
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
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
880
* Outer Join Capabilites. A SQLUINTEGER bitmask enumerating the types of
881
* outer joins supported by the driver and data source.
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
892
* ODBC API Conformance. A SQLSMALLINT value indicating a drivers ODBC
893
* level conformance. Depreciated in 3.0.
895
#define SQL_OAC_NONE 0x0000
896
#define SQL_OAC_LEVEL1 0x0001
897
#define SQL_OAC_LEVEL2 0x0002
900
* ODBC SAG CLI Conformance. A SQLSMALLINT value indicating a drivers
901
* SAG CLI conformance.
903
#define SQL_OSCC_NOT_COMPLIANT 0x0000
904
#define SQL_OSCC_COMPLIANT 0x0001
907
* ODBC SQL Conformance. A SQLSMALLINT value indicating a drivers SQL
908
* grammar support. Depreciated in 3.0.
910
#define SQL_OSC_MINIMUM 0x0000
911
#define SQL_OSC_CORE 0x0001
912
#define SQL_OSC_EXTENDED 0x0002
915
* Owner Usage. A SQLUINTEGER bitmask.
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
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
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
934
* Pos. Operations. A SQLINTEGER bitmask enumerating the supported operations
935
* in SQLSetPos. Depreciated in ODBC 3.0.
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
946
#define SQL_ENTIRE_ROWSET 0
948
#define SQL_POSITION 0
949
#define SQL_REFRESH 1
955
* SQLSetPos Lock options
957
#define SQL_LOCK_NO_CHANGE 0
958
#define SQL_LOCK_EXCLUSIVE 1
959
#define SQL_LOCK_UNLOCK 2
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)
975
* Positioned Statements. A SQLINTEGER bitmask enumerating the supported
976
* positioned SQL statements.
978
#define SQL_PS_POSITIONED_DELETE 0x00000001L
979
#define SQL_PS_POSITIONED_UPDATE 0x00000002L
980
#define SQL_PS_SELECT_FOR_UPDATE 0x00000004L
982
/* Qualifier Location. A SQLUSMALLINT value indicating the position of the
983
* catalog in a qualified table name.
985
#define SQL_QL_START 0x0001
986
#define SQL_QL_END 0x0002
989
* Qualifier Usage. A SQLUINTEGER bitmask.
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
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
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
1009
* Scroll Concurrency. A SQLINTEGER bitmask enumerating the concurrency
1010
* control options supported for the cursor. Depreciated in ODBC 3.0.
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
1019
* Scroll Options. A SQLUINTEGER bitmask enumerating the scroll options
1020
* supported for scrollable cursors.
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
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
1034
#define SQL_SS_ADDITIONS 0x00000001L
1035
#define SQL_SS_DELETIONS 0x00000002L
1036
#define SQL_SS_UPDATES 0x00000004L
1039
* String Functions. A SQLUINTEGER bitmask enumerating the scalar string
1040
* functions supported by the driver and associated data source.
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
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
1070
* Subqueries. A SQLUINTEGER bitmask enumerating the predicates that support
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
1080
* System Functions. A SQLUINTEGER bitmask enumerating the scalar system
1081
* functions supported by the driver and associated data source.
1083
#define SQL_FN_SYS_USERNAME 0x00000001L
1084
#define SQL_FN_SYS_DBNAME 0x00000002L
1085
#define SQL_FN_SYS_IFNULL 0x00000004L
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.
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
1103
* Time/Date functions. A SQLUINTEGER bitmask enumerating the scalar date
1104
* and time functions supported by the driver and associated data source.
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
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
1131
* Transaction Capable. A SQLUSMALLINT value describing the transaction
1132
* support in the driver or data source.
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
1141
* Unions. A SQLUINTEGER bitmask enumerating the support for the UNION
1144
#define SQL_U_UNION 0x00000001L
1145
#define SQL_U_UNION_ALL 0x00000002L
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
1154
/* SQLProcedures: Type: Smallint */
1155
#define SQL_PT_UNKNOWN 0
1156
#define SQL_PT_PROCEDURE 1
1157
#define SQL_PT_FUNCTION 2
1159
/* SQLSpecialColumns: PSEUDO_COLUMN: Smallint */
1160
#define SQL_PC_UNKNOWN 0
1161
#define SQL_PC_PSEUDO 1
1162
#define SQL_PC_NOT_PSEUDO 2
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
1170
* SQLSet/GetStmtOptions: CONCURRENCY. A SQLUINTEGER. Note most of these
1171
* are above in the original isqlext.h code.
1173
#define SQL_CONCUR_DEFAULT SQL_CONCUR_READ_ONLY
1176
* SQLSet/GetStmtOptions: CURSOR_SCROLLABLE. A SQLUINTEGER. Added in ODBC
1179
#define SQL_NONSCROLLABLE 0UL
1180
#define SQL_SCROLLABLE 1UL
1181
#define SQL_CURSOR_SCROLLABLE_DEFAULT SQL_NONSCROLLABLE
1184
* SQLSet/GetStmtOptions: CURSOR_SENSITITY. A SQLUINTEGER. Added in ODBC
1187
#define SQL_UNSPECIFIED 0UL
1188
#define SQL_INSENSITIVE 1UL
1189
#define SQL_SENSITIVIE 2UL
1190
#define SQL_CURSOR_SENSITIVITY_DEFAULT SQL_UNSPECIFIED
1193
* SQLSet/GetStmtOptions: CURSOR_TYPE: A SQLUINTEGER value that specifies the
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
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.
1208
* METADATA_ID: A SQLUINTEGER, either SQL_TRUE or SQL_FALSE. Added in
1211
#define SQL_ATTR_METADATA_ID_DEFAULT SQL_FALSE
1214
* SQLSet/GetStmtOptions: NOSCAN. A SQLUINTEGER value that indicates whether
1215
* the driver should scan SQL strings for escape sequences.
1217
#define SQL_NOSCAN_OFF 0UL
1218
#define SQL_NOSCAN_ON 1UL
1219
#define SQL_NOSCAN_DEFAULT SQL_NOSCAN_OFF
1222
* SQLSet/GetStmtOptions: PARAM_OPERATION: SQLUSMALLINT *. Added in ODBC 3.0
1225
#define SQL_PARAM_PROCEED 0
1226
#define SQL_PARAM_IGNORE 1
1229
* SQLSet/GetStmtOptions: PARAM_STATUS: SQLUSMALLINT *. Added in ODBC 3.0
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
1239
* SQLSet/GetStmtOptions: RETRIEVE_DATA: SQLUINTEGER value.
1241
#define SQL_RD_OFF 0UL
1242
#define SQL_RD_ON 1UL
1243
#define SQL_RD_DEFAULT SQL_RD_ON
1246
* SQLSet/GetStmtOptions: BIND_TYPE: SQLUINTEGER. sets binding orientation.
1248
#define SQL_BIND_BY_COLUMN 0UL
1249
#define SQL_BIND_TYPE_DEFAULT SQL_BIND_BY_COLUMN
1252
* SQLSet/GetStmtOptions: ROW_OPERATION: SQLUSMALLINT *. Added in ODBC 3.0
1254
#define SQL_ROW_PROCEED 0
1255
#define SQL_ROW_IGNORE 1
1260
#define SQL_ROWSET_SIZE_DEFAULT 1UL
1265
#define SQL_KEYSET_SIZE_DEFAULT 0UL
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.
1272
#define SQL_SC_NON_UNIQUE 0UL
1273
#define SQL_SC_TRY_UNIQUE 1UL
1274
#define SQL_SC_UNIQUE 2UL
1277
* SQLSet/GetStmtOptions: USE_BOOKMARKS: SQLUINTEGER value that specifies
1278
* whether an application will use bookmarks with a cursor.
1280
#define SQL_UB_OFF 0UL
1281
#define SQL_UB_ON 1UL
1282
#define SQL_UB_FIXED SQL_UB_ON /* Deprecated in ODBC
1284
#define SQL_UB_VARIABLE 2UL /* Added in ODBC 3.0 */
1285
#define SQL_UB_DEFAULT SQL_UB_OFF
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)
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"
1345
RETCODE SQL_API SQLSetConnectOption(HDBC, UWORD, UDWORD);
1346
RETCODE SQL_API SQLNumResultCols(HSTMT, SWORD FAR *);
1349
* function prototypes previously missing from isqlext.h
1351
RETCODE SQL_API SQLColumns(HSTMT hstmt,
1352
UCHAR FAR * szTableQualifier,
1353
SWORD cbTableQualifier,
1354
UCHAR FAR * szTableOwner,
1356
UCHAR FAR * szTableName,
1358
UCHAR FAR * szColumnName,
1359
SWORD cbColumnName);
1361
RETCODE SQL_API SQLDriverConnect(HDBC hdbc,
1363
UCHAR FAR * szConnStrIn,
1365
UCHAR FAR * szConnStrOut,
1366
SWORD cbConnStrOutMax,
1367
SWORD FAR * pcbConnStrOut,
1368
UWORD fDriverCompletion);
1370
RETCODE SQL_API SQLGetConnectOption(HDBC hdbc,
1374
RETCODE SQL_API SQLGetData(HSTMT hstmt,
1379
SDWORD FAR * pcbValue);
1381
RETCODE SQL_API SQLGetFunctions(HDBC hdbc,
1383
UWORD FAR * pfExists);
1385
RETCODE SQL_API SQLGetInfo(HDBC hdbc,
1388
SWORD cbInfoValueMax,
1389
SWORD FAR * pcbInfoValue);
1391
RETCODE SQL_API SQLGetStmtOption(HSTMT hstmt,
1395
RETCODE SQL_API SQLGetTypeInfo(HSTMT hstmt,
1398
RETCODE SQL_API SQLParamData(HSTMT hstmt,
1399
PTR FAR * prgbValue);
1401
RETCODE SQL_API SQLPutData(HSTMT hstmt,
1405
RETCODE SQL_API SQLSetStmtOption(HSTMT hstmt,
1409
RETCODE SQL_API SQLSpecialColumns(HSTMT hstmt,
1411
UCHAR FAR * szTableQualifier,
1412
SWORD cbTableQualifier,
1413
UCHAR FAR * szTableOwner,
1415
UCHAR FAR * szTableName,
1420
RETCODE SQL_API SQLStatistics(HSTMT hstmt,
1421
UCHAR FAR * szTableQualifier,
1422
SWORD cbTableQualifier,
1423
UCHAR FAR * szTableOwner,
1425
UCHAR FAR * szTableName,
1430
RETCODE SQL_API SQLTables(HSTMT hstmt,
1431
UCHAR FAR * szTableQualifier,
1432
SWORD cbTableQualifier,
1433
UCHAR FAR * szTableOwner,
1435
UCHAR FAR * szTableName,
1437
UCHAR FAR * szTableType,
1440
RETCODE SQL_API SQLBrowseConnect(HDBC hdbc,
1441
UCHAR FAR * szConnStrIn,
1443
UCHAR FAR * szConnStrOut,
1444
SWORD cbConnStrOutMax,
1445
SWORD FAR * pcbConnStrOut);
1447
RETCODE SQL_API SQLColumnPrivileges(HSTMT hstmt,
1448
UCHAR FAR * szTableQualifier,
1449
SWORD cbTableQualifier,
1450
UCHAR FAR * szTableOwner,
1452
UCHAR FAR * szTableName,
1454
UCHAR FAR * szColumnName,
1455
SWORD cbColumnName);
1457
RETCODE SQL_API SQLDescribeParam(HSTMT hstmt,
1459
SWORD FAR * pfSqlType,
1460
UDWORD FAR * pcbColDef,
1461
SWORD FAR * pibScale,
1462
SWORD FAR * pfNullable);
1464
RETCODE SQL_API SQLExtendedFetch(HSTMT hstmt,
1468
UWORD FAR * rgfRowStatus);
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);
1484
RETCODE SQL_API SQLMoreResults(HSTMT hstmt);
1486
RETCODE SQL_API SQLNativeSql(HDBC hdbc,
1487
UCHAR FAR * szSqlStrIn,
1489
UCHAR FAR * szSqlStr,
1491
SDWORD FAR * pcbSqlStr);
1493
RETCODE SQL_API SQLNumParams(HSTMT hstmt,
1496
RETCODE SQL_API SQLParamOptions(HSTMT hstmt,
1498
UDWORD FAR * pirow);
1500
RETCODE SQL_API SQLPrimaryKeys(HSTMT hstmt,
1501
UCHAR FAR * szTableQualifier,
1502
SWORD cbTableQualifier,
1503
UCHAR FAR * szTableOwner,
1505
UCHAR FAR * szTableName,
1508
RETCODE SQL_API SQLProcedureColumns(HSTMT hstmt,
1509
UCHAR FAR * szProcQualifier,
1510
SWORD cbProcQualifier,
1511
UCHAR FAR * szProcOwner,
1513
UCHAR FAR * szProcName,
1515
UCHAR FAR * szColumnName,
1516
SWORD cbColumnName);
1518
RETCODE SQL_API SQLProcedures(HSTMT hstmt,
1519
UCHAR FAR * szProcQualifier,
1520
SWORD cbProcQualifier,
1521
UCHAR FAR * szProcOwner,
1523
UCHAR FAR * szProcName,
1526
RETCODE SQL_API SQLSetPos(HSTMT hstmt,
1531
RETCODE SQL_API SQLTablePrivileges(HSTMT hstmt,
1532
UCHAR FAR * szTableQualifier,
1533
SWORD cbTableQualifier,
1534
UCHAR FAR * szTableOwner,
1536
UCHAR FAR * szTableName,
1539
RETCODE SQL_API SQLBindParameter(HSTMT hstmt,
1548
SDWORD FAR * pcbValue);
1550
RETCODE SQL_API SQLSetScrollOptions(HSTMT hstmt,