1/*
2 * sql.h
3 *
4 * $Id$
5 *
6 * ODBC defines
7 *
8 * The iODBC driver manager.
9 *
10 * Copyright (C) 1995 by Ke Jin <kejin@empress.com>
11 * Copyright (C) 1996-2012 by OpenLink Software <iodbc@openlinksw.com>
12 * All Rights Reserved.
13 *
14 * This software is released under the terms of either of the following
15 * licenses:
16 *
17 * - GNU Library General Public License (see LICENSE.LGPL)
18 * - The BSD License (see LICENSE.BSD).
19 *
20 * Note that the only valid version of the LGPL license as far as this
21 * project is concerned is the original GNU Library General Public License
22 * Version 2, dated June 1991.
23 *
24 * While not mandated by the BSD license, any patches you make to the
25 * iODBC source code may be contributed back into the iODBC project
26 * at your discretion. Contributions will benefit the Open Source and
27 * Data Access community as a whole. Submissions may be made at:
28 *
29 * http://www.iodbc.org
30 *
31 *
32 * GNU Library Generic Public License Version 2
33 * ============================================
34 * This library is free software; you can redistribute it and/or
35 * modify it under the terms of the GNU Library General Public
36 * License as published by the Free Software Foundation; only
37 * Version 2 of the License dated June 1991.
38 *
39 * This library is distributed in the hope that it will be useful,
40 * but WITHOUT ANY WARRANTY; without even the implied warranty of
41 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
42 * Library General Public License for more details.
43 *
44 * You should have received a copy of the GNU Library General Public
45 * License along with this library; if not, write to the Free
46 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
47 *
48 *
49 * The BSD License
50 * ===============
51 * Redistribution and use in source and binary forms, with or without
52 * modification, are permitted provided that the following conditions
53 * are met:
54 *
55 * 1. Redistributions of source code must retain the above copyright
56 * notice, this list of conditions and the following disclaimer.
57 * 2. Redistributions in binary form must reproduce the above copyright
58 * notice, this list of conditions and the following disclaimer in
59 * the documentation and/or other materials provided with the
60 * distribution.
61 * 3. Neither the name of OpenLink Software Inc. nor the names of its
62 * contributors may be used to endorse or promote products derived
63 * from this software without specific prior written permission.
64 *
65 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
66 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
67 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
68 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL OPENLINK OR
69 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
70 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
71 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
72 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
73 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
74 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
75 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
76 */
77
78#ifndef _SQL_H
79#define _SQL_H
80
81/*
82 * Set default specification to ODBC 3.51
83 */
84#ifndef ODBCVER
85#define ODBCVER 0x0351
86#endif
87
88#ifndef _SQLTYPES_H
89#include <sqltypes.h>
90#endif
91
92#ifdef __cplusplus
93extern "C" {
94#endif
95
96/*
97 * Useful Constants
98 */
99#define SQL_MAX_MESSAGE_LENGTH 512
100
101
102/*
103 * Handle types
104 */
105#if (ODBCVER >= 0x0300)
106#define SQL_HANDLE_ENV 1
107#define SQL_HANDLE_DBC 2
108#define SQL_HANDLE_STMT 3
109#define SQL_HANDLE_DESC 4
110#endif /* ODBCVER >= 0x0300 */
111
112
113/*
114 * Function return codes
115 */
116#define SQL_SUCCESS 0
117#define SQL_SUCCESS_WITH_INFO 1
118#define SQL_STILL_EXECUTING 2
119#define SQL_ERROR (-1)
120#define SQL_INVALID_HANDLE (-2)
121#define SQL_NEED_DATA 99
122#if (ODBCVER >= 0x0300)
123#define SQL_NO_DATA 100
124#endif /* ODBCVER >= 0x0300 */
125
126
127/*
128 * Test for SQL_SUCCESS or SQL_SUCCESS_WITH_INFO
129 */
130#define SQL_SUCCEEDED(rc) (((rc) & (~1)) == 0)
131
132
133/*
134 * Special length values
135 */
136#define SQL_NULL_DATA (-1)
137#define SQL_DATA_AT_EXEC (-2)
138
139
140/*
141 * Flags for null-terminated strings
142 */
143#define SQL_NTS (-3)
144#define SQL_NTSL (-3L)
145
146
147/*
148 * Standard SQL datatypes, using ANSI type numbering
149 */
150#define SQL_UNKNOWN_TYPE 0
151#define SQL_CHAR 1
152#define SQL_NUMERIC 2
153#define SQL_DECIMAL 3
154#define SQL_INTEGER 4
155#define SQL_SMALLINT 5
156#define SQL_FLOAT 6
157#define SQL_REAL 7
158#define SQL_DOUBLE 8
159#if (ODBCVER >= 0x0300)
160#define SQL_DATETIME 9
161#endif /* ODBCVER >= 0x0300 */
162#define SQL_VARCHAR 12
163
164
165/*
166 * SQLGetTypeInfo request for all data types
167 */
168#define SQL_ALL_TYPES 0
169
170
171/*
172 * Statement attribute values for date/time data types
173 */
174#if (ODBCVER >= 0x0300)
175#define SQL_TYPE_DATE 91
176#define SQL_TYPE_TIME 92
177#define SQL_TYPE_TIMESTAMP 93
178#endif /* ODBCVER >= 0x0300 */
179
180
181/*
182 * Date/Time length constants
183 */
184#if (ODBCVER >= 0x0300)
185#define SQL_DATE_LEN 10
186#define SQL_TIME_LEN 8 /* add P+1 if prec >0 */
187#define SQL_TIMESTAMP_LEN 19 /* add P+1 if prec >0 */
188#endif /* ODBCVER >= 0x0300 */
189
190
191/*
192 * NULL status constants
193 */
194#define SQL_NO_NULLS 0
195#define SQL_NULLABLE 1
196#define SQL_NULLABLE_UNKNOWN 2
197
198
199/*
200 * NULL Handles
201 */
202#define SQL_NULL_HENV 0
203#define SQL_NULL_HDBC 0
204#define SQL_NULL_HSTMT 0
205#if (ODBCVER >= 0x0300)
206#define SQL_NULL_HDESC 0
207#endif /* ODBCVER >= 0x0300 */
208
209
210/*
211 * NULL handle for parent argument to SQLAllocHandle when allocating
212 * a SQLHENV
213 */
214#if (ODBCVER >= 0x0300)
215#define SQL_NULL_HANDLE 0L
216#endif /* ODBCVER >= 0x0300 */
217
218
219/*
220 * CLI option values
221 */
222#if (ODBCVER >= 0x0300)
223#define SQL_FALSE 0
224#define SQL_TRUE 1
225#endif /* ODBCVER >= 0x0300 */
226
227
228/*
229 * Default conversion code for SQLBindCol(), SQLBindParam() and SQLGetData()
230 */
231#if (ODBCVER >= 0x0300)
232#define SQL_DEFAULT 99
233#endif /* ODBCVER >= 0x0300 */
234
235
236/*
237 * SQLDataSources/SQLFetchScroll - FetchOrientation
238 */
239#define SQL_FETCH_NEXT 1
240#define SQL_FETCH_FIRST 2
241
242
243/*
244 * SQLFetchScroll - FetchOrientation
245 */
246#define SQL_FETCH_LAST 3
247#define SQL_FETCH_PRIOR 4
248#define SQL_FETCH_ABSOLUTE 5
249#define SQL_FETCH_RELATIVE 6
250
251
252/*
253 * SQLFreeStmt
254 */
255#define SQL_CLOSE 0
256#define SQL_DROP 1
257#define SQL_UNBIND 2
258#define SQL_RESET_PARAMS 3
259
260
261/*
262 * SQLGetConnectAttr - connection attributes
263 */
264#if (ODBCVER >= 0x0300)
265#define SQL_ATTR_AUTO_IPD 10001
266#define SQL_ATTR_METADATA_ID 10014
267#endif /* ODBCVER >= 0x0300 */
268
269
270/*
271 * SQLGetData() code indicating that the application row descriptor
272 * specifies the data type
273 */
274#if (ODBCVER >= 0x0300)
275#define SQL_ARD_TYPE (-99)
276#endif /* ODBCVER >= 0x0300 */
277
278
279/*
280 * SQLGetDescField - identifiers of fields in the SQL descriptor
281 */
282#if (ODBCVER >= 0x0300)
283#define SQL_DESC_COUNT 1001
284#define SQL_DESC_TYPE 1002
285#define SQL_DESC_LENGTH 1003
286#define SQL_DESC_OCTET_LENGTH_PTR 1004
287#define SQL_DESC_PRECISION 1005
288#define SQL_DESC_SCALE 1006
289#define SQL_DESC_DATETIME_INTERVAL_CODE 1007
290#define SQL_DESC_NULLABLE 1008
291#define SQL_DESC_INDICATOR_PTR 1009
292#define SQL_DESC_DATA_PTR 1010
293#define SQL_DESC_NAME 1011
294#define SQL_DESC_UNNAMED 1012
295#define SQL_DESC_OCTET_LENGTH 1013
296#define SQL_DESC_ALLOC_TYPE 1099
297#endif /* ODBCVER >= 0x0300 */
298
299
300/*
301 * SQLGetDescField - SQL_DESC_ALLOC_TYPE
302 */
303#if (ODBCVER >= 0x0300)
304#define SQL_DESC_ALLOC_AUTO 1
305#define SQL_DESC_ALLOC_USER 2
306#endif /* ODBCVER >= 0x0300 */
307
308
309/*
310 * SQLGetDescField - SQL_DESC_DATETIME_INTERVAL_CODE
311 */
312#if (ODBCVER >= 0x0300)
313#define SQL_CODE_DATE 1
314#define SQL_CODE_TIME 2
315#define SQL_CODE_TIMESTAMP 3
316#endif /* ODBCVER >= 0x0300 */
317
318
319/*
320 * SQLGetDescField - SQL_DESC_UNNAMED
321 */
322#if (ODBCVER >= 0x0300)
323#define SQL_NAMED 0
324#define SQL_UNNAMED 1
325#endif /* ODBCVER >= 0x0300 */
326
327
328/*
329 * SQLGetDiagField - identifiers of fields in the diagnostics area
330 */
331#if (ODBCVER >= 0x0300)
332#define SQL_DIAG_RETURNCODE 1
333#define SQL_DIAG_NUMBER 2
334#define SQL_DIAG_ROW_COUNT 3
335#define SQL_DIAG_SQLSTATE 4
336#define SQL_DIAG_NATIVE 5
337#define SQL_DIAG_MESSAGE_TEXT 6
338#define SQL_DIAG_DYNAMIC_FUNCTION 7
339#define SQL_DIAG_CLASS_ORIGIN 8
340#define SQL_DIAG_SUBCLASS_ORIGIN 9
341#define SQL_DIAG_CONNECTION_NAME 10
342#define SQL_DIAG_SERVER_NAME 11
343#define SQL_DIAG_DYNAMIC_FUNCTION_CODE 12
344#endif /* ODBCVER >= 0x0300 */
345
346
347/*
348 * SQLGetDiagField - SQL_DIAG_DYNAMIC_FUNCTION_CODE
349 */
350#if (ODBCVER >= 0x0300)
351#define SQL_DIAG_ALTER_DOMAIN 3
352#define SQL_DIAG_ALTER_TABLE 4
353#define SQL_DIAG_CALL 7
354#define SQL_DIAG_CREATE_ASSERTION 6
355#define SQL_DIAG_CREATE_CHARACTER_SET 8
356#define SQL_DIAG_CREATE_COLLATION 10
357#define SQL_DIAG_CREATE_DOMAIN 23
358#define SQL_DIAG_CREATE_INDEX (-1)
359#define SQL_DIAG_CREATE_SCHEMA 64
360#define SQL_DIAG_CREATE_TABLE 77
361#define SQL_DIAG_CREATE_TRANSLATION 79
362#define SQL_DIAG_CREATE_VIEW 84
363#define SQL_DIAG_DELETE_WHERE 19
364#define SQL_DIAG_DROP_ASSERTION 24
365#define SQL_DIAG_DROP_CHARACTER_SET 25
366#define SQL_DIAG_DROP_COLLATION 26
367#define SQL_DIAG_DROP_DOMAIN 27
368#define SQL_DIAG_DROP_INDEX (-2)
369#define SQL_DIAG_DROP_SCHEMA 31
370#define SQL_DIAG_DROP_TABLE 32
371#define SQL_DIAG_DROP_TRANSLATION 33
372#define SQL_DIAG_DROP_VIEW 36
373#define SQL_DIAG_DYNAMIC_DELETE_CURSOR 38
374#define SQL_DIAG_DYNAMIC_UPDATE_CURSOR 81
375#define SQL_DIAG_GRANT 48
376#define SQL_DIAG_INSERT 50
377#define SQL_DIAG_REVOKE 59
378#define SQL_DIAG_SELECT_CURSOR 85
379#define SQL_DIAG_UNKNOWN_STATEMENT 0
380#define SQL_DIAG_UPDATE_WHERE 82
381#endif /* ODBCVER >= 0x0300 */
382
383
384/*
385 * SQLGetEnvAttr - environment attribute
386 */
387#if (ODBCVER >= 0x0300)
388#define SQL_ATTR_OUTPUT_NTS 10001
389#endif /* ODBCVER >= 0x0300 */
390
391
392/*
393 * SQLGetFunctions
394 */
395#define SQL_API_SQLALLOCCONNECT 1
396#define SQL_API_SQLALLOCENV 2
397#if (ODBCVER >= 0x0300)
398#define SQL_API_SQLALLOCHANDLE 1001
399#endif /* ODBCVER >= 0x0300 */
400#define SQL_API_SQLALLOCSTMT 3
401#define SQL_API_SQLBINDCOL 4
402#if (ODBCVER >= 0x0300)
403#define SQL_API_SQLBINDPARAM 1002
404#endif /* ODBCVER >= 0x0300 */
405#define SQL_API_SQLCANCEL 5
406#if (ODBCVER >= 0x0300)
407#define SQL_API_SQLCLOSECURSOR 1003
408#define SQL_API_SQLCOLATTRIBUTE 6
409#endif /* ODBCVER >= 0x0300 */
410#define SQL_API_SQLCOLUMNS 40
411#define SQL_API_SQLCONNECT 7
412#if (ODBCVER >= 0x0300)
413#define SQL_API_SQLCOPYDESC 1004
414#endif /* ODBCVER >= 0x0300 */
415#define SQL_API_SQLDATASOURCES 57
416#define SQL_API_SQLDESCRIBECOL 8
417#define SQL_API_SQLDISCONNECT 9
418#if (ODBCVER >= 0x0300)
419#define SQL_API_SQLENDTRAN 1005
420#endif /* ODBCVER >= 0x0300 */
421#define SQL_API_SQLERROR 10
422#define SQL_API_SQLEXECDIRECT 11
423#define SQL_API_SQLEXECUTE 12
424#define SQL_API_SQLFETCH 13
425#if (ODBCVER >= 0x0300)
426#define SQL_API_SQLFETCHSCROLL 1021
427#endif /* ODBCVER >= 0x0300 */
428#define SQL_API_SQLFREECONNECT 14
429#define SQL_API_SQLFREEENV 15
430#if (ODBCVER >= 0x0300)
431#define SQL_API_SQLFREEHANDLE 1006
432#endif /* ODBCVER >= 0x0300 */
433#define SQL_API_SQLFREESTMT 16
434#if (ODBCVER >= 0x0300)
435#define SQL_API_SQLGETCONNECTATTR 1007
436#endif /* ODBCVER >= 0x0300 */
437#define SQL_API_SQLGETCONNECTOPTION 42
438#define SQL_API_SQLGETCURSORNAME 17
439#define SQL_API_SQLGETDATA 43
440#if (ODBCVER >= 0x0300)
441#define SQL_API_SQLGETDESCFIELD 1008
442#define SQL_API_SQLGETDESCREC 1009
443#define SQL_API_SQLGETDIAGFIELD 1010
444#define SQL_API_SQLGETDIAGREC 1011
445#define SQL_API_SQLGETENVATTR 1012
446#endif /* ODBCVER >= 0x0300 */
447#define SQL_API_SQLGETFUNCTIONS 44
448#define SQL_API_SQLGETINFO 45
449#if (ODBCVER >= 0x0300)
450#define SQL_API_SQLGETSTMTATTR 1014
451#endif /* ODBCVER >= 0x0300 */
452#define SQL_API_SQLGETSTMTOPTION 46
453#define SQL_API_SQLGETTYPEINFO 47
454#define SQL_API_SQLNUMRESULTCOLS 18
455#define SQL_API_SQLPARAMDATA 48
456#define SQL_API_SQLPREPARE 19
457#define SQL_API_SQLPUTDATA 49
458#define SQL_API_SQLROWCOUNT 20
459#if (ODBCVER >= 0x0300)
460#define SQL_API_SQLSETCONNECTATTR 1016
461#endif /* ODBCVER >= 0x0300 */
462#define SQL_API_SQLSETCONNECTOPTION 50
463#define SQL_API_SQLSETCURSORNAME 21
464#if (ODBCVER >= 0x0300)
465#define SQL_API_SQLSETDESCFIELD 1017
466#define SQL_API_SQLSETDESCREC 1018
467#define SQL_API_SQLSETENVATTR 1019
468#endif /* ODBCVER >= 0x0300 */
469#define SQL_API_SQLSETPARAM 22
470#if (ODBCVER >= 0x0300)
471#define SQL_API_SQLSETSTMTATTR 1020
472#endif /* ODBCVER >= 0x0300 */
473#define SQL_API_SQLSETSTMTOPTION 51
474#define SQL_API_SQLSPECIALCOLUMNS 52
475#define SQL_API_SQLSTATISTICS 53
476#define SQL_API_SQLTABLES 54
477#define SQL_API_SQLTRANSACT 23
478
479
480/*
481 * SQLGetInfo
482 */
483#if (ODBCVER >= 0x0300)
484#define SQL_MAX_DRIVER_CONNECTIONS 0
485#define SQL_MAXIMUM_DRIVER_CONNECTIONS SQL_MAX_DRIVER_CONNECTIONS
486#define SQL_MAX_CONCURRENT_ACTIVITIES 1
487#define SQL_MAXIMUM_CONCURRENT_ACTIVITIES SQL_MAX_CONCURRENT_ACTIVITIES
488#endif /* ODBCVER >= 0x0300 */
489#define SQL_DATA_SOURCE_NAME 2
490#define SQL_FETCH_DIRECTION 8
491#define SQL_SERVER_NAME 13
492#define SQL_SEARCH_PATTERN_ESCAPE 14
493#define SQL_DBMS_NAME 17
494#define SQL_DBMS_VER 18
495#define SQL_ACCESSIBLE_TABLES 19
496#define SQL_ACCESSIBLE_PROCEDURES 20
497#define SQL_CURSOR_COMMIT_BEHAVIOR 23
498#define SQL_DATA_SOURCE_READ_ONLY 25
499#define SQL_DEFAULT_TXN_ISOLATION 26
500#define SQL_IDENTIFIER_CASE 28
501#define SQL_IDENTIFIER_QUOTE_CHAR 29
502#define SQL_MAX_COLUMN_NAME_LEN 30
503#define SQL_MAXIMUM_COLUMN_NAME_LENGTH SQL_MAX_COLUMN_NAME_LEN
504#define SQL_MAX_CURSOR_NAME_LEN 31
505#define SQL_MAXIMUM_CURSOR_NAME_LENGTH SQL_MAX_CURSOR_NAME_LEN
506#define SQL_MAX_SCHEMA_NAME_LEN 32
507#define SQL_MAXIMUM_SCHEMA_NAME_LENGTH SQL_MAX_SCHEMA_NAME_LEN
508#define SQL_MAX_CATALOG_NAME_LEN 34
509#define SQL_MAXIMUM_CATALOG_NAME_LENGTH SQL_MAX_CATALOG_NAME_LEN
510#define SQL_MAX_TABLE_NAME_LEN 35
511#define SQL_SCROLL_CONCURRENCY 43
512#define SQL_TXN_CAPABLE 46
513#define SQL_TRANSACTION_CAPABLE SQL_TXN_CAPABLE
514#define SQL_USER_NAME 47
515#define SQL_TXN_ISOLATION_OPTION 72
516#define SQL_TRANSACTION_ISOLATION_OPTION SQL_TXN_ISOLATION_OPTION
517#define SQL_INTEGRITY 73
518#define SQL_GETDATA_EXTENSIONS 81
519#define SQL_NULL_COLLATION 85
520#define SQL_ALTER_TABLE 86
521#define SQL_ORDER_BY_COLUMNS_IN_SELECT 90
522#define SQL_SPECIAL_CHARACTERS 94
523#define SQL_MAX_COLUMNS_IN_GROUP_BY 97
524#define SQL_MAXIMUM_COLUMNS_IN_GROUP_BY SQL_MAX_COLUMNS_IN_GROUP_BY
525#define SQL_MAX_COLUMNS_IN_INDEX 98
526#define SQL_MAXIMUM_COLUMNS_IN_INDEX SQL_MAX_COLUMNS_IN_INDEX
527#define SQL_MAX_COLUMNS_IN_ORDER_BY 99
528#define SQL_MAXIMUM_COLUMNS_IN_ORDER_BY SQL_MAX_COLUMNS_IN_ORDER_BY
529#define SQL_MAX_COLUMNS_IN_SELECT 100
530#define SQL_MAXIMUM_COLUMNS_IN_SELECT SQL_MAX_COLUMNS_IN_SELECT
531#define SQL_MAX_COLUMNS_IN_TABLE 101
532#define SQL_MAX_INDEX_SIZE 102
533#define SQL_MAXIMUM_INDEX_SIZE SQL_MAX_INDEX_SIZE
534#define SQL_MAX_ROW_SIZE 104
535#define SQL_MAXIMUM_ROW_SIZE SQL_MAX_ROW_SIZE
536#define SQL_MAX_STATEMENT_LEN 105
537#define SQL_MAXIMUM_STATEMENT_LENGTH SQL_MAX_STATEMENT_LEN
538#define SQL_MAX_TABLES_IN_SELECT 106
539#define SQL_MAXIMUM_TABLES_IN_SELECT SQL_MAX_TABLES_IN_SELECT
540#define SQL_MAX_USER_NAME_LEN 107
541#define SQL_MAXIMUM_USER_NAME_LENGTH SQL_MAX_USER_NAME_LEN
542#if (ODBCVER >= 0x0300)
543#define SQL_OJ_CAPABILITIES 115
544#define SQL_OUTER_JOIN_CAPABILITIES SQL_OJ_CAPABILITIES
545#endif /* ODBCVER >= 0x0300 */
546
547#if (ODBCVER >= 0x0300)
548#define SQL_XOPEN_CLI_YEAR 10000
549#define SQL_CURSOR_SENSITIVITY 10001
550#define SQL_DESCRIBE_PARAMETER 10002
551#define SQL_CATALOG_NAME 10003
552#define SQL_COLLATION_SEQ 10004
553#define SQL_MAX_IDENTIFIER_LEN 10005
554#define SQL_MAXIMUM_IDENTIFIER_LENGTH SQL_MAX_IDENTIFIER_LEN
555#endif /* ODBCVER >= 0x0300 */
556
557
558/*
559 * SQLGetInfo - SQL_ALTER_TABLE
560 */
561#if (ODBCVER >= 0x0200)
562#define SQL_AT_ADD_COLUMN 0x00000001L
563#define SQL_AT_DROP_COLUMN 0x00000002L
564#endif /* ODBCVER >= 0x0300 */
565
566#if (ODBCVER >= 0x0300)
567#define SQL_AT_ADD_CONSTRAINT 0x00000008L
568/*
569 * The following bitmasks are ODBC extensions and defined in sqlext.h:
570 *
571 * #define SQL_AT_COLUMN_SINGLE 0x00000020L
572 * #define SQL_AT_ADD_COLUMN_DEFAULT 0x00000040L
573 * #define SQL_AT_ADD_COLUMN_COLLATION 0x00000080L
574 * #define SQL_AT_SET_COLUMN_DEFAULT 0x00000100L
575 * #define SQL_AT_DROP_COLUMN_DEFAULT 0x00000200L
576 * #define SQL_AT_DROP_COLUMN_CASCADE 0x00000400L
577 * #define SQL_AT_DROP_COLUMN_RESTRICT 0x00000800L
578 * #define SQL_AT_ADD_TABLE_CONSTRAINT 0x00001000L
579 * #define SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE 0x00002000L
580 * #define SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT 0x00004000L
581 * #define SQL_AT_CONSTRAINT_NAME_DEFINITION 0x00008000L
582 * #define SQL_AT_CONSTRAINT_INITIALLY_DEFERRED 0x00010000L
583 * #define SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE 0x00020000L
584 * #define SQL_AT_CONSTRAINT_DEFERRABLE 0x00040000L
585 * #define SQL_AT_CONSTRAINT_NON_DEFERRABLE 0x00080000L
586 */
587#endif /* ODBCVER >= 0x0300 */
588
589
590/*
591 * SQLGetInfo - SQL_ASYNC_MODE
592 */
593#if (ODBCVER >= 0x0300)
594#define SQL_AM_NONE 0
595#define SQL_AM_CONNECTION 1
596#define SQL_AM_STATEMENT 2
597#endif /* ODBCVER >= 0x0300 */
598
599
600/*
601 * SQLGetInfo - SQL_CURSOR_COMMIT_BEHAVIOR
602 */
603#define SQL_CB_DELETE 0
604#define SQL_CB_CLOSE 1
605#define SQL_CB_PRESERVE 2
606
607
608/*
609 * SQLGetInfo - SQL_FETCH_DIRECTION
610 */
611#define SQL_FD_FETCH_NEXT 0x00000001L
612#define SQL_FD_FETCH_FIRST 0x00000002L
613#define SQL_FD_FETCH_LAST 0x00000004L
614#define SQL_FD_FETCH_PRIOR 0x00000008L
615#define SQL_FD_FETCH_ABSOLUTE 0x00000010L
616#define SQL_FD_FETCH_RELATIVE 0x00000020L
617
618
619/*
620 * SQLGetInfo - SQL_GETDATA_EXTENSIONS
621 */
622#define SQL_GD_ANY_COLUMN 0x00000001L
623#define SQL_GD_ANY_ORDER 0x00000002L
624
625
626/*
627 * SQLGetInfo - SQL_IDENTIFIER_CASE
628 */
629#define SQL_IC_UPPER 1
630#define SQL_IC_LOWER 2
631#define SQL_IC_SENSITIVE 3
632#define SQL_IC_MIXED 4
633
634
635/*
636 * SQLGetInfo - SQL_NULL_COLLATION
637 */
638#define SQL_NC_HIGH 0
639#define SQL_NC_LOW 1
640
641
642/*
643 * SQLGetInfo - SQL_OJ_CAPABILITIES
644 */
645#if (ODBCVER >= 0x0201)
646#define SQL_OJ_LEFT 0x00000001L
647#define SQL_OJ_RIGHT 0x00000002L
648#define SQL_OJ_FULL 0x00000004L
649#define SQL_OJ_NESTED 0x00000008L
650#define SQL_OJ_NOT_ORDERED 0x00000010L
651#define SQL_OJ_INNER 0x00000020L
652#define SQL_OJ_ALL_COMPARISON_OPS 0x00000040L
653#endif
654
655
656/*
657 * SQLGetInfo - SQL_SCROLL_CONCURRENCY
658 */
659#define SQL_SCCO_READ_ONLY 0x00000001L
660#define SQL_SCCO_LOCK 0x00000002L
661#define SQL_SCCO_OPT_ROWVER 0x00000004L
662#define SQL_SCCO_OPT_VALUES 0x00000008L
663
664
665/*
666 * SQLGetInfo - SQL_TXN_CAPABLE
667 */
668#define SQL_TC_NONE 0
669#define SQL_TC_DML 1
670#define SQL_TC_ALL 2
671#define SQL_TC_DDL_COMMIT 3
672#define SQL_TC_DDL_IGNORE 4
673
674
675/*
676 * SQLGetInfo - SQL_TXN_ISOLATION_OPTION
677 */
678#define SQL_TXN_READ_UNCOMMITTED 0x00000001L
679#define SQL_TRANSACTION_READ_UNCOMMITTED SQL_TXN_READ_UNCOMMITTED
680#define SQL_TXN_READ_COMMITTED 0x00000002L
681#define SQL_TRANSACTION_READ_COMMITTED SQL_TXN_READ_COMMITTED
682#define SQL_TXN_REPEATABLE_READ 0x00000004L
683#define SQL_TRANSACTION_REPEATABLE_READ SQL_TXN_REPEATABLE_READ
684#define SQL_TXN_SERIALIZABLE 0x00000008L
685#define SQL_TRANSACTION_SERIALIZABLE SQL_TXN_SERIALIZABLE
686
687
688/*
689 * SQLGetStmtAttr - statement attributes
690 */
691#if (ODBCVER >= 0x0300)
692#define SQL_ATTR_APP_ROW_DESC 10010
693#define SQL_ATTR_APP_PARAM_DESC 10011
694#define SQL_ATTR_IMP_ROW_DESC 10012
695#define SQL_ATTR_IMP_PARAM_DESC 10013
696#define SQL_ATTR_CURSOR_SCROLLABLE (-1)
697#define SQL_ATTR_CURSOR_SENSITIVITY (-2)
698#endif /* ODBCVER >= 0x0300 */
699
700
701/*
702 * SQLGetStmtAttr - SQL_ATTR_CURSOR_SCROLLABLE
703 */
704#if (ODBCVER >= 0x0300)
705#define SQL_NONSCROLLABLE 0
706#define SQL_SCROLLABLE 1
707#endif /* ODBCVER >= 0x0300 */
708
709
710/*
711 * SQLGetStmtAttr - SQL_ATTR_CURSOR_SENSITIVITY
712 */
713#if (ODBCVER >= 0x0300)
714#define SQL_UNSPECIFIED 0
715#define SQL_INSENSITIVE 1
716#define SQL_SENSITIVE 2
717#endif /* ODBCVER >= 0x0300 */
718
719
720/*
721 * SQLGetTypeInfo - SEARCHABLE
722 */
723#if (ODBCVER >= 0x0300)
724#define SQL_PRED_NONE 0
725#define SQL_PRED_CHAR 1
726#define SQL_PRED_BASIC 2
727#endif /* ODBCVER >= 0x0300 */
728
729
730/*
731 * SQLSpecialColumns - Column scopes
732 */
733#define SQL_SCOPE_CURROW 0
734#define SQL_SCOPE_TRANSACTION 1
735#define SQL_SCOPE_SESSION 2
736
737
738/*
739 * SQLSpecialColumns - PSEUDO_COLUMN
740 */
741#define SQL_PC_UNKNOWN 0
742#if (ODBCVER >= 0x0300)
743#define SQL_PC_NON_PSEUDO 1
744#endif /* ODBCVER >= 0x0300 */
745#define SQL_PC_PSEUDO 2
746
747
748/*
749 * SQLSpecialColumns - IdentifierType
750 */
751#if (ODBCVER >= 0x0300)
752#define SQL_ROW_IDENTIFIER 1
753#endif /* ODBCVER >= 0x0300 */
754
755
756/*
757 * SQLStatistics - fUnique
758 */
759#define SQL_INDEX_UNIQUE 0
760#define SQL_INDEX_ALL 1
761
762
763/*
764 * SQLStatistics - TYPE
765 */
766#define SQL_INDEX_CLUSTERED 1
767#define SQL_INDEX_HASHED 2
768#define SQL_INDEX_OTHER 3
769
770
771/*
772 * SQLTransact/SQLEndTran
773 */
774#define SQL_COMMIT 0
775#define SQL_ROLLBACK 1
776
777
778/*
779 * Function Prototypes
780 */
781SQLRETURN SQL_API SQLAllocConnect (
782 SQLHENV EnvironmentHandle,
783 SQLHDBC * ConnectionHandle);
784
785SQLRETURN SQL_API SQLAllocEnv (
786 SQLHENV * EnvironmentHandle);
787
788#if (ODBCVER >= 0x0300)
789SQLRETURN SQL_API SQLAllocHandle (
790 SQLSMALLINT HandleType,
791 SQLHANDLE InputHandle,
792 SQLHANDLE * OutputHandle);
793#endif /* ODBCVER >= 0x0300 */
794
795SQLRETURN SQL_API SQLAllocStmt (
796 SQLHDBC ConnectionHandle,
797 SQLHSTMT * StatementHandle);
798
799SQLRETURN SQL_API SQLBindCol (
800 SQLHSTMT StatementHandle,
801 SQLUSMALLINT ColumnNumber,
802 SQLSMALLINT TargetType,
803 SQLPOINTER TargetValue,
804 SQLLEN BufferLength,
805 SQLLEN * StrLen_or_Ind);
806
807#if (ODBCVER >= 0x0300)
808SQLRETURN SQL_API SQLBindParam (
809 SQLHSTMT StatementHandle,
810 SQLUSMALLINT ParameterNumber,
811 SQLSMALLINT ValueType,
812 SQLSMALLINT ParameterType,
813 SQLULEN LengthPrecision,
814 SQLSMALLINT ParameterScale,
815 SQLPOINTER ParameterValue,
816 SQLLEN * StrLen_or_Ind);
817#endif
818
819SQLRETURN SQL_API SQLCancel (
820 SQLHSTMT StatementHandle);
821
822#if (ODBCVER >= 0x0300)
823SQLRETURN SQL_API SQLCloseCursor (
824 SQLHSTMT StatementHandle);
825
826/*
827 * Using SQLLEN * instead of SQLPOINTER for NumericAttribute,
828 * makes the prototype the same as SQLColAttributes (deprecated)
829 * and clearer for 64bit ports
830 */
831SQLRETURN SQL_API SQLColAttribute (
832 SQLHSTMT StatementHandle,
833 SQLUSMALLINT ColumnNumber,
834 SQLUSMALLINT FieldIdentifier,
835 SQLPOINTER CharacterAttribute,
836 SQLSMALLINT BufferLength,
837 SQLSMALLINT * StringLength,
838 SQLLEN * NumericAttribute);
839#endif
840
841SQLRETURN SQL_API SQLColumns (
842 SQLHSTMT StatementHandle,
843 SQLCHAR * CatalogName,
844 SQLSMALLINT NameLength1,
845 SQLCHAR * SchemaName,
846 SQLSMALLINT NameLength2,
847 SQLCHAR * TableName,
848 SQLSMALLINT NameLength3,
849 SQLCHAR * ColumnName,
850 SQLSMALLINT NameLength4);
851
852SQLRETURN SQL_API SQLConnect (
853 SQLHDBC ConnectionHandle,
854 SQLCHAR * ServerName,
855 SQLSMALLINT NameLength1,
856 SQLCHAR * UserName,
857 SQLSMALLINT NameLength2,
858 SQLCHAR * Authentication,
859 SQLSMALLINT NameLength3);
860
861#if (ODBCVER >= 0x0300)
862SQLRETURN SQL_API SQLCopyDesc (
863 SQLHDESC SourceDescHandle,
864 SQLHDESC TargetDescHandle);
865#endif
866
867SQLRETURN SQL_API SQLDataSources (
868 SQLHENV EnvironmentHandle,
869 SQLUSMALLINT Direction,
870 SQLCHAR * ServerName,
871 SQLSMALLINT BufferLength1,
872 SQLSMALLINT * NameLength1,
873 SQLCHAR * Description,
874 SQLSMALLINT BufferLength2,
875 SQLSMALLINT * NameLength2);
876
877SQLRETURN SQL_API SQLDescribeCol (
878 SQLHSTMT StatementHandle,
879 SQLUSMALLINT ColumnNumber,
880 SQLCHAR * ColumnName,
881 SQLSMALLINT BufferLength,
882 SQLSMALLINT * NameLength,
883 SQLSMALLINT * DataType,
884 SQLULEN * ColumnSize,
885 SQLSMALLINT * DecimalDigits,
886 SQLSMALLINT * Nullable);
887
888SQLRETURN SQL_API SQLDisconnect (
889 SQLHDBC ConnectionHandle);
890
891#if (ODBCVER >= 0x0300)
892SQLRETURN SQL_API SQLEndTran (
893 SQLSMALLINT HandleType,
894 SQLHANDLE Handle,
895 SQLSMALLINT CompletionType);
896#endif
897
898SQLRETURN SQL_API SQLError (
899 SQLHENV EnvironmentHandle,
900 SQLHDBC ConnectionHandle,
901 SQLHSTMT StatementHandle,
902 SQLCHAR * Sqlstate,
903 SQLINTEGER * NativeError,
904 SQLCHAR * MessageText,
905 SQLSMALLINT BufferLength,
906 SQLSMALLINT * TextLength);
907
908SQLRETURN SQL_API SQLExecDirect (
909 SQLHSTMT StatementHandle,
910 SQLCHAR * StatementText,
911 SQLINTEGER TextLength);
912
913SQLRETURN SQL_API SQLExecute (
914 SQLHSTMT StatementHandle);
915
916SQLRETURN SQL_API SQLFetch (
917 SQLHSTMT StatementHandle);
918
919#if (ODBCVER >= 0x0300)
920SQLRETURN SQL_API SQLFetchScroll (
921 SQLHSTMT StatementHandle,
922 SQLSMALLINT FetchOrientation,
923 SQLLEN FetchOffset);
924#endif
925
926SQLRETURN SQL_API SQLFreeConnect (
927 SQLHDBC ConnectionHandle);
928
929SQLRETURN SQL_API SQLFreeEnv (
930 SQLHENV EnvironmentHandle);
931
932#if (ODBCVER >= 0x0300)
933SQLRETURN SQL_API SQLFreeHandle (
934 SQLSMALLINT HandleType,
935 SQLHANDLE Handle);
936#endif
937
938SQLRETURN SQL_API SQLFreeStmt (
939 SQLHSTMT StatementHandle,
940 SQLUSMALLINT Option);
941
942#if (ODBCVER >= 0x0300)
943SQLRETURN SQL_API SQLGetConnectAttr (
944 SQLHDBC ConnectionHandle,
945 SQLINTEGER Attribute,
946 SQLPOINTER Value,
947 SQLINTEGER BufferLength,
948 SQLINTEGER * StringLength);
949#endif
950
951SQLRETURN SQL_API SQLGetConnectOption (
952 SQLHDBC ConnectionHandle,
953 SQLUSMALLINT Option,
954 SQLPOINTER Value);
955
956SQLRETURN SQL_API SQLGetCursorName (
957 SQLHSTMT StatementHandle,
958 SQLCHAR * CursorName,
959 SQLSMALLINT BufferLength,
960 SQLSMALLINT * NameLength);
961
962SQLRETURN SQL_API SQLGetData (
963 SQLHSTMT StatementHandle,
964 SQLUSMALLINT ColumnNumber,
965 SQLSMALLINT TargetType,
966 SQLPOINTER TargetValue,
967 SQLLEN BufferLength,
968 SQLLEN * StrLen_or_Ind);
969
970#if (ODBCVER >= 0x0300)
971SQLRETURN SQL_API SQLGetDescField (
972 SQLHDESC DescriptorHandle,
973 SQLSMALLINT RecNumber,
974 SQLSMALLINT FieldIdentifier,
975 SQLPOINTER Value,
976 SQLINTEGER BufferLength,
977 SQLINTEGER * StringLength);
978
979SQLRETURN SQL_API SQLGetDescRec (
980 SQLHDESC DescriptorHandle,
981 SQLSMALLINT RecNumber,
982 SQLCHAR * Name,
983 SQLSMALLINT BufferLength,
984 SQLSMALLINT * StringLength,
985 SQLSMALLINT * Type,
986 SQLSMALLINT * SubType,
987 SQLLEN * Length,
988 SQLSMALLINT * Precision,
989 SQLSMALLINT * Scale,
990 SQLSMALLINT * Nullable);
991
992SQLRETURN SQL_API SQLGetDiagField (
993 SQLSMALLINT HandleType,
994 SQLHANDLE Handle,
995 SQLSMALLINT RecNumber,
996 SQLSMALLINT DiagIdentifier,
997 SQLPOINTER DiagInfo,
998 SQLSMALLINT BufferLength,
999 SQLSMALLINT * StringLength);
1000
1001SQLRETURN SQL_API SQLGetDiagRec (
1002 SQLSMALLINT HandleType,
1003 SQLHANDLE Handle,
1004 SQLSMALLINT RecNumber,
1005 SQLCHAR * Sqlstate,
1006 SQLINTEGER * NativeError,
1007 SQLCHAR * MessageText,
1008 SQLSMALLINT BufferLength,
1009 SQLSMALLINT * TextLength);
1010
1011SQLRETURN SQL_API SQLGetEnvAttr (
1012 SQLHENV EnvironmentHandle,
1013 SQLINTEGER Attribute,
1014 SQLPOINTER Value,
1015 SQLINTEGER BufferLength,
1016 SQLINTEGER * StringLength);
1017#endif /* ODBCVER >= 0x0300 */
1018
1019SQLRETURN SQL_API SQLGetFunctions (
1020 SQLHDBC ConnectionHandle,
1021 SQLUSMALLINT FunctionId,
1022 SQLUSMALLINT * Supported);
1023
1024SQLRETURN SQL_API SQLGetInfo (
1025 SQLHDBC ConnectionHandle,
1026 SQLUSMALLINT InfoType,
1027 SQLPOINTER InfoValue,
1028 SQLSMALLINT BufferLength,
1029 SQLSMALLINT * StringLength);
1030
1031#if (ODBCVER >= 0x0300)
1032SQLRETURN SQL_API SQLGetStmtAttr (
1033 SQLHSTMT StatementHandle,
1034 SQLINTEGER Attribute,
1035 SQLPOINTER Value,
1036 SQLINTEGER BufferLength,
1037 SQLINTEGER * StringLength);
1038#endif /* ODBCVER >= 0x0300 */
1039
1040SQLRETURN SQL_API SQLGetStmtOption (
1041 SQLHSTMT StatementHandle,
1042 SQLUSMALLINT Option,
1043 SQLPOINTER Value);
1044
1045SQLRETURN SQL_API SQLGetTypeInfo (
1046 SQLHSTMT StatementHandle,
1047 SQLSMALLINT DataType);
1048
1049SQLRETURN SQL_API SQLNumResultCols (
1050 SQLHSTMT StatementHandle,
1051 SQLSMALLINT * ColumnCount);
1052
1053SQLRETURN SQL_API SQLParamData (
1054 SQLHSTMT StatementHandle,
1055 SQLPOINTER * Value);
1056
1057SQLRETURN SQL_API SQLPrepare (
1058 SQLHSTMT StatementHandle,
1059 SQLCHAR * StatementText,
1060 SQLINTEGER TextLength);
1061
1062SQLRETURN SQL_API SQLPutData (
1063 SQLHSTMT StatementHandle,
1064 SQLPOINTER Data,
1065 SQLLEN StrLen_or_Ind);
1066
1067SQLRETURN SQL_API SQLRowCount (
1068 SQLHSTMT StatementHandle,
1069 SQLLEN * RowCount);
1070
1071#if (ODBCVER >= 0x0300)
1072SQLRETURN SQL_API SQLSetConnectAttr (
1073 SQLHDBC ConnectionHandle,
1074 SQLINTEGER Attribute,
1075 SQLPOINTER Value,
1076 SQLINTEGER StringLength);
1077#endif /* ODBCVER >= 0x0300 */
1078
1079SQLRETURN SQL_API SQLSetConnectOption (
1080 SQLHDBC ConnectionHandle,
1081 SQLUSMALLINT Option,
1082 SQLULEN Value);
1083
1084SQLRETURN SQL_API SQLSetCursorName (
1085 SQLHSTMT StatementHandle,
1086 SQLCHAR * CursorName,
1087 SQLSMALLINT NameLength);
1088
1089#if (ODBCVER >= 0x0300)
1090SQLRETURN SQL_API SQLSetDescField (
1091 SQLHDESC DescriptorHandle,
1092 SQLSMALLINT RecNumber,
1093 SQLSMALLINT FieldIdentifier,
1094 SQLPOINTER Value,
1095 SQLINTEGER BufferLength);
1096
1097SQLRETURN SQL_API SQLSetDescRec (
1098 SQLHDESC DescriptorHandle,
1099 SQLSMALLINT RecNumber,
1100 SQLSMALLINT Type,
1101 SQLSMALLINT SubType,
1102 SQLLEN Length,
1103 SQLSMALLINT Precision,
1104 SQLSMALLINT Scale,
1105 SQLPOINTER Data,
1106 SQLLEN * StringLength,
1107 SQLLEN * Indicator);
1108
1109SQLRETURN SQL_API SQLSetEnvAttr (
1110 SQLHENV EnvironmentHandle,
1111 SQLINTEGER Attribute,
1112 SQLPOINTER Value,
1113 SQLINTEGER StringLength);
1114#endif /* ODBCVER >= 0x0300 */
1115
1116
1117#if (ODBCVER >= 0x0300)
1118SQLRETURN SQL_API SQLSetStmtAttr (
1119 SQLHSTMT StatementHandle,
1120 SQLINTEGER Attribute,
1121 SQLPOINTER Value,
1122 SQLINTEGER StringLength);
1123#endif
1124
1125SQLRETURN SQL_API SQLSetStmtOption (
1126 SQLHSTMT StatementHandle,
1127 SQLUSMALLINT Option,
1128 SQLULEN Value);
1129
1130SQLRETURN SQL_API SQLSpecialColumns (
1131 SQLHSTMT StatementHandle,
1132 SQLUSMALLINT IdentifierType,
1133 SQLCHAR * CatalogName,
1134 SQLSMALLINT NameLength1,
1135 SQLCHAR * SchemaName,
1136 SQLSMALLINT NameLength2,
1137 SQLCHAR * TableName,
1138 SQLSMALLINT NameLength3,
1139 SQLUSMALLINT Scope,
1140 SQLUSMALLINT Nullable);
1141
1142SQLRETURN SQL_API SQLStatistics (
1143 SQLHSTMT StatementHandle,
1144 SQLCHAR * CatalogName,
1145 SQLSMALLINT NameLength1,
1146 SQLCHAR * SchemaName,
1147 SQLSMALLINT NameLength2,
1148 SQLCHAR * TableName,
1149 SQLSMALLINT NameLength3,
1150 SQLUSMALLINT Unique,
1151 SQLUSMALLINT Reserved);
1152
1153SQLRETURN SQL_API SQLTables (
1154 SQLHSTMT StatementHandle,
1155 SQLCHAR * CatalogName,
1156 SQLSMALLINT NameLength1,
1157 SQLCHAR * SchemaName,
1158 SQLSMALLINT NameLength2,
1159 SQLCHAR * TableName,
1160 SQLSMALLINT NameLength3,
1161 SQLCHAR * TableType,
1162 SQLSMALLINT NameLength4);
1163
1164SQLRETURN SQL_API SQLTransact (
1165 SQLHENV EnvironmentHandle,
1166 SQLHDBC ConnectionHandle,
1167 SQLUSMALLINT CompletionType);
1168
1169
1170/*
1171 * Depreciated ODBC 1.0 function - Use SQLBindParameter
1172 */
1173SQLRETURN SQL_API SQLSetParam (
1174 SQLHSTMT StatementHandle,
1175 SQLUSMALLINT ParameterNumber,
1176 SQLSMALLINT ValueType,
1177 SQLSMALLINT ParameterType,
1178 SQLULEN LengthPrecision,
1179 SQLSMALLINT ParameterScale,
1180 SQLPOINTER ParameterValue,
1181 SQLLEN * StrLen_or_Ind);
1182
1183#ifdef __cplusplus
1184}
1185#endif
1186
1187#endif /* _SQL_H */
1188