123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614 |
- unit odbcsql;
- {$ifndef fpc}
- {$I mODBC.INC}
- {$else}
- {$mode objfpc}
- {$h+}
- {$define odbcver3}
- {$endif}
- interface
- uses sysutils;
- (* DATA TYPES CORRESPONDENCE
- BDE fields ODBC types
- ---------- ------------------
- ftBlob SQL_BINARY
- ftBoolean SQL_BIT
- ftDate SQL_TYPE_DATE
- ftTime SQL_TYPE_TIME
- ftDateTime SQL_TYPE_TIMESTAMP
- ftInteger SQL_INTEGER
- ftSmallint SQL_SMALLINT
- ftFloat SQL_DOUBLE
- ftString SQL_CHAR
- ftMemo SQL_BINARY // SQL_VARCHAR
- *)
- type
- SQLCHAR = Char;
- SQLSMALLINT = smallint;
- SQLUSMALLINT = Word;
- SQLRETURN = SQLSMALLINT;
- SQLHANDLE = LongInt;
- SQLHENV = SQLHANDLE;
- SQLHDBC = SQLHANDLE;
- SQLHSTMT = SQLHANDLE;
- SQLINTEGER = LongInt;
- SQLUINTEGER = Cardinal;
- SQLPOINTER = Pointer;
- SQLREAL = real;
- SQLDOUBLE = Double;
- SQLFLOAT = Double;
- PSQLCHAR = PChar;
- PSQLINTEGER = ^SQLINTEGER;
- PSQLUINTEGER = ^SQLUINTEGER;
- PSQLSMALLINT = ^SQLSMALLINT;
- PSQLUSMALLINT = ^SQLUSMALLINT;
- PSQLREAL = ^SQLREAL;
- PSQLDOUBLE = ^SQLDOUBLE;
- PSQLFLOAT = ^SQLFLOAT;
- PSQLHandle = ^SQLHANDLE;
- const
- { SQL data type codes }
- SQL_UNKNOWN_TYPE = 0;
- SQL_LONGVARCHAR =(-1);
- SQL_BINARY =(-2);
- SQL_VARBINARY =(-3);
- SQL_LONGVARBINARY =(-4);
- SQL_BIGINT =(-5);
- SQL_TINYINT =(-6);
- SQL_BIT =(-7);
- SQL_WCHAR =(-8);
- SQL_WVARCHAR =(-9);
- SQL_WLONGVARCHAR =(-10);
- SQL_CHAR = 1;
- SQL_NUMERIC = 2;
- SQL_DECIMAL = 3;
- SQL_INTEGER = 4;
- SQL_SMALLINT = 5;
- SQL_FLOAT = 6;
- SQL_REAL = 7;
- SQL_DOUBLE = 8;
- {$ifdef ODBCVER3}
- SQL_DATETIME = 9;
- {$endif}
- SQL_VARCHAR = 12;
- SQL_C_LONG = SQL_INTEGER;
- {$ifdef ODBCVER3}
- SQL_TYPE_DATE = 91;
- SQL_TYPE_TIME = 92;
- SQL_TYPE_TIMESTAMP= 93;
- {$endif}
- {ODBC2}
- SQL_DATE = 9;
- SQL_TIME = 10;
- SQL_TIMESTAMP = 11;
- {end of Odbc2}
- SQL_NO_TOTAL = -4;
- type
- SQL_DATE_STRUCT = packed record
- Year : SQLSMALLINT;
- Month : SQLUSMALLINT;
- Day : SQLUSMALLINT;
- end;
- PSQL_DATE_STRUCT = ^SQL_DATE_STRUCT;
- SQL_TIME_STRUCT = packed record
- Hour : SQLUSMALLINT;
- Minute : SQLUSMALLINT;
- Second : SQLUSMALLINT;
- end;
- PSQL_TIME_STRUCT = ^SQL_TIME_STRUCT;
- SQL_TIMESTAMP_STRUCT = packed record
- Year : SQLUSMALLINT;
- Month : SQLUSMALLINT;
- Day : SQLUSMALLINT;
- Hour : SQLUSMALLINT;
- Minute : SQLUSMALLINT;
- Second : SQLUSMALLINT;
- Fraction : SQLUINTEGER;
- end;
- PSQL_TIMESTAMP_STRUCT = ^SQL_TIMESTAMP_STRUCT;
- const
- SQL_NAME_LEN = 128;
- SQL_OV_ODBC3 = 3;
- SQL_OV_ODBC2 = 2;
- SQL_ATTR_ODBC_VERSION = 200;
- { Options for SQLDriverConnect }
- SQL_DRIVER_NOPROMPT = 0;
- SQL_DRIVER_COMPLETE = 1;
- SQL_DRIVER_PROMPT = 2;
- SQL_DRIVER_COMPLETE_REQUIRED = 3;
- { whether an attribute is a pointer or not }
- SQL_IS_POINTER = (-4);
- SQL_IS_UINTEGER = (-5);
- SQL_IS_INTEGER = (-6);
- SQL_IS_USMALLINT = (-7);
- SQL_IS_SMALLINT = (-8);
- { SQLExtendedFetch "fFetchType" values }
- SQL_FETCH_BOOKMARK = 8;
- SQL_SCROLL_OPTIONS = 44;
- { SQL_USE_BOOKMARKS options }
- SQL_UB_OFF = 0;
- SQL_UB_ON = 1;
- SQL_UB_DEFAULT = SQL_UB_OFF;
- SQL_UB_FIXED = SQL_UB_ON;
- SQL_UB_VARIABLE = 2;
- { SQL_SCROLL_OPTIONS masks }
- SQL_SO_FORWARD_ONLY = $01;
- SQL_SO_KEYSET_DRIVEN = $02;
- SQL_SO_DYNAMIC = $04;
- SQL_SO_MIXED = $08;
- SQL_SO_STATIC = $10;
- SQL_BOOKMARK_PERSISTENCE = 82;
- SQL_STATIC_SENSITIVITY = 83;
- { SQL_BOOKMARK_PERSISTENCE values }
- SQL_BP_CLOSE = $01;
- SQL_BP_DELETE = $02;
- SQL_BP_DROP = $04;
- SQL_BP_TRANSACTION = $08;
- SQL_BP_UPDATE = $10;
- SQL_BP_OTHER_HSTMT = $20;
- SQL_BP_SCROLL = $40;
- SQL_DYNAMIC_CURSOR_ATTRIBUTES1 = 144;
- SQL_DYNAMIC_CURSOR_ATTRIBUTES2 = 145;
- SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 = 146;
- SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 = 147;
- SQL_INDEX_KEYWORDS = 148;
- SQL_INFO_SCHEMA_VIEWS = 149;
- SQL_KEYSET_CURSOR_ATTRIBUTES1 = 150;
- SQL_KEYSET_CURSOR_ATTRIBUTES2 = 151;
- SQL_STATIC_CURSOR_ATTRIBUTES1 = 167;
- SQL_STATIC_CURSOR_ATTRIBUTES2 = 168;
- { supported SQLFetchScroll FetchOrientation's }
- SQL_CA1_NEXT = 1;
- SQL_CA1_ABSOLUTE = 2;
- SQL_CA1_RELATIVE = 4;
- SQL_CA1_BOOKMARK = 8;
- { supported SQLSetPos LockType's }
- SQL_CA1_LOCK_NO_CHANGE= $40;
- SQL_CA1_LOCK_EXCLUSIVE= $80;
- SQL_CA1_LOCK_UNLOCK =$100;
- { supported SQLSetPos Operations }
- SQL_CA1_POS_POSITION = $200;
- SQL_CA1_POS_UPDATE = $400;
- SQL_CA1_POS_DELETE = $800;
- SQL_CA1_POS_REFRESH =$1000;
- { positioned updates and deletes }
- SQL_CA1_POSITIONED_UPDATE=$2000;
- SQL_CA1_POSITIONED_DELETE=$4000;
- SQL_CA1_SELECT_FOR_UPDATE=$8000;
- { supported SQLBulkOperations operations }
- SQL_CA1_BULK_ADD =$10000;
- SQL_CA1_BULK_UPDATE_BY_BOOKMARK =$20000;
- SQL_CA1_BULK_DELETE_BY_BOOKMARK =$40000;
- SQL_CA1_BULK_FETCH_BY_BOOKMARK =$80000;
- { supported values for SQL_ATTR_SCROLL_CONCURRENCY }
- SQL_CA2_READ_ONLY_CONCURRENCY = 1;
- SQL_CA2_LOCK_CONCURRENCY = 2;
- SQL_CA2_OPT_ROWVER_CONCURRENCY= 4;
- SQL_CA2_OPT_VALUES_CONCURRENCY= 8;
- { sensitivity of the cursor to its own inserts, deletes, and updates }
- SQL_CA2_SENSITIVITY_ADDITIONS =$10;
- SQL_CA2_SENSITIVITY_DELETIONS =$20;
- SQL_CA2_SENSITIVITY_UPDATES =$40;
- { semantics of SQL_ATTR_MAX_ROWS }
- SQL_CA2_MAX_ROWS_SELECT = $80;
- SQL_CA2_MAX_ROWS_INSERT =$100;
- SQL_CA2_MAX_ROWS_DELETE =$200;
- SQL_CA2_MAX_ROWS_UPDATE =$400;
- SQL_CA2_MAX_ROWS_CATALOG =$800;
- SQL_CA2_MAX_ROWS_AFFECTS_ALL =(SQL_CA2_MAX_ROWS_SELECT or
- SQL_CA2_MAX_ROWS_INSERT or SQL_CA2_MAX_ROWS_DELETE or
- SQL_CA2_MAX_ROWS_UPDATE or SQL_CA2_MAX_ROWS_CATALOG);
- { semantics of SQL_DIAG_CURSOR_ROW_COUNT }
- SQL_CA2_CRC_EXACT = $1000;
- SQL_CA2_CRC_APPROXIMATE = $2000;
- { the kinds of positioned statements that can be simulated }
- SQL_CA2_SIMULATE_NON_UNIQUE = $4000;
- SQL_CA2_SIMULATE_TRY_UNIQUE = $8000;
- SQL_CA2_SIMULATE_UNIQUE =$10000;
- { Operations in SQLBulkOperations }
- SQL_ADD = 4;
- SQL_SETPOS_MAX_OPTION_VALUE = SQL_ADD;
- SQL_UPDATE_BY_BOOKMARK = 5;
- SQL_DELETE_BY_BOOKMARK = 6;
- SQL_FETCH_BY_BOOKMARK = 7;
- { Operations in SQLSetPos }
- SQL_POSITION = 0;
- SQL_REFRESH = 1;
- SQL_UPDATE = 2;
- SQL_DELETE = 3;
- { Lock options in SQLSetPos }
- SQL_LOCK_NO_CHANGE = 0;
- SQL_LOCK_EXCLUSIVE = 1;
- SQL_LOCK_UNLOCK = 2;
- { SQLExtendedFetch "rgfRowStatus" element values }
- SQL_ROW_SUCCESS = 0;
- SQL_ROW_DELETED = 1;
- SQL_ROW_UPDATED = 2;
- SQL_ROW_NOROW = 3;
- SQL_ROW_ADDED = 4;
- SQL_ROW_ERROR = 5;
- SQL_ROW_SUCCESS_WITH_INFO = 6;
- SQL_ROW_PROCEED = 0;
- SQL_ROW_IGNORE = 1;
- SQL_MAX_DSN_LENGTH = 32; { maximum data source name size }
- SQL_MAX_OPTION_STRING_LENGTH = 256;
- SQL_ODBC_CURSORS = 110;
- SQL_ATTR_ODBC_CURSORS = SQL_ODBC_CURSORS;
- { SQL_ODBC_CURSORS options }
- SQL_CUR_USE_IF_NEEDED = 0;
- SQL_CUR_USE_ODBC = 1;
- SQL_CUR_USE_DRIVER = 2;
- SQL_CUR_DEFAULT = SQL_CUR_USE_DRIVER;
- SQL_PARAM_TYPE_UNKNOWN = 0;
- SQL_PARAM_INPUT = 1;
- SQL_PARAM_INPUT_OUTPUT = 2;
- SQL_RESULT_COL = 3;
- SQL_PARAM_OUTPUT = 4;
- SQL_RETURN_VALUE = 5;
- { special length/indicator values }
- SQL_NULL_DATA = (-1);
- SQL_DATA_AT_EXEC = (-2);
- SQL_SUCCESS = 0;
- SQL_SUCCESS_WITH_INFO = 1;
- SQL_NO_DATA = 100;
- SQL_ERROR = (-1);
- SQL_INVALID_HANDLE =(-2);
- SQL_STILL_EXECUTING = 2;
- SQL_NEED_DATA = 99;
- { flags for null-terminated string }
- SQL_NTS = (-3);
- { maximum message length }
- SQL_MAX_MESSAGE_LENGTH = 512;
- { date/time length constants }
- {$ifdef ODBCVER3}
- SQL_DATE_LEN = 10;
- SQL_TIME_LEN = 8; { add P+1 if precision is nonzero }
- SQL_TIMESTAMP_LEN = 19; { add P+1 if precision is nonzero }
- {$endif}
- { handle type identifiers }
- SQL_HANDLE_ENV = 1;
- SQL_HANDLE_DBC = 2;
- SQL_HANDLE_STMT = 3;
- SQL_HANDLE_DESC = 4;
- {$ifdef ODBCVER3}
- { environment attribute }
- SQL_ATTR_OUTPUT_NTS = 10001;
- { connection attributes }
- SQL_ATTR_AUTO_IPD = 10001;
- SQL_ATTR_METADATA_ID = 10014;
- {$endif} { ODBCVER >= 0x0300 }
- { statement attributes }
- SQL_ATTR_APP_ROW_DESC = 10010;
- SQL_ATTR_APP_PARAM_DESC = 10011;
- SQL_ATTR_IMP_ROW_DESC = 10012;
- SQL_ATTR_IMP_PARAM_DESC = 10013;
- SQL_ATTR_CURSOR_SCROLLABLE = (-1);
- SQL_ATTR_CURSOR_SENSITIVITY = (-2);
- SQL_QUERY_TIMEOUT =0;
- SQL_MAX_ROWS =1;
- SQL_NOSCAN =2;
- SQL_MAX_LENGTH =3;
- SQL_ASYNC_ENABLE =4; // same as SQL_ATTR_ASYNC_ENABLE */
- SQL_BIND_TYPE =5;
- SQL_CURSOR_TYPE = 6;
- SQL_CONCURRENCY = 7;
- SQL_KEYSET_SIZE =8;
- SQL_ROWSET_SIZE =9;
- SQL_SIMULATE_CURSOR =10;
- SQL_RETRIEVE_DATA =11;
- SQL_USE_BOOKMARKS =12;
- SQL_GET_BOOKMARK =13; // GetStmtOption Only */
- SQL_ROW_NUMBER = 14; // GetStmtOption Only */
- SQL_ATTR_CURSOR_TYPE = SQL_CURSOR_TYPE;
- SQL_ATTR_CONCURRENCY = SQL_CONCURRENCY;
- SQL_ATTR_FETCH_BOOKMARK_PTR = 16;
- SQL_ATTR_ROW_STATUS_PTR = 25;
- SQL_ATTR_ROWS_FETCHED_PTR = 26;
- SQL_AUTOCOMMIT = 102;
- SQL_ATTR_AUTOCOMMIT = SQL_AUTOCOMMIT;
- SQL_ATTR_ROW_NUMBER = SQL_ROW_NUMBER;
- SQL_TXN_ISOLATION = 108;
- SQL_ATTR_TXN_ISOLATION = SQL_TXN_ISOLATION;
- SQL_ATTR_MAX_ROWS = SQL_MAX_ROWS;
- SQL_ATTR_USE_BOOKMARKS = SQL_USE_BOOKMARKS;
- //* connection attributes */
- SQL_ACCESS_MODE =101;
- // SQL_AUTOCOMMIT =102;
- SQL_LOGIN_TIMEOUT =103;
- SQL_OPT_TRACE =104;
- SQL_OPT_TRACEFILE =105;
- SQL_TRANSLATE_DLL =106;
- SQL_TRANSLATE_OPTION =107;
- // SQL_TXN_ISOLATION =108;
- SQL_CURRENT_QUALIFIER =109;
- // SQL_ODBC_CURSORS =110;
- SQL_QUIET_MODE =111;
- SQL_PACKET_SIZE =112;
- //* connection attributes with new names */
- SQL_ATTR_ACCESS_MODE =SQL_ACCESS_MODE;
- // SQL_ATTR_AUTOCOMMIT =SQL_AUTOCOMMIT;
- SQL_ATTR_CONNECTION_DEAD =1209; //* GetConnectAttr only */
- SQL_ATTR_CONNECTION_TIMEOUT =113;
- SQL_ATTR_CURRENT_CATALOG =SQL_CURRENT_QUALIFIER;
- SQL_ATTR_DISCONNECT_BEHAVIOR=114;
- SQL_ATTR_ENLIST_IN_DTC =1207;
- SQL_ATTR_ENLIST_IN_XA =1208;
- SQL_ATTR_LOGIN_TIMEOUT =SQL_LOGIN_TIMEOUT;
- // SQL_ATTR_ODBC_CURSORS =SQL_ODBC_CURSORS;
- SQL_ATTR_PACKET_SIZE =SQL_PACKET_SIZE;
- SQL_ATTR_QUIET_MODE =SQL_QUIET_MODE;
- SQL_ATTR_TRACE =SQL_OPT_TRACE;
- SQL_ATTR_TRACEFILE =SQL_OPT_TRACEFILE;
- SQL_ATTR_TRANSLATE_LIB =SQL_TRANSLATE_DLL;
- SQL_ATTR_TRANSLATE_OPTION =SQL_TRANSLATE_OPTION;
- // SQL_ATTR_TXN_ISOLATION =SQL_TXN_ISOLATION;
- //* SQL_ACCESS_MODE options */
- SQL_MODE_READ_WRITE =0;
- SQL_MODE_READ_ONLY =1;
- SQL_MODE_DEFAULT =SQL_MODE_READ_WRITE;
- //* SQL_AUTOCOMMIT options */
- SQL_AUTOCOMMIT_OFF = 0;
- SQL_AUTOCOMMIT_ON = 1;
- SQL_AUTOCOMMIT_DEFAULT = SQL_AUTOCOMMIT_ON;
- { SQL_ATTR_CURSOR_SCROLLABLE values }
- SQL_NONSCROLLABLE = 0;
- SQL_SCROLLABLE = 1;
- { SQL_CURSOR_TYPE options }
- SQL_CURSOR_FORWARD_ONLY = 0;
- SQL_CURSOR_KEYSET_DRIVEN = 1;
- SQL_CURSOR_DYNAMIC = 2;
- SQL_CURSOR_STATIC = 3;
- SQL_CURSOR_TYPE_DEFAULT = SQL_CURSOR_FORWARD_ONLY;{ Default value }
- { SQL_CONCURRENCY options }
- SQL_CONCUR_READ_ONLY = 1;
- SQL_CONCUR_LOCK = 2;
- SQL_CONCUR_ROWVER = 3;
- SQL_CONCUR_VALUES = 4;
- SQL_CONCUR_DEFAULT = SQL_CONCUR_READ_ONLY; { Default value }
- { identifiers of fields in the SQL descriptor }
- {$ifdef ODBCVER3}
- SQL_DESC_COUNT = 1001;
- SQL_DESC_TYPE = 1002;
- SQL_DESC_LENGTH = 1003;
- SQL_DESC_OCTET_LENGTH_PTR = 1004;
- SQL_DESC_PRECISION = 1005;
- SQL_DESC_SCALE = 1006;
- SQL_DESC_DATETIME_INTERVAL_CODE = 1007;
- SQL_DESC_NULLABLE = 1008;
- SQL_DESC_INDICATOR_PTR = 1009;
- SQL_DESC_DATA_PTR = 1010;
- SQL_DESC_NAME = 1011;
- SQL_DESC_UNNAMED = 1012;
- SQL_DESC_OCTET_LENGTH = 1013;
- SQL_DESC_ALLOC_TYPE = 1099;
- {$endif}
- { identifiers of fields in the diagnostics area }
- {$ifdef ODBCVER3}
- SQL_DIAG_RETURNCODE = 1;
- SQL_DIAG_NUMBER = 2;
- SQL_DIAG_ROW_COUNT = 3;
- SQL_DIAG_SQLSTATE = 4;
- SQL_DIAG_NATIVE = 5;
- SQL_DIAG_MESSAGE_TEXT = 6;
- SQL_DIAG_DYNAMIC_FUNCTION = 7;
- SQL_DIAG_CLASS_ORIGIN = 8;
- SQL_DIAG_SUBCLASS_ORIGIN = 9;
- SQL_DIAG_CONNECTION_NAME = 10;
- SQL_DIAG_SERVER_NAME = 11;
- SQL_DIAG_DYNAMIC_FUNCTION_CODE = 12;
- {$endif}
- { dynamic function codes }
- {$ifdef ODBCVER3}
- SQL_DIAG_ALTER_TABLE = 4;
- SQL_DIAG_CREATE_INDEX = (-1);
- SQL_DIAG_CREATE_TABLE = 77;
- SQL_DIAG_CREATE_VIEW = 84;
- SQL_DIAG_DELETE_WHERE = 19;
- SQL_DIAG_DROP_INDEX = (-2);
- SQL_DIAG_DROP_TABLE = 32;
- SQL_DIAG_DROP_VIEW = 36;
- SQL_DIAG_DYNAMIC_DELETE_CURSOR = 38;
- SQL_DIAG_DYNAMIC_UPDATE_CURSOR = 81;
- SQL_DIAG_GRANT = 48;
- SQL_DIAG_INSERT = 50;
- SQL_DIAG_REVOKE = 59;
- SQL_DIAG_SELECT_CURSOR = 85;
- SQL_DIAG_UNKNOWN_STATEMENT = 0;
- SQL_DIAG_UPDATE_WHERE = 82;
- {$endif} { ODBCVER >= 0x0300 }
- SQL_C_DEFAULT = 99;
- SQL_UNSIGNED_OFFSET = (-22);
- SQL_C_ULONG = (SQL_C_LONG+SQL_UNSIGNED_OFFSET);
- SQL_C_BOOKMARK = SQL_C_ULONG;
- { Statement attribute values for cursor sensitivity }
- {$ifdef ODBCVER3}
- SQL_UNSPECIFIED = 0;
- SQL_INSENSITIVE = 1;
- SQL_SENSITIVE = 2;
- {$endif}
- { GetTypeInfo() request for all data types }
- SQL_ALL_TYPES = 0;
- { Default conversion code for SQLBindCol(), SQLBindParam() and SQLGetData() }
- {$ifdef ODBCVER3}
- SQL_DEFAULT = 99;
- {$endif}
- { SQLGetData() code indicating that the application row descriptor
- specifies the data type }
- {$ifdef ODBCVER3}
- SQL_ARD_TYPE = (-99);
- {$endif}
- { SQL date/time type subcodes }
- {$ifdef ODBCVER3}
- SQL_CODE_DATE = 1;
- SQL_CODE_TIME = 2;
- SQL_CODE_TIMESTAMP = 3;
- {$endif}
- { CLI option values }
- {$ifdef ODBCVER3}
- SQL_FALSE = 0;
- SQL_TRUE = 1;
- {$endif}
- { values of NULLABLE field in descriptor }
- SQL_NO_NULLS = 0;
- SQL_NULLABLE = 1;
- { Value returned by SQLGetTypeInfo() to denote that it is
- not known whether or not a data type supports null values. }
- SQL_NULLABLE_UNKNOWN = 2;
- {
- /* Values returned by SQLGetTypeInfo() to show WHERE clause
- * supported
- #if (ODBCVER >= 0x0300)
- #define SQL_PRED_NONE 0
- #define SQL_PRED_CHAR 1
- #define SQL_PRED_BASIC 2
- #endif
- /* values of UNNAMED field in descriptor */
- #if (ODBCVER >= 0x0300)
- #define SQL_NAMED 0
- #define SQL_UNNAMED 1
- #endif
- /* values of ALLOC_TYPE field in descriptor */
- #if (ODBCVER >= 0x0300)
- #define SQL_DESC_ALLOC_AUTO 1
- #define SQL_DESC_ALLOC_USER 2
- #endif
- }
- { FreeStmt() options }
- SQL_CLOSE = 0;
- SQL_DROP = 1;
- SQL_UNBIND = 2;
- SQL_RESET_PARAMS = 3;
- { Codes used for FetchOrientation in SQLFetchScroll(),
- and in SQLDataSources() }
- SQL_FETCH_NEXT = 1;
- SQL_FETCH_FIRST = 2;
- {$ifdef odbcver3}
- SQL_FETCH_FIRST_USER = 31;
- SQL_FETCH_FIRST_SYSTEM = 32;
- {$endif}
- { Other codes used for FetchOrientation in SQLFetchScroll() }
- SQL_FETCH_LAST = 3;
- SQL_FETCH_PRIOR = 4;
- SQL_FETCH_ABSOLUTE = 5;
- SQL_FETCH_RELATIVE = 6;
- {
- /* SQLEndTran() options */
- #define SQL_COMMIT 0
- #define SQL_ROLLBACK 1
- /* null handles returned by SQLAllocHandle() */
- #define SQL_NULL_HENV 0
- #define SQL_NULL_HDBC 0
- #define SQL_NULL_HSTMT 0
- #if (ODBCVER >= 0x0300)
- #define SQL_NULL_HDESC 0
- #endif
- }
- //* null handle used in place of parent handle when allocating HENV */
- SQL_NULL_HANDLE = 0;
- //* Values that may appear in the result set of SQLSpecialColumns() */
- SQL_SCOPE_CURROW = 0;
- SQL_SCOPE_TRANSACTION = 1;
- SQL_SCOPE_SESSION = 2;
- //* Column types and scopes in SQLSpecialColumns. */
- SQL_BEST_ROWID = 1;
- SQL_ROWVER = 2;
- {
- #define SQL_PC_UNKNOWN 0
- #if (ODBCVER >= 0x0300)
- #define SQL_PC_NON_PSEUDO 1
- #endif
- #define SQL_PC_PSEUDO 2
- }
- //* Reserved value for the IdentifierType argument of SQLSpecialColumns() */
- {$ifdef ODBCVER3}
- SQL_ROW_IDENTIFIER = 1;
- {$endif}
- {
- /* Reserved values for UNIQUE argument of SQLStatistics() */
- #define SQL_INDEX_UNIQUE 0
- #define SQL_INDEX_ALL 1
- /* Values that may appear in the result set of SQLStatistics() */
- #define SQL_INDEX_CLUSTERED 1
- #define SQL_INDEX_HASHED 2
- #define SQL_INDEX_OTHER 3
- /* Information requested by SQLGetInfo() */
- #if (ODBCVER >= 0x0300)
- #define SQL_MAX_DRIVER_CONNECTIONS 0
- #define SQL_MAXIMUM_DRIVER_CONNECTIONS SQL_MAX_DRIVER_CONNECTIONS
- #define SQL_MAX_CONCURRENT_ACTIVITIES 1
- #define SQL_MAXIMUM_CONCURRENT_ACTIVITIES SQL_MAX_CONCURRENT_ACTIVITIES
- #endif
- #define SQL_DATA_SOURCE_NAME 2
- #define SQL_FETCH_DIRECTION 8
- #define SQL_SERVER_NAME 13
- #define SQL_SEARCH_PATTERN_ESCAPE 14
- #define SQL_DBMS_NAME 17
- #define SQL_DBMS_VER 18
- #define SQL_ACCESSIBLE_TABLES 19
- #define SQL_ACCESSIBLE_PROCEDURES 20
- #define SQL_CURSOR_COMMIT_BEHAVIOR 23
- #define SQL_DATA_SOURCE_READ_ONLY 25
- #define SQL_DEFAULT_TXN_ISOLATION 26
- #define SQL_IDENTIFIER_CASE 28
- #define SQL_IDENTIFIER_QUOTE_CHAR 29
- #define SQL_MAX_COLUMN_NAME_LEN 30
- #define SQL_MAXIMUM_COLUMN_NAME_LENGTH SQL_MAX_COLUMN_NAME_LEN
- #define SQL_MAX_CURSOR_NAME_LEN 31
- #define SQL_MAXIMUM_CURSOR_NAME_LENGTH SQL_MAX_CURSOR_NAME_LEN
- #define SQL_MAX_SCHEMA_NAME_LEN 32
- #define SQL_MAXIMUM_SCHEMA_NAME_LENGTH SQL_MAX_SCHEMA_NAME_LEN
- #define SQL_MAX_CATALOG_NAME_LEN 34
- #define SQL_MAXIMUM_CATALOG_NAME_LENGTH SQL_MAX_CATALOG_NAME_LEN
- #define SQL_MAX_TABLE_NAME_LEN 35
- }
- SQL_SCROLL_CONCURRENCY = 43;
- SQL_TXN_CAPABLE = 46;
- SQL_TRANSACTION_CAPABLE = SQL_TXN_CAPABLE;
- SQL_USER_NAME = 47;
- SQL_TXN_ISOLATION_OPTION = 72;
- SQL_TRANSACTION_ISOLATION_OPTION = SQL_TXN_ISOLATION_OPTION;
- {
- #define SQL_INTEGRITY 73
- #define SQL_GETDATA_EXTENSIONS 81
- #define SQL_NULL_COLLATION 85
- #define SQL_ALTER_TABLE 86
- #define SQL_ORDER_BY_COLUMNS_IN_SELECT 90
- #define SQL_SPECIAL_CHARACTERS 94
- #define SQL_MAX_COLUMNS_IN_GROUP_BY 97
- #define SQL_MAXIMUM_COLUMNS_IN_GROUP_BY SQL_MAX_COLUMNS_IN_GROUP_BY
- #define SQL_MAX_COLUMNS_IN_INDEX 98
- #define SQL_MAXIMUM_COLUMNS_IN_INDEX SQL_MAX_COLUMNS_IN_INDEX
- #define SQL_MAX_COLUMNS_IN_ORDER_BY 99
- #define SQL_MAXIMUM_COLUMNS_IN_ORDER_BY SQL_MAX_COLUMNS_IN_ORDER_BY
- #define SQL_MAX_COLUMNS_IN_SELECT 100
- #define SQL_MAXIMUM_COLUMNS_IN_SELECT SQL_MAX_COLUMNS_IN_SELECT
- #define SQL_MAX_COLUMNS_IN_TABLE 101
- #define SQL_MAX_INDEX_SIZE 102
- #define SQL_MAXIMUM_INDEX_SIZE SQL_MAX_INDEX_SIZE
- #define SQL_MAX_ROW_SIZE 104
- #define SQL_MAXIMUM_ROW_SIZE SQL_MAX_ROW_SIZE
- #define SQL_MAX_STATEMENT_LEN 105
- #define SQL_MAXIMUM_STATEMENT_LENGTH SQL_MAX_STATEMENT_LEN
- #define SQL_MAX_TABLES_IN_SELECT 106
- #define SQL_MAXIMUM_TABLES_IN_SELECT SQL_MAX_TABLES_IN_SELECT
- #define SQL_MAX_USER_NAME_LEN 107
- #define SQL_MAXIMUM_USER_NAME_LENGTH SQL_MAX_USER_NAME_LEN}
- {$ifdef ODBCVER3}
- SQL_OJ_CAPABILITIES = 115;
- SQL_OUTER_JOIN_CAPABILITIES = SQL_OJ_CAPABILITIES;
- {$endif} { ODBCVER >= 0x0300 }
- {$ifdef ODBCVER3}
- SQL_XOPEN_CLI_YEAR = 10000;
- SQL_CURSOR_SENSITIVITY = 10001;
- SQL_DESCRIBE_PARAMETER = 10002;
- SQL_CATALOG_NAME = 10003;
- SQL_COLLATION_SEQ = 10004;
- SQL_MAX_IDENTIFIER_LEN = 10005;
- SQL_MAXIMUM_IDENTIFIER_LENGTH = SQL_MAX_IDENTIFIER_LEN;
- {$endif} { ODBCVER >= 0x0300 }
- {/* SQL_ALTER_TABLE bitmasks */
- #if (ODBCVER >= 0x0200)
- #define SQL_AT_ADD_COLUMN 0x00000001L
- #define SQL_AT_DROP_COLUMN 0x00000002L
- #endif /* ODBCVER >= 0x0200 */
- #if (ODBCVER >= 0x0300)
- #define SQL_AT_ADD_CONSTRAINT 0x00000008L
- /* The following bitmasks are ODBC extensions and defined in sqlext.h
- *#define SQL_AT_COLUMN_SINGLE 0x00000020L
- *#define SQL_AT_ADD_COLUMN_DEFAULT 0x00000040L
- *#define SQL_AT_ADD_COLUMN_COLLATION 0x00000080L
- *#define SQL_AT_SET_COLUMN_DEFAULT 0x00000100L
- *#define SQL_AT_DROP_COLUMN_DEFAULT 0x00000200L
- *#define SQL_AT_DROP_COLUMN_CASCADE 0x00000400L
- *#define SQL_AT_DROP_COLUMN_RESTRICT 0x00000800L
- *#define SQL_AT_ADD_TABLE_CONSTRAINT 0x00001000L
- *#define SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE 0x00002000L
- *#define SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT 0x00004000L
- *#define SQL_AT_CONSTRAINT_NAME_DEFINITION 0x00008000L
- *#define SQL_AT_CONSTRAINT_INITIALLY_DEFERRED 0x00010000L
- *#define SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE 0x00020000L
- *#define SQL_AT_CONSTRAINT_DEFERRABLE 0x00040000L
- *#define SQL_AT_CONSTRAINT_NON_DEFERRABLE 0x00080000L
- #endif /* ODBCVER >= 0x0300 */
- /* SQL_ASYNC_MODE values */
- #if (ODBCVER >= 0x0300)
- #define SQL_AM_NONE 0
- #define SQL_AM_CONNECTION 1
- #define SQL_AM_STATEMENT 2
- #endif
- /* SQL_CURSOR_COMMIT_BEHAVIOR values */
- #define SQL_CB_DELETE 0
- #define SQL_CB_CLOSE 1
- #define SQL_CB_PRESERVE 2
- /* SQL_FETCH_DIRECTION bitmasks */
- #define SQL_FD_FETCH_NEXT 0x00000001L
- #define SQL_FD_FETCH_FIRST 0x00000002L
- #define SQL_FD_FETCH_LAST 0x00000004L
- #define SQL_FD_FETCH_PRIOR 0x00000008L
- #define SQL_FD_FETCH_ABSOLUTE 0x00000010L
- #define SQL_FD_FETCH_RELATIVE 0x00000020L
- /* SQL_GETDATA_EXTENSIONS bitmasks */
- #define SQL_GD_ANY_COLUMN 0x00000001L
- #define SQL_GD_ANY_ORDER 0x00000002L
- /* SQL_IDENTIFIER_CASE values */
- #define SQL_IC_UPPER 1
- #define SQL_IC_LOWER 2
- #define SQL_IC_SENSITIVE 3
- #define SQL_IC_MIXED 4
- /* SQL_OJ_CAPABILITIES bitmasks */
- /* NB: this means 'outer join', not what you may be thinking */
- #if (ODBCVER >= 0x0201)
- #define SQL_OJ_LEFT 0x00000001L
- #define SQL_OJ_RIGHT 0x00000002L
- #define SQL_OJ_FULL 0x00000004L
- #define SQL_OJ_NESTED 0x00000008L
- #define SQL_OJ_NOT_ORDERED 0x00000010L
- #define SQL_OJ_INNER 0x00000020L
- #define SQL_OJ_ALL_COMPARISON_OPS 0x00000040L
- #endif
- }
- { SQL_SCROLL_CONCURRENCY bitmasks }
- SQL_SCCO_READ_ONLY = 1;
- SQL_SCCO_LOCK = 2;
- SQL_SCCO_OPT_ROWVER = 4;
- SQL_SCCO_OPT_VALUES = 8;
- //* SQL_TXN_CAPABLE values */
- SQL_TC_NONE = 0;
- SQL_TC_DML = 1;
- SQL_TC_ALL = 2;
- SQL_TC_DDL_COMMIT = 3;
- SQL_TC_DDL_IGNORE = 4;
- //* SQL_TXN_ISOLATION_OPTION bitmasks */
- SQL_TXN_READ_UNCOMMITTED = 1;
- SQL_TRANSACTION_READ_UNCOMMITTED = SQL_TXN_READ_UNCOMMITTED;
- SQL_TXN_READ_COMMITTED = 2;
- SQL_TRANSACTION_READ_COMMITTED = SQL_TXN_READ_COMMITTED;
- SQL_TXN_REPEATABLE_READ = 4;
- SQL_TRANSACTION_REPEATABLE_READ = SQL_TXN_REPEATABLE_READ;
- SQL_TXN_SERIALIZABLE = 8;
- SQL_TRANSACTION_SERIALIZABLE = SQL_TXN_SERIALIZABLE;
- {
- /* SQL_NULL_COLLATION values */
- #define SQL_NC_HIGH 0
- #define SQL_NC_LOW 1
- }
- { SQL_STATIC_SENSITIVITY values }
- SQL_SS_ADDITIONS = 1;
- SQL_SS_DELETIONS = 2;
- SQL_SS_UPDATES = 4;
- { SQLColAttributes defines }
- SQL_COLUMN_COUNT = 0;
- SQL_COLUMN_NAME = 1;
- SQL_COLUMN_TYPE = 2;
- SQL_COLUMN_LENGTH = 3;
- SQL_COLUMN_PRECISION = 4;
- SQL_COLUMN_SCALE = 5;
- SQL_COLUMN_DISPLAY_SIZE = 6;
- SQL_COLUMN_NULLABLE = 7;
- SQL_COLUMN_UNSIGNED = 8;
- SQL_COLUMN_MONEY = 9;
- SQL_COLUMN_UPDATABLE = 10;
- SQL_COLUMN_AUTO_INCREMENT = 11;
- SQL_COLUMN_CASE_SENSITIVE = 12;
- SQL_COLUMN_SEARCHABLE = 13;
- SQL_COLUMN_TYPE_NAME = 14;
- SQL_COLUMN_TABLE_NAME = 15;
- SQL_COLUMN_OWNER_NAME = 16;
- SQL_COLUMN_QUALIFIER_NAME = 17;
- SQL_COLUMN_LABEL = 18;
- SQL_COLATT_OPT_MAX = SQL_COLUMN_LABEL;
- {$ifdef ODBCVER3}
- SQL_COLUMN_DRIVER_START = 1000;
- {$endif} { ODBCVER >= 0x0300 }
- SQL_DESC_AUTO_UNIQUE_VALUE = SQL_COLUMN_AUTO_INCREMENT;
- SQL_DESC_BASE_COLUMN_NAME = 22;
- SQL_DESC_BASE_TABLE_NAME = 23;
- SQL_DESC_TABLE_NAME = SQL_COLUMN_TABLE_NAME;
- //* SQLEndTran() options */
- SQL_COMMIT = 0;
- SQL_ROLLBACK = 1;
- SQL_ATTR_ROW_ARRAY_SIZE = 27;
- //* SQLConfigDataSource() options */
- ODBC_ADD_DSN = 1;
- ODBC_CONFIG_DSN = 2;
- ODBC_REMOVE_DSN = 3;
- ODBC_ADD_SYS_DSN = 4;
- ODBC_CONFIG_SYS_DSN = 5;
- ODBC_REMOVE_SYS_DSN = 6;
- {$ifdef DYNLOADINGODBC}
- type tSQLAllocHandle =function(HandleType: SQLSMALLINT;
- InputHandle:SQLHANDLE;Var OutputHandlePtr: SQLHANDLE):SQLRETURN;stdcall;
- type tSQLSetEnvAttr=function (EnvironmentHandle:SQLHENV;
- Attribute:SQLINTEGER;Value:SQLPOINTER;
- StringLength:SQLINTEGER):SQLRETURN;stdcall;
- type TSQLFreeHandle=function (HandleType:SQLSMALLINT;
- Handle:SQLHANDLE):SQLRETURN;stdcall;
- type TSQLGetDiagRec=function (HandleType:SQLSMALLINT;
- Handle:SQLHANDLE;RecNumber:SQLSMALLINT;
- Sqlstate:PSQLCHAR;var NativeError:SQLINTEGER;
- MessageText:PSQLCHAR;BufferLength:SQLSMALLINT;
- var TextLength:SQLSMALLINT ):SQLRETURN;stdcall;
- type TSQLConnect=function (ConnectionHandle:SQLHDBC;
- ServerName:PSQLCHAR;NameLength1:SQLSMALLINT;
- UserName:PSQLCHAR;NameLength2:SQLSMALLINT;
- Authentication:PSQLCHAR;NameLength3:SQLSMALLINT):SQLRETURN;stdcall;
- type TSQLDisconnect=function(ConnectionHandle:SQLHDBC):SQLRETURN;stdcall;
- type TSQLDriverConnect=function (hdbc: SQLHDBC;
- hwnd: Integer;szCsin: PChar;
- szCLen: SQLSMALLINT;szCsout: PChar;
- cbCSMax: SQLSMALLINT;Var cbCsOut: SQLSMALLINT;
- f: Integer):SQLRETURN;stdcall;
- type TSQLExecDirect=function (StatementHandle:SQLHSTMT;
- StatementText:PSQLCHAR;TextLength:SQLINTEGER):SQLRETURN;stdcall;
- type TSQLPrepare=function (StatementHandle:SQLHSTMT;
- StatementText:PSQLCHAR;TextLength:SQLINTEGER):SQLRETURN;stdcall;
- type TSQLCloseCursor=function (StatementHandle:SQLHSTMT):SQLRETURN;stdcall;
- type TSQLExecute=function (StatementHandle:SQLHSTMT):SQLRETURN;stdcall;
- type TSQLFetch=function (StatementHandle:SQLHSTMT):SQLRETURN;stdcall;
- type TSQLNumResultCols=function (StatementHandle:SQLHSTMT;
- var ColumnCount:SQLSMALLINT):SQLRETURN;stdcall;
- type TSQLDescribeCol=function (StatementHandle:SQLHSTMT;
- ColumnNumber:SQLUSMALLINT;ColumnName:PSQLCHAR;
- BufferLength:SQLSMALLINT;var NameLength:SQLSMALLINT;
- var DataType:SQLSMALLINT;var ColumnSize:SQLUINTEGER;
- var DecimalDigits:SQLSMALLINT;var Nullable:SQLSMALLINT):SQLRETURN;stdcall;
- type TSQLFetchScroll=function (StatementHandle:SQLHSTMT;
- FetchOrientation:SQLSMALLINT;FetchOffset:SQLINTEGER):SQLRETURN;stdcall;
- type TSQLExtendedFetch=function (hstmt:SQLHSTMT;
- fFetchType:SQLUSMALLINT;irow:SQLINTEGER;
- pcrow:PSQLUINTEGER;rgfRowStatus:PSQLUSMALLINT):SQLRETURN;stdcall;
- type TSQLGetData=function (StatementHandle:SQLHSTMT;
- ColumnNumber:SQLUSMALLINT;TargetType:SQLSMALLINT;
- TargetValue:SQLPOINTER;BufferLength:SQLINTEGER;
- StrLen_or_Ind:PSQLINTEGER):SQLRETURN;stdcall;
- type TSQLSetStmtAttr=function (StatementHandle:SQLHSTMT;
- Attribute:SQLINTEGER;Value:SQLPOINTER;
- StringLength:SQLINTEGER):SQLRETURN;stdcall;
- type TSQLGetStmtAttr=function (StatementHandle:SQLHSTMT;
- Attribute:SQLINTEGER;Value:SQLPOINTER;
- BufferLength:SQLINTEGER;StringLength:PSQLINTEGER):SQLRETURN;stdcall;
- type tSQLGetInfo=function (ConnectionHandle:SQLHDBC;
- InfoType:SQLUSMALLINT;InfoValue:SQLPOINTER;
- BufferLength:SQLSMALLINT;StringLength:PSQLSMALLINT):SQLRETURN;stdcall;
- type TSQLBulkOperations=function (StatementHandle: SQLHSTMT;
- Operation:SQLSMALLINT):SQLRETURN;stdcall;
- type TSQLPutData=function (StatementHandle:SQLHSTMT;
- Data:SQLPOINTER;StrLen_or_Ind:SQLINTEGER):SQLRETURN;stdcall;
- type TSQLBindCol=function (StatementHandle:SQLHSTMT;
- ColumnNumber:SQLUSMALLINT;TargetType:SQLSMALLINT;
- TargetValue:SQLPOINTER;BufferLength:SQLINTEGER;
- StrLen_or_Ind:PSQLINTEGER):SQLRETURN;stdcall;
- type TSQLSetPos=function (hstmt:SQLHSTMT;
- irow:SQLUSMALLINT;fOption:SQLUSMALLINT;
- fLock:SQLUSMALLINT):SQLRETURN;stdcall;
- type TSQLDataSources=function (EnvironmentHandle:SQLHENV;
- Direction:SQLUSMALLINT;ServerName:PSQLCHAR;
- BufferLength1:SQLSMALLINT;NameLength1:PSQLSMALLINT;
- Description:PSQLCHAR;BufferLength2:SQLSMALLINT;
- NameLength2:PSQLSMALLINT):SQLRETURN;stdcall;
- type TSQLDrivers=function (EnvironmentHandle:SQLHENV;
- Direction:SQLUSMALLINT;DriverDescription:PSQLCHAR;
- BufferLength1:SQLSMALLINT;DescriptionLength1:PSQLSMALLINT;
- DriverAttributes:PSQLCHAR;BufferLength2:SQLSMALLINT;
- AttributesLength2:PSQLSMALLINT):SQLRETURN;stdcall;
- type TSQLSetConnectAttr=function (ConnectionHandle:SQLHDBC;
- Attribute:SQLINTEGER; Value:SQLPOINTER;
- StringLength:SQLINTEGER):SQLRETURN;stdcall;
- type TSQLGetCursorName=function (StatementHandle:SQLHSTMT;
- CursorName:PSQLCHAR; BufferLength:SQLSMALLINT;
- NameLength:PSQLSMALLINT):SQLRETURN;stdcall;
- type TSQLSetCursorName=function (StatementHandle:SQLHSTMT;
- CursorName:PSQLCHAR; NameLength:SQLSMALLINT):SQLRETURN;stdcall;
- type TSQLRowCount=function (StatementHandle:SQLHSTMT;
- Var RowCount:SQLINTEGER):SQLRETURN;stdcall;
- type TSQLBindParameter=function (hstmt:SQLHSTMT;
- ipar:SQLUSMALLINT;fParamType:SQLSMALLINT;
- fCType:SQLSMALLINT;fSqlType:SQLSMALLINT;
- cbColDef:SQLUINTEGER;ibScale:SQLSMALLINT;
- rgbValue:SQLPOINTER;cbValueMax:SQLINTEGER;
- pcbValue:PSQLINTEGER):SQLRETURN;stdcall;
- type TSQLFreeStmt=function (StatementHandle:SQLHSTMT;
- Option:SQLUSMALLINT):SQLRETURN;stdcall;
- type TSQLColAttribute=function (StatementHandle:SQLHSTMT;
- ColumnNumber:SQLUSMALLINT;FieldIdentifier:SQLUSMALLINT;
- CharacterAttribute:PSQLCHAR;BufferLength:SQLSMALLINT;
- StringLength:PSQLSMALLINT;NumericAttribute:SQLPOINTER):SQLRETURN;stdcall;
- type TSQLEndTran=function (HandleType:SQLSMALLINT;
- Handle:SQLHANDLE;CompletionType:SQLSMALLINT):SQLRETURN;stdcall;
- type TSQLTables=function ( hstmt : SQLHSTMT;
- szTableQualifier : PSQLCHAR;cbTableQualifier : SQLSMALLINT;
- szTableOwner : PSQLCHAR;cbTableOwner : SQLSMALLINT;
- szTableName : PSQLCHAR;cbTableName : SQLSMALLINT;
- szTableType : PSQLCHAR;cbTableType : SQLSMALLINT ) : SQLRETURN; stdcall;
- type TSQLColumns=function ( hstmt : SQLHSTMT;
- szTableQualifier : PSQLCHAR;cbTableQualifier : SQLSMALLINT;
- szTableOwner : PSQLCHAR;cbTableOwner : SQLSMALLINT;
- szTableName : PSQLCHAR;cbTableName : SQLSMALLINT;
- szColumnName : PSQLCHAR;cbColumnName : SQLSMALLINT ) : SQLRETURN; stdcall;
- type TSQLSpecialColumns=function (StatementHandle:SQLHSTMT;
- IdentifierType:SQLUSMALLINT;CatalogName:PSQLCHAR;
- NameLength1:SQLSMALLINT;SchemaName:PSQLCHAR;
- NameLength2:SQLSMALLINT;TableName:PSQLCHAR;
- NameLength3:SQLSMALLINT;Scope:SQLUSMALLINT;
- Nullable:SQLUSMALLINT) : SQLRETURN; stdcall;
- type TSQLProcedures=function ( hstmt : SQLHSTMT;
- szTableQualifier : PSQLCHAR;cbTableQualifier : SQLSMALLINT;
- szTableOwner : PSQLCHAR;cbTableOwner : SQLSMALLINT;
- szTableName : PSQLCHAR;cbTableName : SQLSMALLINT ) : SQLRETURN; stdcall;
- type TSQLPrimaryKeys=function (hstmt : SQLHSTMT;
- CatalogName:PSQLCHAR;NameLength1:SQLSMALLINT;
- SchemaName:PSQLCHAR;NameLength2:SQLSMALLINT;
- TableName:PSQLCHAR;NameLength3:SQLSMALLINT ):SQLRETURN;stdcall;
- type TSQLProcedureColumns = function(hstmt: SQLHSTMT;
- CatalogName: PSQLCHAR; NameLength1: SQLSMALLINT;
- SchemaName: PSQLCHAR; NameLength2: SQLSMALLINT;
- ProcName: PSQLCHAR; NameLength3: SQLSMALLINT;
- ColumnName: PSQLCHAR; NameLength4: SQLSMALLINT): SQLRETURN; stdcall;
- var SQLAllocHandle:tSQLAllocHandle;
- var SQLSetEnvAttr:tSQLSetEnvAttr;
- var SQLFreeHandle:tSQLFreeHandle;
- var SQLGetInfo:tSQLGetInfo;
- var SQLProcedures:TSQLProcedures;
- var SQLColumns:TSQLColumns;
- var SQLSpecialColumns:TSQLSpecialColumns;
- var SQLGetDiagRec:TSQLGetDiagRec;
- var SQLConnect:TSQLConnect;
- var SQLDisconnect:TSQLDisconnect;
- var SQLDriverConnect:TSQLDriverConnect;
- var SQLExecDirect:TSQLExecDirect;
- var SQLPrepare:TSQLPrepare;
- var SQLCloseCursor:TSQLCloseCursor;
- var SQLExecute:TSQLExecute;
- var SQLFetch:TSQLFetch;
- var SQLNumResultCols:TSQLNumResultCols;
- var SQLDescribeCol:TSQLDescribeCol;
- var SQLFetchScroll:TSQLFetchScroll;
- var SQLExtendedFetch:TSQLExtendedFetch;
- var SQLGetData:TSQLGetData;
- var SQLSetStmtAttr:TSQLSetStmtAttr;
- var SQLGetStmtAttr:TSQLGetStmtAttr;
- var SQLBulkOperations:TSQLBulkOperations;
- var SQLPutData:TSQLPutData;
- var SQLBindCol:TSQLBindCol;
- var SQLSetPos:TSQLSetPos;
- var SQLDataSources:TSQLDataSources;
- var SQLDrivers:TSQLDrivers;
- var SQLSetConnectAttr:TSQLSetConnectAttr;
- var SQLGetCursorName:TSQLGetCursorName;
- var SQLSetCursorName:TSQLSetCursorName;
- var SQLRowCount:TSQLRowCount;
- var SQLBindParameter:TSQLBindParameter;
- var SQLFreeStmt:TSQLFreeStmt;
- var SQLColAttribute:TSQLColAttribute;
- var SQLEndTran:TSQLEndTran;
- var SQLTables:TSQLTables;
- var SQLPrimaryKeys:TSQLPrimaryKeys;
- var SQLProcedureColumns : TSQLProcedureColumns;
- var odbcversion:word;
- {$else}
- {$ifdef unix}
- Const
- LibName = 'odbc';
- {$else}
- LibName = 'odbc32.dll';
- {$endif}
- function SQLAllocHandle(
- HandleType: SQLSMALLINT;
- InputHandle:SQLHANDLE;
- Var OutputHandlePtr: SQLHANDLE):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLSetEnvAttr(
- EnvironmentHandle:SQLHENV;
- Attribute: SQLINTEGER;
- Value: SQLPOINTER;
- StringLength: SQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLGetEnvAttr(
- EnvironmentHandle:SQLHENV;
- Attribute:SQLINTEGER;
- Value:SQLPOINTER;
- BufferLength:SQLINTEGER;
- StringLength:PSQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLFreeHandle(
- HandleType: SQLSMALLINT;
- Handle: SQLHANDLE):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLGetDiagRec(
- HandleType: SQLSMALLINT;
- Handle: SQLHANDLE;
- RecNumber: SQLSMALLINT;
- Sqlstate: PSQLCHAR;
- var NativeError: SQLINTEGER;
- MessageText: PSQLCHAR;
- BufferLength: SQLSMALLINT;
- var TextLength: SQLSMALLINT ):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLConnect(
- ConnectionHandle:SQLHDBC;
- ServerName:PSQLCHAR; NameLength1:SQLSMALLINT;
- UserName:PSQLCHAR; NameLength2:SQLSMALLINT;
- Authentication:PSQLCHAR;NameLength3:SQLSMALLINT
- ):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLDisconnect(
- ConnectionHandle:SQLHDBC):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLDriverConnect(
- hdbc: SQLHDBC;
- hwnd: Integer;
- szCsin: PChar;
- szCLen: SQLSMALLINT;
- szCsout: PChar;
- cbCSMax: SQLSMALLINT;
- Var cbCsOut: SQLSMALLINT;
- f: Integer):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLBrowseConnect(
- hdbc : SQLHDBC;
- szConnStrIn :PSQLCHAR;
- cbConnStrIn: SQLSMALLINT;
- szConnStrOut : PSQLCHAR;
- cbConnStrOutMax : SQLSMALLINT;
- Var cbConnStrOut : SQLSMALLINT) : SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLExecDirect(
- StatementHandle:SQLHSTMT;
- StatementText: PSQLCHAR;
- TextLength: SQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLPrepare(
- StatementHandle:SQLHSTMT;
- StatementText:PSQLCHAR;
- TextLength:SQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLCloseCursor(
- StatementHandle:SQLHSTMT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLExecute(
- StatementHandle:SQLHSTMT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLFetch(
- StatementHandle:SQLHSTMT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLNumResultCols(
- StatementHandle:SQLHSTMT;
- var ColumnCount:SQLSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLDescribeCol(
- StatementHandle:SQLHSTMT;
- ColumnNumber:SQLUSMALLINT;
- ColumnName:PSQLCHAR;
- BufferLength:SQLSMALLINT;
- var NameLength:SQLSMALLINT;
- var DataType:SQLSMALLINT;
- var ColumnSize:SQLUINTEGER;
- var DecimalDigits:SQLSMALLINT;
- var Nullable:SQLSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLFetchScroll(
- StatementHandle:SQLHSTMT;
- FetchOrientation:SQLSMALLINT;
- FetchOffset:SQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLExtendedFetch(
- hstmt:SQLHSTMT;
- fFetchType:SQLUSMALLINT;
- irow:SQLINTEGER;
- pcrow:PSQLUINTEGER;
- rgfRowStatus:PSQLUSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLGetData(
- StatementHandle:SQLHSTMT;
- ColumnNumber:SQLUSMALLINT;
- TargetType:SQLSMALLINT;
- TargetValue:SQLPOINTER;
- BufferLength:SQLINTEGER;
- StrLen_or_Ind:PSQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLSetStmtAttr(
- StatementHandle:SQLHSTMT;
- Attribute:SQLINTEGER;
- Value:SQLPOINTER;
- StringLength:SQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLGetStmtAttr(
- StatementHandle:SQLHSTMT;
- Attribute:SQLINTEGER;
- Value:SQLPOINTER;
- BufferLength:SQLINTEGER;
- StringLength:PSQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLGetInfo(
- ConnectionHandle:SQLHDBC;
- InfoType:SQLUSMALLINT;
- InfoValue:SQLPOINTER;
- BufferLength:SQLSMALLINT;
- StringLength:PSQLSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLBulkOperations(
- StatementHandle: SQLHSTMT;
- Operation:SQLSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLPutData(
- StatementHandle:SQLHSTMT;
- Data:SQLPOINTER;
- StrLen_or_Ind:SQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLBindCol(
- StatementHandle:SQLHSTMT;
- ColumnNumber:SQLUSMALLINT;
- TargetType:SQLSMALLINT;
- TargetValue:SQLPOINTER;
- BufferLength:SQLINTEGER;
- StrLen_or_Ind:PSQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLSetPos(
- hstmt:SQLHSTMT;
- irow:SQLUSMALLINT;
- fOption:SQLUSMALLINT;
- fLock:SQLUSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLDataSources(
- EnvironmentHandle:SQLHENV;
- Direction:SQLUSMALLINT;
- ServerName:PSQLCHAR;
- BufferLength1:SQLSMALLINT;
- NameLength1:PSQLSMALLINT;
- Description:PSQLCHAR;
- BufferLength2:SQLSMALLINT;
- NameLength2:PSQLSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLDrivers(
- EnvironmentHandle:SQLHENV;
- Direction:SQLUSMALLINT;
- DriverDescription:PSQLCHAR;
- BufferLength1:SQLSMALLINT;
- DescriptionLength1:PSQLSMALLINT;
- DriverAttributes:PSQLCHAR;
- BufferLength2:SQLSMALLINT;
- AttributesLength2:PSQLSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLSetConnectAttr(
- ConnectionHandle:SQLHDBC;
- Attribute:SQLINTEGER; Value:SQLPOINTER;
- StringLength:SQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLGetCursorName(
- StatementHandle:SQLHSTMT;
- CursorName:PSQLCHAR; BufferLength:SQLSMALLINT;
- NameLength:PSQLSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLSetCursorName(
- StatementHandle:SQLHSTMT;
- CursorName:PSQLCHAR; NameLength:SQLSMALLINT
- ):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLRowCount(
- StatementHandle:SQLHSTMT;
- Var RowCount:SQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLBindParameter(
- hstmt:SQLHSTMT;
- ipar:SQLUSMALLINT;
- fParamType:SQLSMALLINT;
- fCType:SQLSMALLINT;
- fSqlType:SQLSMALLINT;
- cbColDef:SQLUINTEGER;
- ibScale:SQLSMALLINT;
- rgbValue:SQLPOINTER;
- cbValueMax:SQLINTEGER;
- pcbValue:PSQLINTEGER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLFreeStmt(
- StatementHandle:SQLHSTMT;
- Option:SQLUSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLColAttribute (
- StatementHandle:SQLHSTMT;
- ColumnNumber:SQLUSMALLINT;
- FieldIdentifier:SQLUSMALLINT;
- CharacterAttribute:PSQLCHAR;
- BufferLength:SQLSMALLINT;
- StringLength:PSQLSMALLINT;
- NumericAttribute:SQLPOINTER):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- {$ifdef ODBCVER3}
- function SQLEndTran(
- HandleType:SQLSMALLINT;
- Handle:SQLHANDLE;
- CompletionType:SQLSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- {$endif}
- function SQLTables( hstmt : SQLHSTMT;
- szTableQualifier : PSQLCHAR;
- cbTableQualifier : SQLSMALLINT;
- szTableOwner : PSQLCHAR;
- cbTableOwner : SQLSMALLINT;
- szTableName : PSQLCHAR;
- cbTableName : SQLSMALLINT;
- szTableType : PSQLCHAR;
- cbTableType : SQLSMALLINT ) : SQLRETURN; {$ifdef win32}stdcall{$else}cdecl{$endif}; external LibName;
- function SQLColumns( hstmt : SQLHSTMT;
- szTableQualifier : PSQLCHAR;
- cbTableQualifier : SQLSMALLINT;
- szTableOwner : PSQLCHAR;
- cbTableOwner : SQLSMALLINT;
- szTableName : PSQLCHAR;
- cbTableName : SQLSMALLINT;
- szColumnName : PSQLCHAR;
- cbColumnName : SQLSMALLINT ) : SQLRETURN; {$ifdef win32}stdcall{$else}cdecl{$endif}; external LibName;
- function SQLSpecialColumns(StatementHandle:SQLHSTMT;
- IdentifierType:SQLUSMALLINT;
- CatalogName:PSQLCHAR;
- NameLength1:SQLSMALLINT;
- SchemaName:PSQLCHAR;
- NameLength2:SQLSMALLINT;
- TableName:PSQLCHAR;
- NameLength3:SQLSMALLINT;
- Scope:SQLUSMALLINT;
- Nullable:SQLUSMALLINT) : SQLRETURN; {$ifdef win32}stdcall{$else}cdecl{$endif}; external LibName;
- function SQLProcedures( hstmt : SQLHSTMT;
- szTableQualifier : PSQLCHAR;
- cbTableQualifier : SQLSMALLINT;
- szTableOwner : PSQLCHAR;
- cbTableOwner : SQLSMALLINT;
- szTableName : PSQLCHAR;
- cbTableName : SQLSMALLINT ) : SQLRETURN; {$ifdef win32}stdcall{$else}cdecl{$endif}; external LibName;
- function SQLPrimaryKeys(hstmt : SQLHSTMT;
- CatalogName:PSQLCHAR;NameLength1:SQLSMALLINT;
- SchemaName:PSQLCHAR;NameLength2:SQLSMALLINT;
- TableName:PSQLCHAR;
- NameLength3:SQLSMALLINT):SQLRETURN;{$ifdef win32}stdcall{$else}cdecl{$endif};external LibName;
- function SQLProcedureColumns(hstmt: SQLHSTMT;
- CatalogName: PSQLCHAR; NameLength1: SQLSMALLINT;
- SchemaName: PSQLCHAR; NameLength2: SQLSMALLINT;
- ProcName: PSQLCHAR; NameLength3: SQLSMALLINT;
- ColumnName: PSQLCHAR; NameLength4: SQLSMALLINT): SQLRETURN; {$ifdef win32}stdcall{$else}cdecl{$endif};
- external LibName;
- {$endif}
- // This function always load dynamic
- type TSQLConfigDataSource=function (
- hwndParent: Integer;
- fRequest: Integer;
- lpszDriverString: String;
- lpszAttributes: String): SQLRETURN;stdcall;
- TSQLInstallerError=function (
- iError: SQLUSMALLINT;
- pfErrorCode: PSQLINTEGER;
- lpszErrorMsg: PCHAR;
- cbErrorMsgMax: SQLUSMALLINT;
- pcbErrorMsg: PSQLUSMALLINT): SQLRETURN;stdcall;
- {$ifndef unix}
- function SQLConfigDataSource(
- hwndParent: Integer;
- fRequest: Integer;
- lpszDriverString: String;
- lpszAttributes: String): Integer;stdcall;
- function SQLInstallerError(
- iError: SQLUSMALLINT;
- pfErrorCode: PSQLINTEGER;
- lpszErrorMsg: PCHAR;
- cbErrorMsgMax: SQLUSMALLINT;
- pcbErrorMsg: PSQLUSMALLINT): SQLRETURN;
- {$endif}
- function DateStructToDateTime( b:PSQL_DATE_STRUCT):TDateTime;
- function DateTimeToDateStruct( b:TDateTime):SQL_DATE_STRUCT;
- procedure DateTime2TimeStampStruct( var Value:SQL_TIMESTAMP_STRUCT; b:TDateTime);
- Function TimeStampStructToDateTime( B : PSQL_TIMESTAMP_STRUCT) : TDateTime;
- Function TimeStructToDateTime (B : PSQL_TIME_STRUCT) : TDateTime;
- procedure LoadOdbc;
- procedure UnLoadOdbc;
- implementation
- {$ifndef unix}
- uses Windows;
- {$endif}
- {$IFDEF VER110}
- {$HPPEMIT '#pragma comment(lib,"odbc32.lib")'}
- {$ENDIF}
- {$ifndef unix}
- Var
- {$IFDEF DYNLOADINGODBC}
- OdbcHMODULE: HMODULE;
- {$ENDIF}
- OdbccpHMODULE:HMODULE;
- {$endif}
- function DateStructToDateTime( b:PSQL_DATE_STRUCT):TDateTime;
- begin
- Result:=EncodeDate( b^.Year, b^.Month, b^.Day);
- end;
- function DateTimeToDateStruct( b:TDateTime):SQL_DATE_STRUCT;
- var
- y,m,d: Word;
- begin
- DecodeDate( b, y, m, d);
- with Result do
- begin
- Year:=y; Month:=m; Day:=d;
- end;
- end;
- procedure DateTime2TimeStampStruct( var Value:SQL_TIMESTAMP_STRUCT; b:TDateTime);
- var
- w1,w2,w3,w4: Word;
- begin
- with Value do
- begin
- DecodeDate(b,w1,w2,w3);
- Year := w1;
- Month := w2;
- Day := w3;
- DecodeTime(b,w1,w2,w3,w4);
- Hour := w1;
- Minute := w2;
- Second := w3;
- fraction := Integer(w4)*1000000;
- end;
- end;
- {
- SQL_DATE_STRUCT = packed record
- Year : SQLSMALLINT;
- Month : SQLUSMALLINT;
- Day : SQLUSMALLINT;
- end;
- PSQL_DATE_STRUCT = ^SQL_DATE_STRUCT;
- }
- Function TimeStampStructToDateTime( B : PSQL_TIMESTAMP_STRUCT) : TDateTime;
- begin
- With B^ do
- Result:=EncodeDate(Year,Month,Day)+
- EncodeTime(Hour,Minute,Second,0);
- end;
- Function TimeStructToDateTime (B : PSQL_TIME_STRUCT) : TDateTime;
- begin
- With B^ do
- Result:=EncodeTime(Hour,Minute,Second,0);
- end;
- {$ifdef DYNLOADINGODBC}
- Function GetODBCVersion(Odbc:HMODULE):word;
- var
- lpFilename:pchar;
- {$IFDEF D4UP}
- tmp,lpdwHandle:cardinal;
- {$ELSE}
- tmp,lpdwHandle:integer;
- {$ENDIF}
- F,lpData:pointer;
- begin
- getmem(lpFilename,255);
- if GetModuleFileName(Odbc,lpFilename,254) = 0 then
- raise Exception.Create('Error while get module file name');
- lpdwHandle:=GetFileVersionInfoSize(lpFilename,tmp);
- getmem( lpdata, lpdwHandle);
- result := 0;
- if GetFileVersionInfo(lpFilename,0,lpdwHandle,lpData) then
- begin
- {$IFDEF D4UP}
- tmp := sizeof(tagVS_FIXEDFILEINFO);
- {$ELSE}
- tmp := sizeof(TVSFixedFileInfo);
- {$ENDIF}
- VerQueryValue( lpData, '\', f, tmp);
- result := hiword(PVSFixedFileInfo(f).dwProductVersionMS) * 256 + Loword(PVSFixedFileInfo(f).dwProductVersionMS);
- end;
- Freemem(lpdata,lpdwHandle);
- Freemem(lpFilename,255);
- end;
- Function GetAdresstoFunction(funcname:string):FARPROC;
- begin
- result:=GetProcAddress(OdbcHMODULE,pchar(funcname));
- if result = nil then
- begin
- //result:=@ThisFunctionisnotavailable;
- raise Exception.create('Error Getting adress for '+Funcname+#13+syserrormessage(GetLastError));
- end;
- end;
- {$endif}
- function syserrormessage(I : Integer) : string;
- begin
- result:='error '+inttostr(i);
- end;
- procedure LoadOdbc;
- begin
- {$ifdef DYNLOADINGODBC}
- if OdbcHMODULE <> 0 then
- exit;
- OdbcHMODULE := LoadLibrary('ODBC32.DLL');
- if OdbcHMODULE = 0 then
- raise Exception.create(syserrormessage(GetLastError));
- odbcversion:=GetODBCVersion(OdbcHMODULE);
- //Here we know the version of the odbc driver. eg '3.5'
- SQLAllocHandle:=GetAdresstoFunction('SQLAllocHandle');
- SQLSetEnvAttr:=GetAdresstoFunction('SQLSetEnvAttr');
- SQLFreeHandle:=GetAdresstoFunction('SQLFreeHandle');
- SQLGetInfo:=GetAdresstoFunction('SQLGetInfo');
- SQLProcedures:=GetAdresstoFunction('SQLProcedures');
- SQLColumns:=GetAdresstoFunction('SQLColumns');
- SQLSpecialColumns:=GetAdresstoFunction('SQLSpecialColumns');
- SQLGetDiagRec:=GetAdresstoFunction('SQLGetDiagRec');
- SQLConnect:=GetAdresstoFunction('SQLConnect');
- SQLDisconnect:=GetAdresstoFunction('SQLDisconnect');
- SQLDriverConnect:=GetAdresstoFunction('SQLDriverConnect');
- SQLExecDirect:=GetAdresstoFunction('SQLExecDirect');
- SQLPrepare:=GetAdresstoFunction('SQLPrepare');
- SQLCloseCursor:=GetAdresstoFunction('SQLCloseCursor');
- SQLExecute:=GetAdresstoFunction('SQLExecute');
- SQLFetch:=GetAdresstoFunction('SQLFetch');
- SQLNumResultCols:=GetAdresstoFunction('SQLNumResultCols');
- SQLDescribeCol:=GetAdresstoFunction('SQLDescribeCol');
- SQLFetchScroll:=GetAdresstoFunction('SQLFetchScroll');
- SQLExtendedFetch:=GetAdresstoFunction('SQLExtendedFetch');
- SQLGetData:=GetAdresstoFunction('SQLGetData');
- SQLSetStmtAttr:=GetAdresstoFunction('SQLSetStmtAttr');
- SQLGetStmtAttr:=GetAdresstoFunction('SQLGetStmtAttr');
- SQLBulkOperations:=GetAdresstoFunction('SQLBulkOperations');
- SQLPutData:=GetAdresstoFunction('SQLPutData');
- SQLBindCol:=GetAdresstoFunction('SQLBindCol');
- SQLSetPos:=GetAdresstoFunction('SQLSetPos');
- SQLDataSources:=GetAdresstoFunction('SQLDataSources');
- SQLDrivers:=GetAdresstoFunction('SQLDrivers');
- SQLSetConnectAttr:=GetAdresstoFunction('SQLSetConnectAttr');
- SQLGetCursorName:=GetAdresstoFunction('SQLGetCursorName');
- SQLSetCursorName:=GetAdresstoFunction('SQLSetCursorName');
- SQLRowCount:=GetAdresstoFunction('SQLRowCount');
- SQLBindParameter:=GetAdresstoFunction('SQLBindParameter');
- SQLFreeStmt:=GetAdresstoFunction('SQLFreeStmt');
- SQLColAttribute:=GetAdresstoFunction('SQLColAttribute');
- SQLEndTran:=GetAdresstoFunction('SQLEndTran');
- SQLTables:=GetAdresstoFunction('SQLTables');
- SQLPrimaryKeys:=GetAdresstoFunction('SQLPrimaryKeys');
- SQLProcedureColumns:=GetAdresstoFunction('SQLProcedureColumns');
- {$endif}
- end;
- procedure UnLoadOdbc;
- begin
- {$ifdef DYNLOADINGODBC}
- if OdbcHMODULE<>0 then
- begin
- if not FreeLibrary(OdbcHMODULE) then
- begin
- raise Exception.create(syserrormessage(GetLastError));
- end;
- end;
- OdbcHMODULE := 0;
- {$endif}
- {$ifndef unix}
- if OdbccpHMODULE <> 0 then
- begin
- if not FreeLibrary(OdbccpHMODULE) then
- begin
- raise Exception.create(syserrormessage(GetLastError));
- end;
- end;
- OdbccpHMODULE:=0;
- {$endif}
- end;
- // function SQLConfigDataSource(
- // hwndParent: Integer;
- // fRequest: Integer;
- // lpszDriverString: String;
- // lpszAttributes: String): Integer;stdcall;external 'ODBCCP32.DLL';
- {$ifndef unix}
- function SQLConfigDataSource(
- hwndParent: Integer;
- fRequest: Integer;
- lpszDriverString: String;
- lpszAttributes: String): Integer;stdcall;
- var
- func: TSQLConfigDataSource;
- begin
- if OdbccpHMODULE = 0 then
- begin
- OdbccpHMODULE := LoadLibrary('ODBCCP32.DLL');
- if OdbccpHMODULE = 0 then
- raise Exception.create(syserrormessage(GetLastError));
- end;
- func := TSQLConfigDataSource(GetProcAddress(OdbccpHMODULE,pchar('SQLConfigDataSource')));
- if @func = nil then
- raise Exception.create('Error Getting adress for SQLConfigDataSource'+#13+syserrormessage(GetLastError));
- Result := func(hwndParent,fRequest,lpszDriverString,lpszAttributes);
- end;
- //SQLRETURN INSTAPI SQLInstallerError(WORD iError,
- // DWORD *pfErrorCode,
- // LPSTR lpszErrorMsg,
- // WORD cbErrorMsgMax,
- // WORD *pcbErrorMsg);
- function SQLInstallerError(
- iError: SQLUSMALLINT;
- pfErrorCode: PSQLINTEGER;
- lpszErrorMsg: PCHAR;
- cbErrorMsgMax: SQLUSMALLINT;
- pcbErrorMsg: PSQLUSMALLINT): SQLRETURN;
- var
- func: TSQLInstallerError;
- begin
- if OdbccpHMODULE = 0 then
- begin
- OdbccpHMODULE := LoadLibrary('ODBCCP32.DLL');
- if OdbccpHMODULE = 0 then
- raise Exception.create(syserrormessage(GetLastError));
- end;
- func := TSQLInstallerError(GetProcAddress(OdbccpHMODULE,pchar('SQLInstallerError')));
- if @func = nil then
- raise Exception.create('Error Getting adress for SQLInstallerError'+#13+syserrormessage(GetLastError));
- Result := func( iError, pfErrorCode, lpszErrorMsg, cbErrorMsgMax, pcbErrorMsg);
- end;
- {$endif}
- initialization
- finalization
- begin
- UnloadODBC;
- end;
- end.
|