14
(* DATA TYPES CORRESPONDENCE
16
---------- ------------------
21
ftDateTime SQL_TYPE_TIMESTAMP
23
ftSmallint SQL_SMALLINT
26
ftMemo SQL_BINARY // SQL_VARCHAR
31
SQLSMALLINT = smallint;
33
SQLRETURN = SQLSMALLINT;
39
SQLUINTEGER = Cardinal;
45
PSQLINTEGER = ^SQLINTEGER;
46
PSQLUINTEGER = ^SQLUINTEGER;
47
PSQLSMALLINT = ^SQLSMALLINT;
48
PSQLUSMALLINT = ^SQLUSMALLINT;
50
PSQLDOUBLE = ^SQLDOUBLE;
51
PSQLFLOAT = ^SQLFLOAT;
52
PSQLHandle = ^SQLHANDLE;
55
{ SQL data type codes }
57
SQL_LONGVARCHAR =(-1);
60
SQL_LONGVARBINARY =(-4);
66
SQL_WLONGVARCHAR =(-10);
82
SQL_C_LONG = SQL_INTEGER;
86
SQL_TYPE_TIMESTAMP= 93;
98
SQL_DATE_STRUCT = packed record
100
Month : SQLUSMALLINT;
103
PSQL_DATE_STRUCT = ^SQL_DATE_STRUCT;
105
SQL_TIME_STRUCT = packed record
107
Minute : SQLUSMALLINT;
108
Second : SQLUSMALLINT;
110
PSQL_TIME_STRUCT = ^SQL_TIME_STRUCT;
112
SQL_TIMESTAMP_STRUCT = packed record
114
Month : SQLUSMALLINT;
117
Minute : SQLUSMALLINT;
118
Second : SQLUSMALLINT;
119
Fraction : SQLUINTEGER;
121
PSQL_TIMESTAMP_STRUCT = ^SQL_TIMESTAMP_STRUCT;
128
SQL_ATTR_ODBC_VERSION = 200;
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;
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;
145
SQL_SCROLL_OPTIONS = 44;
147
{ SQL_USE_BOOKMARKS options }
150
SQL_UB_DEFAULT = SQL_UB_OFF;
151
SQL_UB_FIXED = SQL_UB_ON;
154
{ SQL_SCROLL_OPTIONS masks }
155
SQL_SO_FORWARD_ONLY = $01;
156
SQL_SO_KEYSET_DRIVEN = $02;
157
SQL_SO_DYNAMIC = $04;
161
SQL_BOOKMARK_PERSISTENCE = 82;
162
SQL_STATIC_SENSITIVITY = 83;
164
{ SQL_BOOKMARK_PERSISTENCE values }
168
SQL_BP_TRANSACTION = $08;
170
SQL_BP_OTHER_HSTMT = $20;
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;
184
{ supported SQLFetchScroll FetchOrientation's }
186
SQL_CA1_ABSOLUTE = 2;
187
SQL_CA1_RELATIVE = 4;
188
SQL_CA1_BOOKMARK = 8;
190
{ supported SQLSetPos LockType's }
191
SQL_CA1_LOCK_NO_CHANGE= $40;
192
SQL_CA1_LOCK_EXCLUSIVE= $80;
193
SQL_CA1_LOCK_UNLOCK =$100;
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;
201
{ positioned updates and deletes }
202
SQL_CA1_POSITIONED_UPDATE=$2000;
203
SQL_CA1_POSITIONED_DELETE=$4000;
204
SQL_CA1_SELECT_FOR_UPDATE=$8000;
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;
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;
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;
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);
233
{ semantics of SQL_DIAG_CURSOR_ROW_COUNT }
234
SQL_CA2_CRC_EXACT = $1000;
235
SQL_CA2_CRC_APPROXIMATE = $2000;
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;
242
{ Operations in SQLBulkOperations }
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;
249
{ Operations in SQLSetPos }
255
{ Lock options in SQLSetPos }
256
SQL_LOCK_NO_CHANGE = 0;
257
SQL_LOCK_EXCLUSIVE = 1;
260
{ SQLExtendedFetch "rgfRowStatus" element values }
267
SQL_ROW_SUCCESS_WITH_INFO = 6;
272
SQL_MAX_DSN_LENGTH = 32; { maximum data source name size }
274
SQL_MAX_OPTION_STRING_LENGTH = 256;
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;
284
SQL_PARAM_TYPE_UNKNOWN = 0;
286
SQL_PARAM_INPUT_OUTPUT = 2;
288
SQL_PARAM_OUTPUT = 4;
289
SQL_RETURN_VALUE = 5;
291
{ special length/indicator values }
292
SQL_NULL_DATA = (-1);
293
SQL_DATA_AT_EXEC = (-2);
296
SQL_SUCCESS_WITH_INFO = 1;
300
SQL_INVALID_HANDLE =(-2);
302
SQL_STILL_EXECUTING = 2;
304
{ flags for null-terminated string }
307
{ maximum message length }
308
SQL_MAX_MESSAGE_LENGTH = 512;
310
{ date/time length constants }
313
SQL_TIME_LEN = 8; { add P+1 if precision is nonzero }
314
SQL_TIMESTAMP_LEN = 19; { add P+1 if precision is nonzero }
317
{ handle type identifiers }
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 }
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;
342
SQL_ASYNC_ENABLE =4; // same as SQL_ATTR_ASYNC_ENABLE */
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;
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;
367
//* connection attributes */
368
SQL_ACCESS_MODE =101;
369
// SQL_AUTOCOMMIT =102;
370
SQL_LOGIN_TIMEOUT =103;
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;
379
SQL_PACKET_SIZE =112;
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;
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;
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;
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 }
420
{ SQL_CONCURRENCY options }
421
SQL_CONCUR_READ_ONLY = 1;
423
SQL_CONCUR_ROWVER = 3;
424
SQL_CONCUR_VALUES = 4;
425
SQL_CONCUR_DEFAULT = SQL_CONCUR_READ_ONLY; { Default value }
427
{ identifiers of fields in the SQL descriptor }
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;
445
{ identifiers of fields in the diagnostics area }
447
SQL_DIAG_RETURNCODE = 1;
449
SQL_DIAG_ROW_COUNT = 3;
450
SQL_DIAG_SQLSTATE = 4;
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;
461
{ dynamic function codes }
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;
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 }
482
SQL_UNSIGNED_OFFSET = (-22);
483
SQL_C_ULONG = (SQL_C_LONG+SQL_UNSIGNED_OFFSET);
484
SQL_C_BOOKMARK = SQL_C_ULONG;
486
{ Statement attribute values for cursor sensitivity }
493
{ GetTypeInfo() request for all data types }
496
{ Default conversion code for SQLBindCol(), SQLBindParam() and SQLGetData() }
501
{ SQLGetData() code indicating that the application row descriptor
502
specifies the data type }
504
SQL_ARD_TYPE = (-99);
507
{ SQL date/time type subcodes }
511
SQL_CODE_TIMESTAMP = 3;
514
{ CLI option values }
520
{ values of NULLABLE field in descriptor }
524
{ Value returned by SQLGetTypeInfo() to denote that it is
525
not known whether or not a data type supports null values. }
527
SQL_NULLABLE_UNKNOWN = 2;
529
/* Values returned by SQLGetTypeInfo() to show WHERE clause
532
#if (ODBCVER >= 0x0300)
533
#define SQL_PRED_NONE 0
534
#define SQL_PRED_CHAR 1
535
#define SQL_PRED_BASIC 2
538
/* values of UNNAMED field in descriptor */
539
#if (ODBCVER >= 0x0300)
541
#define SQL_UNNAMED 1
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
550
{ FreeStmt() options }
554
SQL_RESET_PARAMS = 3;
556
{ Codes used for FetchOrientation in SQLFetchScroll(),
557
and in SQLDataSources() }
561
SQL_FETCH_FIRST_USER = 31;
562
SQL_FETCH_FIRST_SYSTEM = 32;
565
{ Other codes used for FetchOrientation in SQLFetchScroll() }
568
SQL_FETCH_ABSOLUTE = 5;
569
SQL_FETCH_RELATIVE = 6;
571
/* SQLEndTran() options */
573
#define SQL_ROLLBACK 1
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
583
//* null handle used in place of parent handle when allocating HENV */
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;
591
//* Column types and scopes in SQLSpecialColumns. */
596
#define SQL_PC_UNKNOWN 0
597
#if (ODBCVER >= 0x0300)
598
#define SQL_PC_NON_PSEUDO 1
600
#define SQL_PC_PSEUDO 2
603
//* Reserved value for the IdentifierType argument of SQLSpecialColumns() */
605
SQL_ROW_IDENTIFIER = 1;
609
/* Reserved values for UNIQUE argument of SQLStatistics() */
610
#define SQL_INDEX_UNIQUE 0
611
#define SQL_INDEX_ALL 1
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
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
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
648
SQL_SCROLL_CONCURRENCY = 43;
649
SQL_TXN_CAPABLE = 46;
650
SQL_TRANSACTION_CAPABLE = SQL_TXN_CAPABLE;
652
SQL_TXN_ISOLATION_OPTION = 72;
653
SQL_TRANSACTION_ISOLATION_OPTION = SQL_TXN_ISOLATION_OPTION;
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}
681
SQL_OJ_CAPABILITIES = 115;
682
SQL_OUTER_JOIN_CAPABILITIES = SQL_OJ_CAPABILITIES;
683
{$endif} { ODBCVER >= 0x0300 }
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 }
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 */
701
#if (ODBCVER >= 0x0300)
702
#define SQL_AT_ADD_CONSTRAINT 0x00000008L
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
721
#endif /* ODBCVER >= 0x0300 */
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
731
/* SQL_CURSOR_COMMIT_BEHAVIOR values */
732
#define SQL_CB_DELETE 0
733
#define SQL_CB_CLOSE 1
734
#define SQL_CB_PRESERVE 2
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
744
/* SQL_GETDATA_EXTENSIONS bitmasks */
745
#define SQL_GD_ANY_COLUMN 0x00000001L
746
#define SQL_GD_ANY_ORDER 0x00000002L
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
754
/* SQL_OJ_CAPABILITIES bitmasks */
755
/* NB: this means 'outer join', not what you may be thinking */
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
768
{ SQL_SCROLL_CONCURRENCY bitmasks }
769
SQL_SCCO_READ_ONLY = 1;
771
SQL_SCCO_OPT_ROWVER = 4;
772
SQL_SCCO_OPT_VALUES = 8;
774
//* SQL_TXN_CAPABLE values */
778
SQL_TC_DDL_COMMIT = 3;
779
SQL_TC_DDL_IGNORE = 4;
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;
791
/* SQL_NULL_COLLATION values */
792
#define SQL_NC_HIGH 0
797
{ SQL_STATIC_SENSITIVITY values }
799
SQL_SS_ADDITIONS = 1;
800
SQL_SS_DELETIONS = 2;
803
{ SQLColAttributes defines }
804
SQL_COLUMN_COUNT = 0;
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;
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;
832
//* SQLEndTran() options */
836
SQL_ATTR_ROW_ARRAY_SIZE = 27;
838
//* SQLConfigDataSource() options */
842
ODBC_ADD_SYS_DSN = 4;
843
ODBC_CONFIG_SYS_DSN = 5;
844
ODBC_REMOVE_SYS_DSN = 6;
846
{$ifdef DYNLOADINGODBC}
848
type tSQLAllocHandle =function(HandleType: SQLSMALLINT;
849
InputHandle:SQLHANDLE;Var OutputHandlePtr: SQLHANDLE):SQLRETURN;stdcall;
851
type tSQLSetEnvAttr=function (EnvironmentHandle:SQLHENV;
852
Attribute:SQLINTEGER;Value:SQLPOINTER;
853
StringLength:SQLINTEGER):SQLRETURN;stdcall;
855
type TSQLFreeHandle=function (HandleType:SQLSMALLINT;
856
Handle:SQLHANDLE):SQLRETURN;stdcall;
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;
864
type TSQLConnect=function (ConnectionHandle:SQLHDBC;
865
ServerName:PSQLCHAR;NameLength1:SQLSMALLINT;
866
UserName:PSQLCHAR;NameLength2:SQLSMALLINT;
867
Authentication:PSQLCHAR;NameLength3:SQLSMALLINT):SQLRETURN;stdcall;
869
type TSQLDisconnect=function(ConnectionHandle:SQLHDBC):SQLRETURN;stdcall;
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;
877
type TSQLExecDirect=function (StatementHandle:SQLHSTMT;
878
StatementText:PSQLCHAR;TextLength:SQLINTEGER):SQLRETURN;stdcall;
880
type TSQLPrepare=function (StatementHandle:SQLHSTMT;
881
StatementText:PSQLCHAR;TextLength:SQLINTEGER):SQLRETURN;stdcall;
883
type TSQLCloseCursor=function (StatementHandle:SQLHSTMT):SQLRETURN;stdcall;
885
type TSQLExecute=function (StatementHandle:SQLHSTMT):SQLRETURN;stdcall;
887
type TSQLFetch=function (StatementHandle:SQLHSTMT):SQLRETURN;stdcall;
889
type TSQLNumResultCols=function (StatementHandle:SQLHSTMT;
890
var ColumnCount:SQLSMALLINT):SQLRETURN;stdcall;
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;
898
type TSQLFetchScroll=function (StatementHandle:SQLHSTMT;
899
FetchOrientation:SQLSMALLINT;FetchOffset:SQLINTEGER):SQLRETURN;stdcall;
901
type TSQLExtendedFetch=function (hstmt:SQLHSTMT;
902
fFetchType:SQLUSMALLINT;irow:SQLINTEGER;
903
pcrow:PSQLUINTEGER;rgfRowStatus:PSQLUSMALLINT):SQLRETURN;stdcall;
905
type TSQLGetData=function (StatementHandle:SQLHSTMT;
906
ColumnNumber:SQLUSMALLINT;TargetType:SQLSMALLINT;
907
TargetValue:SQLPOINTER;BufferLength:SQLINTEGER;
908
StrLen_or_Ind:PSQLINTEGER):SQLRETURN;stdcall;
910
type TSQLSetStmtAttr=function (StatementHandle:SQLHSTMT;
911
Attribute:SQLINTEGER;Value:SQLPOINTER;
912
StringLength:SQLINTEGER):SQLRETURN;stdcall;
914
type TSQLGetStmtAttr=function (StatementHandle:SQLHSTMT;
915
Attribute:SQLINTEGER;Value:SQLPOINTER;
916
BufferLength:SQLINTEGER;StringLength:PSQLINTEGER):SQLRETURN;stdcall;
918
type tSQLGetInfo=function (ConnectionHandle:SQLHDBC;
919
InfoType:SQLUSMALLINT;InfoValue:SQLPOINTER;
920
BufferLength:SQLSMALLINT;StringLength:PSQLSMALLINT):SQLRETURN;stdcall;
922
type TSQLBulkOperations=function (StatementHandle: SQLHSTMT;
923
Operation:SQLSMALLINT):SQLRETURN;stdcall;
925
type TSQLPutData=function (StatementHandle:SQLHSTMT;
926
Data:SQLPOINTER;StrLen_or_Ind:SQLINTEGER):SQLRETURN;stdcall;
928
type TSQLBindCol=function (StatementHandle:SQLHSTMT;
929
ColumnNumber:SQLUSMALLINT;TargetType:SQLSMALLINT;
930
TargetValue:SQLPOINTER;BufferLength:SQLINTEGER;
931
StrLen_or_Ind:PSQLINTEGER):SQLRETURN;stdcall;
933
type TSQLSetPos=function (hstmt:SQLHSTMT;
934
irow:SQLUSMALLINT;fOption:SQLUSMALLINT;
935
fLock:SQLUSMALLINT):SQLRETURN;stdcall;
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;
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;
949
type TSQLSetConnectAttr=function (ConnectionHandle:SQLHDBC;
950
Attribute:SQLINTEGER; Value:SQLPOINTER;
951
StringLength:SQLINTEGER):SQLRETURN;stdcall;
953
type TSQLGetCursorName=function (StatementHandle:SQLHSTMT;
954
CursorName:PSQLCHAR; BufferLength:SQLSMALLINT;
955
NameLength:PSQLSMALLINT):SQLRETURN;stdcall;
957
type TSQLSetCursorName=function (StatementHandle:SQLHSTMT;
958
CursorName:PSQLCHAR; NameLength:SQLSMALLINT):SQLRETURN;stdcall;
960
type TSQLRowCount=function (StatementHandle:SQLHSTMT;
961
Var RowCount:SQLINTEGER):SQLRETURN;stdcall;
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;
970
type TSQLFreeStmt=function (StatementHandle:SQLHSTMT;
971
Option:SQLUSMALLINT):SQLRETURN;stdcall;
973
type TSQLColAttribute=function (StatementHandle:SQLHSTMT;
974
ColumnNumber:SQLUSMALLINT;FieldIdentifier:SQLUSMALLINT;
975
CharacterAttribute:PSQLCHAR;BufferLength:SQLSMALLINT;
976
StringLength:PSQLSMALLINT;NumericAttribute:SQLPOINTER):SQLRETURN;stdcall;
978
type TSQLEndTran=function (HandleType:SQLSMALLINT;
979
Handle:SQLHANDLE;CompletionType:SQLSMALLINT):SQLRETURN;stdcall;
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;
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;
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;
1000
type TSQLProcedures=function ( hstmt : SQLHSTMT;
1001
szTableQualifier : PSQLCHAR;cbTableQualifier : SQLSMALLINT;
1002
szTableOwner : PSQLCHAR;cbTableOwner : SQLSMALLINT;
1003
szTableName : PSQLCHAR;cbTableName : SQLSMALLINT ) : SQLRETURN; stdcall;
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;
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;
1063
LibName = 'odbc32.dll';
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;
1074
StringLength: SQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1075
function SQLGetEnvAttr(
1076
EnvironmentHandle:SQLHENV;
1077
Attribute:SQLINTEGER;
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;
1087
RecNumber: SQLSMALLINT;
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(
1105
szCLen: SQLSMALLINT;
1107
cbCSMax: SQLSMALLINT;
1108
Var cbCsOut: SQLSMALLINT;
1109
f: Integer):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1110
function SQLBrowseConnect(
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;
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(
1150
fFetchType:SQLUSMALLINT;
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;
1165
StringLength:SQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
1166
function SQLGetStmtAttr(
1167
StatementHandle:SQLHSTMT;
1168
Attribute:SQLINTEGER;
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;
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;
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(
1233
fParamType: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;
1253
function SQLEndTran(
1254
HandleType:SQLSMALLINT;
1256
CompletionType:SQLSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
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;
1283
NameLength3:SQLSMALLINT;
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;
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};
1305
// This function always load dynamic
1306
type TSQLConfigDataSource=function (
1307
hwndParent: 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;
1318
function SQLConfigDataSource(
1319
hwndParent: 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;
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;
1337
procedure UnLoadOdbc;
1346
{$HPPEMIT '#pragma comment(lib,"odbc32.lib")'}
1351
{$IFDEF DYNLOADINGODBC}
1352
OdbcHMODULE: HMODULE;
1354
OdbccpHMODULE:HMODULE;
1357
function DateStructToDateTime( b:PSQL_DATE_STRUCT):TDateTime;
1359
Result:=EncodeDate( b^.Year, b^.Month, b^.Day);
1362
function DateTimeToDateStruct( b:TDateTime):SQL_DATE_STRUCT;
1366
DecodeDate( b, y, m, d);
1369
Year:=y; Month:=m; Day:=d;
1373
procedure DateTime2TimeStampStruct( var Value:SQL_TIMESTAMP_STRUCT; b:TDateTime);
1379
DecodeDate(b,w1,w2,w3);
1383
DecodeTime(b,w1,w2,w3,w4);
1387
fraction := Integer(w4)*1000000;
1391
SQL_DATE_STRUCT = packed record
1393
Month : SQLUSMALLINT;
1396
PSQL_DATE_STRUCT = ^SQL_DATE_STRUCT;
1399
Function TimeStampStructToDateTime( B : PSQL_TIMESTAMP_STRUCT) : TDateTime;
1403
Result:=EncodeDate(Year,Month,Day)+
1404
EncodeTime(Hour,Minute,Second,0);
1407
Function TimeStructToDateTime (B : PSQL_TIME_STRUCT) : TDateTime;
1410
Result:=EncodeTime(Hour,Minute,Second,0);
1415
{$ifdef DYNLOADINGODBC}
1417
Function GetODBCVersion(Odbc:HMODULE):word;
1421
tmp,lpdwHandle:cardinal;
1423
tmp,lpdwHandle:integer;
1427
getmem(lpFilename,255);
1428
if GetModuleFileName(Odbc,lpFilename,254) = 0 then
1429
raise Exception.Create('Error while get module file name');
1431
lpdwHandle:=GetFileVersionInfoSize(lpFilename,tmp);
1432
getmem( lpdata, lpdwHandle);
1434
if GetFileVersionInfo(lpFilename,0,lpdwHandle,lpData) then
1437
tmp := sizeof(tagVS_FIXEDFILEINFO);
1439
tmp := sizeof(TVSFixedFileInfo);
1441
VerQueryValue( lpData, '\', f, tmp);
1442
result := hiword(PVSFixedFileInfo(f).dwProductVersionMS) * 256 + Loword(PVSFixedFileInfo(f).dwProductVersionMS);
1444
Freemem(lpdata,lpdwHandle);
1445
Freemem(lpFilename,255);
1448
Function GetAdresstoFunction(funcname:string):FARPROC;
1450
result:=GetProcAddress(OdbcHMODULE,pchar(funcname));
1451
if result = nil then
1453
//result:=@ThisFunctionisnotavailable;
1454
raise Exception.create('Error Getting adress for '+Funcname+#13+syserrormessage(GetLastError));
1459
function syserrormessage(I : Integer) : string;
1461
result:='error '+inttostr(i);
1467
{$ifdef DYNLOADINGODBC}
1468
if OdbcHMODULE <> 0 then
1471
OdbcHMODULE := LoadLibrary('ODBC32.DLL');
1473
if OdbcHMODULE = 0 then
1474
raise Exception.create(syserrormessage(GetLastError));
1476
odbcversion:=GetODBCVersion(OdbcHMODULE);
1477
//Here we know the version of the odbc driver. eg '3.5'
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');
1522
procedure UnLoadOdbc;
1524
{$ifdef DYNLOADINGODBC}
1525
if OdbcHMODULE<>0 then
1527
if not FreeLibrary(OdbcHMODULE) then
1529
raise Exception.create(syserrormessage(GetLastError));
1536
if OdbccpHMODULE <> 0 then
1538
if not FreeLibrary(OdbccpHMODULE) then
1540
raise Exception.create(syserrormessage(GetLastError));
1548
// function SQLConfigDataSource(
1549
// hwndParent: Integer;
1550
// fRequest: Integer;
1551
// lpszDriverString: String;
1552
// lpszAttributes: String): Integer;stdcall;external 'ODBCCP32.DLL';
1555
function SQLConfigDataSource(
1556
hwndParent: Integer;
1558
lpszDriverString: String;
1559
lpszAttributes: String): Integer;stdcall;
1561
func: TSQLConfigDataSource;
1563
if OdbccpHMODULE = 0 then
1565
OdbccpHMODULE := LoadLibrary('ODBCCP32.DLL');
1566
if OdbccpHMODULE = 0 then
1567
raise Exception.create(syserrormessage(GetLastError));
1570
func := TSQLConfigDataSource(GetProcAddress(OdbccpHMODULE,pchar('SQLConfigDataSource')));
1572
raise Exception.create('Error Getting adress for SQLConfigDataSource'+#13+syserrormessage(GetLastError));
1574
Result := func(hwndParent,fRequest,lpszDriverString,lpszAttributes);
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;
1589
func: TSQLInstallerError;
1591
if OdbccpHMODULE = 0 then
1593
OdbccpHMODULE := LoadLibrary('ODBCCP32.DLL');
1594
if OdbccpHMODULE = 0 then
1595
raise Exception.create(syserrormessage(GetLastError));
1598
func := TSQLInstallerError(GetProcAddress(OdbccpHMODULE,pchar('SQLInstallerError')));
1601
raise Exception.create('Error Getting adress for SQLInstallerError'+#13+syserrormessage(GetLastError));
1603
Result := func( iError, pfErrorCode, lpszErrorMsg, cbErrorMsgMax, pcbErrorMsg);