odbcsql.inc 87 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137
  1. {$ifdef fpc}
  2. {$mode objfpc}
  3. {$macro on}
  4. {$endif}
  5. {$h+}
  6. // define ODBC version 3.52 by default
  7. {$define ODBCVER:=$0352}
  8. {$if ODBCVER >= $0300}
  9. {$define ODBCVER3}
  10. {$endif}
  11. {$if ODBCVER >= $0350}
  12. {$define ODBCVER35}
  13. {$endif}
  14. {$ifndef DYNLOADINGODBC}
  15. {$IFDEF WINDOWS}
  16. { $linklib odbc32}
  17. {$ELSE}
  18. {$linklib odbc}
  19. {$ENDIF}
  20. {$endif}
  21. interface
  22. uses
  23. Dynlibs,
  24. ctypes,
  25. sysutils;
  26. {$IFDEF Unix}
  27. {$DEFINE extdecl:=cdecl}
  28. const
  29. odbclib = 'libodbc.'+sharedsuffix;
  30. {$ENDIF}
  31. {$IFDEF Windows}
  32. {$DEFINE extdecl:=stdcall}
  33. const
  34. odbclib = 'odbc32.dll';
  35. {$ENDIF}
  36. (* DATA TYPES CORRESPONDENCE
  37. BDE fields ODBC types
  38. ---------- ------------------
  39. ftBlob SQL_BINARY
  40. ftBoolean SQL_BIT
  41. ftDate SQL_TYPE_DATE
  42. ftTime SQL_TYPE_TIME
  43. ftDateTime SQL_TYPE_TIMESTAMP
  44. ftInteger SQL_INTEGER
  45. ftSmallint SQL_SMALLINT
  46. ftFloat SQL_DOUBLE
  47. ftString SQL_CHAR
  48. ftMemo SQL_BINARY // SQL_VARCHAR
  49. *)
  50. type
  51. SQLCHAR = cuchar;
  52. SQLWCHAR = WideChar;
  53. SQLSCHAR = cschar;
  54. SQLSMALLINT = csshort;
  55. SQLUSMALLINT = cushort;
  56. SQLINTEGER = clong;
  57. SQLUINTEGER = culong;
  58. SQLLEN = PtrInt;
  59. SQLULEN = PtrUInt;
  60. SQLREAL = cfloat;
  61. SQLDOUBLE = cdouble;
  62. SQLFLOAT = cdouble;
  63. SQLRETURN = SQLSMALLINT;
  64. SQLPOINTER = pointer;
  65. SQLHANDLE = pointer;
  66. SQLHENV = SQLHANDLE;
  67. SQLHDBC = SQLHANDLE;
  68. SQLHSTMT = SQLHANDLE;
  69. SQLHDESC = SQLHANDLE;
  70. SQLHWND = pointer;
  71. SQLSETPOSIROW= {$IF DEFINED(CPU64)}cuint64{$ELSE}SQLUSMALLINT{$ENDIF};
  72. PSQLCHAR = PAnsiChar;
  73. PSQLWCHAR = PWideChar;
  74. PSQLSMALLINT = ^SQLSMALLINT;
  75. PSQLUSMALLINT = ^SQLUSMALLINT;
  76. PSQLINTEGER = ^SQLINTEGER;
  77. PSQLUINTEGER = ^SQLUINTEGER;
  78. PSQLLEN = ^SQLLEN;
  79. PSQLULEN = ^SQLULEN;
  80. PSQLREAL = ^SQLREAL;
  81. PSQLDOUBLE = ^SQLDOUBLE;
  82. PSQLFLOAT = ^SQLFLOAT;
  83. PSQLPOINTER = ^SQLPOINTER;
  84. PSQLHANDLE = ^SQLHANDLE;
  85. const
  86. { SQL data type codes }
  87. SQL_UNKNOWN_TYPE = 0;
  88. SQL_LONGVARCHAR =(-1);
  89. SQL_BINARY =(-2);
  90. SQL_VARBINARY =(-3);
  91. SQL_LONGVARBINARY =(-4);
  92. SQL_BIGINT =(-5);
  93. SQL_TINYINT =(-6);
  94. SQL_BIT =(-7);
  95. SQL_WCHAR =(-8);
  96. SQL_WVARCHAR =(-9);
  97. SQL_WLONGVARCHAR =(-10);
  98. {$ifdef ODBCVER35}
  99. SQL_GUID =(-11);
  100. {$endif}
  101. SQL_CHAR = 1;
  102. SQL_NUMERIC = 2;
  103. SQL_DECIMAL = 3;
  104. SQL_INTEGER = 4;
  105. SQL_SMALLINT = 5;
  106. SQL_FLOAT = 6;
  107. SQL_REAL = 7;
  108. SQL_DOUBLE = 8;
  109. SQL_DATE = 9;
  110. {$ifdef ODBCVER3}
  111. SQL_DATETIME = 9;
  112. {$endif}
  113. SQL_TIME = 10;
  114. {$ifdef ODBCVER3}
  115. SQL_INTERVAL = 10;
  116. {$endif}
  117. SQL_TIMESTAMP = 11;
  118. SQL_VARCHAR = 12;
  119. {$ifdef ODBCVER3}
  120. SQL_TYPE_DATE = 91;
  121. SQL_TYPE_TIME = 92;
  122. SQL_TYPE_TIMESTAMP= 93;
  123. // Microsoft has -150 thru -199 reserved for Microsoft SQL Server Native Client driver usage.
  124. SQL_SS_VARIANT = -150;
  125. SQL_SS_UDT = -151;
  126. SQL_SS_XML = -152;
  127. SQL_SS_TABLE = -153;
  128. SQL_SS_TIME2 = -154;
  129. SQL_SS_TIMESTAMPOFFSET = -155;
  130. {$endif}
  131. { interval codes}
  132. {$ifdef ODBCVER3}
  133. SQL_CODE_YEAR = 1;
  134. SQL_CODE_MONTH = 2;
  135. SQL_CODE_DAY = 3;
  136. SQL_CODE_HOUR = 4;
  137. SQL_CODE_MINUTE = 5;
  138. SQL_CODE_SECOND = 6;
  139. SQL_CODE_YEAR_TO_MONTH = 7;
  140. SQL_CODE_DAY_TO_HOUR = 8;
  141. SQL_CODE_DAY_TO_MINUTE = 9;
  142. SQL_CODE_DAY_TO_SECOND = 10;
  143. SQL_CODE_HOUR_TO_MINUTE = 11;
  144. SQL_CODE_HOUR_TO_SECOND = 12;
  145. SQL_CODE_MINUTE_TO_SECOND = 13;
  146. SQL_INTERVAL_YEAR = 100 + SQL_CODE_YEAR;
  147. SQL_INTERVAL_MONTH = 100 + SQL_CODE_MONTH;
  148. SQL_INTERVAL_DAY = 100 + SQL_CODE_DAY;
  149. SQL_INTERVAL_HOUR = 100 + SQL_CODE_HOUR;
  150. SQL_INTERVAL_MINUTE = 100 + SQL_CODE_MINUTE;
  151. SQL_INTERVAL_SECOND = 100 + SQL_CODE_SECOND;
  152. SQL_INTERVAL_YEAR_TO_MONTH = 100 + SQL_CODE_YEAR_TO_MONTH;
  153. SQL_INTERVAL_DAY_TO_HOUR = 100 + SQL_CODE_DAY_TO_HOUR;
  154. SQL_INTERVAL_DAY_TO_MINUTE = 100 + SQL_CODE_DAY_TO_MINUTE;
  155. SQL_INTERVAL_DAY_TO_SECOND = 100 + SQL_CODE_DAY_TO_SECOND;
  156. SQL_INTERVAL_HOUR_TO_MINUTE = 100 + SQL_CODE_HOUR_TO_MINUTE;
  157. SQL_INTERVAL_HOUR_TO_SECOND = 100 + SQL_CODE_HOUR_TO_SECOND;
  158. SQL_INTERVAL_MINUTE_TO_SECOND = 100 + SQL_CODE_MINUTE_TO_SECOND;
  159. {$else}
  160. SQL_INTERVAL_YEAR = -80;
  161. SQL_INTERVAL_MONTH = -81;
  162. SQL_INTERVAL_YEAR_TO_MONTH = -82;
  163. SQL_INTERVAL_DAY = -83;
  164. SQL_INTERVAL_HOUR = -84;
  165. SQL_INTERVAL_MINUTE = -85;
  166. SQL_INTERVAL_SECOND = -86;
  167. SQL_INTERVAL_DAY_TO_HOUR = -87;
  168. SQL_INTERVAL_DAY_TO_MINUTE = -88;
  169. SQL_INTERVAL_DAY_TO_SECOND = -89;
  170. SQL_INTERVAL_HOUR_TO_MINUTE = -90;
  171. SQL_INTERVAL_HOUR_TO_SECOND = -91;
  172. SQL_INTERVAL_MINUTE_TO_SECOND = -92;
  173. {$endif}
  174. { Unicode data type codes }
  175. {$ifndef ODBCVER3}
  176. SQL_UNICODE = -95;
  177. SQL_UNICODE_VARCHAR = -96;
  178. SQL_UNICODE_LONGVARCHAR = -97;
  179. SQL_UNICODE_CHAR = SQL_UNICODE;
  180. {$else}
  181. { The previous definitions for SQL_UNICODE_ are historical and obsolete }
  182. SQL_UNICODE = SQL_WCHAR;
  183. SQL_UNICODE_VARCHAR = SQL_WVARCHAR;
  184. SQL_UNICODE_LONGVARCHAR = SQL_WLONGVARCHAR;
  185. SQL_UNICODE_CHAR = SQL_WCHAR;
  186. {$endif}
  187. { C datatype to SQL datatype mapping }
  188. SQL_C_CHAR = SQL_CHAR;
  189. SQL_C_WCHAR = SQL_WCHAR;
  190. SQL_C_TCHAR = {$IFDEF UNICODE}SQL_C_WCHAR{$ELSE}SQL_C_CHAR{$ENDIF};
  191. SQL_C_LONG = SQL_INTEGER;
  192. SQL_C_SHORT = SQL_SMALLINT;
  193. SQL_C_FLOAT = SQL_REAL;
  194. SQL_C_DOUBLE = SQL_DOUBLE;
  195. {$ifdef ODBCVER3}
  196. SQL_C_NUMERIC = SQL_NUMERIC;
  197. {$endif}
  198. SQL_C_DEFAULT = 99;
  199. SQL_SIGNED_OFFSET = -20;
  200. SQL_UNSIGNED_OFFSET = -22;
  201. SQL_C_DATE = SQL_DATE;
  202. SQL_C_TIME = SQL_TIME;
  203. SQL_C_TIMESTAMP = SQL_TIMESTAMP;
  204. {$ifdef ODBCVER3}
  205. SQL_C_TYPE_DATE = SQL_TYPE_DATE;
  206. SQL_C_TYPE_TIME = SQL_TYPE_TIME;
  207. SQL_C_TYPE_TIMESTAMP = SQL_TYPE_TIMESTAMP;
  208. SQL_C_INTERVAL_YEAR = SQL_INTERVAL_YEAR;
  209. SQL_C_INTERVAL_MONTH = SQL_INTERVAL_MONTH;
  210. SQL_C_INTERVAL_DAY = SQL_INTERVAL_DAY;
  211. SQL_C_INTERVAL_HOUR = SQL_INTERVAL_HOUR;
  212. SQL_C_INTERVAL_MINUTE = SQL_INTERVAL_MINUTE;
  213. SQL_C_INTERVAL_SECOND = SQL_INTERVAL_SECOND;
  214. SQL_C_INTERVAL_YEAR_TO_MONTH = SQL_INTERVAL_YEAR_TO_MONTH;
  215. SQL_C_INTERVAL_DAY_TO_HOUR = SQL_INTERVAL_DAY_TO_HOUR;
  216. SQL_C_INTERVAL_DAY_TO_MINUTE = SQL_INTERVAL_DAY_TO_MINUTE;
  217. SQL_C_INTERVAL_DAY_TO_SECOND = SQL_INTERVAL_DAY_TO_SECOND;
  218. SQL_C_INTERVAL_HOUR_TO_MINUTE = SQL_INTERVAL_HOUR_TO_MINUTE;
  219. SQL_C_INTERVAL_HOUR_TO_SECOND = SQL_INTERVAL_HOUR_TO_SECOND;
  220. SQL_C_INTERVAL_MINUTE_TO_SECOND = SQL_INTERVAL_MINUTE_TO_SECOND;
  221. {$endif}
  222. SQL_C_BINARY = SQL_BINARY;
  223. SQL_C_BIT = SQL_BIT;
  224. {$ifdef ODBCVER3}
  225. SQL_C_SBIGINT = SQL_BIGINT+SQL_SIGNED_OFFSET; // SIGNED BIGINT
  226. SQL_C_UBIGINT = SQL_BIGINT+SQL_UNSIGNED_OFFSET; // UNSIGNED BIGINT
  227. {$endif}
  228. SQL_C_TINYINT = SQL_TINYINT;
  229. SQL_C_SLONG = SQL_C_LONG +SQL_SIGNED_OFFSET; // SIGNED INTEGER
  230. SQL_C_SSHORT = SQL_C_SHORT+SQL_SIGNED_OFFSET; // SIGNED SMALLINT
  231. SQL_C_STINYINT = SQL_TINYINT+SQL_SIGNED_OFFSET; // SIGNED TINYINT
  232. SQL_C_ULONG = SQL_C_LONG +SQL_UNSIGNED_OFFSET; // UNSIGNED INTEGER
  233. SQL_C_USHORT = SQL_C_SHORT+SQL_UNSIGNED_OFFSET; // UNSIGNED SMALLINT
  234. SQL_C_UTINYINT = SQL_TINYINT+SQL_UNSIGNED_OFFSET; // UNSIGNED TINYINT
  235. SQL_C_BOOKMARK = {$if defined(CPU64)}SQL_C_UBIGINT{$else}SQL_C_ULONG{$endif}; // BOOKMARK
  236. {$ifdef ODBCVER35}
  237. SQL_C_GUID = SQL_GUID;
  238. {$endif}
  239. SQL_TYPE_NULL = 0;
  240. {$ifdef ODBCVER3}
  241. SQL_C_VARBOOKMARK = SQL_C_BINARY;
  242. {$endif}
  243. SQL_API_SQLDESCRIBEPARAM=58;
  244. SQL_NO_TOTAL = -4;
  245. type
  246. SQL_DATE_STRUCT = packed record
  247. Year : SQLSMALLINT;
  248. Month : SQLUSMALLINT;
  249. Day : SQLUSMALLINT;
  250. end;
  251. PSQL_DATE_STRUCT = ^SQL_DATE_STRUCT;
  252. SQL_TIME_STRUCT = packed record
  253. Hour : SQLUSMALLINT;
  254. Minute : SQLUSMALLINT;
  255. Second : SQLUSMALLINT;
  256. end;
  257. PSQL_TIME_STRUCT = ^SQL_TIME_STRUCT;
  258. SQL_TIMESTAMP_STRUCT = packed record
  259. Year : SQLUSMALLINT;
  260. Month : SQLUSMALLINT;
  261. Day : SQLUSMALLINT;
  262. Hour : SQLUSMALLINT;
  263. Minute : SQLUSMALLINT;
  264. Second : SQLUSMALLINT;
  265. Fraction : SQLUINTEGER;
  266. end;
  267. PSQL_TIMESTAMP_STRUCT = ^SQL_TIMESTAMP_STRUCT;
  268. SQL_NUMERIC_STRUCT = packed record
  269. precision: SQLCHAR;
  270. scale : SQLSCHAR;
  271. sign : SQLCHAR; // 1 if positive, 0 if negative
  272. val : array[0..15] of SQLCHAR;
  273. end;
  274. const
  275. SQL_NAME_LEN = 128;
  276. SQL_OV_ODBC3 = 3;
  277. SQL_OV_ODBC2 = 2;
  278. SQL_OV_ODBC3_80 = 380;
  279. SQL_ATTR_ODBC_VERSION = 200;
  280. { Options for SQLDriverConnect }
  281. SQL_DRIVER_NOPROMPT = 0;
  282. SQL_DRIVER_COMPLETE = 1;
  283. SQL_DRIVER_PROMPT = 2;
  284. SQL_DRIVER_COMPLETE_REQUIRED = 3;
  285. { whether an attribute is a pointer or not }
  286. SQL_IS_POINTER = (-4);
  287. SQL_IS_UINTEGER = (-5);
  288. SQL_IS_INTEGER = (-6);
  289. SQL_IS_USMALLINT = (-7);
  290. SQL_IS_SMALLINT = (-8);
  291. { SQLExtendedFetch "fFetchType" values }
  292. SQL_FETCH_BOOKMARK = 8;
  293. SQL_SCROLL_OPTIONS = 44;
  294. { SQL_USE_BOOKMARKS options }
  295. SQL_UB_OFF = 0;
  296. SQL_UB_ON = 1;
  297. SQL_UB_DEFAULT = SQL_UB_OFF;
  298. SQL_UB_FIXED = SQL_UB_ON;
  299. SQL_UB_VARIABLE = 2;
  300. { SQL_SCROLL_OPTIONS masks }
  301. SQL_SO_FORWARD_ONLY = $01;
  302. SQL_SO_KEYSET_DRIVEN = $02;
  303. SQL_SO_DYNAMIC = $04;
  304. SQL_SO_MIXED = $08;
  305. SQL_SO_STATIC = $10;
  306. SQL_BOOKMARK_PERSISTENCE = 82;
  307. SQL_STATIC_SENSITIVITY = 83;
  308. { SQL_BOOKMARK_PERSISTENCE values }
  309. SQL_BP_CLOSE = $01;
  310. SQL_BP_DELETE = $02;
  311. SQL_BP_DROP = $04;
  312. SQL_BP_TRANSACTION = $08;
  313. SQL_BP_UPDATE = $10;
  314. SQL_BP_OTHER_HSTMT = $20;
  315. SQL_BP_SCROLL = $40;
  316. SQL_DYNAMIC_CURSOR_ATTRIBUTES1 = 144;
  317. SQL_DYNAMIC_CURSOR_ATTRIBUTES2 = 145;
  318. SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 = 146;
  319. SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 = 147;
  320. SQL_INDEX_KEYWORDS = 148;
  321. SQL_INFO_SCHEMA_VIEWS = 149;
  322. SQL_KEYSET_CURSOR_ATTRIBUTES1 = 150;
  323. SQL_KEYSET_CURSOR_ATTRIBUTES2 = 151;
  324. SQL_STATIC_CURSOR_ATTRIBUTES1 = 167;
  325. SQL_STATIC_CURSOR_ATTRIBUTES2 = 168;
  326. { supported SQLFetchScroll FetchOrientation's }
  327. SQL_CA1_NEXT = 1;
  328. SQL_CA1_ABSOLUTE = 2;
  329. SQL_CA1_RELATIVE = 4;
  330. SQL_CA1_BOOKMARK = 8;
  331. { supported SQLSetPos LockType's }
  332. SQL_CA1_LOCK_NO_CHANGE= $40;
  333. SQL_CA1_LOCK_EXCLUSIVE= $80;
  334. SQL_CA1_LOCK_UNLOCK =$100;
  335. { supported SQLSetPos Operations }
  336. SQL_CA1_POS_POSITION = $200;
  337. SQL_CA1_POS_UPDATE = $400;
  338. SQL_CA1_POS_DELETE = $800;
  339. SQL_CA1_POS_REFRESH =$1000;
  340. { positioned updates and deletes }
  341. SQL_CA1_POSITIONED_UPDATE=$2000;
  342. SQL_CA1_POSITIONED_DELETE=$4000;
  343. SQL_CA1_SELECT_FOR_UPDATE=$8000;
  344. { supported SQLBulkOperations operations }
  345. SQL_CA1_BULK_ADD =$10000;
  346. SQL_CA1_BULK_UPDATE_BY_BOOKMARK =$20000;
  347. SQL_CA1_BULK_DELETE_BY_BOOKMARK =$40000;
  348. SQL_CA1_BULK_FETCH_BY_BOOKMARK =$80000;
  349. { supported values for SQL_ATTR_SCROLL_CONCURRENCY }
  350. SQL_CA2_READ_ONLY_CONCURRENCY = 1;
  351. SQL_CA2_LOCK_CONCURRENCY = 2;
  352. SQL_CA2_OPT_ROWVER_CONCURRENCY= 4;
  353. SQL_CA2_OPT_VALUES_CONCURRENCY= 8;
  354. { sensitivity of the cursor to its own inserts, deletes, and updates }
  355. SQL_CA2_SENSITIVITY_ADDITIONS =$10;
  356. SQL_CA2_SENSITIVITY_DELETIONS =$20;
  357. SQL_CA2_SENSITIVITY_UPDATES =$40;
  358. { semantics of SQL_ATTR_MAX_ROWS }
  359. SQL_CA2_MAX_ROWS_SELECT = $80;
  360. SQL_CA2_MAX_ROWS_INSERT =$100;
  361. SQL_CA2_MAX_ROWS_DELETE =$200;
  362. SQL_CA2_MAX_ROWS_UPDATE =$400;
  363. SQL_CA2_MAX_ROWS_CATALOG =$800;
  364. SQL_CA2_MAX_ROWS_AFFECTS_ALL =(SQL_CA2_MAX_ROWS_SELECT or
  365. SQL_CA2_MAX_ROWS_INSERT or SQL_CA2_MAX_ROWS_DELETE or
  366. SQL_CA2_MAX_ROWS_UPDATE or SQL_CA2_MAX_ROWS_CATALOG);
  367. { semantics of SQL_DIAG_CURSOR_ROW_COUNT }
  368. SQL_CA2_CRC_EXACT = $1000;
  369. SQL_CA2_CRC_APPROXIMATE = $2000;
  370. { the kinds of positioned statements that can be simulated }
  371. SQL_CA2_SIMULATE_NON_UNIQUE = $4000;
  372. SQL_CA2_SIMULATE_TRY_UNIQUE = $8000;
  373. SQL_CA2_SIMULATE_UNIQUE =$10000;
  374. { Operations in SQLBulkOperations }
  375. SQL_ADD = 4;
  376. SQL_SETPOS_MAX_OPTION_VALUE = SQL_ADD;
  377. SQL_UPDATE_BY_BOOKMARK = 5;
  378. SQL_DELETE_BY_BOOKMARK = 6;
  379. SQL_FETCH_BY_BOOKMARK = 7;
  380. { Operations in SQLSetPos }
  381. SQL_POSITION = 0;
  382. SQL_REFRESH = 1;
  383. SQL_UPDATE = 2;
  384. SQL_DELETE = 3;
  385. { Lock options in SQLSetPos }
  386. SQL_LOCK_NO_CHANGE = 0;
  387. SQL_LOCK_EXCLUSIVE = 1;
  388. SQL_LOCK_UNLOCK = 2;
  389. { SQLExtendedFetch "rgfRowStatus" element values }
  390. SQL_ROW_SUCCESS = 0;
  391. SQL_ROW_DELETED = 1;
  392. SQL_ROW_UPDATED = 2;
  393. SQL_ROW_NOROW = 3;
  394. SQL_ROW_ADDED = 4;
  395. SQL_ROW_ERROR = 5;
  396. SQL_ROW_SUCCESS_WITH_INFO = 6;
  397. SQL_ROW_PROCEED = 0;
  398. SQL_ROW_IGNORE = 1;
  399. SQL_MAX_DSN_LENGTH = 32; { maximum data source name size }
  400. SQL_MAX_OPTION_STRING_LENGTH = 256;
  401. { SQL_ODBC_CURSORS options }
  402. SQL_CUR_USE_IF_NEEDED = 0;
  403. SQL_CUR_USE_ODBC = 1;
  404. SQL_CUR_USE_DRIVER = 2;
  405. SQL_CUR_DEFAULT = SQL_CUR_USE_DRIVER;
  406. SQL_PARAM_TYPE_UNKNOWN = 0;
  407. SQL_PARAM_INPUT = 1;
  408. SQL_PARAM_INPUT_OUTPUT = 2;
  409. SQL_RESULT_COL = 3;
  410. SQL_PARAM_OUTPUT = 4;
  411. SQL_RETURN_VALUE = 5;
  412. { special length/indicator values }
  413. SQL_NULL_DATA = (-1);
  414. SQL_DATA_AT_EXEC = (-2);
  415. SQL_SUCCESS = 0;
  416. SQL_SUCCESS_WITH_INFO = 1;
  417. SQL_NO_DATA = 100;
  418. SQL_ERROR = (-1);
  419. SQL_INVALID_HANDLE = (-2);
  420. SQL_STILL_EXECUTING = 2;
  421. SQL_NEED_DATA = 99;
  422. { flags for null-terminated string }
  423. SQL_NTS = (-3);
  424. { maximum message length }
  425. SQL_MAX_MESSAGE_LENGTH = 512;
  426. { date/time length constants }
  427. {$ifdef ODBCVER3}
  428. SQL_DATE_LEN = 10;
  429. SQL_TIME_LEN = 8; { add P+1 if precision is nonzero }
  430. SQL_TIMESTAMP_LEN = 19; { add P+1 if precision is nonzero }
  431. {$endif}
  432. { handle type identifiers }
  433. SQL_HANDLE_ENV = 1;
  434. SQL_HANDLE_DBC = 2;
  435. SQL_HANDLE_STMT = 3;
  436. SQL_HANDLE_DESC = 4;
  437. {$ifdef ODBCVER3}
  438. { environment attribute }
  439. SQL_ATTR_OUTPUT_NTS = 10001;
  440. { connection attributes }
  441. SQL_ATTR_AUTO_IPD = 10001;
  442. SQL_ATTR_METADATA_ID = 10014;
  443. {$endif} { ODBCVER >= 0x0300 }
  444. { statement attributes }
  445. SQL_ATTR_APP_ROW_DESC = 10010;
  446. SQL_ATTR_APP_PARAM_DESC = 10011;
  447. SQL_ATTR_IMP_ROW_DESC = 10012;
  448. SQL_ATTR_IMP_PARAM_DESC = 10013;
  449. SQL_ATTR_CURSOR_SCROLLABLE = (-1);
  450. SQL_ATTR_CURSOR_SENSITIVITY = (-2);
  451. SQL_QUERY_TIMEOUT =0;
  452. SQL_MAX_ROWS =1;
  453. SQL_NOSCAN =2;
  454. SQL_MAX_LENGTH =3;
  455. SQL_ASYNC_ENABLE =4; // same as SQL_ATTR_ASYNC_ENABLE */
  456. SQL_BIND_TYPE =5;
  457. SQL_CURSOR_TYPE = 6;
  458. SQL_CONCURRENCY = 7;
  459. SQL_KEYSET_SIZE =8;
  460. SQL_ROWSET_SIZE =9;
  461. SQL_SIMULATE_CURSOR =10;
  462. SQL_RETRIEVE_DATA =11;
  463. SQL_USE_BOOKMARKS =12;
  464. SQL_GET_BOOKMARK =13; // GetStmtOption Only */
  465. SQL_ROW_NUMBER =14 ; // GetStmtOption Only */
  466. { statement attributes for ODBC 3.0 }
  467. SQL_ATTR_ASYNC_ENABLE = 4;
  468. SQL_ATTR_CONCURRENCY = SQL_CONCURRENCY;
  469. SQL_ATTR_CURSOR_TYPE = SQL_CURSOR_TYPE;
  470. SQL_ATTR_FETCH_BOOKMARK_PTR = 16;
  471. SQL_ATTR_MAX_ROWS = SQL_MAX_ROWS;
  472. SQL_ATTR_PARAMSET_SIZE = 22;
  473. SQL_ATTR_QUERY_TIMEOUT = SQL_QUERY_TIMEOUT;
  474. SQL_ATTR_ROW_NUMBER = SQL_ROW_NUMBER;
  475. SQL_ATTR_ROW_STATUS_PTR = 25;
  476. SQL_ATTR_ROWS_FETCHED_PTR = 26;
  477. SQL_ATTR_USE_BOOKMARKS = SQL_USE_BOOKMARKS;
  478. { connection attributes }
  479. SQL_ACCESS_MODE =101;
  480. SQL_AUTOCOMMIT =102;
  481. SQL_LOGIN_TIMEOUT =103;
  482. SQL_OPT_TRACE =104;
  483. SQL_OPT_TRACEFILE =105;
  484. SQL_TRANSLATE_DLL =106;
  485. SQL_TRANSLATE_OPTION =107;
  486. SQL_TXN_ISOLATION =108;
  487. SQL_CURRENT_QUALIFIER =109;
  488. SQL_ODBC_CURSORS =110;
  489. SQL_QUIET_MODE =111;
  490. SQL_PACKET_SIZE =112;
  491. { connection attributes with new names }
  492. SQL_ATTR_ACCESS_MODE =SQL_ACCESS_MODE;
  493. SQL_ATTR_AUTOCOMMIT =SQL_AUTOCOMMIT;
  494. SQL_ATTR_CONNECTION_DEAD =1209; //* GetConnectAttr only */
  495. SQL_ATTR_CONNECTION_TIMEOUT =113;
  496. SQL_ATTR_CURRENT_CATALOG =SQL_CURRENT_QUALIFIER;
  497. SQL_ATTR_DISCONNECT_BEHAVIOR=114;
  498. SQL_ATTR_ENLIST_IN_DTC =1207;
  499. SQL_ATTR_ENLIST_IN_XA =1208;
  500. SQL_ATTR_LOGIN_TIMEOUT =SQL_LOGIN_TIMEOUT;
  501. SQL_ATTR_ODBC_CURSORS =SQL_ODBC_CURSORS;
  502. SQL_ATTR_PACKET_SIZE =SQL_PACKET_SIZE;
  503. SQL_ATTR_QUIET_MODE =SQL_QUIET_MODE;
  504. SQL_ATTR_TRACE =SQL_OPT_TRACE;
  505. SQL_ATTR_TRACEFILE =SQL_OPT_TRACEFILE;
  506. SQL_ATTR_TRANSLATE_LIB =SQL_TRANSLATE_DLL;
  507. SQL_ATTR_TRANSLATE_OPTION =SQL_TRANSLATE_OPTION;
  508. SQL_ATTR_TXN_ISOLATION =SQL_TXN_ISOLATION;
  509. //* SQL_ACCESS_MODE options */
  510. SQL_MODE_READ_WRITE =0;
  511. SQL_MODE_READ_ONLY =1;
  512. SQL_MODE_DEFAULT =SQL_MODE_READ_WRITE;
  513. //* SQL_AUTOCOMMIT options */
  514. SQL_AUTOCOMMIT_OFF = 0;
  515. SQL_AUTOCOMMIT_ON = 1;
  516. SQL_AUTOCOMMIT_DEFAULT = SQL_AUTOCOMMIT_ON;
  517. { SQL_ATTR_CURSOR_SCROLLABLE values }
  518. SQL_NONSCROLLABLE = 0;
  519. SQL_SCROLLABLE = 1;
  520. { SQL_CURSOR_TYPE options }
  521. SQL_CURSOR_FORWARD_ONLY = 0;
  522. SQL_CURSOR_KEYSET_DRIVEN = 1;
  523. SQL_CURSOR_DYNAMIC = 2;
  524. SQL_CURSOR_STATIC = 3;
  525. SQL_CURSOR_TYPE_DEFAULT = SQL_CURSOR_FORWARD_ONLY;{ Default value }
  526. { SQL_CONCURRENCY options }
  527. SQL_CONCUR_READ_ONLY = 1;
  528. SQL_CONCUR_LOCK = 2;
  529. SQL_CONCUR_ROWVER = 3;
  530. SQL_CONCUR_VALUES = 4;
  531. SQL_CONCUR_DEFAULT = SQL_CONCUR_READ_ONLY; { Default value }
  532. { identifiers of fields in the SQL descriptor }
  533. {$ifdef ODBCVER3}
  534. SQL_DESC_COUNT = 1001;
  535. SQL_DESC_TYPE = 1002;
  536. SQL_DESC_LENGTH = 1003;
  537. SQL_DESC_OCTET_LENGTH_PTR = 1004;
  538. SQL_DESC_PRECISION = 1005;
  539. SQL_DESC_SCALE = 1006;
  540. SQL_DESC_DATETIME_INTERVAL_CODE = 1007;
  541. SQL_DESC_NULLABLE = 1008;
  542. SQL_DESC_INDICATOR_PTR = 1009;
  543. SQL_DESC_DATA_PTR = 1010;
  544. SQL_DESC_NAME = 1011;
  545. SQL_DESC_UNNAMED = 1012;
  546. SQL_DESC_OCTET_LENGTH = 1013;
  547. SQL_DESC_ALLOC_TYPE = 1099;
  548. {$endif}
  549. { identifiers of fields in the diagnostics area }
  550. {$ifdef ODBCVER3}
  551. SQL_DIAG_RETURNCODE = 1;
  552. SQL_DIAG_NUMBER = 2;
  553. SQL_DIAG_ROW_COUNT = 3;
  554. SQL_DIAG_SQLSTATE = 4;
  555. SQL_DIAG_NATIVE = 5;
  556. SQL_DIAG_MESSAGE_TEXT = 6;
  557. SQL_DIAG_DYNAMIC_FUNCTION = 7;
  558. SQL_DIAG_CLASS_ORIGIN = 8;
  559. SQL_DIAG_SUBCLASS_ORIGIN = 9;
  560. SQL_DIAG_CONNECTION_NAME = 10;
  561. SQL_DIAG_SERVER_NAME = 11;
  562. SQL_DIAG_DYNAMIC_FUNCTION_CODE = 12;
  563. {$endif}
  564. { dynamic function codes }
  565. {$ifdef ODBCVER3}
  566. SQL_DIAG_ALTER_TABLE = 4;
  567. SQL_DIAG_CREATE_INDEX = (-1);
  568. SQL_DIAG_CREATE_TABLE = 77;
  569. SQL_DIAG_CREATE_VIEW = 84;
  570. SQL_DIAG_DELETE_WHERE = 19;
  571. SQL_DIAG_DROP_INDEX = (-2);
  572. SQL_DIAG_DROP_TABLE = 32;
  573. SQL_DIAG_DROP_VIEW = 36;
  574. SQL_DIAG_DYNAMIC_DELETE_CURSOR = 38;
  575. SQL_DIAG_DYNAMIC_UPDATE_CURSOR = 81;
  576. SQL_DIAG_GRANT = 48;
  577. SQL_DIAG_INSERT = 50;
  578. SQL_DIAG_REVOKE = 59;
  579. SQL_DIAG_SELECT_CURSOR = 85;
  580. SQL_DIAG_UNKNOWN_STATEMENT = 0;
  581. SQL_DIAG_UPDATE_WHERE = 82;
  582. {$endif} { ODBCVER >= 0x0300 }
  583. { Statement attribute values for cursor sensitivity }
  584. {$ifdef ODBCVER3}
  585. SQL_UNSPECIFIED = 0;
  586. SQL_INSENSITIVE = 1;
  587. SQL_SENSITIVE = 2;
  588. {$endif}
  589. { GetTypeInfo() request for all data types }
  590. SQL_ALL_TYPES = 0;
  591. { Default conversion code for SQLBindCol(), SQLBindParam() and SQLGetData() }
  592. {$ifdef ODBCVER3}
  593. SQL_DEFAULT = 99;
  594. {$endif}
  595. { SQLGetData() code indicating that the application row descriptor
  596. specifies the data type }
  597. {$ifdef ODBCVER3}
  598. SQL_ARD_TYPE = (-99);
  599. {$endif}
  600. { SQL date/time type subcodes }
  601. {$ifdef ODBCVER3}
  602. SQL_CODE_DATE = 1;
  603. SQL_CODE_TIME = 2;
  604. SQL_CODE_TIMESTAMP = 3;
  605. {$endif}
  606. { CLI option values }
  607. {$ifdef ODBCVER3}
  608. SQL_FALSE = 0;
  609. SQL_TRUE = 1;
  610. {$endif}
  611. { values of NULLABLE field in descriptor }
  612. SQL_NO_NULLS = 0;
  613. SQL_NULLABLE = 1;
  614. { Value returned by SQLGetTypeInfo() to denote that it is
  615. not known whether or not a data type supports null values. }
  616. SQL_NULLABLE_UNKNOWN = 2;
  617. {
  618. /* Values returned by SQLGetTypeInfo() to show WHERE clause
  619. * supported
  620. #if (ODBCVER >= 0x0300)
  621. #define SQL_PRED_NONE 0
  622. #define SQL_PRED_CHAR 1
  623. #define SQL_PRED_BASIC 2
  624. #endif
  625. }
  626. { values of UNNAMED field in descriptor }
  627. {$ifdef ODBCVER3}
  628. SQL_NAMED = 0;
  629. SQL_UNNAMED = 1;
  630. {$endif}
  631. {
  632. /* values of ALLOC_TYPE field in descriptor */
  633. #if (ODBCVER >= 0x0300)
  634. #define SQL_DESC_ALLOC_AUTO 1
  635. #define SQL_DESC_ALLOC_USER 2
  636. #endif
  637. }
  638. { FreeStmt() options }
  639. SQL_CLOSE = 0;
  640. SQL_DROP = 1;
  641. SQL_UNBIND = 2;
  642. SQL_RESET_PARAMS = 3;
  643. { Codes used for FetchOrientation in SQLFetchScroll(),
  644. and in SQLDataSources() }
  645. SQL_FETCH_NEXT = 1;
  646. SQL_FETCH_FIRST = 2;
  647. {$ifdef ODBCVER3}
  648. SQL_FETCH_FIRST_USER = 31;
  649. SQL_FETCH_FIRST_SYSTEM = 32;
  650. {$endif}
  651. { Other codes used for FetchOrientation in SQLFetchScroll() }
  652. SQL_FETCH_LAST = 3;
  653. SQL_FETCH_PRIOR = 4;
  654. SQL_FETCH_ABSOLUTE = 5;
  655. SQL_FETCH_RELATIVE = 6;
  656. {
  657. /* SQLEndTran() options */
  658. #define SQL_COMMIT 0
  659. #define SQL_ROLLBACK 1}
  660. //* null handles returned by SQLAllocHandle() */
  661. SQL_NULL_HENV = SQLHENV(0);
  662. SQL_NULL_HDBC = SQLHDBC(0);
  663. SQL_NULL_HSTMT = SQLHSTMT(0);
  664. {$ifdef ODBCVER3}
  665. SQL_NULL_HDESC = SQLHDESC(0);
  666. {$endif}
  667. //* null handle used in place of parent handle when allocating HENV */
  668. SQL_NULL_HANDLE = SQLHANDLE(0);
  669. //* Values that may appear in the result set of SQLSpecialColumns() */
  670. SQL_SCOPE_CURROW = 0;
  671. SQL_SCOPE_TRANSACTION = 1;
  672. SQL_SCOPE_SESSION = 2;
  673. //* Column types and scopes in SQLSpecialColumns. */
  674. SQL_BEST_ROWID = 1;
  675. SQL_ROWVER = 2;
  676. SQL_PC_UNKNOWN = 0;
  677. {$ifdef ODBCVER3}
  678. SQL_PC_NON_PSEUDO = 1;
  679. {$endif}
  680. SQL_PC_PSEUDO = 2;
  681. //* Reserved value for the IdentifierType argument of SQLSpecialColumns() */
  682. {$ifdef ODBCVER3}
  683. SQL_ROW_IDENTIFIER = 1;
  684. {$endif}
  685. //* Reserved values for UNIQUE argument of SQLStatistics() */
  686. SQL_INDEX_UNIQUE = 0;
  687. SQL_INDEX_ALL = 1;
  688. //* Reserved values for RESERVED argument of SQLStatistics() */
  689. SQL_QUICK = 0;
  690. SQL_ENSURE = 1;
  691. //* Values that may appear in the result set of SQLStatistics() */
  692. SQL_TABLE_STAT = 0;
  693. SQL_INDEX_CLUSTERED = 1;
  694. SQL_INDEX_HASHED = 2;
  695. SQL_INDEX_OTHER = 3;
  696. // SQL_INDEX_BTREE = ???;
  697. // SQL_INDEX_CONTENT = ???;
  698. (* SQLGetFunctions() values to identify ODBC APIs *)
  699. SQL_API_SQLALLOCCONNECT = 1;
  700. SQL_API_SQLALLOCENV = 2;
  701. SQL_API_SQLALLOCHANDLE = 1001;
  702. SQL_API_SQLALLOCSTMT = 3;
  703. SQL_API_SQLBINDCOL = 4;
  704. SQL_API_SQLBINDPARAM = 1002;
  705. SQL_API_SQLCANCEL = 5;
  706. SQL_API_SQLCLOSECURSOR = 1003;
  707. SQL_API_SQLCOLATTRIBUTE = 6;
  708. SQL_API_SQLCOLUMNS = 40;
  709. SQL_API_SQLCONNECT = 7;
  710. SQL_API_SQLCOPYDESC = 1004;
  711. SQL_API_SQLDATASOURCES = 57;
  712. SQL_API_SQLDESCRIBECOL = 8;
  713. SQL_API_SQLDISCONNECT = 9;
  714. SQL_API_SQLENDTRAN = 1005;
  715. SQL_API_SQLERROR = 10;
  716. SQL_API_SQLEXECDIRECT = 11;
  717. SQL_API_SQLEXECUTE = 12;
  718. SQL_API_SQLFETCH = 13;
  719. SQL_API_SQLFETCHSCROLL = 1021;
  720. SQL_API_SQLFREECONNECT = 14;
  721. SQL_API_SQLFREEENV = 15;
  722. SQL_API_SQLFREEHANDLE = 1006;
  723. SQL_API_SQLFREESTMT = 16;
  724. SQL_API_SQLGETCONNECTATTR = 1007;
  725. SQL_API_SQLGETCONNECTOPTION = 42;
  726. SQL_API_SQLGETCURSORNAME = 17;
  727. SQL_API_SQLGETDATA = 43;
  728. SQL_API_SQLGETDESCFIELD = 1008;
  729. SQL_API_SQLGETDESCREC = 1009;
  730. SQL_API_SQLGETDIAGFIELD = 1010;
  731. SQL_API_SQLGETDIAGREC = 1011;
  732. SQL_API_SQLGETENVATTR = 1012;
  733. SQL_API_SQLGETFUNCTIONS = 44;
  734. SQL_API_SQLGETINFO = 45;
  735. SQL_API_SQLGETSTMTATTR = 1014;
  736. SQL_API_SQLGETSTMTOPTION = 46;
  737. SQL_API_SQLGETTYPEINFO = 47;
  738. SQL_API_SQLNUMRESULTCOLS = 18;
  739. SQL_API_SQLPARAMDATA = 48;
  740. SQL_API_SQLPREPARE = 19;
  741. SQL_API_SQLPUTDATA = 49;
  742. SQL_API_SQLROWCOUNT = 20;
  743. SQL_API_SQLSETCONNECTATTR = 1016;
  744. SQL_API_SQLSETCONNECTOPTION = 50;
  745. SQL_API_SQLSETCURSORNAME = 21;
  746. SQL_API_SQLSETDESCFIELD = 1017;
  747. SQL_API_SQLSETDESCREC = 1018;
  748. SQL_API_SQLSETENVATTR = 1019;
  749. SQL_API_SQLSETPARAM = 22;
  750. SQL_API_SQLSETSTMTATTR = 1020;
  751. SQL_API_SQLSETSTMTOPTION = 51;
  752. SQL_API_SQLSPECIALCOLUMNS = 52;
  753. SQL_API_SQLSTATISTICS = 53;
  754. SQL_API_SQLTABLES = 54;
  755. SQL_API_SQLTRANSACT = 23;
  756. SQL_API_SQLCANCELHANDLE = 1022;
  757. {
  758. /* Information requested by SQLGetInfo() */
  759. #if (ODBCVER >= 0x0300)
  760. #define SQL_MAX_DRIVER_CONNECTIONS 0
  761. #define SQL_MAXIMUM_DRIVER_CONNECTIONS SQL_MAX_DRIVER_CONNECTIONS
  762. #define SQL_MAX_CONCURRENT_ACTIVITIES 1
  763. #define SQL_MAXIMUM_CONCURRENT_ACTIVITIES SQL_MAX_CONCURRENT_ACTIVITIES
  764. #endif
  765. #define SQL_FETCH_DIRECTION 8
  766. #define SQL_SEARCH_PATTERN_ESCAPE 14
  767. #define SQL_ACCESSIBLE_TABLES 19
  768. #define SQL_ACCESSIBLE_PROCEDURES 20
  769. #define SQL_CURSOR_COMMIT_BEHAVIOR 23
  770. #define SQL_DATA_SOURCE_READ_ONLY 25
  771. #define SQL_DEFAULT_TXN_ISOLATION 26
  772. #define SQL_MAX_COLUMN_NAME_LEN 30
  773. #define SQL_MAXIMUM_COLUMN_NAME_LENGTH SQL_MAX_COLUMN_NAME_LEN
  774. #define SQL_MAX_CURSOR_NAME_LEN 31
  775. #define SQL_MAXIMUM_CURSOR_NAME_LENGTH SQL_MAX_CURSOR_NAME_LEN
  776. #define SQL_MAX_SCHEMA_NAME_LEN 32
  777. #define SQL_MAXIMUM_SCHEMA_NAME_LENGTH SQL_MAX_SCHEMA_NAME_LEN
  778. #define SQL_MAX_CATALOG_NAME_LEN 34
  779. #define SQL_MAXIMUM_CATALOG_NAME_LENGTH SQL_MAX_CATALOG_NAME_LEN
  780. #define SQL_MAX_TABLE_NAME_LEN 35
  781. }
  782. SQL_DATA_SOURCE_NAME = 2;
  783. SQL_DRIVER_NAME = 6;
  784. SQL_DRIVER_VER = 7;
  785. SQL_SERVER_NAME = 13;
  786. SQL_DBMS_NAME = 17;
  787. SQL_DBMS_VER = 18;
  788. SQL_IDENTIFIER_CASE = 28;
  789. SQL_IDENTIFIER_QUOTE_CHAR = 29;
  790. SQL_SCROLL_CONCURRENCY = 43;
  791. SQL_TXN_CAPABLE = 46;
  792. SQL_TRANSACTION_CAPABLE = SQL_TXN_CAPABLE;
  793. SQL_USER_NAME = 47;
  794. SQL_TXN_ISOLATION_OPTION = 72;
  795. SQL_TRANSACTION_ISOLATION_OPTION = SQL_TXN_ISOLATION_OPTION;
  796. {
  797. #define SQL_INTEGRITY 73
  798. #define SQL_GETDATA_EXTENSIONS 81
  799. #define SQL_NULL_COLLATION 85
  800. #define SQL_ALTER_TABLE 86
  801. #define SQL_ORDER_BY_COLUMNS_IN_SELECT 90
  802. #define SQL_SPECIAL_CHARACTERS 94
  803. #define SQL_MAX_COLUMNS_IN_GROUP_BY 97
  804. #define SQL_MAXIMUM_COLUMNS_IN_GROUP_BY SQL_MAX_COLUMNS_IN_GROUP_BY
  805. #define SQL_MAX_COLUMNS_IN_INDEX 98
  806. #define SQL_MAXIMUM_COLUMNS_IN_INDEX SQL_MAX_COLUMNS_IN_INDEX
  807. #define SQL_MAX_COLUMNS_IN_ORDER_BY 99
  808. #define SQL_MAXIMUM_COLUMNS_IN_ORDER_BY SQL_MAX_COLUMNS_IN_ORDER_BY
  809. #define SQL_MAX_COLUMNS_IN_SELECT 100
  810. #define SQL_MAXIMUM_COLUMNS_IN_SELECT SQL_MAX_COLUMNS_IN_SELECT
  811. #define SQL_MAX_COLUMNS_IN_TABLE 101
  812. #define SQL_MAX_INDEX_SIZE 102
  813. #define SQL_MAXIMUM_INDEX_SIZE SQL_MAX_INDEX_SIZE
  814. #define SQL_MAX_ROW_SIZE 104
  815. #define SQL_MAXIMUM_ROW_SIZE SQL_MAX_ROW_SIZE
  816. #define SQL_MAX_STATEMENT_LEN 105
  817. #define SQL_MAXIMUM_STATEMENT_LENGTH SQL_MAX_STATEMENT_LEN
  818. #define SQL_MAX_TABLES_IN_SELECT 106
  819. #define SQL_MAXIMUM_TABLES_IN_SELECT SQL_MAX_TABLES_IN_SELECT
  820. #define SQL_MAX_USER_NAME_LEN 107
  821. #define SQL_MAXIMUM_USER_NAME_LENGTH SQL_MAX_USER_NAME_LEN}
  822. {$ifdef ODBCVER3}
  823. SQL_OJ_CAPABILITIES = 115;
  824. SQL_OUTER_JOIN_CAPABILITIES = SQL_OJ_CAPABILITIES;
  825. {$endif} { ODBCVER >= 0x0300 }
  826. {$ifdef ODBCVER3}
  827. SQL_XOPEN_CLI_YEAR = 10000;
  828. SQL_CURSOR_SENSITIVITY = 10001;
  829. SQL_DESCRIBE_PARAMETER = 10002;
  830. SQL_CATALOG_NAME = 10003;
  831. SQL_COLLATION_SEQ = 10004;
  832. SQL_MAX_IDENTIFIER_LEN = 10005;
  833. SQL_MAXIMUM_IDENTIFIER_LENGTH = SQL_MAX_IDENTIFIER_LEN;
  834. {$endif} { ODBCVER >= 0x0300 }
  835. { Extended definitions for SQLGetInfo }
  836. SQL_NEED_LONG_DATA_LEN = 111;
  837. {/* SQL_ALTER_TABLE bitmasks */
  838. #if (ODBCVER >= 0x0200)
  839. #define SQL_AT_ADD_COLUMN 0x00000001L
  840. #define SQL_AT_DROP_COLUMN 0x00000002L
  841. #endif /* ODBCVER >= 0x0200 */
  842. #if (ODBCVER >= 0x0300)
  843. #define SQL_AT_ADD_CONSTRAINT 0x00000008L
  844. /* The following bitmasks are ODBC extensions and defined in sqlext.h
  845. *#define SQL_AT_COLUMN_SINGLE 0x00000020L
  846. *#define SQL_AT_ADD_COLUMN_DEFAULT 0x00000040L
  847. *#define SQL_AT_ADD_COLUMN_COLLATION 0x00000080L
  848. *#define SQL_AT_SET_COLUMN_DEFAULT 0x00000100L
  849. *#define SQL_AT_DROP_COLUMN_DEFAULT 0x00000200L
  850. *#define SQL_AT_DROP_COLUMN_CASCADE 0x00000400L
  851. *#define SQL_AT_DROP_COLUMN_RESTRICT 0x00000800L
  852. *#define SQL_AT_ADD_TABLE_CONSTRAINT 0x00001000L
  853. *#define SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE 0x00002000L
  854. *#define SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT 0x00004000L
  855. *#define SQL_AT_CONSTRAINT_NAME_DEFINITION 0x00008000L
  856. *#define SQL_AT_CONSTRAINT_INITIALLY_DEFERRED 0x00010000L
  857. *#define SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE 0x00020000L
  858. *#define SQL_AT_CONSTRAINT_DEFERRABLE 0x00040000L
  859. *#define SQL_AT_CONSTRAINT_NON_DEFERRABLE 0x00080000L
  860. #endif /* ODBCVER >= 0x0300 */
  861. }
  862. SQL_API_ALL_FUNCTIONS = 0;
  863. SQL_API_ODBC3_ALL_FUNCTIONS = 999;
  864. {
  865. /* SQL_ASYNC_MODE values */
  866. #if (ODBCVER >= 0x0300)
  867. #define SQL_AM_NONE 0
  868. #define SQL_AM_CONNECTION 1
  869. #define SQL_AM_STATEMENT 2
  870. #endif
  871. /* SQL_CURSOR_COMMIT_BEHAVIOR values */
  872. #define SQL_CB_DELETE 0
  873. #define SQL_CB_CLOSE 1
  874. #define SQL_CB_PRESERVE 2
  875. /* SQL_FETCH_DIRECTION bitmasks */
  876. #define SQL_FD_FETCH_NEXT 0x00000001L
  877. #define SQL_FD_FETCH_FIRST 0x00000002L
  878. #define SQL_FD_FETCH_LAST 0x00000004L
  879. #define SQL_FD_FETCH_PRIOR 0x00000008L
  880. #define SQL_FD_FETCH_ABSOLUTE 0x00000010L
  881. #define SQL_FD_FETCH_RELATIVE 0x00000020L
  882. /* SQL_GETDATA_EXTENSIONS bitmasks */
  883. #define SQL_GD_ANY_COLUMN 0x00000001L
  884. #define SQL_GD_ANY_ORDER 0x00000002L
  885. }
  886. { SQL_IDENTIFIER_CASE values }
  887. SQL_IC_UPPER = 1;
  888. SQL_IC_LOWER = 2;
  889. SQL_IC_SENSITIVE = 3;
  890. SQL_IC_MIXED = 4;
  891. {
  892. /* SQL_OJ_CAPABILITIES bitmasks */
  893. /* NB: this means 'outer join', not what you may be thinking */
  894. #if (ODBCVER >= 0x0201)
  895. #define SQL_OJ_LEFT 0x00000001L
  896. #define SQL_OJ_RIGHT 0x00000002L
  897. #define SQL_OJ_FULL 0x00000004L
  898. #define SQL_OJ_NESTED 0x00000008L
  899. #define SQL_OJ_NOT_ORDERED 0x00000010L
  900. #define SQL_OJ_INNER 0x00000020L
  901. #define SQL_OJ_ALL_COMPARISON_OPS 0x00000040L
  902. #endif
  903. }
  904. { SQL_SCROLL_CONCURRENCY bitmasks }
  905. SQL_SCCO_READ_ONLY = 1;
  906. SQL_SCCO_LOCK = 2;
  907. SQL_SCCO_OPT_ROWVER = 4;
  908. SQL_SCCO_OPT_VALUES = 8;
  909. //* SQL_TXN_CAPABLE values */
  910. SQL_TC_NONE = 0;
  911. SQL_TC_DML = 1;
  912. SQL_TC_ALL = 2;
  913. SQL_TC_DDL_COMMIT = 3;
  914. SQL_TC_DDL_IGNORE = 4;
  915. //* SQL_TXN_ISOLATION_OPTION bitmasks */
  916. SQL_TXN_READ_UNCOMMITTED = 1;
  917. SQL_TRANSACTION_READ_UNCOMMITTED = SQL_TXN_READ_UNCOMMITTED;
  918. SQL_TXN_READ_COMMITTED = 2;
  919. SQL_TRANSACTION_READ_COMMITTED = SQL_TXN_READ_COMMITTED;
  920. SQL_TXN_REPEATABLE_READ = 4;
  921. SQL_TRANSACTION_REPEATABLE_READ = SQL_TXN_REPEATABLE_READ;
  922. SQL_TXN_SERIALIZABLE = 8;
  923. SQL_TRANSACTION_SERIALIZABLE = SQL_TXN_SERIALIZABLE;
  924. {
  925. /* SQL_NULL_COLLATION values */
  926. #define SQL_NC_HIGH 0
  927. #define SQL_NC_LOW 1
  928. }
  929. { SQL_STATIC_SENSITIVITY values }
  930. SQL_SS_ADDITIONS = 1;
  931. SQL_SS_DELETIONS = 2;
  932. SQL_SS_UPDATES = 4;
  933. { SQLBindParameter extensions }
  934. SQL_DEFAULT_PARAM = -5;
  935. SQL_IGNORE = -6;
  936. { SQLColAttributes defines }
  937. SQL_COLUMN_COUNT = 0;
  938. SQL_COLUMN_NAME = 1;
  939. SQL_COLUMN_TYPE = 2;
  940. SQL_COLUMN_LENGTH = 3;
  941. SQL_COLUMN_PRECISION = 4;
  942. SQL_COLUMN_SCALE = 5;
  943. SQL_COLUMN_DISPLAY_SIZE = 6;
  944. SQL_COLUMN_NULLABLE = 7;
  945. SQL_COLUMN_UNSIGNED = 8;
  946. SQL_COLUMN_MONEY = 9;
  947. SQL_COLUMN_UPDATABLE = 10;
  948. SQL_COLUMN_AUTO_INCREMENT = 11;
  949. SQL_COLUMN_CASE_SENSITIVE = 12;
  950. SQL_COLUMN_SEARCHABLE = 13;
  951. SQL_COLUMN_TYPE_NAME = 14;
  952. SQL_COLUMN_TABLE_NAME = 15;
  953. SQL_COLUMN_OWNER_NAME = 16;
  954. SQL_COLUMN_QUALIFIER_NAME = 17;
  955. SQL_COLUMN_LABEL = 18;
  956. SQL_COLATT_OPT_MAX = SQL_COLUMN_LABEL;
  957. {$ifdef ODBCVER3}
  958. SQL_COLUMN_DRIVER_START = 1000;
  959. {$endif} { ODBCVER >= 0x0300 }
  960. { SQLColAttribute defines }
  961. {$ifdef ODBCVER3}
  962. SQL_DESC_ARRAY_SIZE = 20;
  963. SQL_DESC_ARRAY_STATUS_PTR = 21;
  964. SQL_DESC_AUTO_UNIQUE_VALUE = SQL_COLUMN_AUTO_INCREMENT;
  965. SQL_DESC_BASE_COLUMN_NAME = 22;
  966. SQL_DESC_BASE_TABLE_NAME = 23;
  967. SQL_DESC_BIND_OFFSET_PTR = 24;
  968. SQL_DESC_BIND_TYPE = 25;
  969. SQL_DESC_CASE_SENSITIVE = SQL_COLUMN_CASE_SENSITIVE;
  970. SQL_DESC_CATALOG_NAME = SQL_COLUMN_QUALIFIER_NAME;
  971. SQL_DESC_CONCISE_TYPE = SQL_COLUMN_TYPE;
  972. SQL_DESC_DATETIME_INTERVAL_PRECISION = 26;
  973. SQL_DESC_DISPLAY_SIZE = SQL_COLUMN_DISPLAY_SIZE;
  974. SQL_DESC_FIXED_PREC_SCALE = SQL_COLUMN_MONEY;
  975. SQL_DESC_LABEL = SQL_COLUMN_LABEL;
  976. SQL_DESC_LITERAL_PREFIX = 27;
  977. SQL_DESC_LITERAL_SUFFIX = 28;
  978. SQL_DESC_LOCAL_TYPE_NAME = 29;
  979. SQL_DESC_MAXIMUM_SCALE = 30;
  980. SQL_DESC_MINIMUM_SCALE = 31;
  981. SQL_DESC_NUM_PREC_RADIX = 32;
  982. SQL_DESC_PARAMETER_TYPE = 33;
  983. SQL_DESC_ROWS_PROCESSED_PTR = 34;
  984. {$ifdef ODBCVER35}
  985. SQL_DESC_ROWVER = 35;
  986. {$endif}
  987. SQL_DESC_SCHEMA_NAME = SQL_COLUMN_OWNER_NAME;
  988. SQL_DESC_SEARCHABLE = SQL_COLUMN_SEARCHABLE;
  989. SQL_DESC_TYPE_NAME = SQL_COLUMN_TYPE_NAME;
  990. SQL_DESC_TABLE_NAME = SQL_COLUMN_TABLE_NAME;
  991. SQL_DESC_UNSIGNED = SQL_COLUMN_UNSIGNED;
  992. SQL_DESC_UPDATABLE = SQL_COLUMN_UPDATABLE;
  993. {$endif}
  994. { defines for diagnostics fields }
  995. SQL_DIAG_CURSOR_ROW_COUNT = -1249;
  996. SQL_DIAG_ROW_NUMBER = -1248;
  997. SQL_DIAG_COLUMN_NUMBER = -1247;
  998. { SQLColAttributes subdefines for SQL_COLUMN_UPDATABLE }
  999. SQL_ATTR_READONLY = 0;
  1000. SQL_ATTR_WRITE = 1;
  1001. SQL_ATTR_READWRITE_UNKNOWN = 2;
  1002. //* SQLEndTran() options */
  1003. SQL_COMMIT = 0;
  1004. SQL_ROLLBACK = 1;
  1005. SQL_ATTR_ROW_ARRAY_SIZE = 27;
  1006. //* SQLConfigDataSource() options */
  1007. ODBC_ADD_DSN = 1;
  1008. ODBC_CONFIG_DSN = 2;
  1009. ODBC_REMOVE_DSN = 3;
  1010. ODBC_ADD_SYS_DSN = 4;
  1011. ODBC_CONFIG_SYS_DSN = 5;
  1012. ODBC_REMOVE_SYS_DSN = 6;
  1013. { Defines for SQLTables }
  1014. {$ifdef ODBCVER3}
  1015. SQL_ALL_CATALOGS = '%';
  1016. SQL_ALL_SCHEMAS = '%';
  1017. SQL_ALL_TABLE_TYPES = '%';
  1018. {$endif}
  1019. {$ifdef DYNLOADINGODBC}
  1020. type TSQLAllocHandle =function(HandleType: SQLSMALLINT;
  1021. InputHandle:SQLHANDLE;Var OutputHandlePtr: SQLHANDLE):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1022. type TSQLSetEnvAttr=function (EnvironmentHandle:SQLHENV;
  1023. Attribute:SQLINTEGER;Value:SQLPOINTER;
  1024. StringLength:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1025. type TSQLFreeHandle=function (HandleType:SQLSMALLINT;
  1026. Handle:SQLHANDLE):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1027. type TSQLGetDiagRec=function (HandleType:SQLSMALLINT;
  1028. Handle:SQLHANDLE;RecNumber:SQLSMALLINT;
  1029. SqlState:PSQLCHAR;var NativeError:SQLINTEGER;
  1030. MessageText:PSQLCHAR;BufferLength:SQLSMALLINT;
  1031. var TextLength:SQLSMALLINT ):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1032. TSQLGetDiagRecW=function (HandleType:SQLSMALLINT;
  1033. Handle:SQLHANDLE;RecNumber:SQLSMALLINT;
  1034. SqlState:PSQLWCHAR;var NativeError:SQLINTEGER;
  1035. MessageText:PSQLWCHAR;BufferLength:SQLSMALLINT;
  1036. var TextLength:SQLSMALLINT ):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1037. type TSQLGetDiagField=function (HandleType:SQLSMALLINT;
  1038. Handle:SQLHANDLE;RecNumber:SQLSMALLINT;
  1039. DiagIdentifier:SQLSMALLINT;DiagInfoPtr:SQLPOINTER;
  1040. BufferLength:SQLSMALLINT;var StringLengthPtr:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1041. type TSQLConnect=function (ConnectionHandle:SQLHDBC;
  1042. ServerName:PSQLCHAR;NameLength1:SQLSMALLINT;
  1043. UserName:PSQLCHAR;NameLength2:SQLSMALLINT;
  1044. Authentication:PSQLCHAR;NameLength3:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1045. TSQLConnectW=function (ConnectionHandle:SQLHDBC;
  1046. ServerName:PSQLWCHAR;NameLength1:SQLSMALLINT;
  1047. UserName:PSQLWCHAR;NameLength2:SQLSMALLINT;
  1048. Authentication:PSQLWCHAR;NameLength3:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1049. type TSQLDisconnect=function(ConnectionHandle:SQLHDBC):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1050. type TSQLDriverConnect=function (ConnectionHandle: SQLHDBC;
  1051. WindowHandle: SQLHWND; InConnectionString: PSQLCHAR;
  1052. StringLength1: SQLSMALLINT; OutConnectionString: PSQLCHAR;
  1053. BufferLength: SQLSMALLINT; Var StringLength2: SQLSMALLINT;
  1054. DriverCompletion: SQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1055. TSQLDriverConnectW=function (ConnectionHandle: SQLHDBC;
  1056. WindowHandle: SQLHWND; InConnectionString: PSQLWCHAR;
  1057. StringLength1: SQLSMALLINT; OutConnectionString: PSQLWCHAR;
  1058. BufferLength: SQLSMALLINT; Var StringLength2: SQLSMALLINT;
  1059. DriverCompletion: SQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1060. type TSQLExecDirect=function (StatementHandle:SQLHSTMT;
  1061. StatementText:PSQLCHAR;TextLength:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1062. TSQLExecDirectW=function (StatementHandle:SQLHSTMT;
  1063. StatementText:PSQLWCHAR;TextLength:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1064. type TSQLParamData=function(StatementHandle:SQLHSTMT; ValuePtrPtr: PSQLPOINTER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1065. type TSQLPrepare=function (StatementHandle:SQLHSTMT;
  1066. StatementText:PSQLCHAR;TextLength:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1067. TSQLPrepareW=function (StatementHandle:SQLHSTMT;
  1068. StatementText:PSQLWCHAR;TextLength:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1069. type TSQLCloseCursor=function (StatementHandle:SQLHSTMT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1070. type TSQLExecute=function (StatementHandle:SQLHSTMT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1071. type TSQLFetch=function (StatementHandle:SQLHSTMT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1072. type TSQLNumResultCols=function (StatementHandle:SQLHSTMT;
  1073. var ColumnCount:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1074. type TSQLDescribeCol=function (StatementHandle:SQLHSTMT;
  1075. ColumnNumber:SQLUSMALLINT;ColumnName:PSQLCHAR;
  1076. BufferLength:SQLSMALLINT;var NameLength:SQLSMALLINT;
  1077. var DataType:SQLSMALLINT;var ColumnSize:SQLULEN;
  1078. var DecimalDigits:SQLSMALLINT;var Nullable:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1079. TSQLDescribeColW=function (StatementHandle:SQLHSTMT;
  1080. ColumnNumber:SQLUSMALLINT;ColumnName:PSQLWCHAR;
  1081. BufferLength:SQLSMALLINT;var NameLength:SQLSMALLINT;
  1082. var DataType:SQLSMALLINT;var ColumnSize:SQLULEN;
  1083. var DecimalDigits:SQLSMALLINT;var Nullable:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1084. type TSQLFetchScroll=function (StatementHandle:SQLHSTMT;
  1085. FetchOrientation:SQLSMALLINT;FetchOffset:SQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1086. type TSQLExtendedFetch=function (hstmt:SQLHSTMT;
  1087. fFetchType:SQLUSMALLINT;irow:SQLLEN;
  1088. pcrow:PSQLULEN;rgfRowStatus:PSQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1089. type TSQLGetData=function (StatementHandle:SQLHSTMT;
  1090. ColumnNumber:SQLUSMALLINT;TargetType:SQLSMALLINT;
  1091. TargetValue:SQLPOINTER;BufferLength:SQLLEN;
  1092. StrLen_or_Ind:PSQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1093. type TSQLSetStmtAttr=function (StatementHandle:SQLHSTMT;
  1094. Attribute:SQLINTEGER;Value:SQLPOINTER;
  1095. StringLength:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1096. type TSQLGetStmtAttr=function (StatementHandle:SQLHSTMT;
  1097. Attribute:SQLINTEGER;Value:SQLPOINTER;
  1098. BufferLength:SQLINTEGER;StringLength:PSQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1099. type TSQLSetDescField=function (DescriptorHandle:SQLHDESC;
  1100. RecNumber:SQLSMALLINT; FieldIdentifier:SQLSMALLINT;
  1101. ValuePtr:SQLPOINTER; BufferLength:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1102. type TSQLSetDescRec=function (DescriptorHandle:SQLHDESC;
  1103. RecNumber:SQLSMALLINT; DescType, SubType:SQLSMALLINT;
  1104. Length:SQLLEN; Precision, Scale: SQLSMALLINT;
  1105. DataPtr:SQLPOINTER; StringLengthPtr,IndicatorPtr:PSQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1106. type TSQLGetFunctions=function(ConnectionHandle: SQLHDBC;
  1107. FunctionId: SQLUSMALLINT;
  1108. Supported: PSQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1109. type TSQLGetInfo=function (ConnectionHandle:SQLHDBC;
  1110. InfoType:SQLUSMALLINT;InfoValue:SQLPOINTER;
  1111. BufferLength:SQLSMALLINT;StringLength:PSQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1112. type TSQLBulkOperations=function (StatementHandle: SQLHSTMT;
  1113. Operation:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1114. type TSQLPutData=function (StatementHandle:SQLHSTMT;
  1115. Data:SQLPOINTER;StrLen_or_Ind:SQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1116. type TSQLBindCol=function (StatementHandle:SQLHSTMT;
  1117. ColumnNumber:SQLUSMALLINT;TargetType:SQLSMALLINT;
  1118. TargetValue:SQLPOINTER;BufferLength:SQLLEN;
  1119. StrLen_or_Ind:PSQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1120. type TSQLSetPos=function (StatementHandle:SQLHSTMT;
  1121. RowNumber:SQLSETPOSIROW; Operation:SQLUSMALLINT;
  1122. LockType:SQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1123. type TSQLDataSources=function (EnvironmentHandle:SQLHENV;
  1124. Direction:SQLUSMALLINT;ServerName:PSQLCHAR;
  1125. BufferLength1:SQLSMALLINT;NameLength1:PSQLSMALLINT;
  1126. Description:PSQLCHAR;BufferLength2:SQLSMALLINT;
  1127. NameLength2:PSQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1128. type TSQLDrivers=function (EnvironmentHandle:SQLHENV;
  1129. Direction:SQLUSMALLINT;DriverDescription:PSQLCHAR;
  1130. BufferLength1:SQLSMALLINT;DescriptionLength1:PSQLSMALLINT;
  1131. DriverAttributes:PSQLCHAR;BufferLength2:SQLSMALLINT;
  1132. AttributesLength2:PSQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1133. type TSQLGetConnectAttr=function (ConnectionHandle:SQLHDBC;
  1134. Attribute: SQLINTEGER; Value: SQLPOINTER;
  1135. BufferLength: SQLINTEGER; StringLengthPtr: PSQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1136. TSQLSetConnectAttr=function (ConnectionHandle:SQLHDBC;
  1137. Attribute:SQLINTEGER; Value:SQLPOINTER;
  1138. StringLength:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1139. type TSQLGetCursorName=function (StatementHandle:SQLHSTMT;
  1140. CursorName:PSQLCHAR; BufferLength:SQLSMALLINT;
  1141. NameLength:PSQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1142. TSQLSetCursorName=function (StatementHandle:SQLHSTMT;
  1143. CursorName:PSQLCHAR; NameLength:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1144. type TSQLRowCount=function (StatementHandle:SQLHSTMT;
  1145. var RowCount:SQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1146. type TSQLBindParameter=function (hstmt:SQLHSTMT;
  1147. ipar:SQLUSMALLINT;fParamType:SQLSMALLINT;
  1148. fCType:SQLSMALLINT;fSqlType:SQLSMALLINT;
  1149. cbColDef:SQLULEN;ibScale:SQLSMALLINT;
  1150. rgbValue:SQLPOINTER;cbValueMax:SQLLEN;
  1151. pcbValue:PSQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1152. type TSQLDescribeParam=function (StatementHandle: SQLHSTMT;
  1153. ParameterNumber: SQLUSMALLINT;
  1154. DataTypePtr: PSQLSMALLINT;
  1155. ParameterSizePtr: PSQLULEN;
  1156. DecimalDigitsPtr: PSQLSMALLINT;
  1157. NullablePtr: PSQLSMALLINT): SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1158. type TSQLFreeStmt=function (StatementHandle:SQLHSTMT;
  1159. Option:SQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1160. type TSQLColAttribute=function (StatementHandle:SQLHSTMT;
  1161. ColumnNumber:SQLUSMALLINT;FieldIdentifier:SQLUSMALLINT;
  1162. CharacterAttributePtr:SQLPOINTER;BufferLength:SQLSMALLINT;
  1163. StringLengthPtr:PSQLSMALLINT;NumericAttributePtr:PSQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1164. type TSQLEndTran=function (HandleType:SQLSMALLINT;
  1165. Handle:SQLHANDLE;CompletionType:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1166. type TSQLTables=function ( hstmt : SQLHSTMT;
  1167. szTableQualifier : PSQLCHAR;cbTableQualifier : SQLSMALLINT;
  1168. szTableOwner : PSQLCHAR;cbTableOwner : SQLSMALLINT;
  1169. szTableName : PSQLCHAR;cbTableName : SQLSMALLINT;
  1170. szTableType : PSQLCHAR;cbTableType : SQLSMALLINT ) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif};
  1171. TSQLTablesW=function ( hstmt : SQLHSTMT;
  1172. szTableQualifier : PSQLWCHAR;cbTableQualifier : SQLSMALLINT;
  1173. szTableOwner : PSQLWCHAR;cbTableOwner : SQLSMALLINT;
  1174. szTableName : PSQLWCHAR;cbTableName : SQLSMALLINT;
  1175. szTableType : PSQLWCHAR;cbTableType : SQLSMALLINT ) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif};
  1176. type TSQLColumns=function ( hstmt : SQLHSTMT;
  1177. szTableQualifier : PSQLCHAR;cbTableQualifier : SQLSMALLINT;
  1178. szTableOwner : PSQLCHAR;cbTableOwner : SQLSMALLINT;
  1179. szTableName : PSQLCHAR;cbTableName : SQLSMALLINT;
  1180. szColumnName : PSQLCHAR;cbColumnName : SQLSMALLINT ) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif};
  1181. TSQLColumnsW=function ( hstmt : SQLHSTMT;
  1182. szTableQualifier : PSQLWCHAR;cbTableQualifier : SQLSMALLINT;
  1183. szTableOwner : PSQLWCHAR;cbTableOwner : SQLSMALLINT;
  1184. szTableName : PSQLWCHAR;cbTableName : SQLSMALLINT;
  1185. szColumnName : PSQLWCHAR;cbColumnName : SQLSMALLINT ) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif};
  1186. type TSQLSpecialColumns=function (StatementHandle:SQLHSTMT;
  1187. IdentifierType:SQLUSMALLINT;CatalogName:PSQLCHAR;
  1188. NameLength1:SQLSMALLINT;SchemaName:PSQLCHAR;
  1189. NameLength2:SQLSMALLINT;TableName:PSQLCHAR;
  1190. NameLength3:SQLSMALLINT;Scope:SQLUSMALLINT;
  1191. Nullable:SQLUSMALLINT) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif};
  1192. type TSQLForeignKeysA=function(StatementHandle: SQLHSTMT;
  1193. PKCatalogName: PSQLCHAR; NameLength1: SQLSMALLINT;
  1194. PKSchemaName: PSQLCHAR; NameLength2: SQLSMALLINT;
  1195. PKTableName: PSQLCHAR; NameLength3: SQLSMALLINT;
  1196. FKCatalogName: PSQLCHAR; NameLength4: SQLSMALLINT;
  1197. FKSchemaName: PSQLCHAR; NameLength5: SQLSMALLINT;
  1198. FKTableName: PSQLCHAR; NameLength6: SQLSMALLINT) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif};
  1199. TSQLForeignKeysW=function(StatementHandle: SQLHSTMT;
  1200. PKCatalogName: PSQLWCHAR; NameLength1: SQLSMALLINT;
  1201. PKSchemaName: PSQLWCHAR; NameLength2: SQLSMALLINT;
  1202. PKTableName: PSQLWCHAR; NameLength3: SQLSMALLINT;
  1203. FKCatalogName: PSQLWCHAR; NameLength4: SQLSMALLINT;
  1204. FKSchemaName: PSQLWCHAR; NameLength5: SQLSMALLINT;
  1205. FKTableName: PSQLWCHAR; NameLength6: SQLSMALLINT) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif};
  1206. type TSQLProcedures=function ( hstmt : SQLHSTMT;
  1207. szTableQualifier : PSQLCHAR;cbTableQualifier : SQLSMALLINT;
  1208. szTableOwner : PSQLCHAR;cbTableOwner : SQLSMALLINT;
  1209. szTableName : PSQLCHAR;cbTableName : SQLSMALLINT ) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif};
  1210. TSQLProceduresW=function ( hstmt : SQLHSTMT;
  1211. szTableQualifier : PSQLWCHAR;cbTableQualifier : SQLSMALLINT;
  1212. szTableOwner : PSQLWCHAR;cbTableOwner : SQLSMALLINT;
  1213. szTableName : PSQLWCHAR;cbTableName : SQLSMALLINT ) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif};
  1214. type TSQLProcedureColumns = function(hstmt: SQLHSTMT;
  1215. CatalogName: PSQLCHAR; NameLength1: SQLSMALLINT;
  1216. SchemaName: PSQLCHAR; NameLength2: SQLSMALLINT;
  1217. ProcName: PSQLCHAR; NameLength3: SQLSMALLINT;
  1218. ColumnName: PSQLCHAR; NameLength4: SQLSMALLINT): SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif};
  1219. TSQLProcedureColumnsW = function(hstmt: SQLHSTMT;
  1220. CatalogName: PSQLWCHAR; NameLength1: SQLSMALLINT;
  1221. SchemaName: PSQLWCHAR; NameLength2: SQLSMALLINT;
  1222. ProcName: PSQLWCHAR; NameLength3: SQLSMALLINT;
  1223. ColumnName: PSQLWCHAR; NameLength4: SQLSMALLINT): SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif};
  1224. type TSQLPrimaryKeys=function (hstmt : SQLHSTMT;
  1225. CatalogName:PSQLCHAR;NameLength1:SQLSMALLINT;
  1226. SchemaName:PSQLCHAR;NameLength2:SQLSMALLINT;
  1227. TableName:PSQLCHAR;NameLength3:SQLSMALLINT ):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1228. TSQLPrimaryKeysW=function (hstmt : SQLHSTMT;
  1229. CatalogName:PSQLWCHAR;NameLength1:SQLSMALLINT;
  1230. SchemaName:PSQLWCHAR;NameLength2:SQLSMALLINT;
  1231. TableName:PSQLWCHAR;NameLength3:SQLSMALLINT ):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
  1232. type TSQLStatistics = function (hstmt: SQLHSTMT;
  1233. CatalogName:PSQLCHAR; NameLength1:SQLSMALLINT;
  1234. SchemaName:PSQLCHAR; NameLength2:SQLSMALLINT;
  1235. TableName:PSQLCHAR; NameLength3:SQLSMALLINT;
  1236. Unique:SQLUSMALLINT;
  1237. Reserved:SQLUSMALLINT): SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif};
  1238. TSQLStatisticsW = function (hstmt: SQLHSTMT;
  1239. CatalogName:PSQLWCHAR; NameLength1:SQLSMALLINT;
  1240. SchemaName:PSQLWCHAR; NameLength2:SQLSMALLINT;
  1241. TableName:PSQLWCHAR; NameLength3:SQLSMALLINT;
  1242. Unique:SQLUSMALLINT;
  1243. Reserved:SQLUSMALLINT): SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif};
  1244. var SQLAllocHandle:tSQLAllocHandle;
  1245. var SQLSetEnvAttr:tSQLSetEnvAttr;
  1246. var SQLFreeHandle:tSQLFreeHandle;
  1247. var SQLGetFunctions:TSQLGetFunctions;
  1248. var SQLGetInfo:tSQLGetInfo;
  1249. var SQLGetDiagRecA:TSQLGetDiagRec;
  1250. SQLGetDiagRecW:TSQLGetDiagRecW;
  1251. var SQLGetDiagField:TSQLGetDiagField;
  1252. var SQLConnectA:TSQLConnect;
  1253. SQLConnectW:TSQLConnectW;
  1254. var SQLDisconnect:TSQLDisconnect;
  1255. var SQLDriverConnectA:TSQLDriverConnect;
  1256. SQLDriverConnectW:TSQLDriverConnectW;
  1257. var SQLExecDirectA:TSQLExecDirect;
  1258. SQLExecDirectW:TSQLExecDirectW;
  1259. var SQLParamData:TSQLParamData;
  1260. var SQLPrepareA:TSQLPrepare;
  1261. SQLPrepareW:TSQLPrepareW;
  1262. var SQLCloseCursor:TSQLCloseCursor;
  1263. var SQLExecute:TSQLExecute;
  1264. var SQLFetch:TSQLFetch;
  1265. var SQLNumResultCols:TSQLNumResultCols;
  1266. var SQLDescribeColA:TSQLDescribeCol;
  1267. SQLDescribeColW:TSQLDescribeColW;
  1268. var SQLFetchScroll:TSQLFetchScroll;
  1269. var SQLExtendedFetch:TSQLExtendedFetch;
  1270. var SQLGetData:TSQLGetData;
  1271. var SQLSetStmtAttr:TSQLSetStmtAttr;
  1272. var SQLGetStmtAttr:TSQLGetStmtAttr;
  1273. var SQLSetDescField:TSQLSetDescField;
  1274. var SQLSetDescRec:TSQLSetDescRec;
  1275. var SQLBulkOperations:TSQLBulkOperations;
  1276. var SQLPutData:TSQLPutData;
  1277. var SQLBindCol:TSQLBindCol;
  1278. var SQLSetPos:TSQLSetPos;
  1279. var SQLDataSources:TSQLDataSources;
  1280. var SQLDrivers:TSQLDrivers;
  1281. var SQLGetConnectAttr:TSQLGetConnectAttr;
  1282. var SQLSetConnectAttr:TSQLSetConnectAttr;
  1283. var SQLGetCursorName:TSQLGetCursorName;
  1284. var SQLSetCursorName:TSQLSetCursorName;
  1285. var SQLRowCount:TSQLRowCount;
  1286. var SQLBindParameter:TSQLBindParameter;
  1287. var SQLDescribeParam:TSQLDescribeParam;
  1288. var SQLFreeStmt:TSQLFreeStmt;
  1289. var SQLColAttribute:TSQLColAttribute;
  1290. var SQLEndTran:TSQLEndTran;
  1291. var SQLTablesA:TSQLTables;
  1292. SQLTablesW:TSQLTablesW;
  1293. var SQLColumnsA:TSQLColumns;
  1294. SQLColumnsW:TSQLColumnsW;
  1295. var SQLSpecialColumns:TSQLSpecialColumns;
  1296. var SQLForeignKeysA:TSQLForeignKeysA;
  1297. SQLForeignKeysW:TSQLForeignKeysW;
  1298. var SQLPrimaryKeysA:TSQLPrimaryKeys;
  1299. SQLPrimaryKeysW:TSQLPrimaryKeysW;
  1300. var SQLProceduresA:TSQLProcedures;
  1301. SQLProceduresW:TSQLProceduresW;
  1302. var SQLProcedureColumnsA: TSQLProcedureColumns;
  1303. SQLProcedureColumnsW: TSQLProcedureColumnsW;
  1304. var SQLStatisticsA: TSQLStatistics;
  1305. SQLStatisticsW: TSQLStatisticsW;
  1306. var odbcversion:word;
  1307. var
  1308. SQLConnect: TSQLConnect;
  1309. SQLDriverConnect: TSQLDriverConnect;
  1310. SQLExecDirect: TSQLExecDirect;
  1311. SQLGetDiagRec: TSQLGetDiagRec;
  1312. SQLPrepare: TSQLPrepare;
  1313. SQLDescribeCol: TSQLDescribeCol;
  1314. SQLTables: TSQLTables;
  1315. SQLColumns: TSQLColumns;
  1316. SQLPrimaryKeys: TSQLPrimaryKeys;
  1317. SQLProcedures: TSQLProcedures;
  1318. SQLProcedureColumns: TSQLProcedureColumns;
  1319. SQLStatistics: TSQLStatistics;
  1320. {$else}
  1321. function SQLAllocHandle(
  1322. HandleType: SQLSMALLINT;
  1323. InputHandle:SQLHANDLE;
  1324. Var OutputHandlePtr: SQLHANDLE):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1325. function SQLSetEnvAttr(
  1326. EnvironmentHandle:SQLHENV;
  1327. Attribute: SQLINTEGER;
  1328. Value: SQLPOINTER;
  1329. StringLength: SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1330. function SQLGetEnvAttr(
  1331. EnvironmentHandle:SQLHENV;
  1332. Attribute:SQLINTEGER;
  1333. Value:SQLPOINTER;
  1334. BufferLength:SQLINTEGER;
  1335. StringLength:PSQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1336. function SQLFreeHandle(
  1337. HandleType: SQLSMALLINT;
  1338. Handle: SQLHANDLE):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1339. function SQLGetDiagRec(
  1340. HandleType: SQLSMALLINT;
  1341. Handle: SQLHANDLE;
  1342. RecNumber: SQLSMALLINT;
  1343. SqlState: PSQLCHAR;
  1344. var NativeError: SQLINTEGER;
  1345. MessageText: PSQLCHAR;
  1346. BufferLength: SQLSMALLINT;
  1347. var TextLength: SQLSMALLINT ):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1348. function SQLGetDiagRecW(
  1349. HandleType: SQLSMALLINT;
  1350. Handle: SQLHANDLE;
  1351. RecNumber: SQLSMALLINT;
  1352. SqlState: PSQLWCHAR;
  1353. var NativeError: SQLINTEGER;
  1354. MessageText: PSQLWCHAR;
  1355. BufferLength: SQLSMALLINT;
  1356. var TextLength: SQLSMALLINT ):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1357. function SQLGetDiagField(
  1358. HandleType:SQLSMALLINT;
  1359. Handle:SQLHANDLE;
  1360. RecNumber:SQLSMALLINT;
  1361. DiagIdentifier:SQLSMALLINT;
  1362. DiagInfoPtr:SQLPOINTER;
  1363. BufferLength:SQLSMALLINT;
  1364. var StringLengthPtr:SQLSMALLINT ):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1365. function SQLConnect(
  1366. ConnectionHandle:SQLHDBC;
  1367. ServerName:PSQLCHAR; NameLength1:SQLSMALLINT;
  1368. UserName:PSQLCHAR; NameLength2:SQLSMALLINT;
  1369. Authentication:PSQLCHAR;NameLength3:SQLSMALLINT
  1370. ):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1371. function SQLConnectW(
  1372. ConnectionHandle: SQLHDBC;
  1373. ServerName:PSQLWCHAR; NameLength1:SQLSMALLINT;
  1374. UserName:PSQLWCHAR; NameLength2:SQLSMALLINT;
  1375. Authentication:PSQLWCHAR;NameLength3:SQLSMALLINT
  1376. ):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1377. function SQLDisconnect(
  1378. ConnectionHandle:SQLHDBC):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1379. function SQLDriverConnect(
  1380. ConnectionHandle: SQLHDBC;
  1381. WindowHandle: SQLHWND; InConnectionString: PSQLCHAR;
  1382. StringLength1: SQLSMALLINT; OutConnectionString: PSQLCHAR;
  1383. BufferLength: SQLSMALLINT; Var StringLength2: SQLSMALLINT;
  1384. DriverCompletion: SQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1385. function SQLDriverConnectW(
  1386. ConnectionHandle: SQLHDBC;
  1387. WindowHandle: SQLHWND; InConnectionString: PSQLWCHAR;
  1388. StringLength1: SQLSMALLINT; OutConnectionString: PSQLWCHAR;
  1389. BufferLength: SQLSMALLINT; Var StringLength2: SQLSMALLINT;
  1390. DriverCompletion: SQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1391. function SQLBrowseConnect(
  1392. hdbc : SQLHDBC;
  1393. szConnStrIn :PSQLCHAR;
  1394. cbConnStrIn: SQLSMALLINT;
  1395. szConnStrOut : PSQLCHAR;
  1396. cbConnStrOutMax : SQLSMALLINT;
  1397. Var cbConnStrOut : SQLSMALLINT) : SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1398. function SQLExecDirect(
  1399. StatementHandle:SQLHSTMT;
  1400. StatementText: PSQLCHAR;
  1401. TextLength: SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1402. function SQLExecDirectW(
  1403. StatementHandle:SQLHSTMT;
  1404. StatementText: PSQLWCHAR;
  1405. TextLength: SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1406. function SQLParamData(
  1407. StatementHandle:SQLHSTMT;
  1408. ValuePtrPtr: PSQLPOINTER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1409. function SQLPrepare(
  1410. StatementHandle:SQLHSTMT;
  1411. StatementText:PSQLCHAR;
  1412. TextLength:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1413. function SQLPrepareW(
  1414. StatementHandle:SQLHSTMT;
  1415. StatementText:PSQLWCHAR;
  1416. TextLength:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1417. function SQLCloseCursor(
  1418. StatementHandle:SQLHSTMT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1419. function SQLExecute(
  1420. StatementHandle:SQLHSTMT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1421. function SQLFetch(
  1422. StatementHandle:SQLHSTMT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1423. function SQLNumResultCols(
  1424. StatementHandle:SQLHSTMT;
  1425. var ColumnCount:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1426. function SQLDescribeCol(
  1427. StatementHandle:SQLHSTMT;
  1428. ColumnNumber:SQLUSMALLINT;
  1429. ColumnName:PSQLCHAR;
  1430. BufferLength:SQLSMALLINT;
  1431. var NameLength:SQLSMALLINT;
  1432. var DataType:SQLSMALLINT;
  1433. var ColumnSize:SQLULEN;
  1434. var DecimalDigits:SQLSMALLINT;
  1435. var Nullable:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1436. function SQLDescribeColW(
  1437. StatementHandle:SQLHSTMT;
  1438. ColumnNumber:SQLUSMALLINT;
  1439. ColumnName:PSQLWCHAR;
  1440. BufferLength:SQLSMALLINT;
  1441. var NameLength:SQLSMALLINT;
  1442. var DataType:SQLSMALLINT;
  1443. var ColumnSize:SQLULEN;
  1444. var DecimalDigits:SQLSMALLINT;
  1445. var Nullable:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1446. function SQLFetchScroll(
  1447. StatementHandle:SQLHSTMT;
  1448. FetchOrientation:SQLSMALLINT;
  1449. FetchOffset:SQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1450. function SQLExtendedFetch(
  1451. hstmt:SQLHSTMT;
  1452. fFetchType:SQLUSMALLINT;
  1453. irow:SQLLEN;
  1454. pcrow:PSQLULEN;
  1455. rgfRowStatus:PSQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1456. function SQLGetData(
  1457. StatementHandle:SQLHSTMT;
  1458. ColumnNumber:SQLUSMALLINT;
  1459. TargetType:SQLSMALLINT;
  1460. TargetValue:SQLPOINTER;
  1461. BufferLength:SQLLEN;
  1462. StrLen_or_Ind:PSQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1463. function SQLSetStmtAttr(
  1464. StatementHandle:SQLHSTMT;
  1465. Attribute:SQLINTEGER;
  1466. Value:SQLPOINTER;
  1467. StringLength:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1468. function SQLGetStmtAttr(
  1469. StatementHandle:SQLHSTMT;
  1470. Attribute:SQLINTEGER;
  1471. Value:SQLPOINTER;
  1472. BufferLength:SQLINTEGER;
  1473. StringLength:PSQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1474. function SQLSetDescRec(
  1475. DescriptorHandle:SQLHDESC;
  1476. RecNumber:SQLSMALLINT; DescType, SubType:SQLSMALLINT;
  1477. Length:SQLLEN; Precision, Scale: SQLSMALLINT;
  1478. DataPtr:SQLPOINTER; StringLengthPtr,IndicatorPtr:PSQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1479. function SQLGetFunctions(
  1480. ConnectionHandle: SQLHDBC;
  1481. FunctionId: SQLUSMALLINT;
  1482. Supported: PSQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1483. function SQLGetInfo(
  1484. ConnectionHandle:SQLHDBC;
  1485. InfoType:SQLUSMALLINT;
  1486. InfoValue:SQLPOINTER;
  1487. BufferLength:SQLSMALLINT;
  1488. StringLength:PSQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1489. function SQLBulkOperations(
  1490. StatementHandle: SQLHSTMT;
  1491. Operation:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1492. function SQLPutData(
  1493. StatementHandle:SQLHSTMT;
  1494. Data:SQLPOINTER;
  1495. StrLen_or_Ind:SQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1496. function SQLBindCol(
  1497. StatementHandle:SQLHSTMT;
  1498. ColumnNumber:SQLUSMALLINT;
  1499. TargetType:SQLSMALLINT;
  1500. TargetValue:SQLPOINTER;
  1501. BufferLength:SQLLEN;
  1502. StrLen_or_Ind:PSQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1503. function SQLSetPos(
  1504. StatementHandle:SQLHSTMT;
  1505. RowNumber:SQLSETPOSIROW;
  1506. Operation:SQLUSMALLINT;
  1507. LockType:SQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1508. function SQLDataSources(
  1509. EnvironmentHandle:SQLHENV;
  1510. Direction:SQLUSMALLINT;
  1511. ServerName:PSQLCHAR;
  1512. BufferLength1:SQLSMALLINT;
  1513. NameLength1:PSQLSMALLINT;
  1514. Description:PSQLCHAR;
  1515. BufferLength2:SQLSMALLINT;
  1516. NameLength2:PSQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1517. function SQLDrivers(
  1518. EnvironmentHandle:SQLHENV;
  1519. Direction:SQLUSMALLINT;
  1520. DriverDescription:PSQLCHAR;
  1521. BufferLength1:SQLSMALLINT;
  1522. DescriptionLength1:PSQLSMALLINT;
  1523. DriverAttributes:PSQLCHAR;
  1524. BufferLength2:SQLSMALLINT;
  1525. AttributesLength2:PSQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1526. function SQLGetConnectAttr(ConnectionHandle: SQLHDBC;
  1527. Attribute: SQLINTEGER; Value: SQLPOINTER;
  1528. BufferLength: SQLINTEGER; StringLengthPtr: PSQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1529. function SQLSetConnectAttr(
  1530. ConnectionHandle:SQLHDBC;
  1531. Attribute:SQLINTEGER; Value:SQLPOINTER;
  1532. StringLength:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1533. function SQLGetCursorName(
  1534. StatementHandle:SQLHSTMT;
  1535. CursorName:PSQLCHAR; BufferLength:SQLSMALLINT;
  1536. NameLength:PSQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1537. function SQLSetCursorName(
  1538. StatementHandle:SQLHSTMT;
  1539. CursorName:PSQLCHAR; NameLength:SQLSMALLINT
  1540. ):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1541. function SQLRowCount(
  1542. StatementHandle:SQLHSTMT;
  1543. var RowCount:SQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1544. function SQLBindParameter(
  1545. hstmt:SQLHSTMT;
  1546. ipar:SQLUSMALLINT;
  1547. fParamType:SQLSMALLINT;
  1548. fCType:SQLSMALLINT;
  1549. fSqlType:SQLSMALLINT;
  1550. cbColDef:SQLULEN;
  1551. ibScale:SQLSMALLINT;
  1552. rgbValue:SQLPOINTER;
  1553. cbValueMax:SQLLEN;
  1554. pcbValue:PSQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1555. function SQLDescribeParam(
  1556. StatementHandle: SQLHSTMT;
  1557. ParameterNumber: SQLUSMALLINT;
  1558. DataTypePtr: PSQLSMALLINT;
  1559. ParameterSizePtr: PSQLULEN;
  1560. DecimalDigitsPtr: PSQLSMALLINT;
  1561. NullablePtr: PSQLSMALLINT): SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1562. function SQLFreeStmt(
  1563. StatementHandle:SQLHSTMT;
  1564. Option:SQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1565. function SQLColAttribute (
  1566. StatementHandle:SQLHSTMT;
  1567. ColumnNumber:SQLUSMALLINT;
  1568. FieldIdentifier:SQLUSMALLINT;
  1569. CharacterAttributePtr:SQLPOINTER;
  1570. BufferLength:SQLSMALLINT;
  1571. StringLengthPtr:PSQLSMALLINT;
  1572. NumericAttributePtr:PSQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1573. {$ifdef ODBCVER3}
  1574. function SQLEndTran(
  1575. HandleType:SQLSMALLINT;
  1576. Handle:SQLHANDLE;
  1577. CompletionType:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1578. {$endif}
  1579. function SQLTables( hstmt : SQLHSTMT;
  1580. szTableQualifier : PSQLCHAR;
  1581. cbTableQualifier : SQLSMALLINT;
  1582. szTableOwner : PSQLCHAR;
  1583. cbTableOwner : SQLSMALLINT;
  1584. szTableName : PSQLCHAR;
  1585. cbTableName : SQLSMALLINT;
  1586. szTableType : PSQLCHAR;
  1587. cbTableType : SQLSMALLINT ) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif}; external odbclib;
  1588. function SQLTablesW( hstmt : SQLHSTMT;
  1589. szTableQualifier : PSQLWCHAR;
  1590. cbTableQualifier : SQLSMALLINT;
  1591. szTableOwner : PSQLWCHAR;
  1592. cbTableOwner : SQLSMALLINT;
  1593. szTableName : PSQLWCHAR;
  1594. cbTableName : SQLSMALLINT;
  1595. szTableType : PSQLWCHAR;
  1596. cbTableType : SQLSMALLINT ) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif}; external odbclib;
  1597. function SQLColumns( hstmt : SQLHSTMT;
  1598. szTableQualifier : PSQLCHAR;
  1599. cbTableQualifier : SQLSMALLINT;
  1600. szTableOwner : PSQLCHAR;
  1601. cbTableOwner : SQLSMALLINT;
  1602. szTableName : PSQLCHAR;
  1603. cbTableName : SQLSMALLINT;
  1604. szColumnName : PSQLCHAR;
  1605. cbColumnName : SQLSMALLINT ) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif}; external odbclib;
  1606. function SQLColumnsW( hstmt : SQLHSTMT;
  1607. szTableQualifier : PSQLWCHAR;
  1608. cbTableQualifier : SQLSMALLINT;
  1609. szTableOwner : PSQLWCHAR;
  1610. cbTableOwner : SQLSMALLINT;
  1611. szTableName : PSQLWCHAR;
  1612. cbTableName : SQLSMALLINT;
  1613. szColumnName : PSQLWCHAR;
  1614. cbColumnName : SQLSMALLINT ) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif}; external odbclib;
  1615. function SQLSpecialColumns(StatementHandle:SQLHSTMT;
  1616. IdentifierType:SQLUSMALLINT;
  1617. CatalogName:PSQLCHAR;
  1618. NameLength1:SQLSMALLINT;
  1619. SchemaName:PSQLCHAR;
  1620. NameLength2:SQLSMALLINT;
  1621. TableName:PSQLCHAR;
  1622. NameLength3:SQLSMALLINT;
  1623. Scope:SQLUSMALLINT;
  1624. Nullable:SQLUSMALLINT) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif}; external odbclib;
  1625. function SQLForeignKeys(StatementHandle: SQLHSTMT;
  1626. PKCatalogName: PSQLCHAR; NameLength1: SQLSMALLINT;
  1627. PKSchemaName: PSQLCHAR; NameLength2: SQLSMALLINT;
  1628. PKTableName: PSQLCHAR; NameLength3: SQLSMALLINT;
  1629. FKCatalogName: PSQLCHAR; NameLength4: SQLSMALLINT;
  1630. FKSchemaName: PSQLCHAR; NameLength5: SQLSMALLINT;
  1631. FKTableName: PSQLCHAR; NameLength6: SQLSMALLINT) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif}; external odbclib;
  1632. function SQLForeignKeysW(StatementHandle: SQLHSTMT;
  1633. PKCatalogName: PSQLWCHAR; NameLength1: SQLSMALLINT;
  1634. PKSchemaName: PSQLWCHAR; NameLength2: SQLSMALLINT;
  1635. PKTableName: PSQLWCHAR; NameLength3: SQLSMALLINT;
  1636. FKCatalogName: PSQLWCHAR; NameLength4: SQLSMALLINT;
  1637. FKSchemaName: PSQLWCHAR; NameLength5: SQLSMALLINT;
  1638. FKTableName: PSQLWCHAR; NameLength6: SQLSMALLINT) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif}; external odbclib;
  1639. function SQLProcedures( hstmt : SQLHSTMT;
  1640. szTableQualifier : PSQLCHAR;
  1641. cbTableQualifier : SQLSMALLINT;
  1642. szTableOwner : PSQLCHAR;
  1643. cbTableOwner : SQLSMALLINT;
  1644. szTableName : PSQLCHAR;
  1645. cbTableName : SQLSMALLINT ) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif}; external odbclib;
  1646. function SQLProceduresW( hstmt : SQLHSTMT;
  1647. szTableQualifier : PSQLWCHAR;
  1648. cbTableQualifier : SQLSMALLINT;
  1649. szTableOwner : PSQLWCHAR;
  1650. cbTableOwner : SQLSMALLINT;
  1651. szTableName : PSQLWCHAR;
  1652. cbTableName : SQLSMALLINT ) : SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif}; external odbclib;
  1653. function SQLPrimaryKeys(hstmt : SQLHSTMT;
  1654. CatalogName:PSQLCHAR; NameLength1:SQLSMALLINT;
  1655. SchemaName:PSQLCHAR; NameLength2:SQLSMALLINT;
  1656. TableName:PSQLCHAR; NameLength3:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1657. function SQLPrimaryKeysW(hstmt : SQLHSTMT;
  1658. CatalogName:PSQLWCHAR; NameLength1:SQLSMALLINT;
  1659. SchemaName:PSQLWCHAR; NameLength2:SQLSMALLINT;
  1660. TableName:PSQLWCHAR; NameLength3:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
  1661. function SQLProcedureColumns(hstmt: SQLHSTMT;
  1662. CatalogName: PSQLCHAR; NameLength1: SQLSMALLINT;
  1663. SchemaName: PSQLCHAR; NameLength2: SQLSMALLINT;
  1664. ProcName: PSQLCHAR; NameLength3: SQLSMALLINT;
  1665. ColumnName: PSQLCHAR; NameLength4: SQLSMALLINT): SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif}; external odbclib;
  1666. function SQLStatistics(hstmt: SQLHSTMT;
  1667. CatalogName:PSQLCHAR; NameLength1:SQLSMALLINT;
  1668. SchemaName:PSQLCHAR; NameLength2:SQLSMALLINT;
  1669. TableName:PSQLCHAR; NameLength3:SQLSMALLINT;
  1670. Unique:SQLUSMALLINT;
  1671. Reserved:SQLUSMALLINT): SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif}; external odbclib;
  1672. function SQLStatisticsW(hstmt: SQLHSTMT;
  1673. CatalogName:PSQLWCHAR; NameLength1:SQLSMALLINT;
  1674. SchemaName:PSQLWCHAR; NameLength2:SQLSMALLINT;
  1675. TableName:PSQLWCHAR; NameLength3:SQLSMALLINT;
  1676. Unique:SQLUSMALLINT;
  1677. Reserved:SQLUSMALLINT): SQLRETURN; {$ifdef fpc} extdecl {$else} stdcall {$endif}; external odbclib;
  1678. {$endif}
  1679. // This function always load dynamic
  1680. function DateStructToDateTime( b:PSQL_DATE_STRUCT):TDateTime;
  1681. function DateTimeToDateStruct( b:TDateTime):SQL_DATE_STRUCT;
  1682. procedure DateTime2TimeStampStruct( var Value:SQL_TIMESTAMP_STRUCT; b:TDateTime);
  1683. Function TimeStampStructToDateTime( B : PSQL_TIMESTAMP_STRUCT) : TDateTime;
  1684. Function TimeStructToDateTime (B : PSQL_TIME_STRUCT) : TDateTime;
  1685. function DateTimeToTimeStruct(b: TDateTime) : SQL_TIME_STRUCT;
  1686. function CurrToNumericStruct(c: currency): SQL_NUMERIC_STRUCT;
  1687. {$IFDEF DYNLOADINGODBC}
  1688. Procedure InitialiseODBC(OverrideName : string ='');
  1689. Procedure ReleaseODBC;
  1690. var ODBCLibraryHandle : TLibHandle;
  1691. {$ENDIF}
  1692. implementation
  1693. {$IFDEF DYNLOADINGODBC}
  1694. var RefCount : integer;
  1695. Procedure InitialiseODBC(OverrideName : string ='');
  1696. var libname : string;
  1697. begin
  1698. inc(RefCount);
  1699. if RefCount = 1 then
  1700. begin
  1701. if OverrideName='' then
  1702. libname:=odbclib
  1703. else
  1704. libname:=OverrideName;
  1705. ODBCLibraryHandle := loadlibrary(libname);
  1706. if ODBCLibraryHandle = nilhandle then
  1707. begin
  1708. RefCount := 0;
  1709. Raise EInOutError.Create('Can not load ODBC client. Is it installed? ('+odbclib+')');
  1710. end;
  1711. {$ifdef fpc}
  1712. // Ansi versions:
  1713. pointer(SQLAllocHandle) := GetProcedureAddress(ODBCLibraryHandle,'SQLAllocHandle');
  1714. pointer(SQLSetEnvAttr) := GetProcedureAddress(ODBCLibraryHandle,'SQLSetEnvAttr');
  1715. pointer(SQLFreeHandle) := GetProcedureAddress(ODBCLibraryHandle,'SQLFreeHandle');
  1716. pointer(SQLGetFunctions) := GetProcedureAddress(ODBCLibraryHandle,'SQLGetFunctions');
  1717. pointer(SQLGetInfo) := GetProcedureAddress(ODBCLibraryHandle,'SQLGetInfo');
  1718. pointer(SQLSpecialColumns) := GetProcedureAddress(ODBCLibraryHandle,'SQLSpecialColumns');
  1719. pointer(SQLGetDiagField) := GetProcedureAddress(ODBCLibraryHandle,'SQLGetDiagField');
  1720. pointer(SQLDisconnect) := GetProcedureAddress(ODBCLibraryHandle,'SQLDisconnect');
  1721. pointer(SQLCloseCursor) := GetProcedureAddress(ODBCLibraryHandle,'SQLCloseCursor');
  1722. pointer(SQLExecute) := GetProcedureAddress(ODBCLibraryHandle,'SQLExecute');
  1723. pointer(SQLFetch) := GetProcedureAddress(ODBCLibraryHandle,'SQLFetch');
  1724. pointer(SQLNumResultCols) := GetProcedureAddress(ODBCLibraryHandle,'SQLNumResultCols');
  1725. pointer(SQLFetchScroll) := GetProcedureAddress(ODBCLibraryHandle,'SQLFetchScroll');
  1726. pointer(SQLExtendedFetch) := GetProcedureAddress(ODBCLibraryHandle,'SQLExtendedFetch');
  1727. pointer(SQLGetData) := GetProcedureAddress(ODBCLibraryHandle,'SQLGetData');
  1728. pointer(SQLSetStmtAttr) := GetProcedureAddress(ODBCLibraryHandle,'SQLSetStmtAttr');
  1729. pointer(SQLGetStmtAttr) := GetProcedureAddress(ODBCLibraryHandle,'SQLGetStmtAttr');
  1730. pointer(SQLSetDescField) := GetProcedureAddress(ODBCLibraryHandle,'SQLSetDescField');
  1731. pointer(SQLSetDescRec) := GetProcedureAddress(ODBCLibraryHandle,'SQLSetDescRec');
  1732. pointer(SQLBulkOperations) := GetProcedureAddress(ODBCLibraryHandle,'SQLBulkOperations');
  1733. pointer(SQLPutData) := GetProcedureAddress(ODBCLibraryHandle,'SQLPutData');
  1734. pointer(SQLBindCol) := GetProcedureAddress(ODBCLibraryHandle,'SQLBindCol');
  1735. pointer(SQLSetPos) := GetProcedureAddress(ODBCLibraryHandle,'SQLSetPos');
  1736. pointer(SQLDataSources) := GetProcedureAddress(ODBCLibraryHandle,'SQLDataSources');
  1737. pointer(SQLDrivers) := GetProcedureAddress(ODBCLibraryHandle,'SQLDrivers');
  1738. pointer(SQLGetConnectAttr) := GetProcedureAddress(ODBCLibraryHandle,'SQLGetConnectAttr');
  1739. pointer(SQLSetConnectAttr) := GetProcedureAddress(ODBCLibraryHandle,'SQLSetConnectAttr');
  1740. pointer(SQLGetCursorName) := GetProcedureAddress(ODBCLibraryHandle,'SQLGetCursorName');
  1741. pointer(SQLSetCursorName) := GetProcedureAddress(ODBCLibraryHandle,'SQLSetCursorName');
  1742. pointer(SQLRowCount) := GetProcedureAddress(ODBCLibraryHandle,'SQLRowCount');
  1743. pointer(SQLBindParameter) := GetProcedureAddress(ODBCLibraryHandle,'SQLBindParameter');
  1744. pointer(SQLDescribeParam) :=GetProcedureAddress(ODBCLibraryHandle,'SQLDescribeParam');
  1745. pointer(SQLParamData) :=GetProcedureAddress(ODBCLibraryHandle,'SQLParamData');
  1746. pointer(SQLFreeStmt) := GetProcedureAddress(ODBCLibraryHandle,'SQLFreeStmt');
  1747. pointer(SQLColAttribute) := GetProcedureAddress(ODBCLibraryHandle,'SQLColAttribute');
  1748. pointer(SQLEndTran) := GetProcedureAddress(ODBCLibraryHandle,'SQLEndTran');
  1749. // Ansi versions:
  1750. pointer(SQLConnectA) := GetProcedureAddress(ODBCLibraryHandle,'SQLConnect');
  1751. pointer(SQLDriverConnectA) := GetProcedureAddress(ODBCLibraryHandle,'SQLDriverConnect');
  1752. pointer(SQLExecDirectA) := GetProcedureAddress(ODBCLibraryHandle,'SQLExecDirect');
  1753. pointer(SQLGetDiagRecA) := GetProcedureAddress(ODBCLibraryHandle,'SQLGetDiagRec');
  1754. pointer(SQLPrepareA) := GetProcedureAddress(ODBCLibraryHandle,'SQLPrepare');
  1755. pointer(SQLDescribeColA) := GetProcedureAddress(ODBCLibraryHandle,'SQLDescribeCol');
  1756. pointer(SQLTablesA) := GetProcedureAddress(ODBCLibraryHandle,'SQLTables');
  1757. pointer(SQLColumnsA) := GetProcedureAddress(ODBCLibraryHandle,'SQLColumns');
  1758. pointer(SQLForeignKeysA) := GetProcedureAddress(ODBCLibraryHandle,'SQLForeignKeys');
  1759. pointer(SQLPrimaryKeysA) := GetProcedureAddress(ODBCLibraryHandle,'SQLPrimaryKeys');
  1760. pointer(SQLProceduresA) := GetProcedureAddress(ODBCLibraryHandle,'SQLProcedures');
  1761. pointer(SQLProcedureColumnsA) := GetProcedureAddress(ODBCLibraryHandle,'SQLProcedureColumns');
  1762. pointer(SQLStatisticsA) := GetProcedureAddress(ODBCLibraryHandle,'SQLStatistics');
  1763. SQLConnect := SQLConnectA;
  1764. SQLDriverConnect := SQLDriverConnectA;
  1765. SQLExecDirect := SQLExecDirectA;
  1766. SQLGetDiagRec := SQLGetDiagRecA;
  1767. SQLPrepare := SQLPrepareA;
  1768. SQLDescribeCol := SQLDescribeColA;
  1769. SQLTables := SQLTablesA;
  1770. SQLColumns := SQLColumnsA;
  1771. SQLPrimaryKeys := SQLPrimaryKeysA;
  1772. SQLProcedures := SQLProceduresA;
  1773. SQLProcedureColumns := SQLProcedureColumnsA;
  1774. SQLStatistics := SQLStatisticsA;
  1775. // Unicode versions:
  1776. pointer(SQLConnectW) := GetProcedureAddress(ODBCLibraryHandle,'SQLConnectW');
  1777. pointer(SQLDriverConnectW) := GetProcedureAddress(ODBCLibraryHandle,'SQLDriverConnectW');
  1778. pointer(SQLExecDirectW) := GetProcedureAddress(ODBCLibraryHandle,'SQLExecDirectW');
  1779. pointer(SQLGetDiagRecW) := GetProcedureAddress(ODBCLibraryHandle,'SQLGetDiagRecW');
  1780. pointer(SQLPrepareW) := GetProcedureAddress(ODBCLibraryHandle,'SQLPrepareW');
  1781. pointer(SQLDescribeColW) := GetProcedureAddress(ODBCLibraryHandle,'SQLDescribeColW');
  1782. pointer(SQLTablesW) := GetProcedureAddress(ODBCLibraryHandle,'SQLTablesW');
  1783. pointer(SQLColumnsW) := GetProcedureAddress(ODBCLibraryHandle,'SQLColumnsW');
  1784. pointer(SQLForeignKeysW) := GetProcedureAddress(ODBCLibraryHandle,'SQLForeignKeysW');
  1785. pointer(SQLPrimaryKeysW) := GetProcedureAddress(ODBCLibraryHandle,'SQLPrimaryKeysW');
  1786. pointer(SQLProceduresW) := GetProcedureAddress(ODBCLibraryHandle,'SQLProceduresW');
  1787. pointer(SQLProcedureColumnsW) := GetProcedureAddress(ODBCLibraryHandle,'SQLProcedureColumnsW');
  1788. pointer(SQLStatisticsW) := GetProcedureAddress(ODBCLibraryHandle,'SQLStatisticsW');
  1789. {$else}
  1790. SQLAllocHandle := GetProcedureAddress(ODBCLibraryHandle,'SQLAllocHandle');
  1791. SQLSetEnvAttr := GetProcedureAddress(ODBCLibraryHandle,'SQLSetEnvAttr');
  1792. SQLFreeHandle := GetProcedureAddress(ODBCLibraryHandle,'SQLFreeHandle');
  1793. SQLGetFunctions := GetProcedureAddress(ODBCLibraryHandle,'SQLGetFunctions');
  1794. SQLGetInfo := GetProcedureAddress(ODBCLibraryHandle,'SQLGetInfo');
  1795. SQLProcedures := GetProcedureAddress(ODBCLibraryHandle,'SQLProcedures');
  1796. SQLColumns := GetProcedureAddress(ODBCLibraryHandle,'SQLColumns');
  1797. SQLSpecialColumns := GetProcedureAddress(ODBCLibraryHandle,'SQLSpecialColumns');
  1798. SQLGetDiagRec := GetProcedureAddress(ODBCLibraryHandle,'SQLGetDiagRec');
  1799. SQLGetDiagField := GetProcedureAddress(ODBCLibraryHandle,'SQLGetDiagField');
  1800. SQLConnect := GetProcedureAddress(ODBCLibraryHandle,'SQLConnect');
  1801. SQLDisconnect := GetProcedureAddress(ODBCLibraryHandle,'SQLDisconnect');
  1802. SQLDriverConnect := GetProcedureAddress(ODBCLibraryHandle,'SQLDriverConnect');
  1803. SQLExecDirect := GetProcedureAddress(ODBCLibraryHandle,'SQLExecDirect');
  1804. SQLParamData := GetProcedureAddress(ODBCLibraryHandle,'SQLParamData');
  1805. SQLPrepare := GetProcedureAddress(ODBCLibraryHandle,'SQLPrepare');
  1806. SQLCloseCursor := GetProcedureAddress(ODBCLibraryHandle,'SQLCloseCursor');
  1807. SQLExecute := GetProcedureAddress(ODBCLibraryHandle,'SQLExecute');
  1808. SQLFetch := GetProcedureAddress(ODBCLibraryHandle,'SQLFetch');
  1809. SQLNumResultCols := GetProcedureAddress(ODBCLibraryHandle,'SQLNumResultCols');
  1810. SQLDescribeCol := GetProcedureAddress(ODBCLibraryHandle,'SQLDescribeCol');
  1811. SQLFetchScroll := GetProcedureAddress(ODBCLibraryHandle,'SQLFetchScroll');
  1812. SQLExtendedFetch := GetProcedureAddress(ODBCLibraryHandle,'SQLExtendedFetch');
  1813. SQLGetData := GetProcedureAddress(ODBCLibraryHandle,'SQLGetData');
  1814. SQLSetStmtAttr := GetProcedureAddress(ODBCLibraryHandle,'SQLSetStmtAttr');
  1815. SQLGetStmtAttr := GetProcedureAddress(ODBCLibraryHandle,'SQLGetStmtAttr');
  1816. SQLSetDescField := GetProcedureAddress(ODBCLibraryHandle,'SQLSetDescField');
  1817. SQLSetDescRec := GetProcedureAddress(ODBCLibraryHandle,'SQLSetDescRec');
  1818. SQLBulkOperations := GetProcedureAddress(ODBCLibraryHandle,'SQLBulkOperations');
  1819. SQLPutData := GetProcedureAddress(ODBCLibraryHandle,'SQLPutData');
  1820. SQLBindCol := GetProcedureAddress(ODBCLibraryHandle,'SQLBindCol');
  1821. SQLSetPos := GetProcedureAddress(ODBCLibraryHandle,'SQLSetPos');
  1822. SQLDataSources := GetProcedureAddress(ODBCLibraryHandle,'SQLDataSources');
  1823. SQLDrivers := GetProcedureAddress(ODBCLibraryHandle,'SQLDrivers');
  1824. SQLGetConnectAttr := GetProcedureAddress(ODBCLibraryHandle,'SQLGetConnectAttr');
  1825. SQLSetConnectAttr := GetProcedureAddress(ODBCLibraryHandle,'SQLSetConnectAttr');
  1826. SQLGetCursorName := GetProcedureAddress(ODBCLibraryHandle,'SQLGetCursorName');
  1827. SQLSetCursorName := GetProcedureAddress(ODBCLibraryHandle,'SQLSetCursorName');
  1828. SQLRowCount := GetProcedureAddress(ODBCLibraryHandle,'SQLRowCount');
  1829. SQLBindParameter := GetProcedureAddress(ODBCLibraryHandle,'SQLBindParameter');
  1830. SQLGetFunctions := GetProcedureAddress(ODBCLibraryHandle,'SQLGetFunctions');
  1831. SQLDescribeParam :=GetProcedureAddress(ODBCLibraryHandle,'SQLDescribeParam');
  1832. SQLFreeStmt := GetProcedureAddress(ODBCLibraryHandle,'SQLFreeStmt');
  1833. SQLColAttribute := GetProcedureAddress(ODBCLibraryHandle,'SQLColAttribute');
  1834. SQLEndTran := GetProcedureAddress(ODBCLibraryHandle,'SQLEndTran');
  1835. SQLTables := GetProcedureAddress(ODBCLibraryHandle,'SQLTables');
  1836. SQLPrimaryKeys := GetProcedureAddress(ODBCLibraryHandle,'SQLPrimaryKeys');
  1837. SQLProcedureColumns := GetProcedureAddress(ODBCLibraryHandle,'SQLProcedureColumns');
  1838. SQLStatistics := GetProcedureAddress(ODBCLibraryHandle,'SQLStatistics');
  1839. {$endif}
  1840. end;
  1841. end;
  1842. Procedure ReleaseODBC;
  1843. begin
  1844. if RefCount > 0 then dec(RefCount);
  1845. if RefCount = 0 then
  1846. begin
  1847. if not UnloadLibrary(ODBCLibraryHandle) then inc(RefCount);
  1848. end;
  1849. end;
  1850. {$ENDIF}
  1851. function DateStructToDateTime( b:PSQL_DATE_STRUCT):TDateTime;
  1852. begin
  1853. Result:=EncodeDate( b^.Year, b^.Month, b^.Day);
  1854. end;
  1855. function DateTimeToDateStruct( b:TDateTime):SQL_DATE_STRUCT;
  1856. var
  1857. y,m,d: Word;
  1858. begin
  1859. DecodeDate( b, y, m, d);
  1860. with Result do
  1861. begin
  1862. Year:=y; Month:=m; Day:=d;
  1863. end;
  1864. end;
  1865. procedure DateTime2TimeStampStruct( var Value:SQL_TIMESTAMP_STRUCT; b:TDateTime);
  1866. var
  1867. w1,w2,w3,w4: Word;
  1868. begin
  1869. with Value do
  1870. begin
  1871. DecodeDate(b,w1,w2,w3);
  1872. Year := w1;
  1873. Month := w2;
  1874. Day := w3;
  1875. DecodeTime(b,w1,w2,w3,w4);
  1876. Hour := w1;
  1877. Minute := w2;
  1878. Second := w3;
  1879. fraction := Integer(w4)*1000000;
  1880. end;
  1881. end;
  1882. {
  1883. SQL_DATE_STRUCT = packed record
  1884. Year : SQLSMALLINT;
  1885. Month : SQLUSMALLINT;
  1886. Day : SQLUSMALLINT;
  1887. end;
  1888. PSQL_DATE_STRUCT = ^SQL_DATE_STRUCT;
  1889. }
  1890. Function TimeStampStructToDateTime( B : PSQL_TIMESTAMP_STRUCT) : TDateTime;
  1891. begin
  1892. With B^ do
  1893. Result:=ComposeDateTime(EncodeDate(Year,Month,Day), EncodeTime(Hour,Minute,Second,Fraction div 1000000));
  1894. end;
  1895. Function TimeStructToDateTime (B : PSQL_TIME_STRUCT) : TDateTime;
  1896. begin
  1897. With B^ do
  1898. begin
  1899. // TryEncodeTime can not be used, because it doesn't supports times with more then 24 hours.
  1900. Result:=TDateTime(cardinal(Hour)*3600000+cardinal(Minute)*60000+cardinal(Second)*1000)/MSecsPerDay;
  1901. end;
  1902. end;
  1903. function DateTimeToTimeStruct(b: TDateTime) : SQL_TIME_STRUCT;
  1904. var
  1905. w1, w2, w3, w4: Word;
  1906. begin
  1907. DecodeTime(b, w1, w2, w3, w4);
  1908. Result.Hour:=w1 + Trunc(b)*24;
  1909. Result.Minute:=w2;
  1910. Result.Second:=w3;
  1911. end;
  1912. function CurrToNumericStruct(c: currency): SQL_NUMERIC_STRUCT;
  1913. var n: int64; i: integer;
  1914. begin
  1915. Result.precision:=18;
  1916. Result.scale:=4;
  1917. if c >= 0 then
  1918. Result.sign:=1
  1919. else begin
  1920. Result.sign:=0;
  1921. c := -c;
  1922. end;
  1923. n := NtoLE(Trunc(c)*10000 + Round(Frac(c)*10000));
  1924. for i:=0 to high(Result.val) do begin
  1925. Result.val[i] := n and $ff;
  1926. n := n shr 8;
  1927. end;
  1928. end;