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