~ubuntu-branches/debian/lenny/fpc/lenny

« back to all changes in this revision

Viewing changes to packages/base/odbc/odbcsql.pp

  • Committer: Bazaar Package Importer
  • Author(s): Mazen Neifer, Torsten Werner, Mazen Neifer
  • Date: 2008-05-17 17:12:11 UTC
  • mfrom: (3.1.9 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080517171211-9qi33xhd9evfa0kg
Tags: 2.2.0-dfsg1-9
[ Torsten Werner ]
* Add Mazen Neifer to Uploaders field.

[ Mazen Neifer ]
* Moved FPC sources into a version dependent directory from /usr/share/fpcsrc
  to /usr/share/fpcsrc/${FPCVERSION}. This allow installing more than on FPC
  release.
* Fixed far call issue in compiler preventing building huge binearies.
  (closes: #477743)
* Updated building dependencies, recomennded and suggested packages.
* Moved fppkg to fp-utils as it is just a helper tool and is not required by
  compiler.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
unit odbcsql;
2
 
{$ifndef fpc}
3
 
{$I mODBC.INC}
4
 
{$else}
5
 
{$mode objfpc}
6
 
{$h+}
7
 
{$define odbcver3}
8
 
{$endif}
9
 
 
10
 
interface
11
 
 
12
 
uses sysutils;
13
 
 
14
 
(* DATA TYPES CORRESPONDENCE
15
 
   BDE fields  ODBC types
16
 
   ----------  ------------------
17
 
   ftBlob      SQL_BINARY
18
 
   ftBoolean   SQL_BIT
19
 
   ftDate      SQL_TYPE_DATE
20
 
   ftTime      SQL_TYPE_TIME
21
 
   ftDateTime  SQL_TYPE_TIMESTAMP
22
 
   ftInteger   SQL_INTEGER
23
 
   ftSmallint  SQL_SMALLINT
24
 
   ftFloat     SQL_DOUBLE
25
 
   ftString    SQL_CHAR
26
 
   ftMemo      SQL_BINARY // SQL_VARCHAR
27
 
*)
28
 
 
29
 
type
30
 
  SQLCHAR      = Char;
31
 
  SQLSMALLINT  = smallint;
32
 
  SQLUSMALLINT = Word;
33
 
  SQLRETURN    = SQLSMALLINT;
34
 
  SQLHANDLE    = LongInt;
35
 
  SQLHENV      = SQLHANDLE;
36
 
  SQLHDBC      = SQLHANDLE;
37
 
  SQLHSTMT     = SQLHANDLE;
38
 
  SQLINTEGER   = LongInt;
39
 
  SQLUINTEGER  = Cardinal;
40
 
  SQLPOINTER   = Pointer;
41
 
  SQLREAL      = real;
42
 
  SQLDOUBLE    = Double;
43
 
  SQLFLOAT     = Double;
44
 
  PSQLCHAR      = PChar;
45
 
  PSQLINTEGER   = ^SQLINTEGER;
46
 
  PSQLUINTEGER  = ^SQLUINTEGER;
47
 
  PSQLSMALLINT  = ^SQLSMALLINT;
48
 
  PSQLUSMALLINT = ^SQLUSMALLINT;
49
 
  PSQLREAL      = ^SQLREAL;
50
 
  PSQLDOUBLE    = ^SQLDOUBLE;
51
 
  PSQLFLOAT     = ^SQLFLOAT;
52
 
  PSQLHandle    = ^SQLHANDLE;
53
 
 
54
 
const
55
 
  { SQL data type codes }
56
 
  SQL_UNKNOWN_TYPE = 0;
57
 
  SQL_LONGVARCHAR   =(-1);
58
 
  SQL_BINARY        =(-2);
59
 
  SQL_VARBINARY     =(-3);
60
 
  SQL_LONGVARBINARY =(-4);
61
 
  SQL_BIGINT        =(-5);
62
 
  SQL_TINYINT       =(-6);
63
 
  SQL_BIT           =(-7);
64
 
  SQL_WCHAR         =(-8);
65
 
  SQL_WVARCHAR      =(-9);
66
 
  SQL_WLONGVARCHAR  =(-10);
67
 
 
68
 
 
69
 
  SQL_CHAR          = 1;
70
 
  SQL_NUMERIC       = 2;
71
 
  SQL_DECIMAL       = 3;
72
 
  SQL_INTEGER       = 4;
73
 
  SQL_SMALLINT      = 5;
74
 
  SQL_FLOAT         = 6;
75
 
  SQL_REAL          = 7;
76
 
  SQL_DOUBLE        = 8;
77
 
 {$ifdef ODBCVER3}
78
 
  SQL_DATETIME      = 9;
79
 
 {$endif}
80
 
  SQL_VARCHAR       = 12;
81
 
 
82
 
  SQL_C_LONG        = SQL_INTEGER;
83
 
 {$ifdef ODBCVER3}
84
 
  SQL_TYPE_DATE     = 91;
85
 
  SQL_TYPE_TIME     = 92;
86
 
  SQL_TYPE_TIMESTAMP= 93;
87
 
 {$endif}
88
 
 
89
 
  {ODBC2}
90
 
  SQL_DATE       = 9;
91
 
  SQL_TIME       = 10;
92
 
  SQL_TIMESTAMP  = 11;
93
 
  {end of Odbc2}
94
 
 
95
 
  SQL_NO_TOTAL   = -4;
96
 
 
97
 
type
98
 
  SQL_DATE_STRUCT = packed record
99
 
    Year : SQLSMALLINT;
100
 
    Month : SQLUSMALLINT;
101
 
    Day : SQLUSMALLINT;
102
 
  end;
103
 
  PSQL_DATE_STRUCT = ^SQL_DATE_STRUCT;
104
 
 
105
 
  SQL_TIME_STRUCT = packed record
106
 
    Hour : SQLUSMALLINT;
107
 
    Minute : SQLUSMALLINT;
108
 
    Second : SQLUSMALLINT;
109
 
  end;
110
 
  PSQL_TIME_STRUCT = ^SQL_TIME_STRUCT;
111
 
 
112
 
  SQL_TIMESTAMP_STRUCT = packed record
113
 
    Year :     SQLUSMALLINT;
114
 
    Month :    SQLUSMALLINT;
115
 
    Day :      SQLUSMALLINT;
116
 
    Hour :     SQLUSMALLINT;
117
 
    Minute :   SQLUSMALLINT;
118
 
    Second :   SQLUSMALLINT;
119
 
    Fraction : SQLUINTEGER;
120
 
  end;
121
 
  PSQL_TIMESTAMP_STRUCT = ^SQL_TIMESTAMP_STRUCT;
122
 
 
123
 
const
124
 
  SQL_NAME_LEN = 128;
125
 
 
126
 
  SQL_OV_ODBC3          = 3;
127
 
  SQL_OV_ODBC2          = 2;
128
 
  SQL_ATTR_ODBC_VERSION = 200;
129
 
 
130
 
  { Options for SQLDriverConnect }
131
 
  SQL_DRIVER_NOPROMPT          = 0;
132
 
  SQL_DRIVER_COMPLETE          = 1;
133
 
  SQL_DRIVER_PROMPT            = 2;
134
 
  SQL_DRIVER_COMPLETE_REQUIRED = 3;
135
 
 
136
 
  { whether an attribute is a pointer or not }
137
 
  SQL_IS_POINTER    = (-4);
138
 
  SQL_IS_UINTEGER   = (-5);
139
 
  SQL_IS_INTEGER    = (-6);
140
 
  SQL_IS_USMALLINT  = (-7);
141
 
  SQL_IS_SMALLINT   = (-8);
142
 
  { SQLExtendedFetch "fFetchType" values }
143
 
  SQL_FETCH_BOOKMARK = 8;
144
 
 
145
 
  SQL_SCROLL_OPTIONS = 44;
146
 
 
147
 
  { SQL_USE_BOOKMARKS options }
148
 
  SQL_UB_OFF      = 0;
149
 
  SQL_UB_ON       = 1;
150
 
  SQL_UB_DEFAULT  = SQL_UB_OFF;
151
 
  SQL_UB_FIXED    = SQL_UB_ON;
152
 
  SQL_UB_VARIABLE = 2;
153
 
 
154
 
  { SQL_SCROLL_OPTIONS masks }
155
 
  SQL_SO_FORWARD_ONLY  = $01;
156
 
  SQL_SO_KEYSET_DRIVEN = $02;
157
 
  SQL_SO_DYNAMIC       = $04;
158
 
  SQL_SO_MIXED         = $08;
159
 
  SQL_SO_STATIC        = $10;
160
 
 
161
 
  SQL_BOOKMARK_PERSISTENCE = 82;
162
 
  SQL_STATIC_SENSITIVITY   = 83;
163
 
 
164
 
  { SQL_BOOKMARK_PERSISTENCE values }
165
 
  SQL_BP_CLOSE       = $01;
166
 
  SQL_BP_DELETE      = $02;
167
 
  SQL_BP_DROP        = $04;
168
 
  SQL_BP_TRANSACTION = $08;
169
 
  SQL_BP_UPDATE      = $10;
170
 
  SQL_BP_OTHER_HSTMT = $20;
171
 
  SQL_BP_SCROLL      = $40;
172
 
 
173
 
  SQL_DYNAMIC_CURSOR_ATTRIBUTES1      = 144;
174
 
  SQL_DYNAMIC_CURSOR_ATTRIBUTES2      = 145;
175
 
  SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 = 146;
176
 
  SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 = 147;
177
 
  SQL_INDEX_KEYWORDS                  = 148;
178
 
  SQL_INFO_SCHEMA_VIEWS               = 149;
179
 
  SQL_KEYSET_CURSOR_ATTRIBUTES1       = 150;
180
 
  SQL_KEYSET_CURSOR_ATTRIBUTES2       = 151;
181
 
  SQL_STATIC_CURSOR_ATTRIBUTES1       = 167;
182
 
  SQL_STATIC_CURSOR_ATTRIBUTES2       = 168;
183
 
 
184
 
  { supported SQLFetchScroll FetchOrientation's }
185
 
  SQL_CA1_NEXT          = 1;
186
 
  SQL_CA1_ABSOLUTE      = 2;
187
 
  SQL_CA1_RELATIVE      = 4;
188
 
  SQL_CA1_BOOKMARK      = 8;
189
 
 
190
 
  { supported SQLSetPos LockType's }
191
 
  SQL_CA1_LOCK_NO_CHANGE= $40;
192
 
  SQL_CA1_LOCK_EXCLUSIVE= $80;
193
 
  SQL_CA1_LOCK_UNLOCK   =$100;
194
 
 
195
 
  { supported SQLSetPos Operations }
196
 
  SQL_CA1_POS_POSITION  = $200;
197
 
  SQL_CA1_POS_UPDATE    = $400;
198
 
  SQL_CA1_POS_DELETE    = $800;
199
 
  SQL_CA1_POS_REFRESH   =$1000;
200
 
 
201
 
  { positioned updates and deletes }
202
 
  SQL_CA1_POSITIONED_UPDATE=$2000;
203
 
  SQL_CA1_POSITIONED_DELETE=$4000;
204
 
  SQL_CA1_SELECT_FOR_UPDATE=$8000;
205
 
 
206
 
  { supported SQLBulkOperations operations }
207
 
  SQL_CA1_BULK_ADD                =$10000;
208
 
  SQL_CA1_BULK_UPDATE_BY_BOOKMARK =$20000;
209
 
  SQL_CA1_BULK_DELETE_BY_BOOKMARK =$40000;
210
 
  SQL_CA1_BULK_FETCH_BY_BOOKMARK  =$80000;
211
 
 
212
 
  { supported values for SQL_ATTR_SCROLL_CONCURRENCY }
213
 
  SQL_CA2_READ_ONLY_CONCURRENCY = 1;
214
 
  SQL_CA2_LOCK_CONCURRENCY      = 2;
215
 
  SQL_CA2_OPT_ROWVER_CONCURRENCY= 4;
216
 
  SQL_CA2_OPT_VALUES_CONCURRENCY= 8;
217
 
 
218
 
  { sensitivity of the cursor to its own inserts, deletes, and updates }
219
 
  SQL_CA2_SENSITIVITY_ADDITIONS =$10;
220
 
  SQL_CA2_SENSITIVITY_DELETIONS =$20;
221
 
  SQL_CA2_SENSITIVITY_UPDATES   =$40;
222
 
 
223
 
{  semantics of SQL_ATTR_MAX_ROWS }
224
 
  SQL_CA2_MAX_ROWS_SELECT       = $80;
225
 
  SQL_CA2_MAX_ROWS_INSERT       =$100;
226
 
  SQL_CA2_MAX_ROWS_DELETE       =$200;
227
 
  SQL_CA2_MAX_ROWS_UPDATE       =$400;
228
 
  SQL_CA2_MAX_ROWS_CATALOG      =$800;
229
 
  SQL_CA2_MAX_ROWS_AFFECTS_ALL  =(SQL_CA2_MAX_ROWS_SELECT or
230
 
                                        SQL_CA2_MAX_ROWS_INSERT or SQL_CA2_MAX_ROWS_DELETE or
231
 
                                        SQL_CA2_MAX_ROWS_UPDATE or SQL_CA2_MAX_ROWS_CATALOG);
232
 
 
233
 
  { semantics of SQL_DIAG_CURSOR_ROW_COUNT }
234
 
  SQL_CA2_CRC_EXACT             = $1000;
235
 
  SQL_CA2_CRC_APPROXIMATE       = $2000;
236
 
 
237
 
  {  the kinds of positioned statements that can be simulated }
238
 
  SQL_CA2_SIMULATE_NON_UNIQUE   = $4000;
239
 
  SQL_CA2_SIMULATE_TRY_UNIQUE   = $8000;
240
 
  SQL_CA2_SIMULATE_UNIQUE       =$10000;
241
 
 
242
 
  {  Operations in SQLBulkOperations }
243
 
  SQL_ADD                     = 4;
244
 
  SQL_SETPOS_MAX_OPTION_VALUE = SQL_ADD;
245
 
  SQL_UPDATE_BY_BOOKMARK      = 5;
246
 
  SQL_DELETE_BY_BOOKMARK      = 6;
247
 
  SQL_FETCH_BY_BOOKMARK       = 7;
248
 
 
249
 
  { Operations in SQLSetPos }
250
 
  SQL_POSITION                = 0;
251
 
  SQL_REFRESH                 = 1;
252
 
  SQL_UPDATE                  = 2;
253
 
  SQL_DELETE                  = 3;
254
 
 
255
 
  { Lock options in SQLSetPos }
256
 
  SQL_LOCK_NO_CHANGE          = 0;
257
 
  SQL_LOCK_EXCLUSIVE          = 1;
258
 
  SQL_LOCK_UNLOCK             = 2;
259
 
 
260
 
  { SQLExtendedFetch "rgfRowStatus" element values }
261
 
  SQL_ROW_SUCCESS           = 0;
262
 
  SQL_ROW_DELETED           = 1;
263
 
  SQL_ROW_UPDATED           = 2;
264
 
  SQL_ROW_NOROW             = 3;
265
 
  SQL_ROW_ADDED             = 4;
266
 
  SQL_ROW_ERROR             = 5;
267
 
  SQL_ROW_SUCCESS_WITH_INFO = 6;
268
 
 
269
 
  SQL_ROW_PROCEED           = 0;
270
 
  SQL_ROW_IGNORE            = 1;
271
 
 
272
 
  SQL_MAX_DSN_LENGTH           = 32; { maximum data source name size }
273
 
 
274
 
  SQL_MAX_OPTION_STRING_LENGTH = 256;
275
 
 
276
 
  SQL_ODBC_CURSORS      = 110;
277
 
  SQL_ATTR_ODBC_CURSORS = SQL_ODBC_CURSORS;
278
 
  { SQL_ODBC_CURSORS options }
279
 
  SQL_CUR_USE_IF_NEEDED = 0;
280
 
  SQL_CUR_USE_ODBC      = 1;
281
 
  SQL_CUR_USE_DRIVER    = 2;
282
 
  SQL_CUR_DEFAULT       = SQL_CUR_USE_DRIVER;
283
 
 
284
 
  SQL_PARAM_TYPE_UNKNOWN = 0;
285
 
  SQL_PARAM_INPUT        = 1;
286
 
  SQL_PARAM_INPUT_OUTPUT = 2;
287
 
  SQL_RESULT_COL         = 3;
288
 
  SQL_PARAM_OUTPUT       = 4;
289
 
  SQL_RETURN_VALUE       = 5;
290
 
 
291
 
  { special length/indicator values }
292
 
  SQL_NULL_DATA    = (-1);
293
 
  SQL_DATA_AT_EXEC = (-2);
294
 
 
295
 
  SQL_SUCCESS  = 0;
296
 
  SQL_SUCCESS_WITH_INFO = 1;
297
 
 
298
 
  SQL_NO_DATA = 100;
299
 
  SQL_ERROR   = (-1);
300
 
  SQL_INVALID_HANDLE =(-2);
301
 
 
302
 
  SQL_STILL_EXECUTING =  2;
303
 
  SQL_NEED_DATA       = 99;
304
 
  { flags for null-terminated string }
305
 
  SQL_NTS  = (-3);
306
 
 
307
 
  { maximum message length }
308
 
  SQL_MAX_MESSAGE_LENGTH = 512;
309
 
 
310
 
  { date/time length constants }
311
 
{$ifdef ODBCVER3}
312
 
  SQL_DATE_LEN      = 10;
313
 
  SQL_TIME_LEN      =  8;  { add P+1 if precision is nonzero }
314
 
  SQL_TIMESTAMP_LEN = 19;  { add P+1 if precision is nonzero }
315
 
{$endif}
316
 
 
317
 
  { handle type identifiers }
318
 
  SQL_HANDLE_ENV   = 1;
319
 
  SQL_HANDLE_DBC   = 2;
320
 
  SQL_HANDLE_STMT  = 3;
321
 
  SQL_HANDLE_DESC  = 4;
322
 
 
323
 
{$ifdef ODBCVER3}
324
 
  { environment attribute }
325
 
  SQL_ATTR_OUTPUT_NTS  = 10001;
326
 
  { connection attributes }
327
 
  SQL_ATTR_AUTO_IPD    = 10001;
328
 
  SQL_ATTR_METADATA_ID = 10014;
329
 
{$endif}  { ODBCVER >= 0x0300 }
330
 
 
331
 
  { statement attributes }
332
 
  SQL_ATTR_APP_ROW_DESC       = 10010;
333
 
  SQL_ATTR_APP_PARAM_DESC     = 10011;
334
 
  SQL_ATTR_IMP_ROW_DESC       = 10012;
335
 
  SQL_ATTR_IMP_PARAM_DESC     = 10013;
336
 
  SQL_ATTR_CURSOR_SCROLLABLE  = (-1);
337
 
  SQL_ATTR_CURSOR_SENSITIVITY = (-2);
338
 
  SQL_QUERY_TIMEOUT           =0;
339
 
  SQL_MAX_ROWS                =1;
340
 
  SQL_NOSCAN                  =2;
341
 
  SQL_MAX_LENGTH              =3;
342
 
  SQL_ASYNC_ENABLE            =4;       // same as SQL_ATTR_ASYNC_ENABLE */
343
 
  SQL_BIND_TYPE               =5;
344
 
  SQL_CURSOR_TYPE             = 6;
345
 
  SQL_CONCURRENCY             = 7;
346
 
  SQL_KEYSET_SIZE             =8;
347
 
  SQL_ROWSET_SIZE             =9;
348
 
  SQL_SIMULATE_CURSOR         =10;
349
 
  SQL_RETRIEVE_DATA           =11;
350
 
  SQL_USE_BOOKMARKS           =12;
351
 
  SQL_GET_BOOKMARK            =13;      //      GetStmtOption Only */
352
 
  SQL_ROW_NUMBER              = 14;     //      GetStmtOption Only */
353
 
  SQL_ATTR_CURSOR_TYPE        = SQL_CURSOR_TYPE;
354
 
  SQL_ATTR_CONCURRENCY        = SQL_CONCURRENCY;
355
 
  SQL_ATTR_FETCH_BOOKMARK_PTR = 16;
356
 
  SQL_ATTR_ROW_STATUS_PTR     = 25;
357
 
  SQL_ATTR_ROWS_FETCHED_PTR   = 26;
358
 
  SQL_AUTOCOMMIT              = 102;
359
 
  SQL_ATTR_AUTOCOMMIT         = SQL_AUTOCOMMIT;
360
 
 
361
 
  SQL_ATTR_ROW_NUMBER         = SQL_ROW_NUMBER;
362
 
  SQL_TXN_ISOLATION           = 108;
363
 
  SQL_ATTR_TXN_ISOLATION      = SQL_TXN_ISOLATION;
364
 
  SQL_ATTR_MAX_ROWS           = SQL_MAX_ROWS;
365
 
  SQL_ATTR_USE_BOOKMARKS      = SQL_USE_BOOKMARKS;
366
 
 
367
 
//* connection attributes */
368
 
  SQL_ACCESS_MODE             =101;
369
 
//  SQL_AUTOCOMMIT              =102;
370
 
  SQL_LOGIN_TIMEOUT           =103;
371
 
  SQL_OPT_TRACE               =104;
372
 
  SQL_OPT_TRACEFILE           =105;
373
 
  SQL_TRANSLATE_DLL           =106;
374
 
  SQL_TRANSLATE_OPTION        =107;
375
 
//  SQL_TXN_ISOLATION           =108;
376
 
  SQL_CURRENT_QUALIFIER       =109;
377
 
//  SQL_ODBC_CURSORS            =110;
378
 
  SQL_QUIET_MODE              =111;
379
 
  SQL_PACKET_SIZE             =112;
380
 
 
381
 
 
382
 
//* connection attributes with new names */
383
 
  SQL_ATTR_ACCESS_MODE              =SQL_ACCESS_MODE;
384
 
//  SQL_ATTR_AUTOCOMMIT                       =SQL_AUTOCOMMIT;
385
 
  SQL_ATTR_CONNECTION_DEAD        =1209;        //* GetConnectAttr only */
386
 
  SQL_ATTR_CONNECTION_TIMEOUT   =113;
387
 
  SQL_ATTR_CURRENT_CATALOG        =SQL_CURRENT_QUALIFIER;
388
 
  SQL_ATTR_DISCONNECT_BEHAVIOR=114;
389
 
  SQL_ATTR_ENLIST_IN_DTC                  =1207;
390
 
  SQL_ATTR_ENLIST_IN_XA             =1208;
391
 
  SQL_ATTR_LOGIN_TIMEOUT                  =SQL_LOGIN_TIMEOUT;
392
 
//  SQL_ATTR_ODBC_CURSORS             =SQL_ODBC_CURSORS;
393
 
  SQL_ATTR_PACKET_SIZE              =SQL_PACKET_SIZE;
394
 
  SQL_ATTR_QUIET_MODE                       =SQL_QUIET_MODE;
395
 
  SQL_ATTR_TRACE                                      =SQL_OPT_TRACE;
396
 
  SQL_ATTR_TRACEFILE                        =SQL_OPT_TRACEFILE;
397
 
  SQL_ATTR_TRANSLATE_LIB                  =SQL_TRANSLATE_DLL;
398
 
  SQL_ATTR_TRANSLATE_OPTION       =SQL_TRANSLATE_OPTION;
399
 
//  SQL_ATTR_TXN_ISOLATION                  =SQL_TXN_ISOLATION;
400
 
 
401
 
//* SQL_ACCESS_MODE options */
402
 
  SQL_MODE_READ_WRITE         =0;
403
 
  SQL_MODE_READ_ONLY          =1;
404
 
  SQL_MODE_DEFAULT            =SQL_MODE_READ_WRITE;
405
 
 
406
 
  //* SQL_AUTOCOMMIT options */
407
 
  SQL_AUTOCOMMIT_OFF          = 0;
408
 
  SQL_AUTOCOMMIT_ON           = 1;
409
 
  SQL_AUTOCOMMIT_DEFAULT      = SQL_AUTOCOMMIT_ON;
410
 
  { SQL_ATTR_CURSOR_SCROLLABLE values }
411
 
  SQL_NONSCROLLABLE              = 0;
412
 
  SQL_SCROLLABLE                 = 1;
413
 
  { SQL_CURSOR_TYPE options }
414
 
  SQL_CURSOR_FORWARD_ONLY     = 0;
415
 
  SQL_CURSOR_KEYSET_DRIVEN    = 1;
416
 
  SQL_CURSOR_DYNAMIC          = 2;
417
 
  SQL_CURSOR_STATIC           = 3;
418
 
  SQL_CURSOR_TYPE_DEFAULT     = SQL_CURSOR_FORWARD_ONLY;{ Default value }
419
 
 
420
 
  { SQL_CONCURRENCY options }
421
 
  SQL_CONCUR_READ_ONLY = 1;
422
 
  SQL_CONCUR_LOCK      = 2;
423
 
  SQL_CONCUR_ROWVER    = 3;
424
 
  SQL_CONCUR_VALUES    = 4;
425
 
  SQL_CONCUR_DEFAULT   = SQL_CONCUR_READ_ONLY; { Default value }
426
 
 
427
 
   { identifiers of fields in the SQL descriptor }
428
 
  {$ifdef ODBCVER3}
429
 
  SQL_DESC_COUNT                  = 1001;
430
 
  SQL_DESC_TYPE                   = 1002;
431
 
  SQL_DESC_LENGTH                 = 1003;
432
 
  SQL_DESC_OCTET_LENGTH_PTR       = 1004;
433
 
  SQL_DESC_PRECISION              = 1005;
434
 
  SQL_DESC_SCALE                  = 1006;
435
 
  SQL_DESC_DATETIME_INTERVAL_CODE = 1007;
436
 
  SQL_DESC_NULLABLE               = 1008;
437
 
  SQL_DESC_INDICATOR_PTR          = 1009;
438
 
  SQL_DESC_DATA_PTR               = 1010;
439
 
  SQL_DESC_NAME                   = 1011;
440
 
  SQL_DESC_UNNAMED                = 1012;
441
 
  SQL_DESC_OCTET_LENGTH           = 1013;
442
 
  SQL_DESC_ALLOC_TYPE             = 1099;
443
 
  {$endif}
444
 
 
445
 
  { identifiers of fields in the diagnostics area }
446
 
{$ifdef ODBCVER3}
447
 
  SQL_DIAG_RETURNCODE            = 1;
448
 
  SQL_DIAG_NUMBER                = 2;
449
 
  SQL_DIAG_ROW_COUNT             = 3;
450
 
  SQL_DIAG_SQLSTATE              = 4;
451
 
  SQL_DIAG_NATIVE                = 5;
452
 
  SQL_DIAG_MESSAGE_TEXT          = 6;
453
 
  SQL_DIAG_DYNAMIC_FUNCTION      = 7;
454
 
  SQL_DIAG_CLASS_ORIGIN          = 8;
455
 
  SQL_DIAG_SUBCLASS_ORIGIN       = 9;
456
 
  SQL_DIAG_CONNECTION_NAME       = 10;
457
 
  SQL_DIAG_SERVER_NAME           = 11;
458
 
  SQL_DIAG_DYNAMIC_FUNCTION_CODE = 12;
459
 
{$endif}
460
 
 
461
 
  { dynamic function codes }
462
 
{$ifdef ODBCVER3}
463
 
  SQL_DIAG_ALTER_TABLE           =  4;
464
 
  SQL_DIAG_CREATE_INDEX          = (-1);
465
 
  SQL_DIAG_CREATE_TABLE          = 77;
466
 
  SQL_DIAG_CREATE_VIEW           = 84;
467
 
  SQL_DIAG_DELETE_WHERE          = 19;
468
 
  SQL_DIAG_DROP_INDEX            = (-2);
469
 
  SQL_DIAG_DROP_TABLE            = 32;
470
 
  SQL_DIAG_DROP_VIEW             = 36;
471
 
  SQL_DIAG_DYNAMIC_DELETE_CURSOR = 38;
472
 
  SQL_DIAG_DYNAMIC_UPDATE_CURSOR = 81;
473
 
  SQL_DIAG_GRANT                 = 48;
474
 
  SQL_DIAG_INSERT                = 50;
475
 
  SQL_DIAG_REVOKE                = 59;
476
 
  SQL_DIAG_SELECT_CURSOR         = 85;
477
 
  SQL_DIAG_UNKNOWN_STATEMENT     =  0;
478
 
  SQL_DIAG_UPDATE_WHERE          = 82;
479
 
{$endif}  { ODBCVER >= 0x0300 }
480
 
 
481
 
  SQL_C_DEFAULT       = 99;
482
 
  SQL_UNSIGNED_OFFSET = (-22);
483
 
  SQL_C_ULONG         = (SQL_C_LONG+SQL_UNSIGNED_OFFSET);
484
 
  SQL_C_BOOKMARK      = SQL_C_ULONG;
485
 
 
486
 
  { Statement attribute values for cursor sensitivity }
487
 
{$ifdef ODBCVER3}
488
 
  SQL_UNSPECIFIED     = 0;
489
 
  SQL_INSENSITIVE     = 1;
490
 
  SQL_SENSITIVE       = 2;
491
 
{$endif}
492
 
 
493
 
  { GetTypeInfo() request for all data types }
494
 
  SQL_ALL_TYPES       = 0;
495
 
 
496
 
  { Default conversion code for SQLBindCol(), SQLBindParam() and SQLGetData() }
497
 
{$ifdef ODBCVER3}
498
 
  SQL_DEFAULT         = 99;
499
 
{$endif}
500
 
 
501
 
  { SQLGetData() code indicating that the application row descriptor
502
 
    specifies the data type }
503
 
{$ifdef ODBCVER3}
504
 
  SQL_ARD_TYPE      = (-99);
505
 
{$endif}
506
 
 
507
 
  { SQL date/time type subcodes }
508
 
{$ifdef ODBCVER3}
509
 
  SQL_CODE_DATE       = 1;
510
 
  SQL_CODE_TIME       = 2;
511
 
  SQL_CODE_TIMESTAMP  = 3;
512
 
{$endif}
513
 
 
514
 
  { CLI option values }
515
 
{$ifdef ODBCVER3}
516
 
  SQL_FALSE           = 0;
517
 
  SQL_TRUE            = 1;
518
 
{$endif}
519
 
 
520
 
     { values of NULLABLE field in descriptor }
521
 
  SQL_NO_NULLS = 0;
522
 
  SQL_NULLABLE = 1;
523
 
 
524
 
{ Value returned by SQLGetTypeInfo() to denote that it is
525
 
 not known whether or not a data type supports null values. }
526
 
 
527
 
  SQL_NULLABLE_UNKNOWN = 2;
528
 
{
529
 
/* Values returned by SQLGetTypeInfo() to show WHERE clause
530
 
 * supported
531
 
 
532
 
#if (ODBCVER >= 0x0300)
533
 
#define SQL_PRED_NONE     0
534
 
#define SQL_PRED_CHAR     1
535
 
#define SQL_PRED_BASIC    2
536
 
#endif
537
 
 
538
 
/* values of UNNAMED field in descriptor */
539
 
#if (ODBCVER >= 0x0300)
540
 
#define SQL_NAMED           0
541
 
#define SQL_UNNAMED         1
542
 
#endif
543
 
 
544
 
/* values of ALLOC_TYPE field in descriptor */
545
 
#if (ODBCVER >= 0x0300)
546
 
#define SQL_DESC_ALLOC_AUTO 1
547
 
#define SQL_DESC_ALLOC_USER 2
548
 
#endif
549
 
}
550
 
  { FreeStmt() options }
551
 
  SQL_CLOSE        = 0;
552
 
  SQL_DROP         = 1;
553
 
  SQL_UNBIND       = 2;
554
 
  SQL_RESET_PARAMS = 3;
555
 
 
556
 
  { Codes used for FetchOrientation in SQLFetchScroll(),
557
 
   and in SQLDataSources() }
558
 
  SQL_FETCH_NEXT     = 1;
559
 
  SQL_FETCH_FIRST    = 2;
560
 
{$ifdef odbcver3}
561
 
  SQL_FETCH_FIRST_USER = 31;
562
 
  SQL_FETCH_FIRST_SYSTEM = 32;
563
 
{$endif}
564
 
 
565
 
  { Other codes used for FetchOrientation in SQLFetchScroll() }
566
 
  SQL_FETCH_LAST     = 3;
567
 
  SQL_FETCH_PRIOR    = 4;
568
 
  SQL_FETCH_ABSOLUTE = 5;
569
 
  SQL_FETCH_RELATIVE = 6;
570
 
{
571
 
/* SQLEndTran() options */
572
 
#define SQL_COMMIT          0
573
 
#define SQL_ROLLBACK        1
574
 
 
575
 
/* null handles returned by SQLAllocHandle() */
576
 
#define SQL_NULL_HENV       0
577
 
#define SQL_NULL_HDBC       0
578
 
#define SQL_NULL_HSTMT      0
579
 
#if (ODBCVER >= 0x0300)
580
 
#define SQL_NULL_HDESC      0
581
 
#endif
582
 
}
583
 
//* null handle used in place of parent handle when allocating HENV */
584
 
  SQL_NULL_HANDLE = 0;
585
 
 
586
 
//* Values that may appear in the result set of SQLSpecialColumns() */
587
 
  SQL_SCOPE_CURROW      = 0;
588
 
  SQL_SCOPE_TRANSACTION = 1;
589
 
  SQL_SCOPE_SESSION     = 2;
590
 
 
591
 
//* Column types and scopes in SQLSpecialColumns.  */
592
 
  SQL_BEST_ROWID        = 1;
593
 
  SQL_ROWVER            = 2;
594
 
 
595
 
{
596
 
#define SQL_PC_UNKNOWN      0
597
 
#if (ODBCVER >= 0x0300)
598
 
#define SQL_PC_NON_PSEUDO   1
599
 
#endif
600
 
#define SQL_PC_PSEUDO       2
601
 
}
602
 
 
603
 
//* Reserved value for the IdentifierType argument of SQLSpecialColumns() */
604
 
{$ifdef ODBCVER3}
605
 
  SQL_ROW_IDENTIFIER = 1;
606
 
{$endif}
607
 
 
608
 
{
609
 
/* Reserved values for UNIQUE argument of SQLStatistics() */
610
 
#define SQL_INDEX_UNIQUE    0
611
 
#define SQL_INDEX_ALL       1
612
 
 
613
 
/* Values that may appear in the result set of SQLStatistics() */
614
 
#define SQL_INDEX_CLUSTERED 1
615
 
#define SQL_INDEX_HASHED    2
616
 
#define SQL_INDEX_OTHER     3
617
 
 
618
 
/* Information requested by SQLGetInfo() */
619
 
#if (ODBCVER >= 0x0300)
620
 
#define SQL_MAX_DRIVER_CONNECTIONS           0
621
 
#define SQL_MAXIMUM_DRIVER_CONNECTIONS          SQL_MAX_DRIVER_CONNECTIONS
622
 
#define SQL_MAX_CONCURRENT_ACTIVITIES        1
623
 
#define SQL_MAXIMUM_CONCURRENT_ACTIVITIES       SQL_MAX_CONCURRENT_ACTIVITIES
624
 
#endif
625
 
#define SQL_DATA_SOURCE_NAME                 2
626
 
#define SQL_FETCH_DIRECTION                  8
627
 
#define SQL_SERVER_NAME                     13
628
 
#define SQL_SEARCH_PATTERN_ESCAPE           14
629
 
#define SQL_DBMS_NAME                       17
630
 
#define SQL_DBMS_VER                        18
631
 
#define SQL_ACCESSIBLE_TABLES               19
632
 
#define SQL_ACCESSIBLE_PROCEDURES               20
633
 
#define SQL_CURSOR_COMMIT_BEHAVIOR          23
634
 
#define SQL_DATA_SOURCE_READ_ONLY           25
635
 
#define SQL_DEFAULT_TXN_ISOLATION           26
636
 
#define SQL_IDENTIFIER_CASE                 28
637
 
#define SQL_IDENTIFIER_QUOTE_CHAR           29
638
 
#define SQL_MAX_COLUMN_NAME_LEN             30
639
 
#define SQL_MAXIMUM_COLUMN_NAME_LENGTH          SQL_MAX_COLUMN_NAME_LEN
640
 
#define SQL_MAX_CURSOR_NAME_LEN             31
641
 
#define SQL_MAXIMUM_CURSOR_NAME_LENGTH          SQL_MAX_CURSOR_NAME_LEN
642
 
#define SQL_MAX_SCHEMA_NAME_LEN             32
643
 
#define SQL_MAXIMUM_SCHEMA_NAME_LENGTH          SQL_MAX_SCHEMA_NAME_LEN
644
 
#define SQL_MAX_CATALOG_NAME_LEN            34
645
 
#define SQL_MAXIMUM_CATALOG_NAME_LENGTH         SQL_MAX_CATALOG_NAME_LEN
646
 
#define SQL_MAX_TABLE_NAME_LEN              35
647
 
}
648
 
  SQL_SCROLL_CONCURRENCY              = 43;
649
 
  SQL_TXN_CAPABLE                     = 46;
650
 
  SQL_TRANSACTION_CAPABLE              = SQL_TXN_CAPABLE;
651
 
  SQL_USER_NAME                       = 47;
652
 
  SQL_TXN_ISOLATION_OPTION            = 72;
653
 
  SQL_TRANSACTION_ISOLATION_OPTION    = SQL_TXN_ISOLATION_OPTION;
654
 
{
655
 
#define SQL_INTEGRITY                       73
656
 
#define SQL_GETDATA_EXTENSIONS              81
657
 
#define SQL_NULL_COLLATION                  85
658
 
#define SQL_ALTER_TABLE                     86
659
 
#define SQL_ORDER_BY_COLUMNS_IN_SELECT      90
660
 
#define SQL_SPECIAL_CHARACTERS              94
661
 
#define SQL_MAX_COLUMNS_IN_GROUP_BY         97
662
 
#define SQL_MAXIMUM_COLUMNS_IN_GROUP_BY         SQL_MAX_COLUMNS_IN_GROUP_BY
663
 
#define SQL_MAX_COLUMNS_IN_INDEX            98
664
 
#define SQL_MAXIMUM_COLUMNS_IN_INDEX            SQL_MAX_COLUMNS_IN_INDEX
665
 
#define SQL_MAX_COLUMNS_IN_ORDER_BY         99
666
 
#define SQL_MAXIMUM_COLUMNS_IN_ORDER_BY         SQL_MAX_COLUMNS_IN_ORDER_BY
667
 
#define SQL_MAX_COLUMNS_IN_SELECT          100
668
 
#define SQL_MAXIMUM_COLUMNS_IN_SELECT      SQL_MAX_COLUMNS_IN_SELECT
669
 
#define SQL_MAX_COLUMNS_IN_TABLE           101
670
 
#define SQL_MAX_INDEX_SIZE                 102
671
 
#define SQL_MAXIMUM_INDEX_SIZE                     SQL_MAX_INDEX_SIZE
672
 
#define SQL_MAX_ROW_SIZE                   104
673
 
#define SQL_MAXIMUM_ROW_SIZE                       SQL_MAX_ROW_SIZE
674
 
#define SQL_MAX_STATEMENT_LEN              105
675
 
#define SQL_MAXIMUM_STATEMENT_LENGTH       SQL_MAX_STATEMENT_LEN
676
 
#define SQL_MAX_TABLES_IN_SELECT           106
677
 
#define SQL_MAXIMUM_TABLES_IN_SELECT       SQL_MAX_TABLES_IN_SELECT
678
 
#define SQL_MAX_USER_NAME_LEN              107
679
 
#define SQL_MAXIMUM_USER_NAME_LENGTH       SQL_MAX_USER_NAME_LEN}
680
 
{$ifdef ODBCVER3}
681
 
  SQL_OJ_CAPABILITIES         = 115;
682
 
  SQL_OUTER_JOIN_CAPABILITIES = SQL_OJ_CAPABILITIES;
683
 
{$endif} { ODBCVER >= 0x0300 }
684
 
 
685
 
{$ifdef ODBCVER3}
686
 
  SQL_XOPEN_CLI_YEAR            = 10000;
687
 
  SQL_CURSOR_SENSITIVITY        = 10001;
688
 
  SQL_DESCRIBE_PARAMETER        = 10002;
689
 
  SQL_CATALOG_NAME              = 10003;
690
 
  SQL_COLLATION_SEQ             = 10004;
691
 
  SQL_MAX_IDENTIFIER_LEN        = 10005;
692
 
  SQL_MAXIMUM_IDENTIFIER_LENGTH = SQL_MAX_IDENTIFIER_LEN;
693
 
{$endif} { ODBCVER >= 0x0300 }
694
 
 
695
 
{/* SQL_ALTER_TABLE bitmasks */
696
 
#if (ODBCVER >= 0x0200)
697
 
#define SQL_AT_ADD_COLUMN                       0x00000001L
698
 
#define SQL_AT_DROP_COLUMN                      0x00000002L
699
 
#endif /* ODBCVER >= 0x0200 */
700
 
 
701
 
#if (ODBCVER >= 0x0300)
702
 
#define SQL_AT_ADD_CONSTRAINT                   0x00000008L
703
 
 
704
 
/* The following bitmasks are ODBC extensions and defined in sqlext.h
705
 
*#define        SQL_AT_COLUMN_SINGLE                                    0x00000020L
706
 
*#define        SQL_AT_ADD_COLUMN_DEFAULT                               0x00000040L
707
 
*#define        SQL_AT_ADD_COLUMN_COLLATION                             0x00000080L
708
 
*#define        SQL_AT_SET_COLUMN_DEFAULT                               0x00000100L
709
 
*#define        SQL_AT_DROP_COLUMN_DEFAULT                              0x00000200L
710
 
*#define        SQL_AT_DROP_COLUMN_CASCADE                              0x00000400L
711
 
*#define        SQL_AT_DROP_COLUMN_RESTRICT                             0x00000800L
712
 
*#define SQL_AT_ADD_TABLE_CONSTRAINT                            0x00001000L
713
 
*#define SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE           0x00002000L
714
 
*#define SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT          0x00004000L
715
 
*#define SQL_AT_CONSTRAINT_NAME_DEFINITION                      0x00008000L
716
 
*#define SQL_AT_CONSTRAINT_INITIALLY_DEFERRED           0x00010000L
717
 
*#define SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE          0x00020000L
718
 
*#define SQL_AT_CONSTRAINT_DEFERRABLE                           0x00040000L
719
 
*#define SQL_AT_CONSTRAINT_NON_DEFERRABLE                       0x00080000L
720
 
 
721
 
#endif  /* ODBCVER >= 0x0300 */
722
 
 
723
 
 
724
 
/* SQL_ASYNC_MODE values */
725
 
#if (ODBCVER >= 0x0300)
726
 
#define SQL_AM_NONE                         0
727
 
#define SQL_AM_CONNECTION                   1
728
 
#define SQL_AM_STATEMENT                    2
729
 
#endif
730
 
 
731
 
/* SQL_CURSOR_COMMIT_BEHAVIOR values */
732
 
#define SQL_CB_DELETE                       0
733
 
#define SQL_CB_CLOSE                        1
734
 
#define SQL_CB_PRESERVE                     2
735
 
 
736
 
/* SQL_FETCH_DIRECTION bitmasks */
737
 
#define SQL_FD_FETCH_NEXT                   0x00000001L
738
 
#define SQL_FD_FETCH_FIRST                  0x00000002L
739
 
#define SQL_FD_FETCH_LAST                   0x00000004L
740
 
#define SQL_FD_FETCH_PRIOR                  0x00000008L
741
 
#define SQL_FD_FETCH_ABSOLUTE               0x00000010L
742
 
#define SQL_FD_FETCH_RELATIVE               0x00000020L
743
 
 
744
 
/* SQL_GETDATA_EXTENSIONS bitmasks */
745
 
#define SQL_GD_ANY_COLUMN                   0x00000001L
746
 
#define SQL_GD_ANY_ORDER                    0x00000002L
747
 
 
748
 
/* SQL_IDENTIFIER_CASE values */
749
 
#define SQL_IC_UPPER                        1
750
 
#define SQL_IC_LOWER                        2
751
 
#define SQL_IC_SENSITIVE                    3
752
 
#define SQL_IC_MIXED                        4
753
 
 
754
 
/* SQL_OJ_CAPABILITIES bitmasks */
755
 
/* NB: this means 'outer join', not what  you may be thinking */
756
 
 
757
 
 
758
 
#if (ODBCVER >= 0x0201)
759
 
#define SQL_OJ_LEFT                         0x00000001L
760
 
#define SQL_OJ_RIGHT                        0x00000002L
761
 
#define SQL_OJ_FULL                         0x00000004L
762
 
#define SQL_OJ_NESTED                       0x00000008L
763
 
#define SQL_OJ_NOT_ORDERED                  0x00000010L
764
 
#define SQL_OJ_INNER                        0x00000020L
765
 
#define SQL_OJ_ALL_COMPARISON_OPS           0x00000040L
766
 
#endif
767
 
}
768
 
{ SQL_SCROLL_CONCURRENCY bitmasks }
769
 
  SQL_SCCO_READ_ONLY                 = 1;
770
 
  SQL_SCCO_LOCK                      = 2;
771
 
  SQL_SCCO_OPT_ROWVER                = 4;
772
 
  SQL_SCCO_OPT_VALUES                = 8;
773
 
 
774
 
//* SQL_TXN_CAPABLE values */
775
 
   SQL_TC_NONE                       = 0;
776
 
   SQL_TC_DML                        = 1;
777
 
   SQL_TC_ALL                        = 2;
778
 
   SQL_TC_DDL_COMMIT                 = 3;
779
 
   SQL_TC_DDL_IGNORE                 = 4;
780
 
 
781
 
//* SQL_TXN_ISOLATION_OPTION bitmasks */
782
 
   SQL_TXN_READ_UNCOMMITTED         = 1;
783
 
   SQL_TRANSACTION_READ_UNCOMMITTED = SQL_TXN_READ_UNCOMMITTED;
784
 
   SQL_TXN_READ_COMMITTED           = 2;
785
 
   SQL_TRANSACTION_READ_COMMITTED   = SQL_TXN_READ_COMMITTED;
786
 
   SQL_TXN_REPEATABLE_READ          = 4;
787
 
   SQL_TRANSACTION_REPEATABLE_READ  = SQL_TXN_REPEATABLE_READ;
788
 
   SQL_TXN_SERIALIZABLE             = 8;
789
 
   SQL_TRANSACTION_SERIALIZABLE     = SQL_TXN_SERIALIZABLE;
790
 
{
791
 
/* SQL_NULL_COLLATION values */
792
 
#define SQL_NC_HIGH                         0
793
 
#define SQL_NC_LOW                          1
794
 
 
795
 
}
796
 
 
797
 
{ SQL_STATIC_SENSITIVITY values }
798
 
 
799
 
  SQL_SS_ADDITIONS = 1;
800
 
  SQL_SS_DELETIONS = 2;
801
 
  SQL_SS_UPDATES   = 4;
802
 
 
803
 
{ SQLColAttributes defines }
804
 
  SQL_COLUMN_COUNT               = 0;
805
 
  SQL_COLUMN_NAME                = 1;
806
 
  SQL_COLUMN_TYPE                = 2;
807
 
  SQL_COLUMN_LENGTH              = 3;
808
 
  SQL_COLUMN_PRECISION           = 4;
809
 
  SQL_COLUMN_SCALE               = 5;
810
 
  SQL_COLUMN_DISPLAY_SIZE        = 6;
811
 
  SQL_COLUMN_NULLABLE            = 7;
812
 
  SQL_COLUMN_UNSIGNED            = 8;
813
 
  SQL_COLUMN_MONEY               = 9;
814
 
  SQL_COLUMN_UPDATABLE           = 10;
815
 
  SQL_COLUMN_AUTO_INCREMENT      = 11;
816
 
  SQL_COLUMN_CASE_SENSITIVE      = 12;
817
 
  SQL_COLUMN_SEARCHABLE          = 13;
818
 
  SQL_COLUMN_TYPE_NAME           = 14;
819
 
  SQL_COLUMN_TABLE_NAME          = 15;
820
 
  SQL_COLUMN_OWNER_NAME          = 16;
821
 
  SQL_COLUMN_QUALIFIER_NAME      = 17;
822
 
  SQL_COLUMN_LABEL               = 18;
823
 
  SQL_COLATT_OPT_MAX             = SQL_COLUMN_LABEL;
824
 
{$ifdef ODBCVER3}
825
 
  SQL_COLUMN_DRIVER_START        = 1000;
826
 
{$endif} { ODBCVER >= 0x0300 }
827
 
  SQL_DESC_AUTO_UNIQUE_VALUE     = SQL_COLUMN_AUTO_INCREMENT;
828
 
  SQL_DESC_BASE_COLUMN_NAME        = 22;
829
 
  SQL_DESC_BASE_TABLE_NAME         = 23;
830
 
  SQL_DESC_TABLE_NAME              = SQL_COLUMN_TABLE_NAME;
831
 
 
832
 
//* SQLEndTran() options */
833
 
  SQL_COMMIT    = 0;
834
 
  SQL_ROLLBACK  = 1;
835
 
 
836
 
  SQL_ATTR_ROW_ARRAY_SIZE = 27;
837
 
 
838
 
//* SQLConfigDataSource() options */
839
 
  ODBC_ADD_DSN = 1;
840
 
  ODBC_CONFIG_DSN = 2;
841
 
  ODBC_REMOVE_DSN = 3;
842
 
  ODBC_ADD_SYS_DSN = 4;
843
 
  ODBC_CONFIG_SYS_DSN = 5;
844
 
  ODBC_REMOVE_SYS_DSN = 6;
845
 
 
846
 
{$ifdef DYNLOADINGODBC}
847
 
 
848
 
type   tSQLAllocHandle =function(HandleType: SQLSMALLINT;
849
 
           InputHandle:SQLHANDLE;Var OutputHandlePtr: SQLHANDLE):SQLRETURN;stdcall;
850
 
 
851
 
type   tSQLSetEnvAttr=function (EnvironmentHandle:SQLHENV;
852
 
           Attribute:SQLINTEGER;Value:SQLPOINTER;
853
 
           StringLength:SQLINTEGER):SQLRETURN;stdcall;
854
 
 
855
 
type   TSQLFreeHandle=function (HandleType:SQLSMALLINT;
856
 
           Handle:SQLHANDLE):SQLRETURN;stdcall;
857
 
 
858
 
type   TSQLGetDiagRec=function (HandleType:SQLSMALLINT;
859
 
           Handle:SQLHANDLE;RecNumber:SQLSMALLINT;
860
 
           Sqlstate:PSQLCHAR;var NativeError:SQLINTEGER;
861
 
           MessageText:PSQLCHAR;BufferLength:SQLSMALLINT;
862
 
           var TextLength:SQLSMALLINT ):SQLRETURN;stdcall;
863
 
 
864
 
type   TSQLConnect=function (ConnectionHandle:SQLHDBC;
865
 
           ServerName:PSQLCHAR;NameLength1:SQLSMALLINT;
866
 
           UserName:PSQLCHAR;NameLength2:SQLSMALLINT;
867
 
           Authentication:PSQLCHAR;NameLength3:SQLSMALLINT):SQLRETURN;stdcall;
868
 
 
869
 
type   TSQLDisconnect=function(ConnectionHandle:SQLHDBC):SQLRETURN;stdcall;
870
 
 
871
 
type   TSQLDriverConnect=function (hdbc: SQLHDBC;
872
 
           hwnd: Integer;szCsin: PChar;
873
 
           szCLen: SQLSMALLINT;szCsout: PChar;
874
 
           cbCSMax: SQLSMALLINT;Var cbCsOut: SQLSMALLINT;
875
 
           f: Integer):SQLRETURN;stdcall;
876
 
 
877
 
type   TSQLExecDirect=function (StatementHandle:SQLHSTMT;
878
 
           StatementText:PSQLCHAR;TextLength:SQLINTEGER):SQLRETURN;stdcall;
879
 
 
880
 
type   TSQLPrepare=function (StatementHandle:SQLHSTMT;
881
 
           StatementText:PSQLCHAR;TextLength:SQLINTEGER):SQLRETURN;stdcall;
882
 
 
883
 
type   TSQLCloseCursor=function (StatementHandle:SQLHSTMT):SQLRETURN;stdcall;
884
 
 
885
 
type   TSQLExecute=function (StatementHandle:SQLHSTMT):SQLRETURN;stdcall;
886
 
 
887
 
type   TSQLFetch=function (StatementHandle:SQLHSTMT):SQLRETURN;stdcall;
888
 
 
889
 
type   TSQLNumResultCols=function (StatementHandle:SQLHSTMT;
890
 
           var ColumnCount:SQLSMALLINT):SQLRETURN;stdcall;
891
 
 
892
 
type   TSQLDescribeCol=function (StatementHandle:SQLHSTMT;
893
 
           ColumnNumber:SQLUSMALLINT;ColumnName:PSQLCHAR;
894
 
           BufferLength:SQLSMALLINT;var NameLength:SQLSMALLINT;
895
 
           var DataType:SQLSMALLINT;var ColumnSize:SQLUINTEGER;
896
 
           var DecimalDigits:SQLSMALLINT;var Nullable:SQLSMALLINT):SQLRETURN;stdcall;
897
 
 
898
 
type   TSQLFetchScroll=function (StatementHandle:SQLHSTMT;
899
 
           FetchOrientation:SQLSMALLINT;FetchOffset:SQLINTEGER):SQLRETURN;stdcall;
900
 
 
901
 
type   TSQLExtendedFetch=function (hstmt:SQLHSTMT;
902
 
           fFetchType:SQLUSMALLINT;irow:SQLINTEGER;
903
 
           pcrow:PSQLUINTEGER;rgfRowStatus:PSQLUSMALLINT):SQLRETURN;stdcall;
904
 
 
905
 
type   TSQLGetData=function (StatementHandle:SQLHSTMT;
906
 
           ColumnNumber:SQLUSMALLINT;TargetType:SQLSMALLINT;
907
 
           TargetValue:SQLPOINTER;BufferLength:SQLINTEGER;
908
 
           StrLen_or_Ind:PSQLINTEGER):SQLRETURN;stdcall;
909
 
 
910
 
type   TSQLSetStmtAttr=function (StatementHandle:SQLHSTMT;
911
 
           Attribute:SQLINTEGER;Value:SQLPOINTER;
912
 
           StringLength:SQLINTEGER):SQLRETURN;stdcall;
913
 
 
914
 
type   TSQLGetStmtAttr=function (StatementHandle:SQLHSTMT;
915
 
           Attribute:SQLINTEGER;Value:SQLPOINTER;
916
 
           BufferLength:SQLINTEGER;StringLength:PSQLINTEGER):SQLRETURN;stdcall;
917
 
 
918
 
type   tSQLGetInfo=function (ConnectionHandle:SQLHDBC;
919
 
           InfoType:SQLUSMALLINT;InfoValue:SQLPOINTER;
920
 
           BufferLength:SQLSMALLINT;StringLength:PSQLSMALLINT):SQLRETURN;stdcall;
921
 
 
922
 
type   TSQLBulkOperations=function (StatementHandle: SQLHSTMT;
923
 
           Operation:SQLSMALLINT):SQLRETURN;stdcall;
924
 
 
925
 
type   TSQLPutData=function (StatementHandle:SQLHSTMT;
926
 
           Data:SQLPOINTER;StrLen_or_Ind:SQLINTEGER):SQLRETURN;stdcall;
927
 
 
928
 
type   TSQLBindCol=function (StatementHandle:SQLHSTMT;
929
 
           ColumnNumber:SQLUSMALLINT;TargetType:SQLSMALLINT;
930
 
           TargetValue:SQLPOINTER;BufferLength:SQLINTEGER;
931
 
           StrLen_or_Ind:PSQLINTEGER):SQLRETURN;stdcall;
932
 
 
933
 
type   TSQLSetPos=function (hstmt:SQLHSTMT;
934
 
           irow:SQLUSMALLINT;fOption:SQLUSMALLINT;
935
 
           fLock:SQLUSMALLINT):SQLRETURN;stdcall;
936
 
 
937
 
type   TSQLDataSources=function (EnvironmentHandle:SQLHENV;
938
 
           Direction:SQLUSMALLINT;ServerName:PSQLCHAR;
939
 
           BufferLength1:SQLSMALLINT;NameLength1:PSQLSMALLINT;
940
 
           Description:PSQLCHAR;BufferLength2:SQLSMALLINT;
941
 
           NameLength2:PSQLSMALLINT):SQLRETURN;stdcall;
942
 
 
943
 
type   TSQLDrivers=function (EnvironmentHandle:SQLHENV;
944
 
           Direction:SQLUSMALLINT;DriverDescription:PSQLCHAR;
945
 
           BufferLength1:SQLSMALLINT;DescriptionLength1:PSQLSMALLINT;
946
 
           DriverAttributes:PSQLCHAR;BufferLength2:SQLSMALLINT;
947
 
           AttributesLength2:PSQLSMALLINT):SQLRETURN;stdcall;
948
 
 
949
 
type   TSQLSetConnectAttr=function (ConnectionHandle:SQLHDBC;
950
 
           Attribute:SQLINTEGER; Value:SQLPOINTER;
951
 
           StringLength:SQLINTEGER):SQLRETURN;stdcall;
952
 
 
953
 
type   TSQLGetCursorName=function (StatementHandle:SQLHSTMT;
954
 
           CursorName:PSQLCHAR; BufferLength:SQLSMALLINT;
955
 
           NameLength:PSQLSMALLINT):SQLRETURN;stdcall;
956
 
 
957
 
type   TSQLSetCursorName=function (StatementHandle:SQLHSTMT;
958
 
           CursorName:PSQLCHAR; NameLength:SQLSMALLINT):SQLRETURN;stdcall;
959
 
 
960
 
type   TSQLRowCount=function (StatementHandle:SQLHSTMT;
961
 
           Var RowCount:SQLINTEGER):SQLRETURN;stdcall;
962
 
 
963
 
type   TSQLBindParameter=function (hstmt:SQLHSTMT;
964
 
           ipar:SQLUSMALLINT;fParamType:SQLSMALLINT;
965
 
           fCType:SQLSMALLINT;fSqlType:SQLSMALLINT;
966
 
           cbColDef:SQLUINTEGER;ibScale:SQLSMALLINT;
967
 
           rgbValue:SQLPOINTER;cbValueMax:SQLINTEGER;
968
 
           pcbValue:PSQLINTEGER):SQLRETURN;stdcall;
969
 
 
970
 
type   TSQLFreeStmt=function (StatementHandle:SQLHSTMT;
971
 
           Option:SQLUSMALLINT):SQLRETURN;stdcall;
972
 
 
973
 
type   TSQLColAttribute=function (StatementHandle:SQLHSTMT;
974
 
           ColumnNumber:SQLUSMALLINT;FieldIdentifier:SQLUSMALLINT;
975
 
           CharacterAttribute:PSQLCHAR;BufferLength:SQLSMALLINT;
976
 
           StringLength:PSQLSMALLINT;NumericAttribute:SQLPOINTER):SQLRETURN;stdcall;
977
 
 
978
 
type   TSQLEndTran=function (HandleType:SQLSMALLINT;
979
 
           Handle:SQLHANDLE;CompletionType:SQLSMALLINT):SQLRETURN;stdcall;
980
 
 
981
 
type   TSQLTables=function ( hstmt : SQLHSTMT;
982
 
           szTableQualifier : PSQLCHAR;cbTableQualifier : SQLSMALLINT;
983
 
           szTableOwner : PSQLCHAR;cbTableOwner : SQLSMALLINT;
984
 
           szTableName : PSQLCHAR;cbTableName : SQLSMALLINT;
985
 
           szTableType : PSQLCHAR;cbTableType : SQLSMALLINT ) : SQLRETURN; stdcall;
986
 
 
987
 
type   TSQLColumns=function ( hstmt : SQLHSTMT;
988
 
           szTableQualifier : PSQLCHAR;cbTableQualifier : SQLSMALLINT;
989
 
           szTableOwner : PSQLCHAR;cbTableOwner : SQLSMALLINT;
990
 
           szTableName : PSQLCHAR;cbTableName : SQLSMALLINT;
991
 
           szColumnName : PSQLCHAR;cbColumnName : SQLSMALLINT ) : SQLRETURN; stdcall;
992
 
 
993
 
type   TSQLSpecialColumns=function (StatementHandle:SQLHSTMT;
994
 
           IdentifierType:SQLUSMALLINT;CatalogName:PSQLCHAR;
995
 
           NameLength1:SQLSMALLINT;SchemaName:PSQLCHAR;
996
 
           NameLength2:SQLSMALLINT;TableName:PSQLCHAR;
997
 
           NameLength3:SQLSMALLINT;Scope:SQLUSMALLINT;
998
 
           Nullable:SQLUSMALLINT) : SQLRETURN; stdcall;
999
 
 
1000
 
type   TSQLProcedures=function ( hstmt : SQLHSTMT;
1001
 
           szTableQualifier : PSQLCHAR;cbTableQualifier : SQLSMALLINT;
1002
 
           szTableOwner : PSQLCHAR;cbTableOwner : SQLSMALLINT;
1003
 
           szTableName : PSQLCHAR;cbTableName : SQLSMALLINT ) : SQLRETURN; stdcall;
1004
 
 
1005
 
type   TSQLPrimaryKeys=function (hstmt : SQLHSTMT;
1006
 
           CatalogName:PSQLCHAR;NameLength1:SQLSMALLINT;
1007
 
           SchemaName:PSQLCHAR;NameLength2:SQLSMALLINT;
1008
 
           TableName:PSQLCHAR;NameLength3:SQLSMALLINT ):SQLRETURN;stdcall;
1009
 
type   TSQLProcedureColumns = function(hstmt: SQLHSTMT;
1010
 
           CatalogName: PSQLCHAR; NameLength1: SQLSMALLINT;
1011
 
           SchemaName: PSQLCHAR; NameLength2: SQLSMALLINT;
1012
 
           ProcName: PSQLCHAR; NameLength3: SQLSMALLINT;
1013
 
           ColumnName: PSQLCHAR; NameLength4: SQLSMALLINT): SQLRETURN; stdcall;
1014
 
 
1015
 
var    SQLAllocHandle:tSQLAllocHandle;
1016
 
var    SQLSetEnvAttr:tSQLSetEnvAttr;
1017
 
var    SQLFreeHandle:tSQLFreeHandle;
1018
 
var    SQLGetInfo:tSQLGetInfo;
1019
 
var    SQLProcedures:TSQLProcedures;
1020
 
var    SQLColumns:TSQLColumns;
1021
 
var    SQLSpecialColumns:TSQLSpecialColumns;
1022
 
var    SQLGetDiagRec:TSQLGetDiagRec;
1023
 
var    SQLConnect:TSQLConnect;
1024
 
var    SQLDisconnect:TSQLDisconnect;
1025
 
var    SQLDriverConnect:TSQLDriverConnect;
1026
 
var    SQLExecDirect:TSQLExecDirect;
1027
 
var    SQLPrepare:TSQLPrepare;
1028
 
var    SQLCloseCursor:TSQLCloseCursor;
1029
 
var    SQLExecute:TSQLExecute;
1030
 
var    SQLFetch:TSQLFetch;
1031
 
var    SQLNumResultCols:TSQLNumResultCols;
1032
 
var    SQLDescribeCol:TSQLDescribeCol;
1033
 
var    SQLFetchScroll:TSQLFetchScroll;
1034
 
var    SQLExtendedFetch:TSQLExtendedFetch;
1035
 
var    SQLGetData:TSQLGetData;
1036
 
var    SQLSetStmtAttr:TSQLSetStmtAttr;
1037
 
var    SQLGetStmtAttr:TSQLGetStmtAttr;
1038
 
var    SQLBulkOperations:TSQLBulkOperations;
1039
 
var    SQLPutData:TSQLPutData;
1040
 
var    SQLBindCol:TSQLBindCol;
1041
 
var    SQLSetPos:TSQLSetPos;
1042
 
var    SQLDataSources:TSQLDataSources;
1043
 
var    SQLDrivers:TSQLDrivers;
1044
 
var    SQLSetConnectAttr:TSQLSetConnectAttr;
1045
 
var    SQLGetCursorName:TSQLGetCursorName;
1046
 
var    SQLSetCursorName:TSQLSetCursorName;
1047
 
var    SQLRowCount:TSQLRowCount;
1048
 
var    SQLBindParameter:TSQLBindParameter;
1049
 
var    SQLFreeStmt:TSQLFreeStmt;
1050
 
var    SQLColAttribute:TSQLColAttribute;
1051
 
var    SQLEndTran:TSQLEndTran;
1052
 
var    SQLTables:TSQLTables;
1053
 
var    SQLPrimaryKeys:TSQLPrimaryKeys;
1054
 
var    SQLProcedureColumns : TSQLProcedureColumns;
1055
 
var    odbcversion:word;
1056
 
 
1057
 
{$else}
1058
 
 
1059
 
{$ifdef unix}
1060
 
Const
1061
 
  LibName = 'odbc';
1062
 
{$else}
1063
 
  LibName = 'odbc32.dll';
1064
 
{$endif}
1065
 
 
1066
 
  function SQLAllocHandle(
1067
 
               HandleType: SQLSMALLINT;
1068
 
               InputHandle:SQLHANDLE;
1069
 
               Var OutputHandlePtr: SQLHANDLE):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1070
 
  function SQLSetEnvAttr(
1071
 
               EnvironmentHandle:SQLHENV;
1072
 
               Attribute:        SQLINTEGER;
1073
 
               Value:            SQLPOINTER;
1074
 
               StringLength:     SQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1075
 
   function SQLGetEnvAttr(
1076
 
               EnvironmentHandle:SQLHENV;
1077
 
               Attribute:SQLINTEGER;
1078
 
               Value:SQLPOINTER;
1079
 
               BufferLength:SQLINTEGER;
1080
 
               StringLength:PSQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1081
 
   function SQLFreeHandle(
1082
 
               HandleType: SQLSMALLINT;
1083
 
               Handle:     SQLHANDLE):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1084
 
   function SQLGetDiagRec(
1085
 
               HandleType:   SQLSMALLINT;
1086
 
               Handle:       SQLHANDLE;
1087
 
               RecNumber:    SQLSMALLINT;
1088
 
               Sqlstate:     PSQLCHAR;
1089
 
               var NativeError: SQLINTEGER;
1090
 
               MessageText:     PSQLCHAR;
1091
 
               BufferLength:    SQLSMALLINT;
1092
 
               var TextLength:  SQLSMALLINT ):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1093
 
   function SQLConnect(
1094
 
               ConnectionHandle:SQLHDBC;
1095
 
               ServerName:PSQLCHAR;    NameLength1:SQLSMALLINT;
1096
 
               UserName:PSQLCHAR;      NameLength2:SQLSMALLINT;
1097
 
               Authentication:PSQLCHAR;NameLength3:SQLSMALLINT
1098
 
              ):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1099
 
   function SQLDisconnect(
1100
 
               ConnectionHandle:SQLHDBC):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1101
 
   function SQLDriverConnect(
1102
 
               hdbc: SQLHDBC;
1103
 
               hwnd: Integer;
1104
 
               szCsin: PChar;
1105
 
               szCLen: SQLSMALLINT;
1106
 
               szCsout: PChar;
1107
 
               cbCSMax: SQLSMALLINT;
1108
 
               Var cbCsOut: SQLSMALLINT;
1109
 
               f: Integer):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1110
 
   function SQLBrowseConnect(
1111
 
               hdbc : SQLHDBC;
1112
 
               szConnStrIn :PSQLCHAR;
1113
 
               cbConnStrIn: SQLSMALLINT;
1114
 
               szConnStrOut : PSQLCHAR;
1115
 
               cbConnStrOutMax : SQLSMALLINT;
1116
 
               Var cbConnStrOut : SQLSMALLINT) : SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1117
 
   function SQLExecDirect(
1118
 
               StatementHandle:SQLHSTMT;
1119
 
               StatementText:  PSQLCHAR;
1120
 
               TextLength:     SQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1121
 
   function SQLPrepare(
1122
 
               StatementHandle:SQLHSTMT;
1123
 
               StatementText:PSQLCHAR;
1124
 
               TextLength:SQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1125
 
   function SQLCloseCursor(
1126
 
               StatementHandle:SQLHSTMT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1127
 
   function SQLExecute(
1128
 
               StatementHandle:SQLHSTMT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1129
 
   function SQLFetch(
1130
 
               StatementHandle:SQLHSTMT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1131
 
   function SQLNumResultCols(
1132
 
               StatementHandle:SQLHSTMT;
1133
 
               var ColumnCount:SQLSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1134
 
   function SQLDescribeCol(
1135
 
               StatementHandle:SQLHSTMT;
1136
 
               ColumnNumber:SQLUSMALLINT;
1137
 
               ColumnName:PSQLCHAR;
1138
 
               BufferLength:SQLSMALLINT;
1139
 
               var NameLength:SQLSMALLINT;
1140
 
               var DataType:SQLSMALLINT;
1141
 
               var ColumnSize:SQLUINTEGER;
1142
 
               var DecimalDigits:SQLSMALLINT;
1143
 
               var Nullable:SQLSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1144
 
   function SQLFetchScroll(
1145
 
               StatementHandle:SQLHSTMT;
1146
 
               FetchOrientation:SQLSMALLINT;
1147
 
               FetchOffset:SQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1148
 
   function SQLExtendedFetch(
1149
 
               hstmt:SQLHSTMT;
1150
 
               fFetchType:SQLUSMALLINT;
1151
 
               irow:SQLINTEGER;
1152
 
               pcrow:PSQLUINTEGER;
1153
 
               rgfRowStatus:PSQLUSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1154
 
   function SQLGetData(
1155
 
               StatementHandle:SQLHSTMT;
1156
 
               ColumnNumber:SQLUSMALLINT;
1157
 
               TargetType:SQLSMALLINT;
1158
 
               TargetValue:SQLPOINTER;
1159
 
               BufferLength:SQLINTEGER;
1160
 
               StrLen_or_Ind:PSQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1161
 
   function SQLSetStmtAttr(
1162
 
               StatementHandle:SQLHSTMT;
1163
 
               Attribute:SQLINTEGER;
1164
 
               Value:SQLPOINTER;
1165
 
               StringLength:SQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1166
 
   function SQLGetStmtAttr(
1167
 
               StatementHandle:SQLHSTMT;
1168
 
               Attribute:SQLINTEGER;
1169
 
               Value:SQLPOINTER;
1170
 
               BufferLength:SQLINTEGER;
1171
 
               StringLength:PSQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1172
 
   function SQLGetInfo(
1173
 
               ConnectionHandle:SQLHDBC;
1174
 
               InfoType:SQLUSMALLINT;
1175
 
               InfoValue:SQLPOINTER;
1176
 
               BufferLength:SQLSMALLINT;
1177
 
               StringLength:PSQLSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1178
 
   function SQLBulkOperations(
1179
 
               StatementHandle: SQLHSTMT;
1180
 
               Operation:SQLSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1181
 
   function SQLPutData(
1182
 
               StatementHandle:SQLHSTMT;
1183
 
               Data:SQLPOINTER;
1184
 
               StrLen_or_Ind:SQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1185
 
   function SQLBindCol(
1186
 
               StatementHandle:SQLHSTMT;
1187
 
               ColumnNumber:SQLUSMALLINT;
1188
 
               TargetType:SQLSMALLINT;
1189
 
               TargetValue:SQLPOINTER;
1190
 
               BufferLength:SQLINTEGER;
1191
 
               StrLen_or_Ind:PSQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1192
 
   function SQLSetPos(
1193
 
               hstmt:SQLHSTMT;
1194
 
               irow:SQLUSMALLINT;
1195
 
               fOption:SQLUSMALLINT;
1196
 
               fLock:SQLUSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1197
 
   function SQLDataSources(
1198
 
               EnvironmentHandle:SQLHENV;
1199
 
               Direction:SQLUSMALLINT;
1200
 
               ServerName:PSQLCHAR;
1201
 
               BufferLength1:SQLSMALLINT;
1202
 
               NameLength1:PSQLSMALLINT;
1203
 
               Description:PSQLCHAR;
1204
 
               BufferLength2:SQLSMALLINT;
1205
 
               NameLength2:PSQLSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1206
 
   function SQLDrivers(
1207
 
               EnvironmentHandle:SQLHENV;
1208
 
               Direction:SQLUSMALLINT;
1209
 
               DriverDescription:PSQLCHAR;
1210
 
               BufferLength1:SQLSMALLINT;
1211
 
               DescriptionLength1:PSQLSMALLINT;
1212
 
               DriverAttributes:PSQLCHAR;
1213
 
               BufferLength2:SQLSMALLINT;
1214
 
               AttributesLength2:PSQLSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1215
 
   function SQLSetConnectAttr(
1216
 
               ConnectionHandle:SQLHDBC;
1217
 
               Attribute:SQLINTEGER; Value:SQLPOINTER;
1218
 
               StringLength:SQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1219
 
   function SQLGetCursorName(
1220
 
               StatementHandle:SQLHSTMT;
1221
 
               CursorName:PSQLCHAR; BufferLength:SQLSMALLINT;
1222
 
               NameLength:PSQLSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1223
 
   function SQLSetCursorName(
1224
 
               StatementHandle:SQLHSTMT;
1225
 
               CursorName:PSQLCHAR; NameLength:SQLSMALLINT
1226
 
               ):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1227
 
   function SQLRowCount(
1228
 
               StatementHandle:SQLHSTMT;
1229
 
               Var RowCount:SQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1230
 
   function SQLBindParameter(
1231
 
               hstmt:SQLHSTMT;
1232
 
               ipar:SQLUSMALLINT;
1233
 
               fParamType:SQLSMALLINT;
1234
 
               fCType:SQLSMALLINT;
1235
 
               fSqlType:SQLSMALLINT;
1236
 
               cbColDef:SQLUINTEGER;
1237
 
               ibScale:SQLSMALLINT;
1238
 
               rgbValue:SQLPOINTER;
1239
 
               cbValueMax:SQLINTEGER;
1240
 
               pcbValue:PSQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1241
 
   function SQLFreeStmt(
1242
 
               StatementHandle:SQLHSTMT;
1243
 
               Option:SQLUSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1244
 
   function SQLColAttribute (
1245
 
               StatementHandle:SQLHSTMT;
1246
 
               ColumnNumber:SQLUSMALLINT;
1247
 
               FieldIdentifier:SQLUSMALLINT;
1248
 
               CharacterAttribute:PSQLCHAR;
1249
 
               BufferLength:SQLSMALLINT;
1250
 
               StringLength:PSQLSMALLINT;
1251
 
               NumericAttribute:SQLPOINTER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1252
 
{$ifdef ODBCVER3}
1253
 
   function SQLEndTran(
1254
 
               HandleType:SQLSMALLINT;
1255
 
               Handle:SQLHANDLE;
1256
 
               CompletionType:SQLSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1257
 
{$endif}
1258
 
   function SQLTables( hstmt : SQLHSTMT;
1259
 
                szTableQualifier : PSQLCHAR;
1260
 
                cbTableQualifier : SQLSMALLINT;
1261
 
                szTableOwner : PSQLCHAR;
1262
 
                cbTableOwner : SQLSMALLINT;
1263
 
                szTableName : PSQLCHAR;
1264
 
                cbTableName : SQLSMALLINT;
1265
 
                szTableType : PSQLCHAR;
1266
 
                cbTableType : SQLSMALLINT ) : SQLRETURN; {$ifdef win32}stdcall{$else}cdecl{$endif}; external LibName;
1267
 
   function SQLColumns( hstmt : SQLHSTMT;
1268
 
                szTableQualifier : PSQLCHAR;
1269
 
                cbTableQualifier : SQLSMALLINT;
1270
 
                szTableOwner : PSQLCHAR;
1271
 
                cbTableOwner : SQLSMALLINT;
1272
 
                szTableName : PSQLCHAR;
1273
 
                cbTableName : SQLSMALLINT;
1274
 
                szColumnName : PSQLCHAR;
1275
 
                cbColumnName : SQLSMALLINT ) : SQLRETURN; {$ifdef win32}stdcall{$else}cdecl{$endif}; external LibName;
1276
 
   function SQLSpecialColumns(StatementHandle:SQLHSTMT;
1277
 
                IdentifierType:SQLUSMALLINT;
1278
 
                CatalogName:PSQLCHAR;
1279
 
                NameLength1:SQLSMALLINT;
1280
 
                SchemaName:PSQLCHAR;
1281
 
                NameLength2:SQLSMALLINT;
1282
 
                TableName:PSQLCHAR;
1283
 
                NameLength3:SQLSMALLINT;
1284
 
                Scope:SQLUSMALLINT;
1285
 
                Nullable:SQLUSMALLINT) : SQLRETURN; {$ifdef win32}stdcall{$else}cdecl{$endif}; external LibName;
1286
 
   function SQLProcedures( hstmt : SQLHSTMT;
1287
 
                szTableQualifier : PSQLCHAR;
1288
 
                cbTableQualifier : SQLSMALLINT;
1289
 
                szTableOwner : PSQLCHAR;
1290
 
                cbTableOwner : SQLSMALLINT;
1291
 
                szTableName : PSQLCHAR;
1292
 
                cbTableName : SQLSMALLINT ) : SQLRETURN; {$ifdef win32}stdcall{$else}cdecl{$endif}; external LibName;
1293
 
   function SQLPrimaryKeys(hstmt : SQLHSTMT;
1294
 
                CatalogName:PSQLCHAR;NameLength1:SQLSMALLINT;
1295
 
                SchemaName:PSQLCHAR;NameLength2:SQLSMALLINT;
1296
 
                TableName:PSQLCHAR;
1297
 
                NameLength3:SQLSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1298
 
   function SQLProcedureColumns(hstmt: SQLHSTMT;
1299
 
                CatalogName: PSQLCHAR; NameLength1: SQLSMALLINT;
1300
 
                SchemaName: PSQLCHAR; NameLength2: SQLSMALLINT;
1301
 
                ProcName: PSQLCHAR; NameLength3: SQLSMALLINT;
1302
 
                ColumnName: PSQLCHAR; NameLength4: SQLSMALLINT): SQLRETURN; {$ifdef win32}stdcall{$else}cdecl{$endif};
1303
 
                external LibName;
1304
 
{$endif}
1305
 
// This function always load dynamic
1306
 
type   TSQLConfigDataSource=function (
1307
 
           hwndParent:       Integer;
1308
 
           fRequest:         Integer;
1309
 
           lpszDriverString: String;
1310
 
           lpszAttributes:   String): SQLRETURN;stdcall;
1311
 
       TSQLInstallerError=function (
1312
 
               iError:          SQLUSMALLINT;
1313
 
               pfErrorCode:     PSQLINTEGER;
1314
 
               lpszErrorMsg:    PCHAR;
1315
 
               cbErrorMsgMax:   SQLUSMALLINT;
1316
 
               pcbErrorMsg:     PSQLUSMALLINT): SQLRETURN;stdcall;
1317
 
{$ifndef unix}
1318
 
function SQLConfigDataSource(
1319
 
               hwndParent:       Integer;
1320
 
               fRequest:         Integer;
1321
 
               lpszDriverString: String;
1322
 
               lpszAttributes:   String): Integer;stdcall;
1323
 
function SQLInstallerError(
1324
 
               iError:          SQLUSMALLINT;
1325
 
               pfErrorCode:     PSQLINTEGER;
1326
 
               lpszErrorMsg:    PCHAR;
1327
 
               cbErrorMsgMax:   SQLUSMALLINT;
1328
 
               pcbErrorMsg:     PSQLUSMALLINT): SQLRETURN;
1329
 
{$endif}
1330
 
function DateStructToDateTime( b:PSQL_DATE_STRUCT):TDateTime;
1331
 
function DateTimeToDateStruct( b:TDateTime):SQL_DATE_STRUCT;
1332
 
procedure DateTime2TimeStampStruct( var Value:SQL_TIMESTAMP_STRUCT; b:TDateTime);
1333
 
Function TimeStampStructToDateTime( B :  PSQL_TIMESTAMP_STRUCT) : TDateTime;
1334
 
Function TimeStructToDateTime (B : PSQL_TIME_STRUCT) : TDateTime;
1335
 
 
1336
 
procedure LoadOdbc;
1337
 
procedure UnLoadOdbc;
1338
 
 
1339
 
implementation
1340
 
 
1341
 
{$ifndef unix}
1342
 
uses Windows;
1343
 
{$endif}
1344
 
 
1345
 
{$IFDEF VER110}
1346
 
{$HPPEMIT '#pragma comment(lib,"odbc32.lib")'}
1347
 
{$ENDIF}
1348
 
 
1349
 
{$ifndef unix}
1350
 
Var
1351
 
{$IFDEF DYNLOADINGODBC}
1352
 
   OdbcHMODULE:  HMODULE;
1353
 
{$ENDIF}
1354
 
   OdbccpHMODULE:HMODULE;
1355
 
{$endif}
1356
 
 
1357
 
function DateStructToDateTime( b:PSQL_DATE_STRUCT):TDateTime;
1358
 
begin
1359
 
  Result:=EncodeDate( b^.Year, b^.Month, b^.Day);
1360
 
end;
1361
 
 
1362
 
function DateTimeToDateStruct( b:TDateTime):SQL_DATE_STRUCT;
1363
 
var
1364
 
  y,m,d: Word;
1365
 
begin
1366
 
  DecodeDate( b, y, m, d);
1367
 
  with Result do
1368
 
  begin
1369
 
    Year:=y; Month:=m; Day:=d;
1370
 
  end;
1371
 
end;
1372
 
 
1373
 
procedure DateTime2TimeStampStruct( var Value:SQL_TIMESTAMP_STRUCT; b:TDateTime);
1374
 
var
1375
 
  w1,w2,w3,w4: Word;
1376
 
begin
1377
 
   with Value do
1378
 
   begin
1379
 
      DecodeDate(b,w1,w2,w3);
1380
 
      Year   := w1;
1381
 
      Month  := w2;
1382
 
      Day    := w3;
1383
 
      DecodeTime(b,w1,w2,w3,w4);
1384
 
      Hour   := w1;
1385
 
      Minute := w2;
1386
 
      Second := w3;
1387
 
      fraction := Integer(w4)*1000000;
1388
 
   end;
1389
 
end;
1390
 
{
1391
 
  SQL_DATE_STRUCT = packed record
1392
 
    Year : SQLSMALLINT;
1393
 
    Month : SQLUSMALLINT;
1394
 
    Day : SQLUSMALLINT;
1395
 
  end;
1396
 
  PSQL_DATE_STRUCT = ^SQL_DATE_STRUCT;
1397
 
}
1398
 
 
1399
 
Function TimeStampStructToDateTime( B :  PSQL_TIMESTAMP_STRUCT) : TDateTime;
1400
 
 
1401
 
begin
1402
 
 With B^ do
1403
 
   Result:=EncodeDate(Year,Month,Day)+
1404
 
           EncodeTime(Hour,Minute,Second,0);
1405
 
end;
1406
 
 
1407
 
Function TimeStructToDateTime (B : PSQL_TIME_STRUCT) : TDateTime;
1408
 
begin
1409
 
  With B^ do
1410
 
    Result:=EncodeTime(Hour,Minute,Second,0);
1411
 
end;
1412
 
 
1413
 
 
1414
 
 
1415
 
{$ifdef DYNLOADINGODBC}
1416
 
 
1417
 
Function GetODBCVersion(Odbc:HMODULE):word;
1418
 
var
1419
 
  lpFilename:pchar;
1420
 
{$IFDEF D4UP}
1421
 
  tmp,lpdwHandle:cardinal;
1422
 
{$ELSE}
1423
 
  tmp,lpdwHandle:integer;
1424
 
{$ENDIF}
1425
 
  F,lpData:pointer;
1426
 
begin
1427
 
  getmem(lpFilename,255);
1428
 
  if GetModuleFileName(Odbc,lpFilename,254) = 0 then
1429
 
    raise Exception.Create('Error while get module file name');
1430
 
 
1431
 
  lpdwHandle:=GetFileVersionInfoSize(lpFilename,tmp);
1432
 
  getmem( lpdata, lpdwHandle);
1433
 
  result := 0;
1434
 
  if GetFileVersionInfo(lpFilename,0,lpdwHandle,lpData) then
1435
 
  begin
1436
 
{$IFDEF D4UP}
1437
 
     tmp := sizeof(tagVS_FIXEDFILEINFO);
1438
 
{$ELSE}
1439
 
     tmp := sizeof(TVSFixedFileInfo);
1440
 
{$ENDIF}
1441
 
    VerQueryValue( lpData, '\', f, tmp);
1442
 
    result := hiword(PVSFixedFileInfo(f).dwProductVersionMS) * 256 + Loword(PVSFixedFileInfo(f).dwProductVersionMS);
1443
 
  end;
1444
 
  Freemem(lpdata,lpdwHandle);
1445
 
  Freemem(lpFilename,255);
1446
 
end;
1447
 
 
1448
 
Function GetAdresstoFunction(funcname:string):FARPROC;
1449
 
begin
1450
 
  result:=GetProcAddress(OdbcHMODULE,pchar(funcname));
1451
 
  if result = nil then
1452
 
  begin
1453
 
    //result:=@ThisFunctionisnotavailable;
1454
 
    raise Exception.create('Error Getting adress for '+Funcname+#13+syserrormessage(GetLastError));
1455
 
  end;
1456
 
end;
1457
 
{$endif}
1458
 
 
1459
 
function syserrormessage(I : Integer) : string;
1460
 
begin
1461
 
  result:='error '+inttostr(i);
1462
 
end;
1463
 
 
1464
 
 
1465
 
procedure LoadOdbc;
1466
 
begin
1467
 
{$ifdef DYNLOADINGODBC}
1468
 
  if OdbcHMODULE <> 0 then
1469
 
    exit;
1470
 
 
1471
 
  OdbcHMODULE := LoadLibrary('ODBC32.DLL');
1472
 
 
1473
 
  if OdbcHMODULE = 0 then
1474
 
    raise Exception.create(syserrormessage(GetLastError));
1475
 
 
1476
 
  odbcversion:=GetODBCVersion(OdbcHMODULE);
1477
 
//Here we know the version of the odbc driver. eg '3.5'
1478
 
 
1479
 
  SQLAllocHandle:=GetAdresstoFunction('SQLAllocHandle');
1480
 
  SQLSetEnvAttr:=GetAdresstoFunction('SQLSetEnvAttr');
1481
 
  SQLFreeHandle:=GetAdresstoFunction('SQLFreeHandle');
1482
 
  SQLGetInfo:=GetAdresstoFunction('SQLGetInfo');
1483
 
  SQLProcedures:=GetAdresstoFunction('SQLProcedures');
1484
 
  SQLColumns:=GetAdresstoFunction('SQLColumns');
1485
 
  SQLSpecialColumns:=GetAdresstoFunction('SQLSpecialColumns');
1486
 
  SQLGetDiagRec:=GetAdresstoFunction('SQLGetDiagRec');
1487
 
  SQLConnect:=GetAdresstoFunction('SQLConnect');
1488
 
  SQLDisconnect:=GetAdresstoFunction('SQLDisconnect');
1489
 
  SQLDriverConnect:=GetAdresstoFunction('SQLDriverConnect');
1490
 
  SQLExecDirect:=GetAdresstoFunction('SQLExecDirect');
1491
 
  SQLPrepare:=GetAdresstoFunction('SQLPrepare');
1492
 
  SQLCloseCursor:=GetAdresstoFunction('SQLCloseCursor');
1493
 
  SQLExecute:=GetAdresstoFunction('SQLExecute');
1494
 
  SQLFetch:=GetAdresstoFunction('SQLFetch');
1495
 
  SQLNumResultCols:=GetAdresstoFunction('SQLNumResultCols');
1496
 
  SQLDescribeCol:=GetAdresstoFunction('SQLDescribeCol');
1497
 
  SQLFetchScroll:=GetAdresstoFunction('SQLFetchScroll');
1498
 
  SQLExtendedFetch:=GetAdresstoFunction('SQLExtendedFetch');
1499
 
  SQLGetData:=GetAdresstoFunction('SQLGetData');
1500
 
  SQLSetStmtAttr:=GetAdresstoFunction('SQLSetStmtAttr');
1501
 
  SQLGetStmtAttr:=GetAdresstoFunction('SQLGetStmtAttr');
1502
 
  SQLBulkOperations:=GetAdresstoFunction('SQLBulkOperations');
1503
 
  SQLPutData:=GetAdresstoFunction('SQLPutData');
1504
 
  SQLBindCol:=GetAdresstoFunction('SQLBindCol');
1505
 
  SQLSetPos:=GetAdresstoFunction('SQLSetPos');
1506
 
  SQLDataSources:=GetAdresstoFunction('SQLDataSources');
1507
 
  SQLDrivers:=GetAdresstoFunction('SQLDrivers');
1508
 
  SQLSetConnectAttr:=GetAdresstoFunction('SQLSetConnectAttr');
1509
 
  SQLGetCursorName:=GetAdresstoFunction('SQLGetCursorName');
1510
 
  SQLSetCursorName:=GetAdresstoFunction('SQLSetCursorName');
1511
 
  SQLRowCount:=GetAdresstoFunction('SQLRowCount');
1512
 
  SQLBindParameter:=GetAdresstoFunction('SQLBindParameter');
1513
 
  SQLFreeStmt:=GetAdresstoFunction('SQLFreeStmt');
1514
 
  SQLColAttribute:=GetAdresstoFunction('SQLColAttribute');
1515
 
  SQLEndTran:=GetAdresstoFunction('SQLEndTran');
1516
 
  SQLTables:=GetAdresstoFunction('SQLTables');
1517
 
  SQLPrimaryKeys:=GetAdresstoFunction('SQLPrimaryKeys');
1518
 
  SQLProcedureColumns:=GetAdresstoFunction('SQLProcedureColumns');
1519
 
{$endif}
1520
 
end;
1521
 
 
1522
 
procedure UnLoadOdbc;
1523
 
begin
1524
 
{$ifdef DYNLOADINGODBC}
1525
 
  if  OdbcHMODULE<>0 then
1526
 
  begin
1527
 
    if not FreeLibrary(OdbcHMODULE) then
1528
 
    begin
1529
 
      raise Exception.create(syserrormessage(GetLastError));
1530
 
    end;
1531
 
  end;
1532
 
 
1533
 
  OdbcHMODULE := 0;
1534
 
{$endif}
1535
 
{$ifndef unix}
1536
 
  if  OdbccpHMODULE <> 0 then
1537
 
  begin
1538
 
    if not FreeLibrary(OdbccpHMODULE) then
1539
 
    begin
1540
 
      raise Exception.create(syserrormessage(GetLastError));
1541
 
    end;
1542
 
  end;
1543
 
 
1544
 
  OdbccpHMODULE:=0;
1545
 
{$endif}
1546
 
end;
1547
 
 
1548
 
//  function SQLConfigDataSource(
1549
 
//               hwndParent:       Integer;
1550
 
//               fRequest:         Integer;
1551
 
//               lpszDriverString: String;
1552
 
//               lpszAttributes:   String): Integer;stdcall;external 'ODBCCP32.DLL';
1553
 
 
1554
 
{$ifndef unix}
1555
 
function SQLConfigDataSource(
1556
 
                             hwndParent:       Integer;
1557
 
                             fRequest:         Integer;
1558
 
                             lpszDriverString: String;
1559
 
                             lpszAttributes:   String): Integer;stdcall;
1560
 
var
1561
 
  func: TSQLConfigDataSource;
1562
 
begin
1563
 
  if OdbccpHMODULE = 0 then
1564
 
  begin
1565
 
    OdbccpHMODULE := LoadLibrary('ODBCCP32.DLL');
1566
 
     if OdbccpHMODULE = 0 then
1567
 
       raise Exception.create(syserrormessage(GetLastError));
1568
 
  end;
1569
 
 
1570
 
  func := TSQLConfigDataSource(GetProcAddress(OdbccpHMODULE,pchar('SQLConfigDataSource')));
1571
 
  if @func = nil then
1572
 
    raise Exception.create('Error Getting adress for SQLConfigDataSource'+#13+syserrormessage(GetLastError));
1573
 
 
1574
 
  Result := func(hwndParent,fRequest,lpszDriverString,lpszAttributes);
1575
 
end;
1576
 
 
1577
 
//SQLRETURN INSTAPI SQLInstallerError(WORD iError,
1578
 
//                                      DWORD *pfErrorCode,
1579
 
//                                      LPSTR   lpszErrorMsg,
1580
 
//                                      WORD    cbErrorMsgMax,
1581
 
//                                      WORD    *pcbErrorMsg);
1582
 
function SQLInstallerError(
1583
 
                           iError:          SQLUSMALLINT;
1584
 
                           pfErrorCode:     PSQLINTEGER;
1585
 
                           lpszErrorMsg:    PCHAR;
1586
 
                           cbErrorMsgMax:   SQLUSMALLINT;
1587
 
                           pcbErrorMsg:     PSQLUSMALLINT): SQLRETURN;
1588
 
var
1589
 
  func: TSQLInstallerError;
1590
 
begin
1591
 
  if OdbccpHMODULE = 0 then
1592
 
  begin
1593
 
    OdbccpHMODULE := LoadLibrary('ODBCCP32.DLL');
1594
 
    if OdbccpHMODULE = 0 then
1595
 
      raise Exception.create(syserrormessage(GetLastError));
1596
 
  end;
1597
 
 
1598
 
  func := TSQLInstallerError(GetProcAddress(OdbccpHMODULE,pchar('SQLInstallerError')));
1599
 
 
1600
 
  if @func = nil then
1601
 
    raise Exception.create('Error Getting adress for SQLInstallerError'+#13+syserrormessage(GetLastError));
1602
 
 
1603
 
  Result := func( iError, pfErrorCode, lpszErrorMsg, cbErrorMsgMax, pcbErrorMsg);
1604
 
end;
1605
 
{$endif}
1606
 
 
1607
 
initialization
1608
 
 
1609
 
finalization
1610
 
begin
1611
 
  UnloadODBC;
1612
 
end;
1613
 
 
1614
 
end.