1 {@********************************************************}
2 { Copyright (c) 1999-2012 Zeos Development Group }
6 { This library is distributed in the hope that it will be }
7 { useful, but WITHOUT ANY WARRANTY; without even the }
8 { implied warranty of MERCHANTABILITY or FITNESS FOR }
9 { A PARTICULAR PURPOSE. See the GNU Lesser General }
10 { Public License for more details. }
12 { The source code of the ZEOS Libraries and packages are }
13 { distributed under the Library GNU General Public }
14 { License (see the file COPYING / COPYING.ZEOS) }
15 { with the following modification: }
16 { As a special exception, the copyright holders of this }
17 { library give you permission to link this library with }
18 { independent modules to produce an executable, }
19 { regardless of the license terms of these independent }
20 { modules, and to copy and distribute the resulting }
21 { executable under terms of your choice, provided that }
22 { you also meet, for each linked independent module, }
23 { the terms and conditions of the license of that module. }
24 { An independent module is a module which is not derived }
25 { from or based on this library. If you modify this }
26 { library, you may extend this exception to your version }
27 { of the library, but you are not obligated to do so. }
28 { If you do not wish to do so, delete this exception }
29 { statement from your version. }
32 { The project web site is located on: }
33 { http://zeos.firmos.at (FORUM) }
34 { http://sourceforge.net/p/zeoslib/tickets/ (BUGTRACKER)}
35 { svn://svn.code.sf.net/p/zeoslib/code-0/trunk (SVN) }
37 { http://www.sourceforge.net/projects/zeoslib. }
40 { Zeos Development Group. }
41 {********************************************************@}
49 uses Classes, ZCompatibility, ZPlainDriver, ZPlainASAConstants;
51 {***************** Plain API Constants definition ****************}
55 {** Represents a generic interface to ASA native API. }
56 IZASAPlainDriver = interface (IZPlainDriver)
57 ['{86AFDDD6-D401-4A30-B3BE-4AC5095E13F0}']
59 function sqlerror_message(sqlca: PZASASQLCA; Buffer: PAnsiChar;
60 MaxSize: Integer): PAnsiChar;
61 function db_init( sqlca: PZASASQLCA): Integer;
62 function db_fini( sqlca: PZASASQLCA): Integer;
63 function db_string_connect(sqlca: PZASASQLCA; Params: PAnsiChar): Integer;
64 function db_string_disconnect(sqlca: PZASASQLCA; Params: PAnsiChar): LongWord;
65 function db_find_engine(sqlca: PZASASQLCA; Params: PAnsiChar): Word;
66 function db_start_engine(sqlca: PZASASQLCA; Params: PAnsiChar): LongWord;
67 function db_stop_engine(sqlca: PZASASQLCA; Params: PAnsiChar): LongWord;
68 function db_start_database(sqlca: PZASASQLCA; Params: PAnsiChar): LongWord;
69 function db_stop_database(sqlca: PZASASQLCA; Params: PAnsiChar): LongWord;
71 function db_alloc_sqlda( NumVar: LongWord): PASASQLDA;
72 function db_fill_sqlda( Parameter: PASASQLDA): PASASQLDA;
73 function db_fill_s_sqlda( Parameter: PASASQLDA; MaxLength: Integer):
75 procedure db_free_sqlda( Parameter: PASASQLDA);
76 procedure db_free_sqlda_noind( Parameter: PASASQLDA);
77 procedure db_free_filled_sqlda( Parameter: PASASQLDA);
79 procedure db_setconnect(sqlca: PZASASQLCA; ConnStr: PAnsiChar);
80 procedure db_disconnect(sqlca: PZASASQLCA; ConnStr: PAnsiChar);
81 procedure db_setoption( sqlca: PZASASQLCA; Temporary: LongInt;
82 User: PAnsiChar; Option: PAnsiChar; Descriptor: PASASQLDA);
84 procedure db_describe_cursor(sqlca: PZASASQLCA; CursorName: PAnsiChar;
85 Descriptor: PASASQLDA; WhatToDesc: LongWord);
86 procedure db_prepare_into(sqlca: PZASASQLCA; ProgName: PAnsiChar;
87 StatementNum: PSmallInt; SqlStatement: PAnsiChar;
88 Descriptor1: PASASQLDA; Descriptor2: PASASQLDA; WhatToDesc: LongWord);
89 procedure db_prepare_describe(sqlca: PZASASQLCA; ProgName: PAnsiChar;
90 StatementNum: PSmallInt; SqlStatement: PAnsiChar; Descriptor: PASASQLDA;
91 WhatToDesc: LongWord; LongNames: Word);
92 procedure db_declare(sqlca: PZASASQLCA; CursorName: PAnsiChar;
93 StatementName: PAnsiChar; ProgName: PAnsiChar; StatementNum: PSmallInt;
95 procedure db_describe(sqlca: PZASASQLCA; ProgName: PAnsiChar;
96 StatementNum: PSmallInt; Descriptor: PASASQLDA; WhatToDesc: Word);
97 procedure db_dropstmt(sqlca: PZASASQLCA; StatementName: PAnsiChar;
98 ProgName: PAnsiChar; StatementNum: PSmallInt);
99 procedure db_open(sqlca: PZASASQLCA; CursorName: PAnsiChar;
100 ProgName: PAnsiChar; StatementNum: PSmallInt; Descriptor: PASASQLDA;
101 BlockSize, IsolationLvl: SmallInt; CursorOptions: Word);
102 procedure db_close( sqlca: PZASASQLCA; CursorName: PAnsiChar);
104 procedure db_fetch(sqlca: PZASASQLCA; CursorName: PAnsiChar; Offset: Word;
105 RelPositon: Integer; Descriptor: PASASQLDA; BlockSize: SmallInt;
107 procedure db_fetch_array(sqlca: PZASASQLCA; CursorName: PAnsiChar;
108 Offset: Word; RelPositon: Integer; Descriptor: PASASQLDA;
109 BlockSize: SmallInt; Options, ArrayWidth: Word);
110 procedure db_get_data(sqlca: PZASASQLCA; CursorName: PAnsiChar;
111 ColumnNumber: Word; Offset: Integer; Descriptor: PASASQLDA);
112 procedure db_delete(sqlca: PZASASQLCA; CursorName: PAnsiChar);
113 procedure db_update(sqlca: PZASASQLCA; CursorName: PAnsiChar;
114 Descriptor: PASASQLDA);
115 procedure db_put_into(sqlca: PZASASQLCA; CursorName: PAnsiChar;
116 Descriptor: PASASQLDA; ResultDescriptor: PASASQLDA);
117 procedure db_put_array(sqlca: PZASASQLCA; CursorName: PAnsiChar;
118 Descriptor: PASASQLDA; ResultDescriptor: PASASQLDA; Rows: Word);
120 procedure db_select(sqlca: PZASASQLCA; ProgName: PAnsiChar;
121 StatementNum: PSmallInt; SQLDescriptor, ResultDescriptor: PASASQLDA);
122 procedure db_execute_into(sqlca: PZASASQLCA; Statement: PAnsiChar;
123 ProgName: PAnsiChar; StatementNum: PSmallInt; Descriptor: PASASQLDA;
124 ResultDescriptor: PASASQLDA);
125 procedure db_execute_imm(sqlca: PZASASQLCA; Statement: PAnsiChar);
127 procedure db_commit( sqlca: PZASASQLCA; TransLevel: LongWord);
128 procedure db_rollback( sqlca: PZASASQLCA; TransLevel: LongWord);
129 procedure db_explain(sqlca: PZASASQLCA; CursorName: PAnsiChar;
130 Descriptor: PASASQLDA);
131 procedure db_register_callback( sqlca: PZASASQLCA;
132 CBIdx: ZASA_db_callback_index; Proc: TZASASQLCallback);
133 procedure db_resume(sqlca: PZASASQLCA; CursorName: PAnsiChar);
134 function db_cancel_request( sqlca: PZASASQLCA): Integer;
135 function db_change_char_charset( sqlca: PZASASQLCA; const CharSet: PAnsiChar): Word;
136 function db_change_nchar_charset( sqlca: PZASASQLCA; const CharSet: PAnsiChar): Word;
139 {** Implements a driver for ASA 7.0-9.0}
140 TZASABasePlainDriver = class (TZAbstractPlainDriver, IZPlainDriver,
145 procedure LoadApi; override;
146 function GetUnicodeCodePageName: String; override;
148 procedure LoadCodePages; override;
151 function sqlerror_message(sqlca: PZASASQLCA; Buffer: PAnsiChar;
152 MaxSize: Integer): PAnsiChar;
153 function db_init( sqlca: PZASASQLCA): Integer;
154 function db_fini( sqlca: PZASASQLCA): Integer;
155 function db_string_connect(sqlca: PZASASQLCA; Params: PAnsiChar): Integer;
156 function db_string_disconnect(sqlca: PZASASQLCA; Params: PAnsiChar): LongWord;
157 function db_find_engine(sqlca: PZASASQLCA; Params: PAnsiChar): Word;
158 function db_start_engine(sqlca: PZASASQLCA; Params: PAnsiChar): LongWord;
159 function db_stop_engine(sqlca: PZASASQLCA; Params: PAnsiChar): LongWord;
160 function db_start_database(sqlca: PZASASQLCA; Params: PAnsiChar): LongWord;
161 function db_stop_database(sqlca: PZASASQLCA; Params: PAnsiChar): LongWord;
163 function db_alloc_sqlda( NumVar: LongWord): PASASQLDA;
164 function db_fill_sqlda( Parameter: PASASQLDA): PASASQLDA;
165 function db_fill_s_sqlda( Parameter: PASASQLDA; MaxLength: Integer):
167 procedure db_free_sqlda( Parameter: PASASQLDA);
168 procedure db_free_sqlda_noind( Parameter: PASASQLDA);
169 procedure db_free_filled_sqlda( Parameter: PASASQLDA);
171 procedure db_setconnect(sqlca: PZASASQLCA; ConnStr: PAnsiChar);
172 procedure db_disconnect(sqlca: PZASASQLCA; ConnStr: PAnsiChar);
173 procedure db_setoption( sqlca: PZASASQLCA; Temporary: LongInt;
174 User: PAnsiChar; Option: PAnsiChar; Descriptor: PASASQLDA);
176 procedure db_describe_cursor(sqlca: PZASASQLCA; CursorName: PAnsiChar;
177 Descriptor: PASASQLDA; WhatToDesc: LongWord);
178 procedure db_prepare_into(sqlca: PZASASQLCA; ProgName: PAnsiChar;
179 StatementNum: PSmallInt; SqlStatement: PAnsiChar;
180 Descriptor1: PASASQLDA; Descriptor2: PASASQLDA; WhatToDesc: LongWord);
181 procedure db_prepare_describe(sqlca: PZASASQLCA; ProgName: PAnsiChar;
182 StatementNum: PSmallInt; SqlStatement: PAnsiChar; Descriptor: PASASQLDA;
183 WhatToDesc: LongWord; LongNames: Word);
184 procedure db_declare(sqlca: PZASASQLCA; CursorName: PAnsiChar;
185 StatementName: PAnsiChar; ProgName: PAnsiChar; StatementNum: PSmallInt;
187 procedure db_describe(sqlca: PZASASQLCA; ProgName: PAnsiChar;
188 StatementNum: PSmallInt; Descriptor: PASASQLDA; WhatToDesc: Word);
189 procedure db_dropstmt(sqlca: PZASASQLCA; StatementName: PAnsiChar;
190 ProgName: PAnsiChar; StatementNum: PSmallInt);
191 procedure db_open(sqlca: PZASASQLCA; CursorName: PAnsiChar;
192 ProgName: PAnsiChar; StatementNum: PSmallInt; Descriptor: PASASQLDA;
193 BlockSize, IsolationLvl: SmallInt; CursorOptions: Word);
194 procedure db_close(sqlca: PZASASQLCA; CursorName: PAnsiChar);
196 procedure db_fetch(sqlca: PZASASQLCA; CursorName: PAnsiChar; Offset: Word;
197 RelPositon: Integer; Descriptor: PASASQLDA; BlockSize: SmallInt;
199 procedure db_fetch_array(sqlca: PZASASQLCA; CursorName: PAnsiChar;
200 Offset: Word; RelPositon: Integer; Descriptor: PASASQLDA;
201 BlockSize: SmallInt; Options, ArrayWidth: Word);
202 procedure db_get_data(sqlca: PZASASQLCA; CursorName: PAnsiChar;
203 ColumnNumber: Word; Offset: Integer; Descriptor: PASASQLDA);
204 procedure db_delete(sqlca: PZASASQLCA; CursorName: PAnsiChar);
205 procedure db_update(sqlca: PZASASQLCA; CursorName: PAnsiChar;
206 Descriptor: PASASQLDA);
207 procedure db_put_into(sqlca: PZASASQLCA; CursorName: PAnsiChar;
208 Descriptor: PASASQLDA; ResultDescriptor: PASASQLDA);
209 procedure db_put_array(sqlca: PZASASQLCA; CursorName: PAnsiChar;
210 Descriptor: PASASQLDA; ResultDescriptor: PASASQLDA; Rows: Word);
212 procedure db_select(sqlca: PZASASQLCA; ProgName: PAnsiChar;
213 StatementNum: PSmallInt; Descriptor, ResultDescriptor: PASASQLDA);
214 procedure db_execute_into(sqlca: PZASASQLCA; Statement: PAnsiChar;
215 ProgName: PAnsiChar; StatementNum: PSmallInt; Descriptor: PASASQLDA;
216 ResultDescriptor: PASASQLDA);
217 procedure db_execute_imm(sqlca: PZASASQLCA; Statement: PAnsiChar);
219 procedure db_commit( sqlca: PZASASQLCA; TransLevel: LongWord);
220 procedure db_rollback( sqlca: PZASASQLCA; TransLevel: LongWord);
221 procedure db_explain(sqlca: PZASASQLCA; CursorName: PAnsiChar;
222 Descriptor: PASASQLDA);
223 procedure db_register_callback( sqlca: PZASASQLCA;
224 CBIdx: ZASA_db_callback_index; Proc: TZASASQLCallback);
225 procedure db_resume(sqlca: PZASASQLCA; CursorName: PAnsiChar);
226 function db_cancel_request( sqlca: PZASASQLCA): Integer;
227 function db_change_char_charset( sqlca: PZASASQLCA; const CharSet: PAnsiChar): Word;
228 function db_change_nchar_charset( sqlca: PZASASQLCA; const CharSet: PAnsiChar): Word;
231 TZASA7PlainDriver = class(TZASABasePlainDriver)
233 function Clone: IZPlainDriver; override;
236 function GetProtocol: string; override;
237 function GetDescription: string; override;
240 TZASA8PlainDriver = class(TZASABasePlainDriver)
242 function Clone: IZPlainDriver; override;
245 function GetProtocol: string; override;
246 function GetDescription: string; override;
249 {** Implements a driver for ASA 9.0 }
250 TZASA9PlainDriver = class (TZASABasePlainDriver)
252 function Clone: IZPlainDriver; override;
255 function GetProtocol: string; override;
256 function GetDescription: string; override;
259 {** Implements a driver for ASA 12.0 }
260 TZASA12PlainDriver = class (TZASABasePlainDriver)
262 function Clone: IZPlainDriver; override;
265 function GetProtocol: string; override;
266 function GetDescription: string; override;
271 uses SysUtils, ZPlainLoader, ZEncoding;
273 procedure TZASABasePlainDriver.LoadApi;
277 @ASA_API.sqlerror_message := GetAddress('sqlerror_message');
278 @ASA_API.db_init := GetAddress('db_init');
279 @ASA_API.db_fini := GetAddress('db_fini');
280 @ASA_API.db_string_connect := GetAddress('db_string_connect');
281 @ASA_API.db_string_disconnect := GetAddress('db_string_disconnect');
282 @ASA_API.db_find_engine := GetAddress('db_find_engine');
283 @ASA_API.db_start_engine := GetAddress('db_start_engine');
284 @ASA_API.db_stop_engine := GetAddress('db_stop_engine');
285 @ASA_API.db_start_database := GetAddress('db_start_database');
286 @ASA_API.db_stop_database := GetAddress('db_stop_database');
287 @ASA_API.alloc_sqlda := GetAddress('alloc_sqlda');
288 @ASA_API.fill_sqlda := GetAddress('fill_sqlda');
289 @ASA_API.fill_s_sqlda := GetAddress('fill_s_sqlda');
290 @ASA_API.free_filled_sqlda := GetAddress('free_filled_sqlda');
291 @ASA_API.free_sqlda := GetAddress('free_sqlda');
292 @ASA_API.free_sqlda_noind := GetAddress('free_sqlda_noind');
293 @ASA_API.dbpp_setConnect := GetAddress('dbpp_setconnect');
294 @ASA_API.dbpp_disconnect := GetAddress('dbpp_disconnect');
295 @ASA_API.dbpp_prepare_into := GetAddress('dbpp_prepare_into');
296 @ASA_API.dbpp_describe_cursor := GetAddress('dbpp_describe_cursor');
297 @ASA_API.dbpp_prepare_describe := GetAddress('dbpp_prepare_describe');
298 @ASA_API.dbpp_prepare_describe_12 := GetAddress('dbpp_prepare_describe_12');
299 @ASA_API.dbpp_select := GetAddress('dbpp_select');
300 @ASA_API.dbpp_open := GetAddress('dbpp_open');
301 @ASA_API.dbpp_close := GetAddress('dbpp_close');
302 @ASA_API.dbpp_fetch := GetAddress('dbpp_fetch');
303 @ASA_API.dbpp_declare := GetAddress('dbpp_declare');
304 @ASA_API.dbpp_dropstmt := GetAddress('dbpp_dropstmt');
305 @ASA_API.dbpp_describe := GetAddress('dbpp_describe');
306 @ASA_API.dbpp_delete := GetAddress('dbpp_delete');
307 @ASA_API.dbpp_update := GetAddress('dbpp_update');
308 @ASA_API.dbpp_put_into := GetAddress('dbpp_put_into');
309 @ASA_API.dbpp_put_array := GetAddress('dbpp_put_array');
310 @ASA_API.dbpp_execute_imm := GetAddress('dbpp_execute_imm');
311 @ASA_API.dbpp_commit := GetAddress('dbpp_commit');
312 @ASA_API.dbpp_rollback := GetAddress('dbpp_rollback');
313 @ASA_API.dbpp_execute_into := GetAddress('dbpp_execute_into');
314 @ASA_API.dbpp_get_data := GetAddress('dbpp_get_data');
315 @ASA_API.dbpp_explain := GetAddress('dbpp_explain');
316 @ASA_API.dbpp_setoption := GetAddress('dbpp_setoption');
317 @ASA_API.dbpp_fetch_array := GetAddress('dbpp_fetch_array');
318 @ASA_API.db_register_a_callback := GetAddress('db_register_a_callback');
319 @ASA_API.dbpp_resume := GetAddress('dbpp_resume');
320 @ASA_API.db_cancel_request := GetAddress('db_cancel_request');
321 @ASA_API.db_change_char_charset := GetAddress('db_change_char_charset');
322 @ASA_API.db_change_nchar_charset:= GetAddress('db_change_nchar_charset');
326 function TZASABasePlainDriver.GetUnicodeCodePageName: String;
331 procedure TZASABasePlainDriver.LoadCodePages;
334 AddCodePage('TIS-620', 1, ceAnsi, 874); {Windows Thailändisch, ISO8859-11, binäre Sortierung}
335 AddCodePage('Windows-31J', 2, ceAnsi, 932); {Japanese Shift-JIS mit Microsoft-Erweiterungen}
336 AddCodePage('GBK', 3, ceAnsi, 936); {GB2312-80 Simplified Chinese}
337 AddCodePage('IBM949', 4, ceAnsi, 949); {Korean KS C 5601-1987-Codierung, Wansung}
338 AddCodePage('BIG5', 5, ceAnsi, 950); {Traditionelles Chinesisch, Big 5-Kodierung mit HKSCS}
339 AddCodePage('EUC_CHINA', 6, ceAnsi, zCP_GB2312); {GB2312-80 Simplified Chinese}
340 AddCodePage('UTF-8', 7, ceUTF8, zCP_UTF8, '', 3); {UTF-8, 8-Bit-Mehrbyte-Zeichensatz für Unicode, binäre Reihenfolge}
343 AddCodePage('Windows-1250', 8, ceAnsi, 1250); {Windows Latin 2, Polnisch}
344 AddCodePage('Windows-1251', 9, ceAnsi, 1251); {Windows Kyrillisch}
345 AddCodePage('Windows-1252', 10, ceAnsi, 1252); { Windows Latin 1, Western}
346 AddCodePage('Windows-1253', 11, ceAnsi, 1253); {Windows Griechisch, ISO8859-7 mit Erweiterungen}
347 AddCodePage('Windows-1254', 12, ceAnsi, 1254); {Windows Türkisch, ISO8859-9 mit Erweiterungen}
348 AddCodePage('Windows-1255', 13, ceAnsi, 1255); {Windows Hebräisch, ISO8859-8 mit Erweiterungen}
349 AddCodePage('Windows-1256', 14, ceAnsi, 1256); {Windows Arabisch, ISO8859-6 mit Erweiterungen}
350 AddCodePage('Windows-1257', 15, ceAnsi, 1257); {Windows Baltische Staaten, Litauisch}
351 AddCodePage('Windows-1258', 16, ceAnsi, 1258); {Windows }
354 AddCodePage('ISO_8859-6:1987', 17, ceAnsi, 1256); {Arabisch, ISO8859-6 mit Erweiterungen}
355 AddCodePage('ISO_8859-2:1987', 18, ceAnsi, 1251); {Zentral- und Osteuropäisch}
356 //ISO-8859-15 //ISO9LATIN1
357 //ISO_8859-7:1987 //Griechisch
358 //ISO_8859-8:1988 //Hebräisch
359 //ISO-8859-15 //Italienisch
361 //EUC-KR //Koreanisch
362 //ISO_8859-5:1988 //Russisch
363 AddCodePage('GB2312', 19, ceAnsi, zCP_GB2312); {GB2312-80 Simplified Chinese}
364 //EUC-TW //Traditionelles Chinesisch - Taiwan
365 AddCodePage('Big5-HKSCS', 20, ceAnsi, 950); {Traditionelles Chinesisch, Big 5-Kodierung mit HKSCS}
366 AddCodePage('ISO_8859-9:1989', 21, ceAnsi, 920); //Türkisch
369 constructor TZASABasePlainDriver.Create;
372 FLoader := TZNativeLibraryLoader.Create([]);
376 function TZASABasePlainDriver.sqlerror_message(sqlca: PZASASQLCA; Buffer: PAnsiChar;
377 MaxSize: Integer): PAnsiChar;
379 Result := ASA_API.sqlerror_message( sqlca, Buffer, MaxSize);
382 function TZASABasePlainDriver.db_init( sqlca: PZASASQLCA): Integer;
384 Result := ASA_API.db_init( sqlca);
387 function TZASABasePlainDriver.db_fini( sqlca: PZASASQLCA): Integer;
389 Result := ASA_API.db_fini( sqlca);
392 function TZASABasePlainDriver.db_string_connect(sqlca: PZASASQLCA; Params: PAnsiChar):
395 Result := ASA_API.db_string_connect( sqlca, Params);
398 function TZASABasePlainDriver.db_string_disconnect( sqlca: PZASASQLCA;
399 Params: PAnsiChar): LongWord;
401 Result := ASA_API.db_string_disconnect( sqlca, Params)
404 function TZASABasePlainDriver.db_find_engine(sqlca: PZASASQLCA; Params: PAnsiChar):
407 Result := ASA_API.db_find_engine( sqlca, Params);
410 function TZASABasePlainDriver.db_start_engine(sqlca: PZASASQLCA; Params: PAnsiChar):
413 Result := ASA_API.db_start_engine( sqlca, Params);
416 function TZASABasePlainDriver.db_stop_engine(sqlca: PZASASQLCA; Params: PAnsiChar):
419 Result := ASA_API.db_stop_engine( sqlca, Params);
422 function TZASABasePlainDriver.db_start_database(sqlca: PZASASQLCA; Params: PAnsiChar):
425 Result := ASA_API.db_start_database( sqlca, Params);
428 function TZASABasePlainDriver.db_stop_database(sqlca: PZASASQLCA; Params: PAnsiChar):
431 Result := ASA_API.db_stop_database( sqlca, Params);
434 function TZASABasePlainDriver.db_alloc_sqlda( NumVar: LongWord): PASASQLDA;
436 Result := ASA_API.alloc_sqlda( NumVar);
439 function TZASABasePlainDriver.db_fill_sqlda( Parameter: PASASQLDA): PASASQLDA;
441 Result := ASA_API.fill_sqlda( Parameter);
444 function TZASABasePlainDriver.db_fill_s_sqlda( Parameter: PASASQLDA;
445 MaxLength: Integer): PASASQLDA;
447 Result := ASA_API.fill_s_sqlda( Parameter, MaxLength);
450 procedure TZASABasePlainDriver.db_free_sqlda( Parameter: PASASQLDA);
452 ASA_API.free_sqlda( Parameter);
455 procedure TZASABasePlainDriver.db_free_sqlda_noind( Parameter: PASASQLDA);
457 ASA_API.free_sqlda_noind( Parameter);
460 procedure TZASABasePlainDriver.db_free_filled_sqlda( Parameter: PASASQLDA);
462 ASA_API.free_filled_sqlda( Parameter);
465 procedure TZASABasePlainDriver.db_setconnect(sqlca: PZASASQLCA; ConnStr: PAnsiChar);
467 ASA_API.dbpp_setconnect( sqlca, ConnStr);
470 procedure TZASABasePlainDriver.db_disconnect(sqlca: PZASASQLCA; ConnStr: PAnsiChar);
472 ASA_API.dbpp_disconnect( sqlca, ConnStr);
475 procedure TZASABasePlainDriver.db_setoption( sqlca: PZASASQLCA; Temporary: Integer;
476 User: PAnsiChar; Option: PAnsiChar; Descriptor: PASASQLDA);
478 ASA_API.dbpp_setoption( sqlca, Temporary, User, Option, Descriptor);
481 procedure TZASABasePlainDriver.db_describe_cursor( sqlca: PZASASQLCA;
482 CursorName: PAnsiChar; Descriptor: PASASQLDA; WhatToDesc: LongWord);
484 ASA_API.dbpp_describe_cursor( sqlca, CursorName, Descriptor, WhatToDesc);
487 procedure TZASABasePlainDriver.db_prepare_into( sqlca: PZASASQLCA;
488 ProgName: PAnsiChar; StatementNum: PSmallInt; SqlStatement: PAnsiChar;
489 Descriptor1: PASASQLDA; Descriptor2: PASASQLDA; WhatToDesc: LongWord);
491 ASA_API.dbpp_prepare_into( sqlca, nil, ProgName, StatementNum, SqlStatement,
492 Descriptor1, Descriptor2, WhatToDesc);
495 procedure TZASABasePlainDriver.db_prepare_describe( sqlca: PZASASQLCA;
496 ProgName: PAnsiChar; StatementNum: PSmallInt; SqlStatement: PAnsiChar;
497 Descriptor: PASASQLDA; WhatToDesc: LongWord; LongNames: Word);
502 if Assigned(ASA_API.dbpp_prepare_describe) then
503 ASA_API.dbpp_prepare_describe( sqlca, nil, ProgName, StatementNum,
504 SqlStatement, nil, Descriptor, WhatToDesc, LongNames)
506 if Assigned(ASA_API.dbpp_prepare_describe_12) then
507 ASA_API.dbpp_prepare_describe_12(sqlca, nil, ProgName, StatementNum,
508 SqlStatement, nil, Descriptor, WhatToDesc, LongNames, U1);
511 procedure TZASABasePlainDriver.db_declare(sqlca: PZASASQLCA; CursorName: PAnsiChar;
512 StatementName: PAnsiChar; ProgName: PAnsiChar; StatementNum: PSmallInt;
515 ASA_API.dbpp_declare( sqlca, CursorName, StatementName, ProgName,
516 StatementNum, Options);
519 procedure TZASABasePlainDriver.db_describe(sqlca: PZASASQLCA; ProgName: PAnsiChar;
520 StatementNum: PSmallInt; Descriptor: PASASQLDA; WhatToDesc: Word);
522 ASA_API.dbpp_describe( sqlca, nil, ProgName, StatementNum, Descriptor,
526 procedure TZASABasePlainDriver.db_dropstmt( sqlca: PZASASQLCA;
527 StatementName: PAnsiChar; ProgName: PAnsiChar; StatementNum: PSmallInt);
529 ASA_API.dbpp_dropstmt( sqlca, StatementName, ProgName, StatementNum);
532 procedure TZASABasePlainDriver.db_open(sqlca: PZASASQLCA; CursorName: PAnsiChar;
533 ProgName: PAnsiChar; StatementNum: PSmallInt; Descriptor: PASASQLDA;
534 BlockSize, IsolationLvl: SmallInt; CursorOptions: Word);
536 ASA_API.dbpp_open( sqlca, CursorName, nil, ProgName, StatementNum,
537 Descriptor, BlockSize, IsolationLvl, CursorOptions);
540 procedure TZASABasePlainDriver.db_close(sqlca: PZASASQLCA; CursorName: PAnsiChar);
542 ASA_API.dbpp_close( sqlca, CursorName);
545 procedure TZASABasePlainDriver.db_fetch(sqlca: PZASASQLCA; CursorName: PAnsiChar;
546 Offset: Word; RelPositon: Integer; Descriptor: PASASQLDA;
547 BlockSize: SmallInt; Options: Word);
549 ASA_API.dbpp_fetch( sqlca, CursorName, Offset, RelPositon, Descriptor,
553 procedure TZASABasePlainDriver.db_fetch_array( sqlca: PZASASQLCA;
554 CursorName: PAnsiChar; Offset: Word; RelPositon: Integer;
555 Descriptor: PASASQLDA; BlockSize: SmallInt; Options, ArrayWidth: Word);
557 ASA_API.dbpp_fetch_array( sqlca, CursorName, Offset, RelPositon, Descriptor,
558 BlockSize, Options, ArrayWidth);
561 procedure TZASABasePlainDriver.db_get_data(sqlca: PZASASQLCA; CursorName: PAnsiChar;
562 ColumnNumber: Word; Offset: Integer; Descriptor: PASASQLDA);
564 ASA_API.dbpp_get_data( sqlca, CursorName, ColumnNumber, Offset, Descriptor,
568 procedure TZASABasePlainDriver.db_delete(sqlca: PZASASQLCA; CursorName: PAnsiChar);
570 ASA_API.dbpp_delete( sqlca, CursorName, nil, nil);
573 procedure TZASABasePlainDriver.db_update(sqlca: PZASASQLCA; CursorName: PAnsiChar;
574 Descriptor: PASASQLDA);
576 ASA_API.dbpp_update( sqlca, CursorName, Descriptor);
579 procedure TZASABasePlainDriver.db_put_into(sqlca: PZASASQLCA; CursorName: PAnsiChar;
580 Descriptor: PASASQLDA; ResultDescriptor: PASASQLDA);
582 ASA_API.dbpp_put_into( sqlca, CursorName, Descriptor, ResultDescriptor);
585 procedure TZASABasePlainDriver.db_put_array(sqlca: PZASASQLCA; CursorName: PAnsiChar;
586 Descriptor: PASASQLDA; ResultDescriptor: PASASQLDA; Rows: Word);
588 ASA_API.dbpp_put_array( sqlca, CursorName, Descriptor, ResultDescriptor,
592 procedure TZASABasePlainDriver.db_select(sqlca: PZASASQLCA; ProgName: PAnsiChar;
593 StatementNum: PSmallInt; Descriptor, ResultDescriptor: PASASQLDA);
595 ASA_API.dbpp_select( sqlca, nil, ProgName, StatementNum, Descriptor,
599 procedure TZASABasePlainDriver.db_execute_into( sqlca: PZASASQLCA;
600 Statement: PAnsiChar; ProgName: PAnsiChar; StatementNum: PSmallInt;
601 Descriptor: PASASQLDA; ResultDescriptor: PASASQLDA);
603 ASA_API.dbpp_execute_into( sqlca, Statement, ProgName, StatementNum,
604 Descriptor, ResultDescriptor);
607 procedure TZASABasePlainDriver.db_execute_imm( sqlca: PZASASQLCA;
608 Statement: PAnsiChar);
610 ASA_API.dbpp_execute_imm( sqlca, Statement, 2);
613 procedure TZASABasePlainDriver.db_commit( sqlca: PZASASQLCA; TransLevel: LongWord);
615 ASA_API.dbpp_commit( sqlca, TransLevel);
618 procedure TZASABasePlainDriver.db_rollback( sqlca: PZASASQLCA;
619 TransLevel: LongWord);
621 ASA_API.dbpp_rollback( sqlca, TransLevel);
624 procedure TZASABasePlainDriver.db_explain(sqlca: PZASASQLCA; CursorName: PAnsiChar;
625 Descriptor: PASASQLDA);
627 ASA_API.dbpp_explain( sqlca, CursorName, 0, Descriptor);
630 procedure TZASABasePlainDriver.db_register_callback( sqlca: PZASASQLCA;
631 CBIdx: ZASA_db_callback_index; Proc: TZASASQLCallback);
633 ASA_API.db_register_a_callback( sqlca, Integer( CBIdx), Proc);
636 procedure TZASABasePlainDriver.db_resume(sqlca: PZASASQLCA; CursorName: PAnsiChar);
638 ASA_API.dbpp_resume( sqlca, CursorName);
641 function TZASABasePlainDriver.db_cancel_request( sqlca: PZASASQLCA): Integer;
643 Result := ASA_API.db_cancel_request( sqlca);
646 function TZASABasePlainDriver.db_change_char_charset( sqlca: PZASASQLCA; const CharSet: PAnsiChar): Word;
648 Result := ASA_API.db_change_char_charset(sqlca, CharSet);
651 function TZASABasePlainDriver.db_change_nchar_charset( sqlca: PZASASQLCA; const CharSet: PAnsiChar): Word;
653 Result := ASA_API.db_change_nchar_charset(sqlca, CharSet);
658 function TZASA7PlainDriver.Clone: IZPlainDriver;
660 Result := TZASA7PlainDriver.Create;
663 constructor TZASA7PlainDriver.Create;
666 FLoader.AddLocation({$IFNDEF LINUX}ASA7_WINDOWS_DLL_LOCATION{$ELSE}ASA7_LINUX_DLL_LOCATION{$ENDIF});
669 function TZASA7PlainDriver.GetProtocol: string;
674 function TZASA7PlainDriver.GetDescription: string;
676 Result := 'Native Plain Driver for ASA 7.0 DBLib';
681 constructor TZASA8PlainDriver.Create;
684 FLoader.AddLocation({$IFNDEF LINUX}ASA8_WINDOWS_DLL_LOCATION{$ELSE}ASA8_LINUX_DLL_LOCATION{$ENDIF});
687 function TZASA8PlainDriver.Clone: IZPlainDriver;
689 Result := TZASA8PlainDriver.Create;
692 function TZASA8PlainDriver.GetProtocol: string;
697 function TZASA8PlainDriver.GetDescription: string;
699 Result := 'Native Plain Driver for ASA 8.0 DBLib';
704 constructor TZASA9PlainDriver.Create;
707 FLoader.AddLocation({$IFNDEF LINUX}ASA9_WINDOWS_DLL_LOCATION{$ELSE}ASA9_LINUX_DLL_LOCATION{$ENDIF});
710 function TZASA9PlainDriver.Clone: IZPlainDriver;
712 Result := TZASA9PlainDriver.Create;
715 function TZASA9PlainDriver.GetProtocol: string;
720 function TZASA9PlainDriver.GetDescription: string;
722 Result := 'Native Plain Driver for ASA 9.0 DBLib';
727 constructor TZASA12PlainDriver.Create;
730 FLoader.AddLocation({$IFNDEF LINUX}ASA12_WINDOWS_DLL_LOCATION{$ELSE}ASA12_LINUX_DLL_LOCATION{$ENDIF});
733 function TZASA12PlainDriver.Clone: IZPlainDriver;
735 Result := TZASA12PlainDriver.Create;
738 function TZASA12PlainDriver.GetProtocol: string;
743 function TZASA12PlainDriver.GetDescription: string;
745 Result := 'Native Plain Driver for ASA 9.0 DBLib';