00001 {*********************************************************}
00002 { }
00003 { Zeos Database Objects }
00004 { Native Plain Drivers for Interbase }
00005 { }
00006 { Originally written by Sergey Seroukhov }
00007 { }
00008 {*********************************************************}
00009
00010 {@********************************************************}
00011 { Copyright (c) 1999-2006 Zeos Development Group }
00012 { }
00013 { License Agreement: }
00014 { }
00015 { This library is distributed in the hope that it will be }
00016 { useful, but WITHOUT ANY WARRANTY; without even the }
00017 { implied warranty of MERCHANTABILITY or FITNESS FOR }
00018 { A PARTICULAR PURPOSE. See the GNU Lesser General }
00019 { Public License for more details. }
00020 { }
00021 { The source code of the ZEOS Libraries and packages are }
00022 { distributed under the Library GNU General Public }
00023 { License (see the file COPYING / COPYING.ZEOS) }
00024 { with the following modification: }
00025 { As a special exception, the copyright holders of this }
00026 { library give you permission to link this library with }
00027 { independent modules to produce an executable, }
00028 { regardless of the license terms of these independent }
00029 { modules, and to copy and distribute the resulting }
00030 { executable under terms of your choice, provided that }
00031 { you also meet, for each linked independent module, }
00032 { the terms and conditions of the license of that module. }
00033 { An independent module is a module which is not derived }
00034 { from or based on this library. If you modify this }
00035 { library, you may extend this exception to your version }
00036 { of the library, but you are not obligated to do so. }
00037 { If you do not wish to do so, delete this exception }
00038 { statement from your version. }
00039 { }
00040 { }
00041 { The project web site is located on: }
00042 { http:
00043 { http:
00044 { svn:
00045 { }
00046 { http:
00047 { http:
00048 { }
00049 { }
00050 { }
00051 { Zeos Development Group. }
00052 {********************************************************@}
00053
00054 unit ZPlainDb2Driver;
00055
00056 interface
00057
00058 {$I ZPlain.inc}
00059
00060 uses ZClasses, ZCompatibility,
00061 {$IFNDEF UNIX}
00062 Windows,
00063 {$ENDIF}
00064 ZPlainDriver;
00065
00066 const
00067 { generally useful constants }
00068 SQL_MAX_MESSAGE_LENGTH = 1024; { message buffer size }
00069 SQL_MAX_ID_LENGTH = 128; { maximum identifier name size,
00070 e.g. cursor names }
00071
00072 { date/time length constants }
00073 SQL_DATE_LEN = 10;
00074 SQL_TIME_LEN = 8; { add P+1 if precision is nonzero }
00075 SQL_TIMESTAMP_LEN = 19; { add P+1 if precision is nonzero }
00076
00077 { handle type identifiers }
00078 SQL_HANDLE_ENV = 1;
00079 SQL_HANDLE_DBC = 2;
00080 SQL_HANDLE_STMT = 3;
00081 SQL_HANDLE_DESC = 4;
00082
00083 { RETCODE values }
00084 SQL_SUCCESS = 0;
00085 SQL_SUCCESS_WITH_INFO = 1;
00086 SQL_NEED_DATA = 99;
00087 SQL_NO_DATA = 100;
00088 SQL_STILL_EXECUTING = 2;
00089 SQL_ERROR = -1;
00090 SQL_INVALID_HANDLE = -2;
00091
00092 { test for SQL_SUCCESS or SQL_SUCCESS_WITH_INFO }
00093
00094
00095 { SQLFreeStmt option values }
00096 SQL_CLOSE = 0;
00097 SQL_DROP = 1;
00098 SQL_UNBIND = 2;
00099 SQL_RESET_PARAMS = 3;
00100
00101 { SQLTransact option values }
00102 SQL_COMMIT = 0;
00103 SQL_ROLLBACK = 1;
00104
00105 { Standard SQL data types }
00106 SQL_UNKNOWN_TYPE = 0;
00107 SQL_CHAR = 1;
00108 SQL_NUMERIC = 2;
00109 SQL_DECIMAL = 3;
00110 SQL_INTEGER = 4;
00111 SQL_SMALLINT = 5;
00112 SQL_FLOAT = 6;
00113 SQL_REAL = 7;
00114 SQL_DOUBLE = 8;
00115 SQL_DATETIME = 9;
00116 SQL_VARCHAR = 12;
00117 SQL_LONGVARCHAR = (-1);
00118 SQL_WCHAR = (-8);
00119 SQL_WVARCHAR = (-9);
00120 SQL_WLONGVARCHAR = (-10);
00121 SQL_BIGINT = (-5);
00122 SQL_BINARY = (-2);
00123 { One-parameter shortcuts for date/time data types }
00124 SQL_TYPE_DATE = 91;
00125 SQL_TYPE_TIME = 92;
00126 SQL_TYPE_TIMESTAMP = 93;
00127
00128 { Statement attribute values for cursor sensitivity }
00129 SQL_UNSPECIFIED = 0;
00130 SQL_INSENSITIVE = 1;
00131 SQL_SENSITIVE = 2;
00132
00133 { Default conversion code for SQLBindCol(), SQLBindParam() and SQLGetData() }
00134 SQL_DEFAULT = 99;
00135
00136 { SQLGetData() code indicating that the application row descriptor
00137 specifies the data type }
00138 SQL_ARD_TYPE = (-99);
00139
00140 { SQL date/time type subcodes }
00141 SQL_CODE_DATE = 1;
00142 SQL_CODE_TIME = 2;
00143 SQL_CODE_TIMESTAMP = 3;
00144
00145 { SQL extended data types }
00146 SQL_GRAPHIC = -95;
00147 SQL_VARGRAPHIC = -96;
00148 SQL_LONGVARGRAPHIC = -97;
00149 SQL_BLOB = -98;
00150 SQL_CLOB = -99;
00151 SQL_DBCLOB = -350;
00152 SQL_DATALINK = -400;
00153 SQL_USER_DEFINED_TYPE = -450;
00154
00155 { C data type to SQL data type mapping }
00156 SQL_C_DBCHAR = SQL_DBCLOB;
00157 SQL_C_DECIMAL_IBM = SQL_DECIMAL;
00158
00159 SQL_C_PTR = 2463;
00160 SQL_C_DECIMAL_OLEDB = 2514;
00161
00162 { locator type identifier }
00163 SQL_BLOB_LOCATOR = 31;
00164 SQL_CLOB_LOCATOR = 41;
00165 SQL_DBCLOB_LOCATOR = -351;
00166
00167 { C Data Type for the LOB locator types }
00168 SQL_C_BLOB_LOCATOR = SQL_BLOB_LOCATOR;
00169 SQL_C_CLOB_LOCATOR = SQL_CLOB_LOCATOR;
00170 SQL_C_DBCLOB_LOCATOR = SQL_DBCLOB_LOCATOR;
00171
00172 { NULL status defines; these are used in SQLColAttributes, SQLDescribeCol,
00173 to describe the nullability of a column in a table. }
00174
00175 SQL_NO_NULLS = 0;
00176 SQL_NULLABLE = 1;
00177 SQL_NULLABLE_UNKNOWN = 2;
00178
00179 { values of UNNAMED field in descriptor used in SQLColAttribute }
00180 SQL_NAMED = 0;
00181 SQL_UNNAMED = 1;
00182
00183 { values of ALLOC_TYPE field in descriptor }
00184 SQL_DESC_ALLOC_AUTO = 1;
00185 SQL_DESC_ALLOC_USER = 2;
00186
00187 { values of USER_DEFINED_TYPE_CODE }
00188 SQL_TYPE_BASE = 0;
00189 SQL_TYPE_DISTINCT = 1;
00190 SQL_TYPE_STRUCTURED = 2;
00191 SQL_TYPE_REFERENCE = 3;
00192
00193 { Special length values }
00194 SQL_NULL_DATA = -1;
00195 SQL_DATA_AT_EXEC = -2;
00196 SQL_NTS = -3; { NTS = Null Terminated String }
00197 SQL_NTSL = -3; { NTS = Null Terminated String }
00198
00199 { SQLColAttributes defines }
00200 SQL_COLUMN_SCHEMA_NAME = 16;
00201 SQL_COLUMN_CATALOG_NAME = 17;
00202 SQL_COLUMN_DISTINCT_TYPE = 1250;
00203 SQL_DESC_DISTINCT_TYPE = SQL_COLUMN_DISTINCT_TYPE;
00204 SQL_COLUMN_REFERENCE_TYPE = 1251;
00205 SQL_DESC_REFERENCE_TYPE = SQL_COLUMN_REFERENCE_TYPE;
00206 SQL_DESC_STRUCTURED_TYPE = 1252;
00207 SQL_DESC_USER_TYPE = 1253;
00208 SQL_DESC_BASE_TYPE = 1254;
00209 SQL_DESC_KEY_TYPE = 1255;
00210 SQL_DESC_KEY_MEMBER = 1266;
00211
00212 { identifiers of fields in the SQL descriptor }
00213 SQL_DESC_COUNT = 1001;
00214 SQL_DESC_TYPE = 1002;
00215 SQL_DESC_LENGTH = 1003;
00216 SQL_DESC_OCTET_LENGTH_PTR = 1004;
00217 SQL_DESC_PRECISION = 1005;
00218 SQL_DESC_SCALE = 1006;
00219 SQL_DESC_DATETIME_INTERVAL_CODE = 1007;
00220 SQL_DESC_NULLABLE = 1008;
00221 SQL_DESC_INDICATOR_PTR = 1009;
00222 SQL_DESC_DATA_PTR = 1010;
00223 SQL_DESC_NAME = 1011;
00224 SQL_DESC_UNNAMED = 1012;
00225 SQL_DESC_OCTET_LENGTH = 1013;
00226 SQL_DESC_ALLOC_TYPE = 1099;
00227 SQL_DESC_USER_DEFINED_TYPE_CODE = 1098;
00228
00229 { SQLColAttribute defines for SQL_DESC_KEY_TYPE. }
00230 SQL_KEYTYPE_NONE = 0;
00231 SQL_KEYTYPE_PRIMARYKEY = 1;
00232 SQL_KEYTYPE_UNIQUEINDEX = 2;
00233
00234 { SQLColAttribute defines for SQL_COLUMN_UPDATABLE condition }
00235 SQL_UPDT_READONLY = 0;
00236 SQL_UPDT_WRITE = 1;
00237 SQL_UPDT_READWRITE_UNKNOWN = 2;
00238
00239 { SQLColAttribute defines for SQL_COLUMN_SEARCHABLE condition. }
00240 SQL_PRED_NONE = 0;
00241 SQL_PRED_CHAR = 1;
00242 SQL_PRED_BASIC = 2;
00243
00244 { NULL handle defines }
00245 SQL_NULL_HENV = 0;
00246 SQL_NULL_HDBC = 0;
00247 SQL_NULL_HSTMT = 0;
00248 SQL_NULL_HDESC = 0;
00249 SQL_NULL_HANDLE = 0;
00250
00251 { identifiers of fields in the diagnostics area }
00252 SQL_DIAG_RETURNCODE = 1;
00253 SQL_DIAG_NUMBER = 2;
00254 SQL_DIAG_ROW_COUNT = 3;
00255 SQL_DIAG_SQLSTATE = 4;
00256 SQL_DIAG_NATIVE = 5;
00257 SQL_DIAG_MESSAGE_TEXT = 6;
00258 SQL_DIAG_DYNAMIC_FUNCTION = 7;
00259 SQL_DIAG_CLASS_ORIGIN = 8;
00260 SQL_DIAG_SUBCLASS_ORIGIN = 9;
00261 SQL_DIAG_CONNECTION_NAME = 10;
00262 SQL_DIAG_SERVER_NAME = 11;
00263 SQL_DIAG_DYNAMIC_FUNCTION_CODE = 12;
00264
00265 { dynamic function codes }
00266 SQL_DIAG_ALTER_TABLE = 4;
00267 SQL_DIAG_CALL = 7;
00268 SQL_DIAG_CREATE_INDEX = (-1);
00269 SQL_DIAG_CREATE_TABLE = 77;
00270 SQL_DIAG_CREATE_VIEW = 84;
00271 SQL_DIAG_DELETE_WHERE = 19;
00272 SQL_DIAG_DROP_INDEX = (-2);
00273 SQL_DIAG_DROP_TABLE = 32;
00274 SQL_DIAG_DROP_VIEW = 36;
00275 SQL_DIAG_DYNAMIC_DELETE_CURSOR = 38;
00276 SQL_DIAG_DYNAMIC_UPDATE_CURSOR = 81;
00277 SQL_DIAG_GRANT = 48;
00278 SQL_DIAG_INSERT = 50;
00279 SQL_DIAG_REVOKE = 59;
00280 SQL_DIAG_SELECT_CURSOR = 85;
00281 SQL_DIAG_UNKNOWN_STATEMENT = 0;
00282 SQL_DIAG_UPDATE_WHERE = 82;
00283
00284 { IBM specific SQLGetDiagField values. }
00285
00286 SQL_DIAG_DEFERRED_PREPARE_ERROR = 1279;
00287
00288 { SQL_DIAG_ROW_NUMBER values }
00289 SQL_ROW_NO_ROW_NUMBER = (-1);
00290 SQL_ROW_NUMBER_UNKNOWN = (-2);
00291
00292 { SQL_DIAG_COLUMN_NUMBER values }
00293 SQL_COLUMN_NO_COLUMN_NUMBER = (-1);
00294 SQL_COLUMN_NUMBER_UNKNOWN = (-2);
00295
00296 { NEW PARAMETERS }
00297
00298 { Options for SQLGetConnectOption/SQLSetConnectOption extensions }
00299 SQL_WCHARTYPE = 1252;
00300 SQL_LONGDATA_COMPAT = 1253;
00301 SQL_CURRENT_SCHEMA = 1254;
00302 SQL_DB2EXPLAIN = 1258;
00303 SQL_DB2ESTIMATE = 1259;
00304 SQL_PARAMOPT_ATOMIC = 1260;
00305 SQL_STMTTXN_ISOLATION = 1261;
00306 SQL_MAXCONN = 1262;
00307 SQL_ATTR_CLISCHEMA = 1280;
00308 SQL_ATTR_INFO_USERID = 1281;
00309 SQL_ATTR_INFO_WRKSTNNAME = 1282;
00310 SQL_ATTR_INFO_APPLNAME = 1283;
00311 SQL_ATTR_INFO_ACCTSTR = 1284;
00312 SQL_ATTR_AUTOCOMMIT_NOCOMMIT = 2462;
00313 SQL_ATTR_QUERY_PATROLLER = 2466;
00314 SQL_ATTR_CHAINING_BEGIN = 2464;
00315 SQL_ATTR_CHAINING_END = 2465;
00316
00317 SQL_ATTR_WCHARTYPE = SQL_WCHARTYPE;
00318 SQL_ATTR_LONGDATA_COMPAT = SQL_LONGDATA_COMPAT;
00319 SQL_ATTR_CURRENT_SCHEMA = SQL_CURRENT_SCHEMA;
00320 SQL_ATTR_DB2EXPLAIN = SQL_DB2EXPLAIN;
00321 SQL_ATTR_DB2ESTIMATE = SQL_DB2ESTIMATE;
00322 SQL_ATTR_PARAMOPT_ATOMIC = SQL_PARAMOPT_ATOMIC;
00323 SQL_ATTR_STMTTXN_ISOLATION = SQL_STMTTXN_ISOLATION;
00324 SQL_ATTR_MAXCONN = SQL_MAXCONN;
00325
00326 { Options for SQLSetConnectOption, SQLSetEnvAttr }
00327 SQL_CONNECTTYPE = 1255;
00328 SQL_SYNC_POINT = 1256;
00329 SQL_MINMEMORY_USAGE = 1263;
00330 SQL_CONN_CONTEXT = 1269;
00331 SQL_ATTR_INHERIT_NULL_CONNECT = 1270;
00332 SQL_ATTR_FORCE_CONVERSION_ON_CLIENT = 1275;
00333
00334 SQL_ATTR_CONNECTTYPE = SQL_CONNECTTYPE;
00335 SQL_ATTR_SYNC_POINT = SQL_SYNC_POINT;
00336 SQL_ATTR_MINMEMORY_USAGE = SQL_MINMEMORY_USAGE;
00337 SQL_ATTR_CONN_CONTEXT = SQL_CONN_CONTEXT;
00338
00339 { connection attributes }
00340 SQL_ACCESS_MODE = 101;
00341 SQL_AUTOCOMMIT = 102;
00342 SQL_LOGIN_TIMEOUT = 103;
00343 SQL_OPT_TRACE = 104;
00344 SQL_OPT_TRACEFILE = 105;
00345 SQL_TRANSLATE_DLL = 106;
00346 SQL_TRANSLATE_OPTION = 107;
00347 SQL_TXN_ISOLATION = 108;
00348 SQL_CURRENT_QUALIFIER = 109;
00349 SQL_ODBC_CURSORS = 110;
00350 SQL_QUIET_MODE = 111;
00351 SQL_PACKET_SIZE = 112;
00352
00353 { connection attributes with new names }
00354 SQL_ATTR_ACCESS_MODE = SQL_ACCESS_MODE;
00355 SQL_ATTR_AUTOCOMMIT = SQL_AUTOCOMMIT;
00356 SQL_ATTR_CONNECTION_TIMEOUT = 113;
00357 SQL_ATTR_CURRENT_CATALOG = SQL_CURRENT_QUALIFIER;
00358 SQL_ATTR_DISCONNECT_BEHAVIOR = 114;
00359 SQL_ATTR_ENLIST_IN_DTC = 1207;
00360 SQL_ATTR_ENLIST_IN_XA = 1208;
00361 SQL_ATTR_LOGIN_TIMEOUT = SQL_LOGIN_TIMEOUT;
00362 SQL_ATTR_ODBC_CURSORS = SQL_ODBC_CURSORS;
00363 SQL_ATTR_PACKET_SIZE = SQL_PACKET_SIZE;
00364 SQL_ATTR_QUIET_MODE = SQL_QUIET_MODE;
00365 SQL_ATTR_TRACE = SQL_OPT_TRACE;
00366 SQL_ATTR_TRACEFILE = SQL_OPT_TRACEFILE;
00367 SQL_ATTR_TRANSLATE_LIB = SQL_TRANSLATE_DLL;
00368 SQL_ATTR_TRANSLATE_OPTION = SQL_TRANSLATE_OPTION;
00369 SQL_ATTR_TXN_ISOLATION = SQL_TXN_ISOLATION;
00370
00371 { SQL_AUTOCOMMIT options }
00372 SQL_AUTOCOMMIT_OFF = 0;
00373 SQL_AUTOCOMMIT_ON = 1;
00374 SQL_AUTOCOMMIT_DEFAULT = SQL_AUTOCOMMIT_ON;
00375
00376 { SQL_TXN_ISOLATION_OPTION masks }
00377 SQL_TXN_READ_UNCOMMITTED = {$IFNDEF FPC}#00000001{$ELSE}1{$ENDIF};
00378 SQL_TRANSACTION_READ_UNCOMMITTED = SQL_TXN_READ_UNCOMMITTED;
00379 SQL_TXN_READ_COMMITTED = {$IFNDEF FPC}#00000002{$ELSE}2{$ENDIF};
00380 SQL_TRANSACTION_READ_COMMITTED = SQL_TXN_READ_COMMITTED;
00381 SQL_TXN_REPEATABLE_READ = {$IFNDEF FPC}#00000004{$ELSE}4{$ENDIF};
00382 SQL_TRANSACTION_REPEATABLE_READ = SQL_TXN_REPEATABLE_READ;
00383 SQL_TXN_SERIALIZABLE = {$IFNDEF FPC}#00000008{$ELSE}8{$ENDIF};
00384 SQL_TRANSACTION_SERIALIZABLE = SQL_TXN_SERIALIZABLE;
00385 SQL_TXN_NOCOMMIT = {$IFNDEF FPC}#00000020{$ELSE}20{$ENDIF};
00386 SQL_TRANSACTION_NOCOMMIT = SQL_TXN_NOCOMMIT;
00387
00388 { Defines for SQLBindParameter and
00389 SQLProcedureColumns (returned in the result set) }
00390 SQL_PARAM_TYPE_UNKNOWN = 0;
00391 SQL_PARAM_INPUT = 1;
00392 SQL_PARAM_INPUT_OUTPUT = 2;
00393 SQL_RESULT_COL = 3;
00394 SQL_PARAM_OUTPUT = 4;
00395 SQL_RETURN_VALUE = 5;
00396
00397 SQL_MAX_NUMERIC_LEN = 16;
00398 type
00399 { SQL portable types for C }
00400
00401 PSQLCHAR = PChar;
00402
00403
00404 SQLINTEGER = Integer;
00405 PSQLINTEGER = ^SQLINTEGER;
00406 SQLSMALLINT = SmallInt;
00407 PSQLSMALLINT = ^SQLSMALLINT;
00408 SQLDOUBLE = Double;
00409 SQLFLOAT = Double;
00410 SQLREAL = Single;
00411
00412 SQLRETURN = SQLSMALLINT;
00413
00414 SQLUINTEGER = Cardinal;
00415 PSQLUINTEGER = ^SQLUINTEGER;
00416 SQLUSMALLINT = SQLSMALLINT;
00417 PSQLUSMALLINT = ^SQLUSMALLINT;
00418 SQLPOINTER = Pointer;
00419 SQLHANDLE = SQLINTEGER;
00420 PSQLHANDLE = ^SQLHANDLE;
00421 SQLHENV = SQLINTEGER;
00422 PSQLHENV = ^SQLHENV;
00423 SQLHDBC = SQLINTEGER;
00424 PSQLHDBC = ^SQLHDBC;
00425 SQLHSTMT = SQLINTEGER;
00426 PSQLHSTMT = ^SQLHSTMT;
00427 SQLHDESC = SQLHANDLE;
00428
00429 SQLLEN = SQLUINTEGER;
00430 SQLULEN = SQLUINTEGER;
00431 SQLSETPOSIROW = SQLUSMALLINT;
00432 {$IFNDEF UNIX}
00433 SQLHWND = HWnd;
00434 {$ELSE}
00435 SQLHWND = SQLPOINTER;
00436 {$ENDIF}
00437
00438 SQLBIGINT = packed record
00439 dwLowWord: SQLUINTEGER;
00440 dwHighWord: SQLINTEGER
00441 end;
00442 PSQLBIGINT = ^SQLBIGINT;
00443
00444 SQLUBIGINT = packed record
00445 dwLowWord: SQLUINTEGER;
00446 dwHighWord: SQLUINTEGER
00447 end;
00448 PSQLUBIGINT = ^SQLUBIGINT;
00449
00450 SQL_DATE_STRUCT = packed record
00451 year: SQLSMALLINT;
00452 month: SQLUSMALLINT;
00453 day: SQLUSMALLINT;
00454 end;
00455 PSQL_DATE_STRUCT = ^SQL_DATE_STRUCT;
00456
00457 SQL_TIME_STRUCT = packed record
00458 hour: SQLUSMALLINT;
00459 minute: SQLUSMALLINT;
00460 second: SQLUSMALLINT;
00461 end;
00462 PSQL_TIME_STRUCT = ^SQL_TIME_STRUCT;
00463
00464 SQL_TIMESTAMP_STRUCT = packed record
00465 year: SQLSMALLINT;
00466 month: SQLUSMALLINT;
00467 day: SQLUSMALLINT;
00468 hour: SQLUSMALLINT;
00469 minute: SQLUSMALLINT;
00470 second: SQLUSMALLINT;
00471 fraction: SQLUINTEGER; { fraction of a second }
00472 end;
00473 PSQL_TIMESTAMP_STRUCT = ^SQL_TIMESTAMP_STRUCT;
00474
00475 SQL_YEAR_MONTH_STRUCT = packed record
00476 year: SQLUINTEGER;
00477 month: SQLUINTEGER;
00478 end;
00479 PSQL_YEAR_MONTH_STRUCT= ^SQL_YEAR_MONTH_STRUCT;
00480
00481 SQL_DAY_SECOND_STRUCT = packed record
00482 day: SQLUINTEGER;
00483 hour: SQLUINTEGER;
00484 minute: SQLUINTEGER;
00485 second: SQLUINTEGER;
00486 fraction: SQLUINTEGER;
00487 end;
00488 PSQL_DAY_SECOND_STRUCT = ^SQL_DAY_SECOND_STRUCT;
00489
00490 SQLINTERVAL = (SQL_IS_YEAR, SQL_IS_MONTH, SQL_IS_DAY, SQL_IS_HOUR,
00491 SQL_IS_MINUTE, SQL_IS_SECOND, SQL_IS_YEAR_TO_MONTH, SQL_IS_DAY_TO_HOUR,
00492 SQL_IS_DAY_TO_MINUTE, SQL_IS_DAY_TO_SECOND, SQL_IS_HOUR_TO_MINUTE,
00493 SQL_IS_HOUR_TO_SECOND, SQL_IS_MINUTE_TO_SECOND);
00494
00495 SQL_INTERVAL_STRUCT = record
00496 interval_type: SQLINTERVAL;
00497 interval_sign: SQLSMALLINT;
00498 year_month: SQL_YEAR_MONTH_STRUCT;
00499 day_second: SQL_DAY_SECOND_STRUCT;
00500 end;
00501 PSQL_INTERVAL_STRUCT = ^SQL_INTERVAL_STRUCT;
00502
00503 SQL_NUMERIC_STRUCT = packed record
00504 precision: Byte;
00505 scale: Byte;
00506 sign: Byte; { 1 if positive, 0 if negative }
00507 val: array[0..SQL_MAX_NUMERIC_LEN-1] of Char;
00508 end;
00509 PSQL_NUMERIC_STRUCT = SQL_NUMERIC_STRUCT;
00510
00511 {************** Plain API Function types definition *************}
00512
00513 {** Represents a generic interface to DB2 native API. }
00514 IZDb2PlainDriver = interface (IZPlainDriver)
00515 ['{57AA5614-800C-4543-B5E4-66FE0E12006A}']
00516 function SQLAllocConnect(henv: SQLHENV; phdbc: PSQLHDBC): SQLRETURN; stdcall;
00517 function SQLAllocEnv(phenv: PSQLHENV): SQLRETURN; stdcall;
00518 function SQLAllocStmt(hdbc: SQLHDBC; phstmt: PSQLHSTMT): SQLRETURN; stdcall;
00519 function SQLAllocHandle(fHandleType: SQLSMALLINT; hInput: SQLHANDLE;
00520 phOutput: PSQLHANDLE): SQLRETURN; stdcall;
00521 function SQLBindCol(hstmt: SQLHSTMT; icol: SQLUSMALLINT;
00522 fCType: SQLSMALLINT; rgbValue: SQLPOINTER; cbValueMax: SQLINTEGER;
00523 pcbValue: PSQLINTEGER): SQLRETURN; stdcall;
00524 function SQLCancel(hstmt: SQLHSTMT): SQLRETURN; stdcall;
00525 function SQLColAttribute(hstmt: SQLHSTMT; icol: SQLUSMALLINT;
00526 fDescType: SQLUSMALLINT; rgbDesc: SQLPOINTER; cbDescMax: SQLSMALLINT;
00527 pcbDesc: PSQLSMALLINT; pfDesc: SQLPOINTER): SQLRETURN; stdcall;
00528 function SQLConnect(hdbc: SQLHDBC; szDSN: PSQLCHAR; cbDSN: SQLSMALLINT;
00529 szUID: PSQLCHAR; cbUID: SQLSMALLINT; szAuthStr: PSQLCHAR;
00530 cbAuthStr: SQLSMALLINT): SQLRETURN; stdcall;
00531 function SQLDescribeCol(hstmt: SQLHSTMT; icol: SQLUSMALLINT;
00532 szColName: PSQLCHAR; cbColNameMax: SQLSMALLINT; pcbColName: PSQLSMALLINT;
00533 pfSqlType: PSQLSMALLINT; pcbColDef: PSQLUINTEGER; pibScale: PSQLSMALLINT;
00534 pfNullable: PSQLSMALLINT): SQLRETURN; stdcall;
00535 function SQLDisconnect(hdbc: SQLHDBC): SQLRETURN; stdcall;
00536 function SQLError(henv: SQLHENV; hdbc: SQLHDBC; hstmt: SQLHSTMT;
00537 szSqlState: PSQLCHAR; pfNativeError: PSQLINTEGER; szErrorMsg: PSQLCHAR;
00538 cbErrorMsgMax: SQLSMALLINT; pcbErrorMsg: PSQLSMALLINT): SQLRETURN; stdcall;
00539 function SQLExecDirect(hstmt: SQLHSTMT; szSqlStr: PSQLCHAR;
00540 cbSqlStr: SQLINTEGER): SQLRETURN; stdcall;
00541 function SQLExecute(hstmt: SQLHSTMT): SQLRETURN; stdcall;
00542 function SQLFetch(hstmt: SQLHSTMT): SQLRETURN; stdcall;
00543 function SQLFreeConnect(hdbc: SQLHDBC): SQLRETURN; stdcall;
00544 function SQLFreeEnv(henv: SQLHENV): SQLRETURN; stdcall;
00545 function SQLFreeStmt(hstmt: SQLHSTMT; fOption: SQLUSMALLINT): SQLRETURN; stdcall;
00546 function SQLCloseCursor(hStmt: SQLHSTMT): SQLRETURN; stdcall;
00547 function SQLGetCursorName(hstmt: SQLHSTMT; szCursor: PSQLCHAR;
00548 cbCursorMax: SQLSMALLINT; pcbCursor: PSQLSMALLINT): SQLRETURN; stdcall;
00549 function SQLGetData(hstmt: SQLHSTMT; icol: SQLUSMALLINT;
00550 fCType: SQLSMALLINT; rgbValue: SQLPOINTER; cbValueMax: SQLINTEGER;
00551 pcbValue: PSQLINTEGER): SQLRETURN; stdcall;
00552 function SQLNumResultCols(hstmt: SQLHSTMT; pccol: PSQLSMALLINT): SQLRETURN; stdcall;
00553 function SQLPrepare(hstmt: SQLHSTMT; szSqlStr: PSQLCHAR;
00554 cbSqlStr: SQLINTEGER): SQLRETURN; stdcall;
00555 function SQLRowCount(hstmt: SQLHSTMT; pcrow: PSQLINTEGER): SQLRETURN; stdcall;
00556 function SQLSetCursorName(hstmt: SQLHSTMT; szCursor: PSQLCHAR;
00557 cbCursor: SQLSMALLINT): SQLRETURN; stdcall;
00558 function SQLSetParam(hstmt: SQLHSTMT; ipar: SQLUSMALLINT;
00559 fCType: SQLSMALLINT; fSqlType: SQLSMALLINT; cbParamDef: SQLUINTEGER;
00560 ibScale: SQLSMALLINT; rgbValue: SQLPOINTER; pcbValue: PSQLINTEGER):
00561 SQLRETURN; stdcall;
00562 function SQLTransact(henv: SQLHENV; hdbc: SQLHDBC; fType: SQLUSMALLINT):
00563 SQLRETURN; stdcall;
00564 function SQLEndTran(fHandleType: SQLSMALLINT; hHandle: SQLHANDLE;
00565 fType: SQLSMALLINT): SQLRETURN; stdcall;
00566 function SQLFreeHandle(fHandleType: SQLSMALLINT; hHandle: SQLHANDLE):
00567 SQLRETURN; stdcall;
00568 function SQLGetDiagRec(fHandleType: SQLSMALLINT; hHandle: SQLHANDLE;
00569 iRecNumber: SQLSMALLINT; pszSqlState: PSQLCHAR; pfNativeError: PSQLINTEGER;
00570 pszErrorMsg: PSQLCHAR; cbErrorMsgMax: SQLSMALLINT;
00571 pcbErrorMsg: PSQLSMALLINT): SQLRETURN; stdcall;
00572 function SQLGetDiagField(fHandleType: SQLSMALLINT; hHandle: SQLHANDLE;
00573 iRecNumber: SQLSMALLINT; fDiagIdentifier: SQLSMALLINT; pDiagInfo: SQLPOINTER;
00574 cbDiagInfoMax: SQLSMALLINT; pcbDiagInfo: PSQLSMALLINT): SQLRETURN; stdcall;
00575 function SQLCopyDesc(hDescSource: SQLHDESC; hDescTarget: SQLHDESC):
00576 SQLRETURN; stdcall;
00577 function SQLGetDescField(DescriptorHandle: SQLHDESC;
00578 RecNumber: SQLSMALLINT; FieldIdentifier: SQLSMALLINT; Value: SQLPOINTER;
00579 BufferLength: SQLINTEGER; StringLength: PSQLINTEGER): SQLRETURN; stdcall;
00580 function SQLGetDescRec(DescriptorHandle: SQLHDESC; RecNumber: SQLSMALLINT;
00581 Name: PSQLCHAR; BufferLength: SQLSMALLINT; StringLength: PSQLSMALLINT;
00582 _Type: PSQLSMALLINT; SubType: PSQLSMALLINT; Length: PSQLINTEGER;
00583 Precision: PSQLSMALLINT; Scale: PSQLSMALLINT; Nullable: PSQLSMALLINT):
00584 SQLRETURN; stdcall;
00585 function SQLSetDescField(DescriptorHandle: SQLHDESC; RecNumber: SQLSMALLINT;
00586 FieldIdentifier: SQLSMALLINT; Value: SQLPOINTER; BufferLength: SQLINTEGER):
00587 SQLRETURN; stdcall;
00588 function SQLSetDescRec(DescriptorHandle: SQLHDESC; RecNumber: SQLSMALLINT;
00589 _Type: SQLSMALLINT; SubType: SQLSMALLINT; Length: SQLINTEGER;
00590 Precision: SQLSMALLINT; Scale: SQLSMALLINT; Data: SQLPOINTER;
00591 StringLength: PSQLINTEGER; Indicator: PSQLINTEGER): SQLRETURN; stdcall;
00592 { new functions }
00593 function SQLSetConnectAttr(hdbc: SQLHDBC; fOption: SQLINTEGER;
00594 pvParam: SQLPOINTER; fStrLen: SQLINTEGER): SQLRETURN; stdcall;
00595 function SQLSetConnectOption(hdbc: SQLHDBC; fOption: SQLUSMALLINT;
00596 vParam: SQLUINTEGER): SQLRETURN; stdcall;
00597 function SQLSetStmtAttr(hstmt: SQLHSTMT; fOption: SQLINTEGER;
00598 pvParam: SQLPOINTER; fStrLen: SQLINTEGER): SQLRETURN; stdcall;
00599 function SQLSetStmtOption(hstmt: SQLHSTMT; fOption: SQLUSMALLINT;
00600 vParam: SQLUINTEGER): SQLRETURN; stdcall;
00601 function SQLGetSubString(hstmt: SQLHSTMT; LocatorCType: SQLSMALLINT;
00602 SourceLocator: SQLINTEGER; FromPosition: SQLUINTEGER;
00603 ForLength: SQLUINTEGER; TargetCType: SQLSMALLINT; rgbValue: SQLPOINTER;
00604 cbValueMax: SQLINTEGER; StringLength: PSQLINTEGER;
00605 IndicatorValue: PSQLINTEGER): SQLRETURN; stdcall;
00606 function SQLGetLength(hstmt: SQLHSTMT; LocatorCType: SQLSMALLINT;
00607 Locator: SQLINTEGER; StringLength: PSQLINTEGER;
00608 IndicatorValue: PSQLINTEGER): SQLRETURN; stdcall;
00609 function SQLGetPosition(hstmt: SQLHSTMT; LocatorCType: SQLSMALLINT;
00610 SourceLocator: SQLINTEGER; SearchLocator: SQLINTEGER; SearchLiteral: PSQLCHAR;
00611 SearchLiteralLength: SQLINTEGER; FromPosition: SQLUINTEGER;
00612 LocatedAt: PSQLUINTEGER; IndicatorValue: PSQLINTEGER): SQLRETURN; stdcall;
00613 function SQLBindParameter(hstmt: SQLHSTMT; ipar: SQLUSMALLINT;
00614 fParamType: SQLSMALLINT; fCType: SQLSMALLINT; fSqlType: SQLSMALLINT;
00615 cbColDef: SQLUINTEGER; ibScale: SQLSMALLINT; rgbValue: SQLPOINTER;
00616 cbValueMax: SQLINTEGER; pcbValue: PSQLINTEGER): SQLRETURN; stdcall;
00617 function SQLParamData(hstmt: SQLHSTMT; prgbValue: SQLPOINTER): SQLRETURN; stdcall;
00618 function SQLPutData(hstmt: SQLHSTMT; rgbValue: SQLPOINTER;
00619 cbValue: SQLINTEGER): SQLRETURN; stdcall;
00620 { new1 functions }
00621 function SQLColumns(hstmt: SQLHSTMT; szCatalogName: PSQLCHAR;
00622 cbCatalogName: SQLSMALLINT; szSchemaName: PSQLCHAR; cbSchemaName: SQLSMALLINT;
00623 szTableName: PSQLCHAR; cbTableName: SQLSMALLINT; szColumnName: PSQLCHAR;
00624 cbColumnName: SQLSMALLINT): SQLRETURN; stdcall;
00625 function SQLDataSources(henv: SQLHENV; fDirection: SQLUSMALLINT; szDSN: PSQLCHAR;
00626 cbDSNMax: SQLSMALLINT; pcbDSN: PSQLSMALLINT; szDescription: PSQLCHAR;
00627 cbDescriptionMax: SQLSMALLINT; pcbDescription: PSQLSMALLINT): SQLRETURN; stdcall;
00628 function SQLFetchScroll(StatementHandle: SQLHSTMT;
00629 FetchOrientation: SQLSMALLINT; FetchOffset: SQLLEN): SQLRETURN; stdcall;
00630 function SQLGetFunctions(hdbc: SQLHDBC; fFunction: SQLUSMALLINT;
00631 pfExists: PSQLUSMALLINT): SQLRETURN; stdcall;
00632 function SQLGetInfo(hdbc: SQLHDBC; fInfoType: SQLUSMALLINT;
00633 rgbInfoValue: SQLPOINTER; cbInfoValueMax: SQLSMALLINT;
00634 pcbInfoValue: PSQLSMALLINT): SQLRETURN; stdcall;
00635 function SQLGetStmtAttr(StatementHandle: SQLHSTMT; Attribute: SQLINTEGER;
00636 Value: SQLPOINTER; BufferLength: SQLINTEGER;
00637 StringLength: SQLINTEGER): SQLRETURN; stdcall;
00638 function SQLGetStmtOption(hstmt: SQLHSTMT; fOption: SQLUSMALLINT;
00639 pvParam: SQLPOINTER): SQLRETURN; stdcall;
00640 function SQLGetTypeInfo(hstmt: SQLHSTMT; fSqlType: SQLSMALLINT): SQLRETURN; stdcall;
00641 function SQLSpecialColumns(hstmt: SQLHSTMT; fColType: SQLUSMALLINT;
00642 szCatalogName: PSQLCHAR; cbCatalogName: SQLUSMALLINT;
00643 szSchemaName: PSQLCHAR; cbSchemaName: SQLUSMALLINT; szTableName: PSQLCHAR;
00644 cbTableName: SQLUSMALLINT; fScope: SQLUSMALLINT;
00645 fNullable: SQLUSMALLINT): SQLRETURN; stdcall;
00646 function SQLStatistics(hstmt: SQLHSTMT; szCatalogName: PSQLCHAR;
00647 cbCatalogName: SQLSMALLINT; szSchemaName: PSQLCHAR;
00648 cbSchemaName: SQLSMALLINT; szTableName: PSQLCHAR; cbTableName: SQLSMALLINT;
00649 fUnique: SQLUSMALLINT; fAccuracy: SQLUSMALLINT): SQLRETURN; stdcall;
00650 function SQLTables(hstmt: SQLHSTMT; szCatalogName: PSQLCHAR;
00651 cbCatalogName: SQLSMALLINT; szSchemaName: PSQLCHAR;
00652 cbSchemaName: SQLSMALLINT; szTableName: PSQLCHAR; cbTableName: SQLSMALLINT;
00653 szTableType: SQLSMALLINT; cbTableType: SQLSMALLINT): SQLRETURN; stdcall;
00654 function SQLNextResult(hstmtSource: SQLHSTMT;
00655 hstmtTarget: SQLHSTMT): SQLRETURN; stdcall;
00656 end;
00657
00658 {** Represents class to DB2 native API. }
00659 TZDb2PlainDriver = class(TZAbstractObject, IZPlainDriver, IZDb2PlainDriver)
00660 public
00661 constructor Create;
00662
00663 function GetProtocol: string;
00664 function GetDescription: string;
00665 procedure Initialize;
00666
00667 function SQLAllocConnect(henv: SQLHENV; phdbc: PSQLHDBC): SQLRETURN; stdcall;
00668 function SQLAllocEnv(phenv: PSQLHENV): SQLRETURN; stdcall;
00669 function SQLAllocStmt(hdbc: SQLHDBC; phstmt: PSQLHSTMT): SQLRETURN; stdcall;
00670 function SQLAllocHandle(fHandleType: SQLSMALLINT; hInput: SQLHANDLE;
00671 phOutput: PSQLHANDLE): SQLRETURN; stdcall;
00672 function SQLBindCol(hstmt: SQLHSTMT; icol: SQLUSMALLINT;
00673 fCType: SQLSMALLINT; rgbValue: SQLPOINTER; cbValueMax: SQLINTEGER;
00674 pcbValue: PSQLINTEGER): SQLRETURN; stdcall;
00675 function SQLCancel(hstmt: SQLHSTMT): SQLRETURN; stdcall;
00676 function SQLColAttribute(hstmt: SQLHSTMT; icol: SQLUSMALLINT;
00677 fDescType: SQLUSMALLINT; rgbDesc: SQLPOINTER; cbDescMax: SQLSMALLINT;
00678 pcbDesc: PSQLSMALLINT; pfDesc: SQLPOINTER): SQLRETURN; stdcall;
00679 function SQLConnect(hdbc: SQLHDBC; szDSN: PSQLCHAR; cbDSN: SQLSMALLINT;
00680 szUID: PSQLCHAR; cbUID: SQLSMALLINT; szAuthStr: PSQLCHAR;
00681 cbAuthStr: SQLSMALLINT): SQLRETURN; stdcall;
00682 function SQLDescribeCol(hstmt: SQLHSTMT; icol: SQLUSMALLINT;
00683 szColName: PSQLCHAR; cbColNameMax: SQLSMALLINT; pcbColName: PSQLSMALLINT;
00684 pfSqlType: PSQLSMALLINT; pcbColDef: PSQLUINTEGER; pibScale: PSQLSMALLINT;
00685 pfNullable: PSQLSMALLINT): SQLRETURN; stdcall;
00686 function SQLDisconnect(hdbc: SQLHDBC): SQLRETURN; stdcall;
00687 function SQLError(henv: SQLHENV; hdbc: SQLHDBC; hstmt: SQLHSTMT;
00688 szSqlState: PSQLCHAR; pfNativeError: PSQLINTEGER; szErrorMsg: PSQLCHAR;
00689 cbErrorMsgMax: SQLSMALLINT; pcbErrorMsg: PSQLSMALLINT): SQLRETURN; stdcall;
00690 function SQLExecDirect(hstmt: SQLHSTMT; szSqlStr: PSQLCHAR;
00691 cbSqlStr: SQLINTEGER): SQLRETURN; stdcall;
00692 function SQLExecute(hstmt: SQLHSTMT): SQLRETURN; stdcall;
00693 function SQLFetch(hstmt: SQLHSTMT): SQLRETURN; stdcall;
00694 function SQLFreeConnect(hdbc: SQLHDBC): SQLRETURN; stdcall;
00695 function SQLFreeEnv(henv: SQLHENV): SQLRETURN; stdcall;
00696 function SQLFreeStmt(hstmt: SQLHSTMT; fOption: SQLUSMALLINT): SQLRETURN; stdcall;
00697 function SQLCloseCursor(hStmt: SQLHSTMT): SQLRETURN; stdcall;
00698 function SQLGetCursorName(hstmt: SQLHSTMT; szCursor: PSQLCHAR;
00699 cbCursorMax: SQLSMALLINT; pcbCursor: PSQLSMALLINT): SQLRETURN; stdcall;
00700 function SQLGetData(hstmt: SQLHSTMT; icol: SQLUSMALLINT;
00701 fCType: SQLSMALLINT; rgbValue: SQLPOINTER; cbValueMax: SQLINTEGER;
00702 pcbValue: PSQLINTEGER): SQLRETURN; stdcall;
00703 function SQLNumResultCols(hstmt: SQLHSTMT; pccol: PSQLSMALLINT): SQLRETURN; stdcall;
00704 function SQLPrepare(hstmt: SQLHSTMT; szSqlStr: PSQLCHAR;
00705 cbSqlStr: SQLINTEGER): SQLRETURN; stdcall;
00706 function SQLRowCount(hstmt: SQLHSTMT; pcrow: PSQLINTEGER): SQLRETURN; stdcall;
00707 function SQLSetCursorName(hstmt: SQLHSTMT; szCursor: PSQLCHAR;
00708 cbCursor: SQLSMALLINT): SQLRETURN; stdcall;
00709 function SQLSetParam(hstmt: SQLHSTMT; ipar: SQLUSMALLINT;
00710 fCType: SQLSMALLINT; fSqlType: SQLSMALLINT; cbParamDef: SQLUINTEGER;
00711 ibScale: SQLSMALLINT; rgbValue: SQLPOINTER; pcbValue: PSQLINTEGER):
00712 SQLRETURN; stdcall;
00713 function SQLTransact(henv: SQLHENV; hdbc: SQLHDBC; fType: SQLUSMALLINT):
00714 SQLRETURN; stdcall;
00715 function SQLEndTran(fHandleType: SQLSMALLINT; hHandle: SQLHANDLE;
00716 fType: SQLSMALLINT): SQLRETURN; stdcall;
00717 function SQLFreeHandle(fHandleType: SQLSMALLINT; hHandle: SQLHANDLE):
00718 SQLRETURN; stdcall;
00719 function SQLGetDiagRec(fHandleType: SQLSMALLINT; hHandle: SQLHANDLE;
00720 iRecNumber: SQLSMALLINT; pszSqlState: PSQLCHAR; pfNativeError: PSQLINTEGER;
00721 pszErrorMsg: PSQLCHAR; cbErrorMsgMax: SQLSMALLINT;
00722 pcbErrorMsg: PSQLSMALLINT): SQLRETURN; stdcall;
00723 function SQLGetDiagField(fHandleType: SQLSMALLINT; hHandle: SQLHANDLE;
00724 iRecNumber: SQLSMALLINT; fDiagIdentifier: SQLSMALLINT; pDiagInfo: SQLPOINTER;
00725 cbDiagInfoMax: SQLSMALLINT; pcbDiagInfo: PSQLSMALLINT): SQLRETURN; stdcall;
00726 function SQLCopyDesc(hDescSource: SQLHDESC; hDescTarget: SQLHDESC):
00727 SQLRETURN; stdcall;
00728 function SQLGetDescField(DescriptorHandle: SQLHDESC;
00729 RecNumber: SQLSMALLINT; FieldIdentifier: SQLSMALLINT; Value: SQLPOINTER;
00730 BufferLength: SQLINTEGER; StringLength: PSQLINTEGER): SQLRETURN; stdcall;
00731 function SQLGetDescRec(DescriptorHandle: SQLHDESC; RecNumber: SQLSMALLINT;
00732 Name: PSQLCHAR; BufferLength: SQLSMALLINT; StringLength: PSQLSMALLINT;
00733 _Type: PSQLSMALLINT; SubType: PSQLSMALLINT; Length: PSQLINTEGER;
00734 Precision: PSQLSMALLINT; Scale: PSQLSMALLINT; Nullable: PSQLSMALLINT):
00735 SQLRETURN; stdcall;
00736 function SQLSetDescField(DescriptorHandle: SQLHDESC; RecNumber: SQLSMALLINT;
00737 FieldIdentifier: SQLSMALLINT; Value: SQLPOINTER; BufferLength: SQLINTEGER):
00738 SQLRETURN; stdcall;
00739 function SQLSetDescRec(DescriptorHandle: SQLHDESC; RecNumber: SQLSMALLINT;
00740 _Type: SQLSMALLINT; SubType: SQLSMALLINT; Length: SQLINTEGER;
00741 Precision: SQLSMALLINT; Scale: SQLSMALLINT; Data: SQLPOINTER;
00742 StringLength: PSQLINTEGER; Indicator: PSQLINTEGER): SQLRETURN; stdcall;
00743 { new functions }
00744 function SQLSetConnectAttr(hdbc: SQLHDBC; fOption: SQLINTEGER;
00745 pvParam: SQLPOINTER; fStrLen: SQLINTEGER): SQLRETURN; stdcall;
00746 function SQLSetConnectOption(hdbc: SQLHDBC; fOption: SQLUSMALLINT;
00747 vParam: SQLUINTEGER): SQLRETURN; stdcall;
00748 function SQLSetStmtAttr(hstmt: SQLHSTMT; fOption: SQLINTEGER;
00749 pvParam: SQLPOINTER; fStrLen: SQLINTEGER): SQLRETURN; stdcall;
00750 function SQLSetStmtOption(hstmt: SQLHSTMT; fOption: SQLUSMALLINT;
00751 vParam: SQLUINTEGER): SQLRETURN; stdcall;
00752 function SQLGetSubString(hstmt: SQLHSTMT; LocatorCType: SQLSMALLINT;
00753 SourceLocator: SQLINTEGER; FromPosition: SQLUINTEGER;
00754 ForLength: SQLUINTEGER; TargetCType: SQLSMALLINT; rgbValue: SQLPOINTER;
00755 cbValueMax: SQLINTEGER; StringLength: PSQLINTEGER;
00756 IndicatorValue: PSQLINTEGER): SQLRETURN; stdcall;
00757 function SQLGetLength(hstmt: SQLHSTMT; LocatorCType: SQLSMALLINT;
00758 Locator: SQLINTEGER; StringLength: PSQLINTEGER;
00759 IndicatorValue: PSQLINTEGER): SQLRETURN; stdcall;
00760 function SQLGetPosition(hstmt: SQLHSTMT; LocatorCType: SQLSMALLINT;
00761 SourceLocator: SQLINTEGER; SearchLocator: SQLINTEGER; SearchLiteral: PSQLCHAR;
00762 SearchLiteralLength: SQLINTEGER; FromPosition: SQLUINTEGER;
00763 LocatedAt: PSQLUINTEGER; IndicatorValue: PSQLINTEGER): SQLRETURN; stdcall;
00764 function SQLBindParameter(hstmt: SQLHSTMT; ipar: SQLUSMALLINT;
00765 fParamType: SQLSMALLINT; fCType: SQLSMALLINT; fSqlType: SQLSMALLINT;
00766 cbColDef: SQLUINTEGER; ibScale: SQLSMALLINT; rgbValue: SQLPOINTER;
00767 cbValueMax: SQLINTEGER; pcbValue: PSQLINTEGER): SQLRETURN; stdcall;
00768 function SQLParamData(hstmt: SQLHSTMT; prgbValue: SQLPOINTER): SQLRETURN; stdcall;
00769 function SQLPutData(hstmt: SQLHSTMT; rgbValue: SQLPOINTER;
00770 cbValue: SQLINTEGER): SQLRETURN; stdcall;
00771 { new1 functions }
00772 function SQLColumns(hstmt: SQLHSTMT; szCatalogName: PSQLCHAR;
00773 cbCatalogName: SQLSMALLINT; szSchemaName: PSQLCHAR; cbSchemaName: SQLSMALLINT;
00774 szTableName: PSQLCHAR; cbTableName: SQLSMALLINT; szColumnName: PSQLCHAR;
00775 cbColumnName: SQLSMALLINT): SQLRETURN; stdcall;
00776 function SQLDataSources(henv: SQLHENV; fDirection: SQLUSMALLINT; szDSN: PSQLCHAR;
00777 cbDSNMax: SQLSMALLINT; pcbDSN: PSQLSMALLINT; szDescription: PSQLCHAR;
00778 cbDescriptionMax: SQLSMALLINT; pcbDescription: PSQLSMALLINT): SQLRETURN; stdcall;
00779 function SQLFetchScroll(StatementHandle: SQLHSTMT;
00780 FetchOrientation: SQLSMALLINT; FetchOffset: SQLLEN): SQLRETURN; stdcall;
00781 function SQLGetFunctions(hdbc: SQLHDBC; fFunction: SQLUSMALLINT;
00782 pfExists: PSQLUSMALLINT): SQLRETURN; stdcall;
00783 function SQLGetInfo(hdbc: SQLHDBC; fInfoType: SQLUSMALLINT;
00784 rgbInfoValue: SQLPOINTER; cbInfoValueMax: SQLSMALLINT;
00785 pcbInfoValue: PSQLSMALLINT): SQLRETURN; stdcall;
00786 function SQLGetStmtAttr(StatementHandle: SQLHSTMT; Attribute: SQLINTEGER;
00787 Value: SQLPOINTER; BufferLength: SQLINTEGER;
00788 StringLength: SQLINTEGER): SQLRETURN; stdcall;
00789 function SQLGetStmtOption(hstmt: SQLHSTMT; fOption: SQLUSMALLINT;
00790 pvParam: SQLPOINTER): SQLRETURN; stdcall;
00791 function SQLGetTypeInfo(hstmt: SQLHSTMT; fSqlType: SQLSMALLINT): SQLRETURN; stdcall;
00792 function SQLSpecialColumns(hstmt: SQLHSTMT; fColType: SQLUSMALLINT;
00793 szCatalogName: PSQLCHAR; cbCatalogName: SQLUSMALLINT;
00794 szSchemaName: PSQLCHAR; cbSchemaName: SQLUSMALLINT; szTableName: PSQLCHAR;
00795 cbTableName: SQLUSMALLINT; fScope: SQLUSMALLINT;
00796 fNullable: SQLUSMALLINT): SQLRETURN; stdcall;
00797 function SQLStatistics(hstmt: SQLHSTMT; szCatalogName: PSQLCHAR;
00798 cbCatalogName: SQLSMALLINT; szSchemaName: PSQLCHAR;
00799 cbSchemaName: SQLSMALLINT; szTableName: PSQLCHAR; cbTableName: SQLSMALLINT;
00800 fUnique: SQLUSMALLINT; fAccuracy: SQLUSMALLINT): SQLRETURN; stdcall;
00801 function SQLTables(hstmt: SQLHSTMT; szCatalogName: PSQLCHAR;
00802 cbCatalogName: SQLSMALLINT; szSchemaName: PSQLCHAR;
00803 cbSchemaName: SQLSMALLINT; szTableName: PSQLCHAR; cbTableName: SQLSMALLINT;
00804 szTableType: SQLSMALLINT; cbTableType: SQLSMALLINT): SQLRETURN; stdcall;
00805 function SQLNextResult(hstmtSource: SQLHSTMT;
00806 hstmtTarget: SQLHSTMT): SQLRETURN; stdcall;
00807 end;
00808
00809 implementation
00810
00811 uses SysUtils, ZPlainDb2;
00812
00813 { TZDb2PlainDriver }
00814
00815 constructor TZDb2PlainDriver.Create;
00816 begin
00817
00818 end;
00819
00820 function TZDb2PlainDriver.GetDescription: string;
00821 begin
00822 Result := 'Native Plain Driver for IBM DB2';
00823 end;
00824
00825 function TZDb2PlainDriver.GetProtocol: string;
00826 begin
00827 Result := 'db2';
00828 end;
00829
00830 procedure TZDb2PlainDriver.Initialize;
00831 begin
00832 ZPlainDb2.LibraryLoader.LoadIfNeeded;
00833 end;
00834
00835 function TZDb2PlainDriver.SQLAllocConnect(henv: SQLHENV;
00836 phdbc: PSQLHDBC): SQLRETURN;
00837 begin
00838 Result := ZPlainDb2.SQLAllocConnect(henv, phdbc);
00839 end;
00840
00841 function TZDb2PlainDriver.SQLAllocEnv(phenv: PSQLHENV): SQLRETURN;
00842 begin
00843 Result := ZPlainDb2.SQLAllocEnv(phenv);
00844 end;
00845
00846 function TZDb2PlainDriver.SQLAllocHandle(fHandleType: SQLSMALLINT;
00847 hInput: SQLHANDLE; phOutput: PSQLHANDLE): SQLRETURN;
00848 begin
00849 Result := ZPlainDb2.SQLAllocHandle(fHandleType, hInput, phOutput);
00850 end;
00851
00852 function TZDb2PlainDriver.SQLAllocStmt(hdbc: SQLHDBC;
00853 phstmt: PSQLHSTMT): SQLRETURN;
00854 begin
00855 Result := ZPlainDb2.SQLAllocStmt(hdbc, phstmt);
00856 end;
00857
00858 function TZDb2PlainDriver.SQLBindCol(hstmt: SQLHSTMT; icol: SQLUSMALLINT;
00859 fCType: SQLSMALLINT; rgbValue: SQLPOINTER; cbValueMax: SQLINTEGER;
00860 pcbValue: PSQLINTEGER): SQLRETURN;
00861 begin
00862 Result := ZPlainDb2.SQLBindCol(hstmt, icol, fCType, rgbValue, cbValueMax,
00863 pcbValue);
00864 end;
00865
00866 function TZDb2PlainDriver.SQLBindParameter(hstmt: SQLHSTMT;
00867 ipar: SQLUSMALLINT; fParamType, fCType, fSqlType: SQLSMALLINT;
00868 cbColDef: SQLUINTEGER; ibScale: SQLSMALLINT; rgbValue: SQLPOINTER;
00869 cbValueMax: SQLINTEGER; pcbValue: PSQLINTEGER): SQLRETURN;
00870 begin
00871 Result := ZPlainDb2.SQLBindParameter(hstmt, ipar, fParamType, fCType, fSqlType,
00872 cbColDef, ibScale, rgbValue, cbValueMax, pcbValue);
00873 end;
00874
00875 function TZDb2PlainDriver.SQLCancel(hstmt: SQLHSTMT): SQLRETURN;
00876 begin
00877 Result := ZPlainDb2.SQLCancel(hstmt);
00878 end;
00879
00880 function TZDb2PlainDriver.SQLCloseCursor(hStmt: SQLHSTMT): SQLRETURN;
00881 begin
00882 Result := ZPlainDb2.SQLCloseCursor(hStmt);
00883 end;
00884
00885 function TZDb2PlainDriver.SQLColAttribute(hstmt: SQLHSTMT; icol,
00886 fDescType: SQLUSMALLINT; rgbDesc: SQLPOINTER; cbDescMax: SQLSMALLINT;
00887 pcbDesc: PSQLSMALLINT; pfDesc: SQLPOINTER): SQLRETURN;
00888 begin
00889 Result := ZPlainDb2.SQLColAttribute(hstmt, icol, fDescType, rgbDesc, cbDescMax,
00890 pcbDesc, pfDesc);
00891 end;
00892
00893 function TZDb2PlainDriver.SQLColumns(hstmt: SQLHSTMT;
00894 szCatalogName: PSQLCHAR; cbCatalogName: SQLSMALLINT;
00895 szSchemaName: PSQLCHAR; cbSchemaName: SQLSMALLINT; szTableName: PSQLCHAR;
00896 cbTableName: SQLSMALLINT; szColumnName: PSQLCHAR;
00897 cbColumnName: SQLSMALLINT): SQLRETURN;
00898 begin
00899 Result := ZPlainDb2.SQLColumns(hstmt, szCatalogName, cbCatalogName,
00900 szSchemaName, cbSchemaName, szTableName, cbTableName, szColumnName,
00901 cbColumnName);
00902 end;
00903
00904 function TZDb2PlainDriver.SQLConnect(hdbc: SQLHDBC; szDSN: PSQLCHAR;
00905 cbDSN: SQLSMALLINT; szUID: PSQLCHAR; cbUID: SQLSMALLINT;
00906 szAuthStr: PSQLCHAR; cbAuthStr: SQLSMALLINT): SQLRETURN;
00907 begin
00908 Result := ZPlainDb2.SQLConnect(hdbc, szDSN, cbDSN, szUID, cbUID,
00909 szAuthStr, cbAuthStr);
00910 end;
00911
00912 function TZDb2PlainDriver.SQLCopyDesc(hDescSource,
00913 hDescTarget: SQLHDESC): SQLRETURN;
00914 begin
00915 Result := ZPlainDb2.SQLCopyDesc(hDescSource, hDescTarget);
00916 end;
00917
00918 function TZDb2PlainDriver.SQLDataSources(henv: SQLHENV;
00919 fDirection: SQLUSMALLINT; szDSN: PSQLCHAR; cbDSNMax: SQLSMALLINT;
00920 pcbDSN: PSQLSMALLINT; szDescription: PSQLCHAR; cbDescriptionMax: SQLSMALLINT;
00921 pcbDescription: PSQLSMALLINT): SQLRETURN;
00922 begin
00923 Result := ZPlainDb2.SQLDataSources(henv, fDirection, szDSN, cbDSNMax, pcbDSN,
00924 szDescription, cbDescriptionMax, pcbDescription);
00925 end;
00926
00927 function TZDb2PlainDriver.SQLDescribeCol(hstmt: SQLHSTMT;
00928 icol: SQLUSMALLINT; szColName: PSQLCHAR; cbColNameMax: SQLSMALLINT;
00929 pcbColName, pfSqlType: PSQLSMALLINT; pcbColDef: PSQLUINTEGER; pibScale,
00930 pfNullable: PSQLSMALLINT): SQLRETURN;
00931 begin
00932 Result := ZPlainDb2.SQLDescribeCol(hstmt, icol, szColName, cbColNameMax,
00933 pcbColName, pfSqlType, pcbColDef, pibScale, pfNullable);
00934 end;
00935
00936 function TZDb2PlainDriver.SQLDisconnect(hdbc: SQLHDBC): SQLRETURN;
00937 begin
00938 Result := ZPlainDb2.SQLDisconnect(hdbc);
00939 end;
00940
00941 function TZDb2PlainDriver.SQLEndTran(fHandleType: SQLSMALLINT;
00942 hHandle: SQLHANDLE; fType: SQLSMALLINT): SQLRETURN;
00943 begin
00944 Result := ZPlainDb2.SQLEndTran(fHandleType, hHandle, fType);
00945 end;
00946
00947 function TZDb2PlainDriver.SQLError(henv: SQLHENV; hdbc: SQLHDBC;
00948 hstmt: SQLHSTMT; szSqlState: PSQLCHAR; pfNativeError: PSQLINTEGER;
00949 szErrorMsg: PSQLCHAR; cbErrorMsgMax: SQLSMALLINT;
00950 pcbErrorMsg: PSQLSMALLINT): SQLRETURN;
00951 begin
00952 Result := ZPlainDb2.SQLError(henv, hdbc, hstmt, szSqlState, pfNativeError,
00953 szErrorMsg, cbErrorMsgMax, pcbErrorMsg);
00954 end;
00955
00956 function TZDb2PlainDriver.SQLExecDirect(hstmt: SQLHSTMT;
00957 szSqlStr: PSQLCHAR; cbSqlStr: SQLINTEGER): SQLRETURN;
00958 begin
00959 Result := ZPlainDb2.SQLExecDirect(hstmt, szSqlStr, cbSqlStr);
00960 end;
00961
00962 function TZDb2PlainDriver.SQLExecute(hstmt: SQLHSTMT): SQLRETURN;
00963 begin
00964 Result := ZPlainDb2.SQLExecute(hstmt);
00965 end;
00966
00967 function TZDb2PlainDriver.SQLFetch(hstmt: SQLHSTMT): SQLRETURN;
00968 begin
00969 Result := ZPlainDb2.SQLFetch(hstmt);
00970 end;
00971
00972 function TZDb2PlainDriver.SQLFetchScroll(StatementHandle: SQLHSTMT;
00973 FetchOrientation: SQLSMALLINT; FetchOffset: SQLLEN): SQLRETURN;
00974 begin
00975 Result := ZPlainDb2.SQLFetchScroll(StatementHandle, FetchOrientation,
00976 FetchOffset);
00977 end;
00978
00979 function TZDb2PlainDriver.SQLFreeConnect(hdbc: SQLHDBC): SQLRETURN;
00980 begin
00981 Result := ZPlainDb2.SQLFreeConnect(hdbc);
00982 end;
00983
00984 function TZDb2PlainDriver.SQLFreeEnv(henv: SQLHENV): SQLRETURN;
00985 begin
00986 Result := ZPlainDb2.SQLFreeEnv(henv);
00987 end;
00988
00989 function TZDb2PlainDriver.SQLFreeHandle(fHandleType: SQLSMALLINT;
00990 hHandle: SQLHANDLE): SQLRETURN;
00991 begin
00992 Result := ZPlainDb2.SQLFreeHandle(fHandleType, hHandle);
00993 end;
00994
00995 function TZDb2PlainDriver.SQLFreeStmt(hstmt: SQLHSTMT;
00996 fOption: SQLUSMALLINT): SQLRETURN;
00997 begin
00998 Result := ZPlainDb2.SQLFreeStmt(hstmt, fOption);
00999 end;
01000
01001 function TZDb2PlainDriver.SQLGetCursorName(hstmt: SQLHSTMT;
01002 szCursor: PSQLCHAR; cbCursorMax: SQLSMALLINT;
01003 pcbCursor: PSQLSMALLINT): SQLRETURN;
01004 begin
01005 Result := ZPlainDb2.SQLGetCursorName(hstmt, szCursor, cbCursorMax,
01006 pcbCursor);
01007 end;
01008
01009 function TZDb2PlainDriver.SQLGetData(hstmt: SQLHSTMT; icol: SQLUSMALLINT;
01010 fCType: SQLSMALLINT; rgbValue: SQLPOINTER; cbValueMax: SQLINTEGER;
01011 pcbValue: PSQLINTEGER): SQLRETURN;
01012 begin
01013 Result := ZPlainDb2.SQLGetData(hstmt, icol, fCType, rgbValue, cbValueMax,
01014 pcbValue);
01015 end;
01016
01017 function TZDb2PlainDriver.SQLGetDescField(DescriptorHandle: SQLHDESC;
01018 RecNumber, FieldIdentifier: SQLSMALLINT; Value: SQLPOINTER;
01019 BufferLength: SQLINTEGER; StringLength: PSQLINTEGER): SQLRETURN;
01020 begin
01021 Result := ZPlainDb2.SQLGetDescField(DescriptorHandle, RecNumber,
01022 FieldIdentifier, Value, BufferLength, StringLength)
01023 end;
01024
01025 function TZDb2PlainDriver.SQLGetDescRec(DescriptorHandle: SQLHDESC;
01026 RecNumber: SQLSMALLINT; Name: PSQLCHAR; BufferLength: SQLSMALLINT;
01027 StringLength, _Type, SubType: PSQLSMALLINT; Length: PSQLINTEGER;
01028 Precision, Scale, Nullable: PSQLSMALLINT): SQLRETURN;
01029 begin
01030 Result := ZPlainDb2.SQLGetDescRec(DescriptorHandle, RecNumber, Name,
01031 BufferLength, StringLength, _Type, SubType, Length, Precision,
01032 Scale, Nullable);
01033 end;
01034
01035 function TZDb2PlainDriver.SQLGetDiagField(fHandleType: SQLSMALLINT;
01036 hHandle: SQLHANDLE; iRecNumber, fDiagIdentifier: SQLSMALLINT;
01037 pDiagInfo: SQLPOINTER; cbDiagInfoMax: SQLSMALLINT;
01038 pcbDiagInfo: PSQLSMALLINT): SQLRETURN;
01039 begin
01040 Result := ZPlainDb2.SQLGetDiagField(fHandleType, hHandle, iRecNumber,
01041 fDiagIdentifier, pDiagInfo, cbDiagInfoMax, pcbDiagInfo);
01042 end;
01043
01044 function TZDb2PlainDriver.SQLGetDiagRec(fHandleType: SQLSMALLINT;
01045 hHandle: SQLHANDLE; iRecNumber: SQLSMALLINT; pszSqlState: PSQLCHAR;
01046 pfNativeError: PSQLINTEGER; pszErrorMsg: PSQLCHAR;
01047 cbErrorMsgMax: SQLSMALLINT; pcbErrorMsg: PSQLSMALLINT): SQLRETURN;
01048 begin
01049 Result := ZPlainDb2.SQLGetDiagRec(fHandleType, hHandle, iRecNumber,
01050 pszSqlState, pfNativeError, pszErrorMsg, cbErrorMsgMax, pcbErrorMsg);
01051 end;
01052
01053 function TZDb2PlainDriver.SQLGetFunctions(hdbc: SQLHDBC;
01054 fFunction: SQLUSMALLINT; pfExists: PSQLUSMALLINT): SQLRETURN;
01055 begin
01056 Result := ZPlainDb2.SQLGetFunctions(hdbc, fFunction, pfExists);
01057 end;
01058
01059 function TZDb2PlainDriver.SQLGetInfo(hdbc: SQLHDBC;
01060 fInfoType: SQLUSMALLINT; rgbInfoValue: SQLPOINTER;
01061 cbInfoValueMax: SQLSMALLINT; pcbInfoValue: PSQLSMALLINT): SQLRETURN;
01062 begin
01063 Result := ZPlainDb2.SQLGetInfo(hdbc, fInfoType, rgbInfoValue,
01064 cbInfoValueMax, pcbInfoValue)
01065 end;
01066
01067 function TZDb2PlainDriver.SQLGetLength(hstmt: SQLHSTMT;
01068 LocatorCType: SQLSMALLINT; Locator: SQLINTEGER; StringLength,
01069 IndicatorValue: PSQLINTEGER): SQLRETURN;
01070 begin
01071 Result := ZPlainDb2.SQLGetLength(hstmt, LocatorCType, Locator,
01072 StringLength, IndicatorValue);
01073 end;
01074
01075 function TZDb2PlainDriver.SQLGetPosition(hstmt: SQLHSTMT;
01076 LocatorCType: SQLSMALLINT; SourceLocator, SearchLocator: SQLINTEGER;
01077 SearchLiteral: PSQLCHAR; SearchLiteralLength: SQLINTEGER;
01078 FromPosition: SQLUINTEGER; LocatedAt: PSQLUINTEGER;
01079 IndicatorValue: PSQLINTEGER): SQLRETURN;
01080 begin
01081 Result := ZPlainDb2.SQLGetPosition(hstmt, LocatorCType, SourceLocator,
01082 SearchLocator,SearchLiteral, SearchLiteralLength, FromPosition,
01083 LocatedAt, IndicatorValue);
01084 end;
01085
01086 function TZDb2PlainDriver.SQLGetStmtAttr(StatementHandle: SQLHSTMT;
01087 Attribute: SQLINTEGER; Value: SQLPOINTER; BufferLength,
01088 StringLength: SQLINTEGER): SQLRETURN;
01089 begin
01090 Result := ZPlainDb2.SQLGetStmtAttr(StatementHandle, Attribute, Value,
01091 BufferLength, StringLength);
01092 end;
01093
01094 function TZDb2PlainDriver.SQLGetStmtOption(hstmt: SQLHSTMT;
01095 fOption: SQLUSMALLINT; pvParam: SQLPOINTER): SQLRETURN;
01096 begin
01097 Result := ZPlainDb2.SQLGetStmtOption(hstmt, fOption, pvParam);
01098 end;
01099
01100 function TZDb2PlainDriver.SQLGetSubString(hstmt: SQLHSTMT;
01101 LocatorCType: SQLSMALLINT; SourceLocator: SQLINTEGER; FromPosition,
01102 ForLength: SQLUINTEGER; TargetCType: SQLSMALLINT; rgbValue: SQLPOINTER;
01103 cbValueMax: SQLINTEGER; StringLength,
01104 IndicatorValue: PSQLINTEGER): SQLRETURN;
01105 begin
01106 Result := ZPlainDb2.SQLGetSubString(hstmt, LocatorCType, SourceLocator,
01107 FromPosition, ForLength, TargetCType, rgbValue, cbValueMax,
01108 StringLength, IndicatorValue);
01109 end;
01110
01111 function TZDb2PlainDriver.SQLGetTypeInfo(hstmt: SQLHSTMT;
01112 fSqlType: SQLSMALLINT): SQLRETURN;
01113 begin
01114 Result := ZPlainDb2.SQLGetTypeInfo(hstmt, fSqlType);
01115 end;
01116
01117 function TZDb2PlainDriver.SQLNextResult(hstmtSource,
01118 hstmtTarget: SQLHSTMT): SQLRETURN;
01119 begin
01120 Result := ZPlainDb2.SQLNextResult(hstmtSource, hstmtTarget);
01121 end;
01122
01123 function TZDb2PlainDriver.SQLNumResultCols(hstmt: SQLHSTMT;
01124 pccol: PSQLSMALLINT): SQLRETURN;
01125 begin
01126 Result := ZPlainDb2.SQLNumResultCols(hstmt, pccol);
01127 end;
01128
01129 function TZDb2PlainDriver.SQLParamData(hstmt: SQLHSTMT;
01130 prgbValue: SQLPOINTER): SQLRETURN;
01131 begin
01132 Result := ZPlainDb2.SQLParamData(hstmt, prgbValue);
01133 end;
01134
01135 function TZDb2PlainDriver.SQLPrepare(hstmt: SQLHSTMT; szSqlStr: PSQLCHAR;
01136 cbSqlStr: SQLINTEGER): SQLRETURN;
01137 begin
01138 Result := ZPlainDb2.SQLPrepare(hstmt, szSqlStr, cbSqlStr);
01139 end;
01140
01141 function TZDb2PlainDriver.SQLPutData(hstmt: SQLHSTMT; rgbValue: SQLPOINTER;
01142 cbValue: SQLINTEGER): SQLRETURN;
01143 begin
01144 Result := ZPlainDb2.SQLPutData(hstmt, rgbValue, cbValue);
01145 end;
01146
01147 function TZDb2PlainDriver.SQLRowCount(hstmt: SQLHSTMT;
01148 pcrow: PSQLINTEGER): SQLRETURN;
01149 begin
01150 Result := ZPlainDb2.SQLRowCount(hstmt, pcrow);
01151 end;
01152
01153 function TZDb2PlainDriver.SQLSetConnectAttr(hdbc: SQLHDBC;
01154 fOption: SQLINTEGER; pvParam: SQLPOINTER;
01155 fStrLen: SQLINTEGER): SQLRETURN;
01156 begin
01157 Result := ZPlainDb2.SQLSetConnectAttr(hdbc, fOption, pvParam, fStrLen);
01158 end;
01159
01160 function TZDb2PlainDriver.SQLSetConnectOption(hdbc: SQLHDBC;
01161 fOption: SQLUSMALLINT; vParam: SQLUINTEGER): SQLRETURN;
01162 begin
01163 Result := ZPlainDb2.SQLSetConnectOption(hdbc, fOption, vParam);
01164 end;
01165
01166 function TZDb2PlainDriver.SQLSetCursorName(hstmt: SQLHSTMT;
01167 szCursor: PSQLCHAR; cbCursor: SQLSMALLINT): SQLRETURN;
01168 begin
01169 Result := ZPlainDb2.SQLSetCursorName(hstmt, szCursor, cbCursor);
01170 end;
01171
01172 function TZDb2PlainDriver.SQLSetDescField(DescriptorHandle: SQLHDESC;
01173 RecNumber, FieldIdentifier: SQLSMALLINT; Value: SQLPOINTER;
01174 BufferLength: SQLINTEGER): SQLRETURN;
01175 begin
01176 Result := ZPlainDb2.SQLSetDescField(DescriptorHandle, RecNumber,
01177 FieldIdentifier, Value, BufferLength);
01178 end;
01179
01180 function TZDb2PlainDriver.SQLSetDescRec(DescriptorHandle: SQLHDESC;
01181 RecNumber, _Type, SubType: SQLSMALLINT; Length: SQLINTEGER; Precision,
01182 Scale: SQLSMALLINT; Data: SQLPOINTER; StringLength,
01183 Indicator: PSQLINTEGER): SQLRETURN;
01184 begin
01185 Result := ZPlainDb2.SQLSetDescRec(DescriptorHandle,
01186 RecNumber, _Type, SubType, Length, Precision,
01187 Scale, Data, StringLength, Indicator)
01188 end;
01189
01190 function TZDb2PlainDriver.SQLSetParam(hstmt: SQLHSTMT; ipar: SQLUSMALLINT;
01191 fCType, fSqlType: SQLSMALLINT; cbParamDef: SQLUINTEGER;
01192 ibScale: SQLSMALLINT; rgbValue: SQLPOINTER;
01193 pcbValue: PSQLINTEGER): SQLRETURN;
01194 begin
01195 Result := ZPlainDb2.SQLSetParam(hstmt, ipar, fCType, fSqlType, cbParamDef,
01196 ibScale, rgbValue, pcbValue);
01197 end;
01198
01199 function TZDb2PlainDriver.SQLSetStmtAttr(hstmt: SQLHSTMT;
01200 fOption: SQLINTEGER; pvParam: SQLPOINTER;
01201 fStrLen: SQLINTEGER): SQLRETURN;
01202 begin
01203 Result := ZPlainDb2.SQLSetStmtAttr(hstmt, fOption, pvParam, fStrLen);
01204 end;
01205
01206 function TZDb2PlainDriver.SQLSetStmtOption(hstmt: SQLHSTMT;
01207 fOption: SQLUSMALLINT; vParam: SQLUINTEGER): SQLRETURN;
01208 begin
01209 Result := ZPlainDb2.SQLSetStmtOption(hstmt, fOption, vParam);
01210 end;
01211
01212 function TZDb2PlainDriver.SQLSpecialColumns(hstmt: SQLHSTMT;
01213 fColType: SQLUSMALLINT; szCatalogName: PSQLCHAR;
01214 cbCatalogName: SQLUSMALLINT; szSchemaName: PSQLCHAR;
01215 cbSchemaName: SQLUSMALLINT; szTableName: PSQLCHAR; cbTableName, fScope,
01216 fNullable: SQLUSMALLINT): SQLRETURN;
01217 begin
01218 Result := ZPlainDb2.SQLSpecialColumns(hstmt, fColType, szCatalogName,
01219 cbCatalogName, szSchemaName, cbSchemaName, szTableName, cbTableName,
01220 fScope, fNullable);
01221 end;
01222
01223 function TZDb2PlainDriver.SQLStatistics(hstmt: SQLHSTMT;
01224 szCatalogName: PSQLCHAR; cbCatalogName: SQLSMALLINT;
01225 szSchemaName: PSQLCHAR; cbSchemaName: SQLSMALLINT; szTableName: PSQLCHAR;
01226 cbTableName: SQLSMALLINT; fUnique, fAccuracy: SQLUSMALLINT): SQLRETURN;
01227 begin
01228 Result := ZPlainDb2.SQLStatistics(hstmt, szCatalogName, cbCatalogName,
01229 szSchemaName, cbSchemaName, szTableName, cbTableName, fUnique, fAccuracy)
01230 end;
01231
01232 function TZDb2PlainDriver.SQLTables(hstmt: SQLHSTMT;
01233 szCatalogName: PSQLCHAR; cbCatalogName: SQLSMALLINT;
01234 szSchemaName: PSQLCHAR; cbSchemaName: SQLSMALLINT; szTableName: PSQLCHAR;
01235 cbTableName, szTableType, cbTableType: SQLSMALLINT): SQLRETURN;
01236 begin
01237 Result := ZPlainDb2.SQLTables(hstmt, szCatalogName, cbCatalogName,
01238 szSchemaName, cbSchemaName, szTableName, cbTableName, szTableType,
01239 cbTableType);
01240 end;
01241
01242 function TZDb2PlainDriver.SQLTransact(henv: SQLHENV; hdbc: SQLHDBC;
01243 fType: SQLUSMALLINT): SQLRETURN;
01244 begin
01245 Result := ZPlainDb2.SQLTransact(henv, hdbc, fType)
01246 end;
01247
01248 end.
01249