00001 {*********************************************************}
00002 { }
00003 { Zeos Database Objects }
00004 { Native Plain Drivers for Oracle }
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 ZPlainOracleDriver;
00055
00056 interface
00057
00058 {$I ZPlain.inc}
00059
00060 uses ZClasses, ZPlainDriver, ZPlainOracle9i;
00061
00062 type
00063 { Generic Oracle Types }
00064 sword = Integer;
00065 eword = Integer;
00066 uword = LongInt;
00067 sb4 = Integer;
00068 ub4 = LongInt;
00069 sb2 = SmallInt;
00070 ub2 = Word;
00071 sb1 = ShortInt;
00072 ub1 = Byte;
00073 dvoid = Pointer;
00074 text = PChar;
00075 size_T = Integer;
00076
00077 pub1 = ^ub1;
00078 psb1 = ^sb1;
00079 pub2 = ^ub2;
00080 psb2 = ^sb2;
00081 pub4 = ^ub4;
00082 psb4 = ^sb4;
00083
00084 { Handle Types }
00085 POCIHandle = Pointer;
00086 PPOCIHandle = ^Pointer;
00087 POCIEnv = POCIHandle;
00088 POCIServer = POCIHandle;
00089 POCIError = POCIHandle;
00090 POCISvcCtx = POCIHandle;
00091 POCIStmt = POCIHandle;
00092 POCIDefine = POCIHandle;
00093 POCISession = POCIHandle;
00094 POCIBind = POCIHandle;
00095 POCIDescribe = POCIHandle;
00096 POCITrans = POCIHandle;
00097
00098 { Descriptor Types }
00099 POCIDescriptor = Pointer;
00100 PPOCIDescriptor = ^POCIDescriptor;
00101 POCISnapshot = POCIDescriptor;
00102 POCILobLocator = POCIDescriptor;
00103 POCIParam = POCIDescriptor;
00104 POCIRowid = POCIDescriptor;
00105 POCIComplexObjectComp = POCIDescriptor;
00106 POCIAQEnqOptions = POCIDescriptor;
00107 POCIAQDeqOptions = POCIDescriptor;
00108 POCIAQMsgProperties = POCIDescriptor;
00109 POCIAQAgent = POCIDescriptor;
00110 POCIDate = POCIDescriptor;
00111 POCIDateTime = POCIDescriptor;
00112 POCINumber = POCIDescriptor;
00113 POCIString = POCIDescriptor;
00114
00115 OCIDuration = ub2;
00116
00117 const
00118 OCI_DURATION_INVALID = $FFFF; { Invalid duration }
00119 OCI_DURATION_BEGIN = 10; { beginning sequence of duration }
00120 OCI_DURATION_NULL = (OCI_DURATION_BEGIN-1); { null duration }
00121 OCI_DURATION_DEFAULT = (OCI_DURATION_BEGIN-2); { default }
00122 OCI_DURATION_USER_CALLBACK = (OCI_DURATION_BEGIN-3);
00123 OCI_DURATION_NEXT = (OCI_DURATION_BEGIN-4); { next special duration }
00124 OCI_DURATION_SESSION = (OCI_DURATION_BEGIN); { the end of user session }
00125 OCI_DURATION_TRANS = (OCI_DURATION_BEGIN+1); { the end of user transaction }
00126 OCI_DURATION_STATEMENT = (OCI_DURATION_BEGIN+3);
00127 { This is to be used only during callouts. It is similar to that
00128 of OCI_DURATION_CALL, but lasts only for the duration of a callout.
00129 Its heap is from PGA }
00130 OCI_DURATION_CALLOUT = (OCI_DURATION_BEGIN+4);
00131 OCI_DURATION_LAST = OCI_DURATION_CALLOUT; { last of predefined durations }
00132
00133 OCI_TEMP_BLOB = 1; { LOB type - BLOB }
00134 OCI_TEMP_CLOB = 2; { LOB type - CLOB }
00135
00136 const
00137 MAXTXNAMELEN = 64;
00138 XIDDATASIZE = 128; { size in bytes }
00139 MAXGTRIDSIZE = 64; { maximum size in bytes of gtrid }
00140 MAXBQUALSIZE = 64; { maximum size in bytes of bqual }
00141 NULLXID_ID = -1;
00142
00143 { Transaction branch identification: XID and NULLXID: }
00144 type
00145 PXID = ^TXID;
00146 TXID = record
00147 formatID: sb4; { format identifier }
00148 gtrid_length: sb4; { value from 1 through 64 }
00149 bqual_length: sb4; { value from 1 through 64 }
00150 data: array [0 .. XIDDATASIZE - 1] of ub1;
00151 end;
00152
00153 const
00154 MAXUB4 = High(ub4);
00155 MAXSB4 = High(sb4);
00156
00157 {***************** Plain API constants definition ****************}
00158
00159 { OCI Handle Types }
00160 OCI_HTYPE_FIRST = 1;
00161 OCI_HTYPE_ENV = 1;
00162 OCI_HTYPE_ERROR = 2;
00163 OCI_HTYPE_SVCCTX = 3;
00164 OCI_HTYPE_STMT = 4;
00165 OCI_HTYPE_BIND = 5;
00166 OCI_HTYPE_DEFINE = 6;
00167 OCI_HTYPE_DESCRIBE = 7;
00168 OCI_HTYPE_SERVER = 8;
00169 OCI_HTYPE_SESSION = 9;
00170 OCI_HTYPE_TRANS = 10;
00171 OCI_HTYPE_COMPLEXOBJECT = 11;
00172 OCI_HTYPE_SECURITY = 12;
00173 OCI_HTYPE_SUBSCRIPTION = 13;
00174 OCI_HTYPE_DIRPATH_CTX = 14;
00175 OCI_HTYPE_DIRPATH_COLUMN_ARRAY = 15;
00176 OCI_HTYPE_DIRPATH_STREAM = 16;
00177 OCI_HTYPE_PROC = 17;
00178 OCI_HTYPE_LAST = 17;
00179
00180 { OCI Descriptor Types }
00181 OCI_DTYPE_FIRST = 50;
00182 OCI_DTYPE_LOB = 50;
00183 OCI_DTYPE_SNAP = 51;
00184 OCI_DTYPE_RSET = 52;
00185 OCI_DTYPE_PARAM = 53;
00186 OCI_DTYPE_ROWID = 54;
00187 OCI_DTYPE_COMPLEXOBJECTCOMP = 55;
00188 OCI_DTYPE_FILE = 56;
00189 OCI_DTYPE_AQENQ_OPTIONS = 57;
00190 OCI_DTYPE_AQDEQ_OPTIONS = 58;
00191 OCI_DTYPE_AQMSG_PROPERTIES = 59;
00192 OCI_DTYPE_AQAGENT = 60;
00193 OCI_DTYPE_LOCATOR = 61;
00194 OCI_DTYPE_DATETIME = 62;
00195 OCI_DTYPE_INTERVAL = 63;
00196 OCI_DTYPE_AQNFY_DESCRIPTOR = 64;
00197 OCI_DTYPE_LAST = 64;
00198 OCI_DTYPE_DATE = 65; { Date }
00199 OCI_DTYPE_TIME = 66; { Time }
00200 OCI_DTYPE_TIME_TZ = 67; { Time with timezone }
00201 OCI_DTYPE_TIMESTAMP = 68; { Timestamp }
00202 OCI_DTYPE_TIMESTAMP_TZ = 69; { Timestamp with timezone }
00203 OCI_DTYPE_TIMESTAMP_LTZ = 70; { Timestamp with local tz }
00204
00205 { OCI Attributes Types }
00206 OCI_ATTR_FNCODE = 1;
00207 OCI_ATTR_OBJECT = 2;
00208 OCI_ATTR_NONBLOCKING_MODE = 3;
00209 OCI_ATTR_SQLCODE = 4;
00210 OCI_ATTR_ENV = 5;
00211 OCI_ATTR_SERVER = 6;
00212 OCI_ATTR_SESSION = 7;
00213 OCI_ATTR_TRANS = 8;
00214 OCI_ATTR_ROW_COUNT = 9;
00215 OCI_ATTR_SQLFNCODE = 10;
00216 OCI_ATTR_PREFETCH_ROWS = 11;
00217 OCI_ATTR_NESTED_PREFETCH_ROWS = 12;
00218 OCI_ATTR_PREFETCH_MEMORY = 13;
00219 OCI_ATTR_NESTED_PREFETCH_MEMORY = 14;
00220 OCI_ATTR_CHAR_COUNT = 15;
00221 OCI_ATTR_PDSCL = 16;
00222 OCI_ATTR_FSPRECISION = OCI_ATTR_PDSCL;
00223 OCI_ATTR_PDPRC = 17;
00224 OCI_ATTR_LFPRECISION = OCI_ATTR_PDPRC;
00225 OCI_ATTR_PARAM_COUNT = 18;
00226 OCI_ATTR_ROWID = 19;
00227 OCI_ATTR_CHARSET = 20;
00228 OCI_ATTR_NCHAR = 21;
00229 OCI_ATTR_USERNAME = 22;
00230 OCI_ATTR_PASSWORD = 23;
00231 OCI_ATTR_STMT_TYPE = 24;
00232 OCI_ATTR_INTERNAL_NAME = 25;
00233 OCI_ATTR_EXTERNAL_NAME = 26;
00234 OCI_ATTR_XID = 27;
00235 OCI_ATTR_TRANS_LOCK = 28;
00236 OCI_ATTR_TRANS_NAME = 29;
00237 OCI_ATTR_HEAPALLOC = 30;
00238 OCI_ATTR_CHARSET_ID = 31;
00239 OCI_ATTR_CHARSET_FORM = 32;
00240 OCI_ATTR_MAXDATA_SIZE = 33;
00241 OCI_ATTR_CACHE_OPT_SIZE = 34;
00242 OCI_ATTR_CACHE_MAX_SIZE = 35;
00243 OCI_ATTR_PINOPTION = 36;
00244 OCI_ATTR_ALLOC_DURATION = 37;
00245 OCI_ATTR_PIN_DURATION = 38;
00246 OCI_ATTR_FDO = 39;
00247 OCI_ATTR_POSTPROCESSING_CALLBACK = 40;
00248 OCI_ATTR_POSTPROCESSING_CONTEXT = 41;
00249 OCI_ATTR_ROWS_RETURNED = 42;
00250 OCI_ATTR_FOCBK = 43;
00251 OCI_ATTR_IN_V8_MODE = 44;
00252 OCI_ATTR_LOBEMPTY = 45;
00253 OCI_ATTR_SESSLANG = 46;
00254
00255 OCI_ATTR_VISIBILITY = 47;
00256 OCI_ATTR_RELATIVE_MSGID = 48;
00257 OCI_ATTR_SEQUENCE_DEVIATION = 49;
00258
00259 OCI_ATTR_CONSUMER_NAME = 50;
00260 OCI_ATTR_DEQ_MODE = 51;
00261 OCI_ATTR_NAVIGATION = 52;
00262 OCI_ATTR_WAIT = 53;
00263 OCI_ATTR_DEQ_MSGID = 54;
00264
00265 OCI_ATTR_PRIORITY = 55;
00266 OCI_ATTR_DELAY = 56;
00267 OCI_ATTR_EXPIRATION = 57;
00268 OCI_ATTR_CORRELATION = 58;
00269 OCI_ATTR_ATTEMPTS = 59;
00270 OCI_ATTR_RECIPIENT_LIST = 60;
00271 OCI_ATTR_EXCEPTION_QUEUE = 61;
00272 OCI_ATTR_ENQ_TIME = 62;
00273 OCI_ATTR_MSG_STATE = 63;
00274
00275 OCI_ATTR_AGENT_NAME = 64;
00276 OCI_ATTR_AGENT_ADDRESS = 65;
00277 OCI_ATTR_AGENT_PROTOCOL = 66;
00278
00279 OCI_ATTR_SENDER_ID = 68;
00280 OCI_ATTR_ORIGINAL_MSGID = 69;
00281
00282 OCI_ATTR_QUEUE_NAME = 70;
00283 OCI_ATTR_NFY_MSGID = 71;
00284 OCI_ATTR_MSG_PROP = 72;
00285
00286 OCI_ATTR_NUM_DML_ERRORS = 73;
00287 OCI_ATTR_DML_ROW_OFFSET = 74;
00288
00289 OCI_ATTR_DATEFORMAT = 75;
00290 OCI_ATTR_BUF_ADDR = 76;
00291 OCI_ATTR_BUF_SIZE = 77;
00292 OCI_ATTR_DIRPATH_MODE = 78;
00293 OCI_ATTR_DIRPATH_NOLOG = 79;
00294 OCI_ATTR_DIRPATH_PARALLEL = 80;
00295 OCI_ATTR_NUM_ROWS = 81;
00296
00297
00298
00299 OCI_ATTR_COL_COUNT = 82;
00300 OCI_ATTR_STREAM_OFFSET = 83;
00301 OCI_ATTR_SHARED_HEAPALLOC = 84;
00302
00303 OCI_ATTR_SERVER_GROUP = 85;
00304
00305 OCI_ATTR_MIGSESSION = 86;
00306
00307 OCI_ATTR_NOCACHE = 87;
00308
00309 OCI_ATTR_MEMPOOL_SIZE = 88;
00310 OCI_ATTR_MEMPOOL_INSTNAME = 89;
00311 OCI_ATTR_MEMPOOL_APPNAME = 90;
00312 OCI_ATTR_MEMPOOL_HOMENAME = 91;
00313 OCI_ATTR_MEMPOOL_MODEL = 92;
00314 OCI_ATTR_MODES = 93;
00315
00316 OCI_ATTR_SUBSCR_NAME = 94;
00317 OCI_ATTR_SUBSCR_CALLBACK = 95;
00318 OCI_ATTR_SUBSCR_CTX = 96;
00319 OCI_ATTR_SUBSCR_PAYLOAD = 97;
00320 OCI_ATTR_SUBSCR_NAMESPACE = 98;
00321
00322 OCI_ATTR_PROXY_CREDENTIALS = 99;
00323 OCI_ATTR_INITIAL_CLIENT_ROLES = 100;
00324
00325 OCI_ATTR_UNK = 101;
00326 OCI_ATTR_NUM_COLS = 102;
00327 OCI_ATTR_LIST_COLUMNS = 103;
00328 OCI_ATTR_RDBA = 104;
00329 OCI_ATTR_CLUSTERED = 105;
00330 OCI_ATTR_PARTITIONED = 106;
00331 OCI_ATTR_INDEX_ONLY = 107;
00332 OCI_ATTR_LIST_ARGUMENTS = 108;
00333 OCI_ATTR_LIST_SUBPROGRAMS = 109;
00334 OCI_ATTR_REF_TDO = 110;
00335 OCI_ATTR_LINK = 111;
00336 OCI_ATTR_MIN = 112;
00337 OCI_ATTR_MAX = 113;
00338 OCI_ATTR_INCR = 114;
00339 OCI_ATTR_CACHE = 115;
00340 OCI_ATTR_ORDER = 116;
00341 OCI_ATTR_HW_MARK = 117;
00342 OCI_ATTR_TYPE_SCHEMA = 118;
00343 OCI_ATTR_TIMESTAMP = 119;
00344 OCI_ATTR_NUM_ATTRS = 120;
00345 OCI_ATTR_NUM_PARAMS = 121;
00346 OCI_ATTR_OBJID = 122;
00347 OCI_ATTR_PTYPE = 123;
00348 OCI_ATTR_PARAM = 124;
00349 OCI_ATTR_OVERLOAD_ID = 125;
00350 OCI_ATTR_TABLESPACE = 126;
00351 OCI_ATTR_TDO = 127;
00352 OCI_ATTR_LTYPE = 128;
00353 OCI_ATTR_PARSE_ERROR_OFFSET = 129;
00354 OCI_ATTR_IS_TEMPORARY = 130;
00355 OCI_ATTR_IS_TYPED = 131;
00356 OCI_ATTR_DURATION = 132;
00357 OCI_ATTR_IS_INVOKER_RIGHTS = 133;
00358 OCI_ATTR_OBJ_NAME = 134;
00359 OCI_ATTR_OBJ_SCHEMA = 135;
00360 OCI_ATTR_OBJ_ID = 136;
00361
00362 { OCI Error Return Values }
00363 OCI_SUCCESS = 0;
00364 OCI_SUCCESS_WITH_INFO = 1;
00365 OCI_NO_DATA = 100;
00366 OCI_ERROR = -1;
00367 OCI_INVALID_HANDLE = -2;
00368 OCI_NEED_DATA = 99;
00369 OCI_STILL_EXECUTING = -3123;
00370 OCI_CONTINUE = -24200;
00371
00372 { Generic Default Value for Modes, .... }
00373 OCI_DEFAULT = $0;
00374
00375 { OCI Init Mode }
00376 OCI_THREADED = $1;
00377 OCI_OBJECT = $2;
00378 OCI_EVENTS = $4;
00379 OCI_SHARED = $10;
00380 OCI_NO_UCB = $40;
00381 OCI_NO_MUTEX = $80;
00382
00383 { OCI Credentials }
00384 OCI_CRED_RDBMS = 1;
00385 OCI_CRED_EXT = 2;
00386 OCI_CRED_PROXY = 3;
00387
00388 { OCI Authentication Mode }
00389 OCI_MIGRATE = $0001;
00390 OCI_SYSDBA = $0002;
00391 OCI_SYSOPER = $0004;
00392 OCI_PRELIM_AUTH = $0008;
00393
00394 { OCIPasswordChange }
00395 OCI_AUTH = $08;
00396
00397 { OCI Data Types }
00398 SQLT_CHR = 1 ;
00399 SQLT_NUM = 2 ;
00400 SQLT_INT = 3 ;
00401 SQLT_FLT = 4 ;
00402 SQLT_STR = 5 ;
00403 SQLT_VNU = 6 ;
00404 SQLT_PDN = 7 ;
00405 SQLT_LNG = 8 ;
00406 SQLT_VCS = 9 ;
00407 SQLT_NON = 10 ;
00408 SQLT_RID = 11 ;
00409 SQLT_DAT = 12 ;
00410 SQLT_VBI = 15 ;
00411 SQLT_BIN = 23 ;
00412 SQLT_LBI = 24 ;
00413 _SQLT_PLI = 29;
00414 SQLT_UIN = 68 ;
00415 SQLT_SLS = 91 ;
00416 SQLT_LVC = 94 ;
00417 SQLT_LVB = 95 ;
00418 SQLT_AFC = 96 ;
00419 SQLT_AVC = 97 ;
00420 SQLT_CUR = 102;
00421 SQLT_RDD = 104;
00422 SQLT_LAB = 105;
00423 SQLT_OSL = 106;
00424 SQLT_NTY = 108;
00425 SQLT_REF = 110;
00426 SQLT_CLOB = 112;
00427 SQLT_BLOB = 113;
00428 SQLT_BFILEE = 114;
00429 SQLT_CFILEE = 115;
00430 SQLT_RSET = 116;
00431 SQLT_NCO = 122;
00432 SQLT_VST = 155;
00433 SQLT_ODT = 156;
00434
00435 { datetimes and intervals }
00436 SQLT_DATE = 184;
00437 SQLT_TIME = 185;
00438 SQLT_TIME_TZ = 186;
00439 SQLT_TIMESTAMP = 187;
00440 SQLT_TIMESTAMP_TZ = 188;
00441 SQLT_INTERVAL_YM = 189;
00442 SQLT_INTERVAL_DS = 190;
00443 SQLT_TIMESTAMP_LTZ = 232;
00444
00445 _SQLT_REC = 250;
00446 _SQLT_TAB = 251;
00447 _SQLT_BOL = 252;
00448
00449 { OCI Statement Types }
00450 OCI_STMT_SELECT = 1;
00451 OCI_STMT_UPDATE = 2;
00452 OCI_STMT_DELETE = 3;
00453 OCI_STMT_INSERT = 4;
00454 OCI_STMT_CREATE = 5;
00455 OCI_STMT_DROP = 6;
00456 OCI_STMT_ALTER = 7;
00457 OCI_STMT_BEGIN = 8;
00458 OCI_STMT_DECLARE = 9;
00459
00460 { OCI Statement language }
00461 OCI_NTV_SYNTAX = 1;
00462 OCI_V7_SYNTAX = 2;
00463 OCI_V8_SYNTAX = 3;
00464
00465 { OCI Statement Execute mode }
00466 OCI_BATCH_MODE = $01;
00467 OCI_EXACT_FETCH = $02;
00468 OCI_SCROLLABLE_CURSOR = $08;
00469 OCI_DESCRIBE_ONLY = $10;
00470 OCI_COMMIT_ON_SUCCESS = $20;
00471 OCI_NON_BLOCKING = $40;
00472 OCI_BATCH_ERRORS = $80;
00473 OCI_PARSE_ONLY = $100;
00474
00475 OCI_DATA_AT_EXEC = $02;
00476 OCI_DYNAMIC_FETCH = $02;
00477 OCI_PIECEWISE = $04;
00478
00479 { OCI Transaction modes }
00480 OCI_TRANS_NEW = $00000001;
00481 OCI_TRANS_JOIN = $00000002;
00482 OCI_TRANS_RESUME = $00000004;
00483 OCI_TRANS_STARTMASK = $000000ff;
00484
00485 OCI_TRANS_READONLY = $00000100;
00486 OCI_TRANS_READWRITE = $00000200;
00487 OCI_TRANS_SERIALIZABLE = $00000400;
00488 OCI_TRANS_ISOLMASK = $0000ff00;
00489
00490 OCI_TRANS_LOOSE = $00010000;
00491 OCI_TRANS_TIGHT = $00020000;
00492 OCI_TRANS_TYPEMASK = $000f0000;
00493
00494 OCI_TRANS_NOMIGRATE = $00100000;
00495 OCI_TRANS_TWOPHASE = $01000000;
00496
00497 { OCI pece wise fetch }
00498 OCI_ONE_PIECE = 0;
00499 OCI_FIRST_PIECE = 1;
00500 OCI_NEXT_PIECE = 2;
00501 OCI_LAST_PIECE = 3;
00502
00503 { OCI fetch modes }
00504 OCI_FETCH_NEXT = $02;
00505 OCI_FETCH_FIRST = $04;
00506 OCI_FETCH_LAST = $08;
00507 OCI_FETCH_PRIOR = $10;
00508 OCI_FETCH_ABSOLUTE = $20;
00509 OCI_FETCH_RELATIVE = $40;
00510
00511 {****************** Describe Handle Parameter Attributes *****************}
00512
00513 { Attributes common to Columns and Stored Procs }
00514 OCI_ATTR_DATA_SIZE = 1;
00515 OCI_ATTR_DATA_TYPE = 2;
00516 OCI_ATTR_DISP_SIZE = 3;
00517 OCI_ATTR_NAME = 4;
00518 OCI_ATTR_PRECISION = 5;
00519 OCI_ATTR_SCALE = 6;
00520 OCI_ATTR_IS_NULL = 7;
00521 OCI_ATTR_TYPE_NAME = 8;
00522 OCI_ATTR_SCHEMA_NAME = 9;
00523 OCI_ATTR_SUB_NAME = 10;
00524 OCI_ATTR_POSITION = 11;
00525
00526 { complex object retrieval parameter attributes }
00527 OCI_ATTR_COMPLEXOBJECTCOMP_TYPE = 50;
00528 OCI_ATTR_COMPLEXOBJECTCOMP_TYPE_LEVEL = 51;
00529 OCI_ATTR_COMPLEXOBJECT_LEVEL = 52;
00530 OCI_ATTR_COMPLEXOBJECT_COLL_OUTOFLINE = 53;
00531
00532 { Only Columns }
00533 OCI_ATTR_DISP_NAME = 100;
00534
00535 { Only Stored Procs }
00536 OCI_ATTR_OVERLOAD = 210;
00537 OCI_ATTR_LEVEL = 211;
00538 OCI_ATTR_HAS_DEFAULT = 212;
00539 OCI_ATTR_IOMODE = 213;
00540 OCI_ATTR_RADIX = 214;
00541 OCI_ATTR_NUM_ARGS = 215;
00542
00543 { only named type attributes }
00544 OCI_ATTR_TYPECODE = 216;
00545 OCI_ATTR_COLLECTION_TYPECODE = 217;
00546 OCI_ATTR_VERSION = 218;
00547 OCI_ATTR_IS_INCOMPLETE_TYPE = 219;
00548 OCI_ATTR_IS_SYSTEM_TYPE = 220;
00549 OCI_ATTR_IS_PREDEFINED_TYPE = 221;
00550 OCI_ATTR_IS_TRANSIENT_TYPE = 222;
00551 OCI_ATTR_IS_SYSTEM_GENERATED_TYPE = 223;
00552 OCI_ATTR_HAS_NESTED_TABLE = 224;
00553 OCI_ATTR_HAS_LOB = 225;
00554 OCI_ATTR_HAS_FILE = 226;
00555 OCI_ATTR_COLLECTION_ELEMENT = 227;
00556 OCI_ATTR_NUM_TYPE_ATTRS = 228;
00557 OCI_ATTR_LIST_TYPE_ATTRS = 229;
00558 OCI_ATTR_NUM_TYPE_METHODS = 230;
00559 OCI_ATTR_LIST_TYPE_METHODS = 231;
00560 OCI_ATTR_MAP_METHOD = 232;
00561 OCI_ATTR_ORDER_METHOD = 233;
00562
00563 { only collection element }
00564 OCI_ATTR_NUM_ELEMS = 234;
00565
00566 { only type methods }
00567 OCI_ATTR_ENCAPSULATION = 235;
00568 OCI_ATTR_IS_SELFISH = 236;
00569 OCI_ATTR_IS_VIRTUAL = 237;
00570 OCI_ATTR_IS_INLINE = 238;
00571 OCI_ATTR_IS_CONSTANT = 239;
00572 OCI_ATTR_HAS_RESULT = 240;
00573 OCI_ATTR_IS_CONSTRUCTOR = 241;
00574 OCI_ATTR_IS_DESTRUCTOR = 242;
00575 OCI_ATTR_IS_OPERATOR = 243;
00576 OCI_ATTR_IS_MAP = 244;
00577 OCI_ATTR_IS_ORDER = 245;
00578 OCI_ATTR_IS_RNDS = 246;
00579 OCI_ATTR_IS_RNPS = 247;
00580 OCI_ATTR_IS_WNDS = 248;
00581 OCI_ATTR_IS_WNPS = 249;
00582
00583 OCI_ATTR_DESC_PUBLIC = 250;
00584
00585 { Object Cache Enhancements : attributes for User Constructed Instances }
00586 OCI_ATTR_CACHE_CLIENT_CONTEXT = 251;
00587 OCI_ATTR_UCI_CONSTRUCT = 252;
00588 OCI_ATTR_UCI_DESTRUCT = 253;
00589 OCI_ATTR_UCI_COPY = 254;
00590 OCI_ATTR_UCI_PICKLE = 255;
00591 OCI_ATTR_UCI_UNPICKLE = 256;
00592 OCI_ATTR_UCI_REFRESH = 257;
00593
00594 { for type inheritance }
00595 OCI_ATTR_IS_SUBTYPE = 258;
00596 OCI_ATTR_SUPERTYPE_SCHEMA_NAME = 259;
00597 OCI_ATTR_SUPERTYPE_NAME = 260;
00598
00599 { for schemas }
00600 OCI_ATTR_LIST_OBJECTS = 261;
00601
00602 { for database }
00603 OCI_ATTR_NCHARSET_ID = 262;
00604 OCI_ATTR_LIST_SCHEMAS = 263;
00605 OCI_ATTR_MAX_PROC_LEN = 264;
00606 OCI_ATTR_MAX_COLUMN_LEN = 265;
00607 OCI_ATTR_CURSOR_COMMIT_BEHAVIOR = 266;
00608 OCI_ATTR_MAX_CATALOG_NAMELEN = 267;
00609 OCI_ATTR_CATALOG_LOCATION = 268;
00610 OCI_ATTR_SAVEPOINT_SUPPORT = 269;
00611 OCI_ATTR_NOWAIT_SUPPORT = 270;
00612 OCI_ATTR_AUTOCOMMIT_DDL = 271;
00613 OCI_ATTR_LOCKING_MODE = 272;
00614
00615 OCI_ATTR_CACHE_ARRAYFLUSH = $40;
00616 OCI_ATTR_OBJECT_NEWNOTNULL = $10;
00617 OCI_ATTR_OBJECT_DETECTCHANGE = $20;
00618
00619 { Piece Information }
00620 OCI_PARAM_IN = $01;
00621 OCI_PARAM_OUT = $02;
00622
00623 { LOB Buffering Flush Flags }
00624 OCI_LOB_BUFFER_FREE = 1;
00625 OCI_LOB_BUFFER_NOFREE = 2;
00626
00627 { FILE open modes }
00628 OCI_FILE_READONLY = 1;
00629 { LOB open modes }
00630 OCI_LOB_READONLY = 1;
00631 OCI_LOB_READWRITE = 2;
00632
00633 { CHAR/NCHAR/VARCHAR2/NVARCHAR2/CLOB/NCLOB char set "form" information }
00634 SQLCS_IMPLICIT = 1;
00635 SQLCS_NCHAR = 2;
00636 SQLCS_EXPLICIT = 3;
00637 SQLCS_FLEXIBLE = 4;
00638 SQLCS_LIT_NULL = 5;
00639
00640 {************************ OCIDesribeAny *************************}
00641
00642 { Describe mode }
00643 OCI_OTYPE_NAME = 1;
00644 OCI_OTYPE_REF = 2;
00645 OCI_OTYPE_PTR = 3;
00646
00647 { Object type }
00648 OCI_PTYPE_UNK = 0;
00649 OCI_PTYPE_TABLE = 1;
00650 OCI_PTYPE_VIEW = 2;
00651 OCI_PTYPE_PROC = 3;
00652 OCI_PTYPE_FUNC = 4;
00653 OCI_PTYPE_PKG = 5;
00654 OCI_PTYPE_TYPE = 6;
00655 OCI_PTYPE_SYN = 7;
00656 OCI_PTYPE_SEQ = 8;
00657 OCI_PTYPE_COL = 9;
00658 OCI_PTYPE_ARG = 10;
00659 OCI_PTYPE_LIST = 11;
00660 OCI_PTYPE_TYPE_ATTR = 12;
00661 OCI_PTYPE_TYPE_COLL = 13;
00662 OCI_PTYPE_TYPE_METHOD = 14;
00663 OCI_PTYPE_TYPE_ARG = 15;
00664 OCI_PTYPE_TYPE_RESULT = 16;
00665
00666 { Proc/Func param type }
00667 OCI_TYPEPARAM_IN = 0;
00668 OCI_TYPEPARAM_OUT = 1;
00669 OCI_TYPEPARAM_INOUT = 2;
00670
00671 { Number formats }
00672 OCI_NUMBER_UNSIGNED = 0;
00673 OCI_NUMBER_SIGNED = 2;
00674
00675 type
00676
00677 {** Represents a generic interface to Oracle native API. }
00678 IZOraclePlainDriver = interface (IZPlainDriver)
00679 ['{22404660-C95F-4346-A3DB-7C6DFE15F115}']
00680
00681 function Initializ(mode: ub4; ctxp: Pointer; malocfp: Pointer;
00682 ralocfp: Pointer; mfreefp: Pointer): sword;
00683 function EnvInit(var envhpp: POCIEnv; mode: ub4; xtramemsz: size_T;
00684 usrmempp: PPointer): sword;
00685 function EnvCreate(var envhpp: POCIEnv; mode: ub4; ctxp: Pointer;
00686 malocfp: Pointer; ralocfp: Pointer; mfreefp: Pointer; xtramemsz: size_T;
00687 usrmempp: PPointer): sword;
00688
00689 function HandleAlloc(parenth: POCIHandle; var hndlpp: POCIHandle;
00690 atype: ub4; xtramem_sz: size_T; usrmempp: PPointer): sword;
00691 function ServerAttach(srvhp: POCIServer; errhp: POCIError; dblink: text;
00692 dblink_len: sb4; mode: ub4): sword;
00693 function AttrSet(trgthndlp: POCIHandle; trghndltyp: ub4;
00694 attributep: Pointer; size: ub4; attrtype: ub4; errhp: POCIError):sword;
00695 function SessionBegin(svchp: POCISvcCtx; errhp: POCIError;
00696 usrhp: POCISession; credt: ub4; mode: ub4):sword;
00697 function SessionEnd(svchp: POCISvcCtx; errhp: POCIError;
00698 usrhp: POCISession; mode: ub4): sword;
00699 function ServerDetach(srvhp: POCIServer; errhp: POCIError;
00700 mode: ub4): sword;
00701 function HandleFree(hndlp: Pointer; atype: ub4): sword;
00702 function ErrorGet(hndlp: Pointer; recordno: ub4; sqlstate: text;
00703 var errcodep: sb4; bufp: text; bufsiz: ub4; atype: ub4): sword;
00704
00705 function StmtPrepare(stmtp: POCIStmt; errhp: POCIError; stmt: text;
00706 stmt_len: ub4; language:ub4; mode: ub4):sword;
00707 function StmtExecute(svchp: POCISvcCtx; stmtp: POCIStmt;
00708 errhp: POCIError; iters: ub4; rowoff: ub4; snap_in: POCISnapshot;
00709 snap_out: POCISnapshot; mode: ub4): sword;
00710 function ParamGet(hndlp: Pointer; htype: ub4; errhp: POCIError;
00711 var parmdpp: Pointer; pos: ub4): sword;
00712 function AttrGet(trgthndlp: POCIHandle; trghndltyp: ub4;
00713 attributep: Pointer; sizep: Pointer; attrtype: ub4;
00714 errhp: POCIError): sword;
00715 function StmtFetch(stmtp: POCIStmt; errhp: POCIError; nrows: ub4;
00716 orientation: ub2; mode: ub4): sword;
00717 function DefineByPos(stmtp: POCIStmt; var defnpp: POCIDefine;
00718 errhp: POCIError; position: ub4; valuep: Pointer; value_sz: sb4; dty: ub2;
00719 indp: Pointer; rlenp: Pointer; rcodep: Pointer; mode: ub4): sword;
00720 function DefineArrayOfStruct(defnpp: POCIDefine; errhp: POCIError;
00721 pvskip: ub4; indskip: ub4; rlskip: ub4; rcskip: ub4): sword;
00722
00723 function BindByPos(stmtp: POCIStmt; var bindpp: POCIBind;
00724 errhp: POCIError; position: ub4; valuep: Pointer; value_sz: sb4; dty: ub2;
00725 indp: Pointer; alenp: Pointer; rcodep: Pointer; maxarr_len: ub4;
00726 curelep: Pointer; mode: ub4): sword;
00727 function BindByName(stmtp: POCIStmt; var bindpp: POCIBind;
00728 errhp: POCIError; placeholder: text; placeh_len: sb4; valuep: Pointer;
00729 value_sz: sb4; dty: ub2; indp: Pointer; alenp: Pointer; rcodep: Pointer;
00730 maxarr_len: ub4; curelep: Pointer; mode: ub4): sword;
00731 function BindDynamic(bindp: POCIBind; errhp: POCIError; ictxp: Pointer;
00732 icbfp: Pointer; octxp: Pointer; ocbfp: Pointer): sword;
00733
00734 function TransStart(svchp: POCISvcCtx; errhp: POCIError; timeout: word;
00735 flags: ub4): sword;
00736 function TransRollback(svchp: POCISvcCtx; errhp: POCIError;
00737 flags: ub4): sword;
00738 function TransCommit(svchp: POCISvcCtx; errhp: POCIError;
00739 flags: ub4): sword;
00740 function TransDetach(svchp: POCISvcCtx; errhp: POCIError;
00741 flags: ub4): sword;
00742 function TransPrepare(svchp: POCISvcCtx; errhp: POCIError;
00743 flags: ub4): sword;
00744 function TransForget(svchp: POCISvcCtx; errhp: POCIError;
00745 flags: ub4): sword;
00746
00747 function DescribeAny(svchp: POCISvcCtx; errhp: POCIError;
00748 objptr: Pointer; objnm_len: ub4; objptr_typ: ub1; info_level: ub1;
00749 objtyp: ub1; dschp: POCIDescribe): sword;
00750 function Break(svchp: POCISvcCtx; errhp:POCIError): sword;
00751 function Reset(svchp: POCISvcCtx; errhp:POCIError): sword;
00752 function DescriptorAlloc(parenth: POCIEnv; var descpp: POCIDescriptor;
00753 htype: ub4; xtramem_sz: integer; usrmempp: Pointer): sword;
00754 function DescriptorFree(descp: Pointer; htype: ub4): sword;
00755
00756 function DateTimeAssign(hndl: POCIEnv; err: POCIError;
00757 const from: POCIDateTime;_to: POCIDateTime): sword;
00758 function DateTimeCheck(hndl: POCIEnv; err: POCIError;
00759 const date: POCIDateTime; var valid: ub4): sword;
00760 function DateTimeCompare(hndl: POCIEnv; err: POCIError;
00761 const date1: POCIDateTime; const date2: POCIDateTime;
00762 var result: sword): sword;
00763 function DateTimeConvert(hndl: POCIEnv; err: POCIError;
00764 indate: POCIDateTime; outdate: POCIDateTime): sword;
00765 function DateTimeFromText(hndl: POCIEnv; err: POCIError;
00766 const date_str: text; d_str_length: size_t; const fmt: text;
00767 fmt_length: ub1; const lang_name: text; lang_length: size_t;
00768 date: POCIDateTime): sword;
00769 function DateTimeGetDate(hndl: POCIEnv; err: POCIError;
00770 const date: POCIDateTime; var year: sb2; var month: ub1;
00771 var day: ub1): sword;
00772 function DateTimeGetTime(hndl: POCIEnv; err: POCIError;
00773 datetime: POCIDateTime; var hour: ub1; var minute: ub1; var sec: ub1;
00774 var fsec: ub4): sword;
00775 function DateTimeGetTimeZoneOffset(hndl: POCIEnv; err: POCIError;
00776 const datetime: POCIDateTime; var hour: sb1; var minute: sb1): sword;
00777 function DateTimeSysTimeStamp(hndl: POCIEnv; err: POCIError;
00778 sys_date: POCIDateTime): sword;
00779 function DateTimeConstruct(hndl: POCIEnv; err: POCIError;
00780 datetime: POCIDateTime; year: sb2; month: ub1; day: ub1; hour: ub1;
00781 min: ub1; sec: ub1; fsec: ub4; timezone: text;
00782 timezone_length: size_t): sword;
00783 function DateTimeToText(hndl: POCIEnv; err: POCIError;
00784 const date: POCIDateTime; const fmt: text; fmt_length: ub1;
00785 fsprec: ub1; const lang_name: text; lang_length: size_t;
00786 var buf_size: ub4; buf: text): sword;
00787 function DateTimeGetTimeZoneName(hndl: POCIEnv; err: POCIError;
00788 datetime: POCIDateTime; var buf: ub1; var buflen: ub4): sword;
00789
00790 function LobAppend(svchp: POCISvcCtx; errhp: POCIError; dst_locp,
00791 src_locp: POCILobLocator): sword;
00792 function LobAssign(svchp: POCISvcCtx; errhp: POCIError;
00793 src_locp: POCILobLocator; var dst_locpp: POCILobLocator): sword;
00794 function LobClose(svchp: POCISvcCtx; errhp: POCIError;
00795 locp: POCILobLocator): sword;
00796 function LobCopy(svchp: POCISvcCtx; errhp: POCIError;
00797 dst_locp: POCILobLocator; src_locp: POCILobLocator; amount: ub4;
00798 dst_offset: ub4; src_offset: ub4): sword;
00799 function LobEnableBuffering(svchp: POCISvcCtx; errhp: POCIError;
00800 locp: POCILobLocator): sword;
00801 function LobDisableBuffering(svchp: POCISvcCtx; errhp: POCIError;
00802 locp: POCILobLocator): sword;
00803 function LobErase(svchp: POCISvcCtx; errhp: POCIError; locp: POCILobLocator;
00804 var amount: ub4; offset: ub4): sword;
00805 function LobFileExists(svchp: POCISvcCtx; errhp: POCIError;
00806 filep: POCILobLocator; var flag: Boolean): sword;
00807 function LobFileGetName(envhp: POCIEnv; errhp: POCIError;
00808 filep: POCILobLocator; dir_alias: text; var d_length: ub2; filename: text;
00809 var f_length: ub2): sword;
00810 function LobFileSetName(envhp: POCIEnv; errhp: POCIError;
00811 var filep: POCILobLocator; dir_alias: text; d_length: ub2; filename: text;
00812 f_length: ub2): sword;
00813 function LobFlushBuffer(svchp: POCISvcCtx; errhp: POCIError;
00814 locp: POCILobLocator; flag: ub4): sword;
00815 function LobGetLength(svchp: POCISvcCtx; errhp: POCIError;
00816 locp: POCILobLocator; var lenp: ub4): sword;
00817 function LobIsOpen(svchp: POCISvcCtx; errhp: POCIError;
00818 locp: POCILobLocator; var flag: LongBool): sword;
00819 function LobLoadFromFile(svchp: POCISvcCtx; errhp: POCIError;
00820 dst_locp: POCILobLocator; src_locp: POCILobLocator; amount: ub4;
00821 dst_offset: ub4; src_offset: ub4): sword;
00822 function LobLocatorIsInit(envhp: POCIEnv; errhp: POCIError;
00823 locp: POCILobLocator; var is_initialized: LongBool): sword;
00824 function LobOpen(svchp: POCISvcCtx; errhp: POCIError;
00825 locp: POCILobLocator; mode: ub1): sword;
00826 function LobRead(svchp: POCISvcCtx; errhp: POCIError;
00827 locp: POCILobLocator; var amtp: ub4; offset: ub4; bufp: Pointer; bufl: ub4;
00828 ctxp: Pointer; cbfp: Pointer; csid: ub2; csfrm: ub1): sword;
00829 function LobTrim(svchp: POCISvcCtx; errhp: POCIError;
00830 locp: POCILobLocator; newlen: ub4): sword;
00831 function LobWrite(svchp: POCISvcCtx; errhp: POCIError;
00832 locp: POCILobLocator; var amtp: ub4; offset: ub4; bufp: Pointer; bufl: ub4;
00833 piece: ub1; ctxp: Pointer; cbfp: Pointer; csid: ub2; csfrm: ub1): sword;
00834 function LobCreateTemporary(svchp: POCISvcCtx; errhp: POCIError;
00835 locp: POCILobLocator; csid: ub2; csfrm: ub1; lobtype: ub1;
00836 cache: LongBool; duration: OCIDuration): sword;
00837 function LobIsTemporary(svchp: POCISvcCtx; errhp: POCIError;
00838 locp: POCILobLocator; var is_temporary: LongBool): sword;
00839 function LobFreeTemporary(svchp: POCISvcCtx; errhp: POCIError;
00840 locp: POCILobLocator): sword;
00841
00842 function StmtGetPieceInfo(stmtp: POCIStmt; errhp: POCIError;
00843 var hndlpp: Pointer; var typep: ub4; var in_outp: ub1; var iterp: ub4;
00844 var idxp: ub4; var piecep: ub1): sword;
00845 function StmtSetPieceInfo(handle: Pointer; typep: ub4; errhp: POCIError;
00846 buf: Pointer; var alenp: ub4; piece: ub1; indp: Pointer;
00847 var rcodep: ub2): sword;
00848 function PasswordChange(svchp: POCISvcCtx; errhp: POCIError;
00849 user_name: text; usernm_len: ub4; opasswd: text; opasswd_len: ub4;
00850 npasswd: text; npasswd_len: sb4; mode: ub4): sword;
00851 function ServerVersion(hndlp: POCIHandle; errhp: POCIError; bufp: text;
00852 bufsz: ub4; hndltype: ub1): sword;
00853 function ResultSetToStmt(rsetdp: POCIHandle; errhp: POCIError): sword;
00854 end;
00855
00856 {** Implements a driver for Oracle 9i }
00857 TZOracle9iPlainDriver = class (TZAbstractObject, IZPlainDriver,
00858 IZOraclePlainDriver)
00859 public
00860 constructor Create;
00861
00862 function GetProtocol: string;
00863 function GetDescription: string;
00864 procedure Initialize;
00865
00866 function Initializ(mode: ub4; ctxp: Pointer; malocfp: Pointer;
00867 ralocfp: Pointer; mfreefp: Pointer): sword;
00868 function EnvInit(var envhpp: POCIEnv; mode: ub4; xtramemsz: size_T;
00869 usrmempp: PPointer): sword;
00870 function EnvCreate(var envhpp: POCIEnv; mode: ub4; ctxp: Pointer;
00871 malocfp: Pointer; ralocfp: Pointer; mfreefp: Pointer; xtramemsz: size_T;
00872 usrmempp: PPointer): sword;
00873
00874 function HandleAlloc(parenth: POCIHandle; var hndlpp: POCIHandle;
00875 atype: ub4; xtramem_sz: size_T; usrmempp: PPointer): sword;
00876 function ServerAttach(srvhp: POCIServer; errhp: POCIError; dblink: text;
00877 dblink_len: sb4; mode: ub4): sword;
00878 function AttrSet(trgthndlp: POCIHandle; trghndltyp: ub4;
00879 attributep: Pointer; size: ub4; attrtype: ub4; errhp: POCIError):sword;
00880 function SessionBegin(svchp: POCISvcCtx; errhp: POCIError;
00881 usrhp: POCISession; credt: ub4; mode: ub4):sword;
00882 function SessionEnd(svchp: POCISvcCtx; errhp: POCIError;
00883 usrhp: POCISession; mode: ub4): sword;
00884 function ServerDetach(srvhp: POCIServer; errhp: POCIError;
00885 mode: ub4): sword;
00886 function HandleFree(hndlp: Pointer; atype: ub4): sword;
00887 function ErrorGet(hndlp: Pointer; recordno: ub4; sqlstate: text;
00888 var errcodep: sb4; bufp: text; bufsiz: ub4; atype: ub4): sword;
00889
00890 function StmtPrepare(stmtp: POCIStmt; errhp: POCIError; stmt: text;
00891 stmt_len: ub4; language:ub4; mode: ub4):sword;
00892 function StmtExecute(svchp: POCISvcCtx; stmtp: POCIStmt;
00893 errhp: POCIError; iters: ub4; rowoff: ub4; snap_in: POCISnapshot;
00894 snap_out: POCISnapshot; mode: ub4): sword;
00895 function ParamGet(hndlp: Pointer; htype: ub4; errhp: POCIError;
00896 var parmdpp: Pointer; pos: ub4): sword;
00897 function AttrGet(trgthndlp: POCIHandle; trghndltyp: ub4;
00898 attributep: Pointer; sizep: Pointer; attrtype: ub4;
00899 errhp: POCIError): sword;
00900 function StmtFetch(stmtp: POCIStmt; errhp: POCIError; nrows: ub4;
00901 orientation: ub2; mode: ub4): sword;
00902 function DefineByPos(stmtp: POCIStmt; var defnpp: POCIDefine;
00903 errhp: POCIError; position: ub4; valuep: Pointer; value_sz: sb4; dty: ub2;
00904 indp: Pointer; rlenp: Pointer; rcodep: Pointer; mode: ub4): sword;
00905 function DefineArrayOfStruct(defnpp: POCIDefine; errhp: POCIError;
00906 pvskip: ub4; indskip: ub4; rlskip: ub4; rcskip: ub4): sword;
00907
00908 function BindByPos(stmtp: POCIStmt; var bindpp: POCIBind;
00909 errhp: POCIError; position: ub4; valuep: Pointer; value_sz: sb4; dty: ub2;
00910 indp: Pointer; alenp: Pointer; rcodep: Pointer; maxarr_len: ub4;
00911 curelep: Pointer; mode: ub4): sword;
00912 function BindByName(stmtp: POCIStmt; var bindpp: POCIBind;
00913 errhp: POCIError; placeholder: text; placeh_len: sb4; valuep: Pointer;
00914 value_sz: sb4; dty: ub2; indp: Pointer; alenp: Pointer; rcodep: Pointer;
00915 maxarr_len: ub4; curelep: Pointer; mode: ub4): sword;
00916 function BindDynamic(bindp: POCIBind; errhp: POCIError; ictxp: Pointer;
00917 icbfp: Pointer; octxp: Pointer; ocbfp: Pointer): sword;
00918
00919 function TransStart(svchp: POCISvcCtx; errhp: POCIError; timeout: word;
00920 flags: ub4): sword;
00921 function TransRollback(svchp:POCISvcCtx; errhp:POCIError;
00922 flags: ub4): sword;
00923 function TransCommit(svchp: POCISvcCtx; errhp: POCIError;
00924 flags: ub4): sword;
00925 function TransDetach(svchp: POCISvcCtx; errhp: POCIError;
00926 flags: ub4): sword;
00927 function TransPrepare(svchp: POCISvcCtx; errhp: POCIError;
00928 flags: ub4): sword;
00929 function TransForget(svchp: POCISvcCtx; errhp: POCIError;
00930 flags: ub4): sword;
00931
00932 function DescribeAny(svchp: POCISvcCtx; errhp: POCIError;
00933 objptr: Pointer; objnm_len: ub4; objptr_typ: ub1; info_level: ub1;
00934 objtyp: ub1; dschp: POCIDescribe): sword;
00935 function Break(svchp: POCISvcCtx; errhp:POCIError): sword;
00936 function Reset(svchp: POCISvcCtx; errhp:POCIError): sword;
00937 function DescriptorAlloc(parenth: POCIEnv; var descpp: POCIDescriptor;
00938 htype: ub4; xtramem_sz: integer; usrmempp: Pointer): sword;
00939 function DescriptorFree(descp: Pointer; htype: ub4): sword;
00940
00941 function DateTimeAssign(hndl: POCIEnv; err: POCIError;
00942 const from: POCIDateTime;_to: POCIDateTime): sword;
00943 function DateTimeCheck(hndl: POCIEnv; err: POCIError;
00944 const date: POCIDateTime; var valid: ub4): sword;
00945 function DateTimeCompare(hndl: POCIEnv; err: POCIError;
00946 const date1: POCIDateTime; const date2: POCIDateTime;
00947 var _result: sword): sword;
00948 function DateTimeConvert(hndl: POCIEnv; err: POCIError;
00949 indate: POCIDateTime; outdate: POCIDateTime): sword;
00950 function DateTimeFromText(hndl: POCIEnv; err: POCIError;
00951 const date_str: text; d_str_length: size_t; const fmt: text;
00952 fmt_length: ub1; const lang_name: text; lang_length: size_t;
00953 date: POCIDateTime): sword;
00954 function DateTimeGetDate(hndl: POCIEnv; err: POCIError;
00955 const date: POCIDateTime; var year: sb2; var month: ub1;
00956 var day: ub1): sword;
00957 function DateTimeGetTime(hndl: POCIEnv; err: POCIError;
00958 datetime: POCIDateTime; var hour: ub1; var minute: ub1; var sec: ub1;
00959 var fsec: ub4): sword;
00960 function DateTimeGetTimeZoneOffset(hndl: POCIEnv; err: POCIError;
00961 const datetime: POCIDateTime; var hour: sb1; var minute: sb1): sword;
00962 function DateTimeSysTimeStamp(hndl: POCIEnv; err: POCIError;
00963 sys_date: POCIDateTime): sword;
00964 function DateTimeConstruct(hndl: POCIEnv; err: POCIError;
00965 datetime: POCIDateTime; year: sb2; month: ub1; day: ub1; hour: ub1;
00966 min: ub1; sec: ub1; fsec: ub4; timezone: text;
00967 timezone_length: size_t): sword;
00968 function DateTimeToText(hndl: POCIEnv; err: POCIError;
00969 const date: POCIDateTime; const fmt: text; fmt_length: ub1;
00970 fsprec: ub1; const lang_name: text; lang_length: size_t;
00971 var buf_size: ub4; buf: text): sword;
00972 function DateTimeGetTimeZoneName(hndl: POCIEnv; err: POCIError;
00973 datetime: POCIDateTime; var buf: ub1; var buflen: ub4): sword;
00974
00975 function LobAppend(svchp: POCISvcCtx; errhp: POCIError; dst_locp,
00976 src_locp: POCILobLocator): sword;
00977 function LobAssign(svchp: POCISvcCtx; errhp: POCIError;
00978 src_locp: POCILobLocator; var dst_locpp: POCILobLocator): sword;
00979 function LobClose(svchp: POCISvcCtx; errhp: POCIError;
00980 locp: POCILobLocator): sword;
00981 function LobCopy(svchp: POCISvcCtx; errhp: POCIError;
00982 dst_locp: POCILobLocator; src_locp: POCILobLocator; amount: ub4;
00983 dst_offset: ub4; src_offset: ub4): sword;
00984 function LobEnableBuffering(svchp: POCISvcCtx; errhp: POCIError;
00985 locp: POCILobLocator): sword;
00986 function LobDisableBuffering(svchp: POCISvcCtx; errhp: POCIError;
00987 locp: POCILobLocator): sword;
00988 function LobErase(svchp: POCISvcCtx; errhp: POCIError; locp: POCILobLocator;
00989 var amount: ub4; offset: ub4): sword;
00990 function LobFileExists(svchp: POCISvcCtx; errhp: POCIError;
00991 filep: POCILobLocator; var flag: Boolean): sword;
00992 function LobFileGetName(envhp: POCIEnv; errhp: POCIError;
00993 filep: POCILobLocator; dir_alias: text; var d_length: ub2; filename: text;
00994 var f_length: ub2): sword;
00995 function LobFileSetName(envhp: POCIEnv; errhp: POCIError;
00996 var filep: POCILobLocator; dir_alias: text; d_length: ub2; filename: text;
00997 f_length: ub2): sword;
00998 function LobFlushBuffer(svchp: POCISvcCtx; errhp: POCIError;
00999 locp: POCILobLocator; flag: ub4): sword;
01000 function LobGetLength(svchp: POCISvcCtx; errhp: POCIError;
01001 locp: POCILobLocator; var lenp: ub4): sword;
01002 function LobIsOpen(svchp: POCISvcCtx; errhp: POCIError;
01003 locp: POCILobLocator; var flag: LongBool): sword;
01004 function LobLoadFromFile(svchp: POCISvcCtx; errhp: POCIError;
01005 dst_locp: POCILobLocator; src_locp: POCILobLocator; amount: ub4;
01006 dst_offset: ub4; src_offset: ub4): sword;
01007 function LobLocatorIsInit(envhp: POCIEnv; errhp: POCIError;
01008 locp: POCILobLocator; var is_initialized: LongBool): sword;
01009 function LobOpen(svchp: POCISvcCtx; errhp: POCIError;
01010 locp: POCILobLocator; mode: ub1): sword;
01011 function LobRead(svchp: POCISvcCtx; errhp: POCIError;
01012 locp: POCILobLocator; var amtp: ub4; offset: ub4; bufp: Pointer; bufl: ub4;
01013 ctxp: Pointer; cbfp: Pointer; csid: ub2; csfrm: ub1): sword;
01014 function LobTrim(svchp: POCISvcCtx; errhp: POCIError;
01015 locp: POCILobLocator; newlen: ub4): sword;
01016 function LobWrite(svchp: POCISvcCtx; errhp: POCIError;
01017 locp: POCILobLocator; var amtp: ub4; offset: ub4; bufp: Pointer; bufl: ub4;
01018 piece: ub1; ctxp: Pointer; cbfp: Pointer; csid: ub2; csfrm: ub1): sword;
01019 function LobCreateTemporary(svchp: POCISvcCtx; errhp: POCIError;
01020 locp: POCILobLocator; csid: ub2; csfrm: ub1; lobtype: ub1;
01021 cache: LongBool; duration: OCIDuration): sword;
01022 function LobIsTemporary(svchp: POCISvcCtx; errhp: POCIError;
01023 locp: POCILobLocator; var is_temporary: LongBool): sword;
01024 function LobFreeTemporary(svchp: POCISvcCtx; errhp: POCIError;
01025 locp: POCILobLocator): sword;
01026
01027 function StmtGetPieceInfo(stmtp: POCIStmt; errhp: POCIError;
01028 var hndlpp: Pointer; var typep: ub4; var in_outp: ub1; var iterp: ub4;
01029 var idxp: ub4; var piecep: ub1): sword;
01030 function StmtSetPieceInfo(handle: Pointer; typep: ub4; errhp: POCIError;
01031 buf: Pointer; var alenp: ub4; piece: ub1; indp: Pointer;
01032 var rcodep: ub2): sword;
01033 function PasswordChange(svchp: POCISvcCtx; errhp: POCIError;
01034 user_name: text; usernm_len: ub4; opasswd: text; opasswd_len: ub4;
01035 npasswd: text; npasswd_len: sb4; mode: ub4): sword;
01036 function ServerVersion(hndlp: POCIHandle; errhp: POCIError; bufp: text;
01037 bufsz: ub4; hndltype: ub1): sword;
01038 function ResultSetToStmt(rsetdp: POCIHandle; errhp: POCIError): sword;
01039 end;
01040
01041 implementation
01042
01043 { TZOracle9iPlainDriver }
01044
01045 constructor TZOracle9iPlainDriver.Create;
01046 begin
01047 end;
01048
01049 function TZOracle9iPlainDriver.GetProtocol: string;
01050 begin
01051 Result := 'oracle-9i';
01052 end;
01053
01054 function TZOracle9iPlainDriver.GetDescription: string;
01055 begin
01056 Result := 'Native Plain Driver for Oracle 9i';
01057 end;
01058
01059 procedure TZOracle9iPlainDriver.Initialize;
01060 begin
01061 if not ZPlainOracle9i.LibraryLoader.Loaded then
01062 begin
01063 ZPlainOracle9i.LibraryLoader.Load;
01064 ZPlainOracle9i.OCIInitialize(OCI_THREADED, nil, nil, nil, nil);
01065 end;
01066 end;
01067
01068 function TZOracle9iPlainDriver.AttrGet(trgthndlp: POCIHandle;
01069 trghndltyp: ub4; attributep, sizep: Pointer; attrtype: ub4;
01070 errhp: POCIError): sword;
01071 begin
01072 Result := ZPlainOracle9i.OCIAttrGet(trgthndlp, trghndltyp, attributep, sizep,
01073 attrtype, errhp);
01074 end;
01075
01076 function TZOracle9iPlainDriver.AttrSet(trgthndlp: POCIHandle;
01077 trghndltyp: ub4; attributep: Pointer; size, attrtype: ub4;
01078 errhp: POCIError): sword;
01079 begin
01080 Result := ZPlainOracle9i.OCIAttrSet(trgthndlp, trghndltyp, attributep, size,
01081 attrtype, errhp);
01082 end;
01083
01084 function TZOracle9iPlainDriver.BindByName(stmtp: POCIStmt;
01085 var bindpp: POCIBind; errhp: POCIError; placeholder: text;
01086 placeh_len: sb4; valuep: Pointer; value_sz: sb4; dty: ub2; indp, alenp,
01087 rcodep: Pointer; maxarr_len: ub4; curelep: Pointer; mode: ub4): sword;
01088 begin
01089 Result := ZPlainOracle9i.OCIBindByName(stmtp, bindpp, errhp, placeholder,
01090 placeh_len, valuep, value_sz, dty, indp, alenp, rcodep, maxarr_len,
01091 curelep, mode);
01092 end;
01093
01094 function TZOracle9iPlainDriver.BindByPos(stmtp: POCIStmt;
01095 var bindpp: POCIBind; errhp: POCIError; position: ub4; valuep: Pointer;
01096 value_sz: sb4; dty: ub2; indp, alenp, rcodep: Pointer; maxarr_len: ub4;
01097 curelep: Pointer; mode: ub4): sword;
01098 begin
01099 Result := ZPlainOracle9i.OCIBindByPos(stmtp, bindpp, errhp, position, valuep,
01100 value_sz, dty, indp, alenp, rcodep, maxarr_len, curelep, mode);
01101 end;
01102
01103 function TZOracle9iPlainDriver.BindDynamic(bindp: POCIBind;
01104 errhp: POCIError; ictxp, icbfp, octxp, ocbfp: Pointer): sword;
01105 begin
01106 Result := ZPlainOracle9i.OCIBindDynamic(bindp, errhp, ictxp, icbfp, octxp,
01107 ocbfp);
01108 end;
01109
01110 function TZOracle9iPlainDriver.Break(svchp: POCISvcCtx;
01111 errhp: POCIError): sword;
01112 begin
01113 Result := ZPlainOracle9i.OCIBreak(svchp, errhp);
01114 end;
01115
01116 function TZOracle9iPlainDriver.DefineArrayOfStruct(defnpp: POCIDefine;
01117 errhp: POCIError; pvskip, indskip, rlskip, rcskip: ub4): sword;
01118 begin
01119 Result := ZPlainOracle9i.OCIDefineArrayOfStruct(defnpp, errhp, pvskip,
01120 indskip, rlskip, rcskip);
01121 end;
01122
01123 function TZOracle9iPlainDriver.DefineByPos(stmtp: POCIStmt;
01124 var defnpp: POCIDefine; errhp: POCIError; position: ub4; valuep: Pointer;
01125 value_sz: sb4; dty: ub2; indp, rlenp, rcodep: Pointer; mode: ub4): sword;
01126 begin
01127 Result := ZPlainOracle9i.OCIDefineByPos(stmtp, defnpp, errhp, position,
01128 valuep, value_sz, dty, indp, rlenp, rcodep, mode);
01129 end;
01130
01131 function TZOracle9iPlainDriver.DescribeAny(svchp: POCISvcCtx;
01132 errhp: POCIError; objptr: Pointer; objnm_len: ub4; objptr_typ,
01133 info_level, objtyp: ub1; dschp: POCIDescribe): sword;
01134 begin
01135 Result := ZPlainOracle9i.OCIDescribeAny(svchp, errhp, objptr,
01136 objnm_len, objptr_typ, info_level, objtyp, dschp);
01137 end;
01138
01139 function TZOracle9iPlainDriver.DescriptorAlloc(parenth: POCIEnv;
01140 var descpp: POCIDescriptor; htype: ub4; xtramem_sz: integer;
01141 usrmempp: Pointer): sword;
01142 begin
01143 Result := ZPlainOracle9i.OCIDescriptorAlloc(parenth, descpp, htype,
01144 xtramem_sz, usrmempp);
01145 end;
01146
01147 function TZOracle9iPlainDriver.DescriptorFree(descp: Pointer;
01148 htype: ub4): sword;
01149 begin
01150 Result := ZPlainOracle9i.OCIDescriptorFree(descp, htype);
01151 end;
01152
01153 function TZOracle9iPlainDriver.EnvCreate(var envhpp: POCIEnv; mode: ub4;
01154 ctxp: Pointer; malocfp: Pointer; ralocfp: Pointer; mfreefp: Pointer;
01155 xtramemsz: size_T; usrmempp: PPointer): sword;
01156 begin
01157 Result := ZPlainOracle9i.OCIEnvCreate(envhpp, mode, ctxp, malocfp, ralocfp,
01158 mfreefp, xtramemsz, usrmempp);
01159 end;
01160
01161 function TZOracle9iPlainDriver.EnvInit(var envhpp: POCIEnv; mode: ub4;
01162 xtramemsz: size_T; usrmempp: PPointer): sword;
01163 begin
01164 Result := ZPlainOracle9i.OCIEnvInit(envhpp, mode, xtramemsz, usrmempp);
01165 end;
01166
01167 function TZOracle9iPlainDriver.ErrorGet(hndlp: Pointer; recordno: ub4;
01168 sqlstate: text; var errcodep: sb4; bufp: text; bufsiz,
01169 atype: ub4): sword;
01170 begin
01171 Result := ZPlainOracle9i.OCIErrorGet(hndlp, recordno, sqlstate, errcodep,
01172 bufp, bufsiz, atype);
01173 end;
01174
01175 function TZOracle9iPlainDriver.HandleAlloc(parenth: POCIHandle;
01176 var hndlpp: POCIHandle; atype: ub4; xtramem_sz: size_T;
01177 usrmempp: PPointer): sword;
01178 begin
01179 Result := ZPlainOracle9i.OCIHandleAlloc(parenth, hndlpp, atype, xtramem_sz,
01180 usrmempp);
01181 end;
01182
01183 function TZOracle9iPlainDriver.HandleFree(hndlp: Pointer; atype: ub4): sword;
01184 begin
01185 Result := ZPlainOracle9i.OCIHandleFree(hndlp, atype);
01186 end;
01187
01188 function TZOracle9iPlainDriver.Initializ(mode: ub4; ctxp, malocfp,
01189 ralocfp, mfreefp: Pointer): sword;
01190 begin
01191 Result := ZPlainOracle9i.OCIInitialize(mode, ctxp, malocfp, ralocfp, mfreefp);
01192 end;
01193
01194 function TZOracle9iPlainDriver.LobAppend(svchp: POCISvcCtx;
01195 errhp: POCIError; dst_locp, src_locp: POCILobLocator): sword;
01196 begin
01197 Result := ZPlainOracle9i.OCILobAppend(svchp, errhp, dst_locp, src_locp);
01198 end;
01199
01200 function TZOracle9iPlainDriver.LobAssign(svchp: POCISvcCtx; errhp: POCIError;
01201 src_locp: POCILobLocator; var dst_locpp: POCILobLocator): sword;
01202 begin
01203 Result := ZPlainOracle9i.OCILobAssign(svchp, errhp, src_locp, dst_locpp);
01204 end;
01205
01206 function TZOracle9iPlainDriver.LobClose(svchp: POCISvcCtx;
01207 errhp: POCIError; locp: POCILobLocator): sword;
01208 begin
01209 Result := ZPlainOracle9i.OCILobClose(svchp, errhp, locp);
01210 end;
01211
01212 function TZOracle9iPlainDriver.LobCopy(svchp: POCISvcCtx; errhp: POCIError;
01213 dst_locp, src_locp: POCILobLocator; amount, dst_offset,
01214 src_offset: ub4): sword;
01215 begin
01216 Result := ZPlainOracle9i.OCILobCopy(svchp, errhp, dst_locp, src_locp,
01217 amount, dst_offset, src_offset);
01218 end;
01219
01220 function TZOracle9iPlainDriver.LobDisableBuffering(svchp: POCISvcCtx;
01221 errhp: POCIError; locp: POCILobLocator): sword;
01222 begin
01223 Result := ZPlainOracle9i.OCILobDisableBuffering(svchp, errhp, locp);
01224 end;
01225
01226 function TZOracle9iPlainDriver.LobEnableBuffering(svchp: POCISvcCtx;
01227 errhp: POCIError; locp: POCILobLocator): sword;
01228 begin
01229 Result := ZPlainOracle9i.OCILobEnableBuffering(svchp, errhp, locp);
01230 end;
01231
01232 function TZOracle9iPlainDriver.LobErase(svchp: POCISvcCtx;
01233 errhp: POCIError; locp: POCILobLocator; var amount: ub4;
01234 offset: ub4): sword;
01235 begin
01236 Result := ZPlainOracle9i.OCILobErase(svchp, errhp, locp, amount, offset);
01237 end;
01238
01239 function TZOracle9iPlainDriver.LobFileExists(svchp: POCISvcCtx;
01240 errhp: POCIError; filep: POCILobLocator; var flag: Boolean): sword;
01241 begin
01242 Result := ZPlainOracle9i.OCILobFileExists(svchp, errhp, filep, flag);
01243 end;
01244
01245 function TZOracle9iPlainDriver.LobFileGetName(envhp: POCIEnv;
01246 errhp: POCIError; filep: POCILobLocator; dir_alias: text;
01247 var d_length: ub2; filename: text; var f_length: ub2): sword;
01248 begin
01249 Result := ZPlainOracle9i.OCILobFileGetName(envhp, errhp, filep, dir_alias,
01250 d_length, filename, f_length);
01251 end;
01252
01253 function TZOracle9iPlainDriver.LobFileSetName(envhp: POCIEnv;
01254 errhp: POCIError; var filep: POCILobLocator; dir_alias: text;
01255 d_length: ub2; filename: text; f_length: ub2): sword;
01256 begin
01257 Result := ZPlainOracle9i.OCILobFileSetName(envhp, errhp, filep, dir_alias,
01258 d_length, filename, f_length);
01259 end;
01260
01261 function TZOracle9iPlainDriver.LobFlushBuffer(svchp: POCISvcCtx;
01262 errhp: POCIError; locp: POCILobLocator; flag: ub4): sword;
01263 begin
01264 Result := ZPlainOracle9i.OCILobFlushBuffer(svchp, errhp, locp, flag);
01265 end;
01266
01267 function TZOracle9iPlainDriver.LobGetLength(svchp: POCISvcCtx;
01268 errhp: POCIError; locp: POCILobLocator; var lenp: ub4): sword;
01269 begin
01270 Result := ZPlainOracle9i.OCILobGetLength(svchp, errhp, locp, lenp);
01271 end;
01272
01273 function TZOracle9iPlainDriver.LobIsOpen(svchp: POCISvcCtx;
01274 errhp: POCIError; locp: POCILobLocator; var flag: LongBool): sword;
01275 begin
01276 Result := ZPlainOracle9i.OCILobIsOpen(svchp, errhp, locp, flag);
01277 end;
01278
01279 function TZOracle9iPlainDriver.LobLoadFromFile(svchp: POCISvcCtx;
01280 errhp: POCIError; dst_locp, src_locp: POCILobLocator; amount, dst_offset,
01281 src_offset: ub4): sword;
01282 begin
01283 Result := ZPlainOracle9i.OCILobLoadFromFile(svchp, errhp, dst_locp, src_locp,
01284 amount, dst_offset, src_offset);
01285 end;
01286
01287 function TZOracle9iPlainDriver.LobLocatorIsInit(envhp: POCIEnv;
01288 errhp: POCIError; locp: POCILobLocator;
01289 var is_initialized: LongBool): sword;
01290 begin
01291 Result := ZPlainOracle9i.OCILobLocatorIsInit(envhp, errhp, locp,
01292 is_initialized);
01293 end;
01294
01295 function TZOracle9iPlainDriver.LobOpen(svchp: POCISvcCtx; errhp: POCIError;
01296 locp: POCILobLocator; mode: ub1): sword;
01297 begin
01298 Result := ZPlainOracle9i.OCILobOpen(svchp, errhp, locp, mode);
01299 end;
01300
01301 function TZOracle9iPlainDriver.LobRead(svchp: POCISvcCtx; errhp: POCIError;
01302 locp: POCILobLocator; var amtp: ub4; offset: ub4; bufp: Pointer;
01303 bufl: ub4; ctxp, cbfp: Pointer; csid: ub2; csfrm: ub1): sword;
01304 begin
01305 Result := ZPlainOracle9i.OCILobRead(svchp, errhp, locp, amtp, offset, bufp,
01306 bufl, ctxp, cbfp, csid, csfrm);
01307 end;
01308
01309 function TZOracle9iPlainDriver.LobTrim(svchp: POCISvcCtx; errhp: POCIError;
01310 locp: POCILobLocator; newlen: ub4): sword;
01311 begin
01312 Result := ZPlainOracle9i.OCILobTrim(svchp, errhp, locp, newlen);
01313 end;
01314
01315 function TZOracle9iPlainDriver.LobWrite(svchp: POCISvcCtx;
01316 errhp: POCIError; locp: POCILobLocator; var amtp: ub4; offset: ub4;
01317 bufp: Pointer; bufl: ub4; piece: ub1; ctxp, cbfp: Pointer; csid: ub2;
01318 csfrm: ub1): sword;
01319 begin
01320 Result := ZPlainOracle9i.OCILobWrite(svchp, errhp, locp, amtp, offset,
01321 bufp, bufl, piece, ctxp, cbfp, csid, csfrm);
01322 end;
01323
01324 function TZOracle9iPlainDriver.LobCreateTemporary(svchp: POCISvcCtx;
01325 errhp: POCIError; locp: POCILobLocator; csid: ub2; csfrm, lobtype: ub1;
01326 cache: LongBool; duration: OCIDuration): sword;
01327 begin
01328 Result := ZPlainOracle9i.OCILobCreateTemporary(svchp, errhp, locp,
01329 csid, csfrm, lobtype, cache, duration);
01330 end;
01331
01332 function TZOracle9iPlainDriver.LobFreeTemporary(svchp: POCISvcCtx;
01333 errhp: POCIError; locp: POCILobLocator): sword;
01334 begin
01335 Result := ZPlainOracle9i.OCILobFreeTemporary(svchp, errhp, locp);
01336 end;
01337
01338 function TZOracle9iPlainDriver.LobIsTemporary(svchp: POCISvcCtx;
01339 errhp: POCIError; locp: POCILobLocator;
01340 var is_temporary: LongBool): sword;
01341 begin
01342 Result := ZPlainOracle9i.OCILobIsTemporary(svchp, errhp, locp, is_temporary);
01343 end;
01344
01345 function TZOracle9iPlainDriver.ParamGet(hndlp: Pointer; htype: ub4;
01346 errhp: POCIError; var parmdpp: Pointer; pos: ub4): sword;
01347 begin
01348 Result := ZPlainOracle9i.OCIParamGet(hndlp, htype, errhp, parmdpp, pos);
01349 end;
01350
01351 function TZOracle9iPlainDriver.PasswordChange(svchp: POCISvcCtx;
01352 errhp: POCIError; user_name: text; usernm_len: ub4; opasswd: text;
01353 opasswd_len: ub4; npasswd: text; npasswd_len: sb4; mode: ub4): sword;
01354 begin
01355 Result := ZPlainOracle9i.OCIPasswordChange(svchp, errhp, user_name,
01356 usernm_len, opasswd, opasswd_len, npasswd, npasswd_len, mode);
01357 end;
01358
01359 function TZOracle9iPlainDriver.Reset(svchp: POCISvcCtx;
01360 errhp: POCIError): sword;
01361 begin
01362 Result := ZPlainOracle9i.OCIReset(svchp, errhp);
01363 end;
01364
01365 function TZOracle9iPlainDriver.ResultSetToStmt(rsetdp: POCIHandle;
01366 errhp: POCIError): sword;
01367 begin
01368 Result := ZPlainOracle9i.OCIResultSetToStmt(rsetdp, errhp);
01369 end;
01370
01371 function TZOracle9iPlainDriver.ServerAttach(srvhp: POCIServer;
01372 errhp: POCIError; dblink: text; dblink_len: sb4; mode: ub4): sword;
01373 begin
01374 Result := ZPlainOracle9i.OCIServerAttach(srvhp, errhp, dblink, dblink_len,
01375 mode);
01376 end;
01377
01378 function TZOracle9iPlainDriver.ServerDetach(srvhp: POCIServer;
01379 errhp: POCIError; mode: ub4): sword;
01380 begin
01381 Result := ZPlainOracle9i.OCIServerDetach(srvhp, errhp, mode);
01382 end;
01383
01384 function TZOracle9iPlainDriver.ServerVersion(hndlp: POCIHandle;
01385 errhp: POCIError; bufp: text; bufsz: ub4; hndltype: ub1): sword;
01386 begin
01387 Result := ZPlainOracle9i.OCIServerVersion(hndlp, errhp, bufp, bufsz,
01388 hndltype);
01389 end;
01390
01391 function TZOracle9iPlainDriver.SessionBegin(svchp: POCISvcCtx;
01392 errhp: POCIError; usrhp: POCISession; credt, mode: ub4): sword;
01393 begin
01394 Result := ZPlainOracle9i.OCISessionBegin(svchp, errhp, usrhp, credt, mode);
01395 end;
01396
01397 function TZOracle9iPlainDriver.SessionEnd(svchp: POCISvcCtx;
01398 errhp: POCIError; usrhp: POCISession; mode: ub4): sword;
01399 begin
01400 Result := ZPlainOracle9i.OCISessionEnd(svchp, errhp, usrhp, mode);
01401 end;
01402
01403 function TZOracle9iPlainDriver.StmtExecute(svchp: POCISvcCtx;
01404 stmtp: POCIStmt; errhp: POCIError; iters, rowoff: ub4; snap_in,
01405 snap_out: POCISnapshot; mode: ub4): sword;
01406 begin
01407 Result := ZPlainOracle9i.OCIStmtExecute(svchp, stmtp, errhp, iters, rowoff,
01408 snap_in, snap_out, mode);
01409 end;
01410
01411 function TZOracle9iPlainDriver.StmtFetch(stmtp: POCIStmt; errhp: POCIError;
01412 nrows: ub4; orientation: ub2; mode: ub4): sword;
01413 begin
01414 Result := ZPlainOracle9i.OCIStmtFetch(stmtp, errhp, nrows, orientation, mode);
01415 end;
01416
01417 function TZOracle9iPlainDriver.StmtGetPieceInfo(stmtp: POCIStmt;
01418 errhp: POCIError; var hndlpp: Pointer; var typep: ub4; var in_outp: ub1;
01419 var iterp, idxp: ub4; var piecep: ub1): sword;
01420 begin
01421 Result := ZPlainOracle9i.OCIStmtGetPieceInfo(stmtp, errhp, hndlpp, typep,
01422 in_outp, iterp, idxp, piecep);
01423 end;
01424
01425 function TZOracle9iPlainDriver.StmtPrepare(stmtp: POCIStmt;
01426 errhp: POCIError; stmt: text; stmt_len, language, mode: ub4): sword;
01427 begin
01428 Result := ZPlainOracle9i.OCIStmtPrepare(stmtp, errhp, stmt, stmt_len,
01429 language, mode);
01430 end;
01431
01432 function TZOracle9iPlainDriver.StmtSetPieceInfo(handle: Pointer;
01433 typep: ub4; errhp: POCIError; buf: Pointer; var alenp: ub4; piece: ub1;
01434 indp: Pointer; var rcodep: ub2): sword;
01435 begin
01436 Result := ZPlainOracle9i.OCIStmtSetPieceInfo(handle, typep,
01437 errhp, buf, alenp, piece, indp, rcodep);
01438 end;
01439
01440 function TZOracle9iPlainDriver.TransCommit(svchp: POCISvcCtx;
01441 errhp: POCIError; flags: ub4): sword;
01442 begin
01443 Result := ZPlainOracle9i.OCITransCommit(svchp, errhp, flags);
01444 end;
01445
01446 function TZOracle9iPlainDriver.TransDetach(svchp: POCISvcCtx;
01447 errhp: POCIError; flags: ub4): sword;
01448 begin
01449 Result := ZPlainOracle9i.OCITransDetach(svchp, errhp, flags);
01450 end;
01451
01452 function TZOracle9iPlainDriver.TransForget(svchp: POCISvcCtx;
01453 errhp: POCIError; flags: ub4): sword;
01454 begin
01455 Result := ZPlainOracle9i.OCITransForget(svchp, errhp, flags);
01456 end;
01457
01458 function TZOracle9iPlainDriver.TransPrepare(svchp: POCISvcCtx;
01459 errhp: POCIError; flags: ub4): sword;
01460 begin
01461 Result := ZPlainOracle9i.OCITransPrepare(svchp, errhp, flags);
01462 end;
01463
01464 function TZOracle9iPlainDriver.TransRollback(svchp: POCISvcCtx;
01465 errhp: POCIError; flags: ub4): sword;
01466 begin
01467 Result := ZPlainOracle9i.OCITransRollback(svchp, errhp, flags);
01468 end;
01469
01470 function TZOracle9iPlainDriver.TransStart(svchp: POCISvcCtx;
01471 errhp: POCIError; timeout: word; flags: ub4): sword;
01472 begin
01473 Result := ZPlainOracle9i.OCITransStart(svchp, errhp, timeout, flags);
01474 end;
01475
01476 function TZOracle9iPlainDriver.DateTimeAssign(hndl: POCIEnv;
01477 err: POCIError; const from: POCIDateTime; _to: POCIDateTime): sword;
01478 begin
01479 Result := ZPlainOracle9i.OCIDateTimeAssign(hndl, err, from, _to);
01480 end;
01481
01482 function TZOracle9iPlainDriver.DateTimeCheck(hndl: POCIEnv; err: POCIError;
01483 const date: POCIDateTime; var valid: ub4): sword;
01484 begin
01485 Result := ZPlainOracle9i.OCIDateTimeCheck(hndl, err, date, valid);
01486 end;
01487
01488 function TZOracle9iPlainDriver.DateTimeCompare(hndl: POCIEnv;
01489 err: POCIError; const date1, date2: POCIDateTime;
01490 var _result: sword): sword;
01491 begin
01492 Result := ZPlainOracle9i.OCIDateTimeCompare(hndl, err, date1, date2, _result);
01493 end;
01494
01495 function TZOracle9iPlainDriver.DateTimeConstruct(hndl: POCIEnv;
01496 err: POCIError; datetime: POCIDateTime; year: sb2; month, day, hour, min,
01497 sec: ub1; fsec: ub4; timezone: text; timezone_length: size_t): sword;
01498 begin
01499 Result := ZPlainOracle9i.OCIDateTimeConstruct(hndl, err, datetime,
01500 year, month, day, hour, min, sec, fsec, timezone, timezone_length);
01501 end;
01502
01503 function TZOracle9iPlainDriver.DateTimeConvert(hndl: POCIEnv;
01504 err: POCIError; indate, outdate: POCIDateTime): sword;
01505 begin
01506 Result := ZPlainOracle9i.OCIDateTimeConvert(hndl, err, indate, outdate);
01507 end;
01508
01509 function TZOracle9iPlainDriver.DateTimeFromText(hndl: POCIEnv;
01510 err: POCIError; const date_str: text; d_str_length: size_t;
01511 const fmt: text; fmt_length: ub1; const lang_name: text;
01512 lang_length: size_t; date: POCIDateTime): sword;
01513 begin
01514 Result := ZPlainOracle9i.OCIDateTimeFromText(hndl, err,
01515 date_str, d_str_length, fmt, fmt_length, lang_name, lang_length, date);
01516 end;
01517
01518 function TZOracle9iPlainDriver.DateTimeGetDate(hndl: POCIEnv;
01519 err: POCIError; const date: POCIDateTime; var year: sb2; var month,
01520 day: ub1): sword;
01521 begin
01522 Result := ZPlainOracle9i.OCIDateTimeGetDate(hndl, err, date, year, month, day);
01523 end;
01524
01525 function TZOracle9iPlainDriver.DateTimeGetTime(hndl: POCIEnv;
01526 err: POCIError; datetime: POCIDateTime; var hour, minute, sec: ub1;
01527 var fsec: ub4): sword;
01528 begin
01529 Result := ZPlainOracle9i.OCIDateTimeGetTime(hndl, err, datetime,
01530 hour, minute, sec, fsec);
01531 end;
01532
01533 function TZOracle9iPlainDriver.DateTimeGetTimeZoneName(hndl: POCIEnv;
01534 err: POCIError; datetime: POCIDateTime; var buf: ub1;
01535 var buflen: ub4): sword;
01536 begin
01537 Result := ZPlainOracle9i.OCIDateTimeGetTimeZoneName(hndl, err, datetime,
01538 buf, buflen);
01539 end;
01540
01541 function TZOracle9iPlainDriver.DateTimeGetTimeZoneOffset(hndl: POCIEnv;
01542 err: POCIError; const datetime: POCIDateTime; var hour,
01543 minute: sb1): sword;
01544 begin
01545 Result := ZPlainOracle9i.OCIDateTimeGetTimeZoneOffset(hndl, err, datetime,
01546 hour, minute);
01547 end;
01548
01549 function TZOracle9iPlainDriver.DateTimeSysTimeStamp(hndl: POCIEnv;
01550 err: POCIError; sys_date: POCIDateTime): sword;
01551 begin
01552 Result := ZPlainOracle9i.OCIDateTimeSysTimeStamp(hndl, err, sys_date);
01553 end;
01554
01555 function TZOracle9iPlainDriver.DateTimeToText(hndl: POCIEnv;
01556 err: POCIError; const date: POCIDateTime; const fmt: text; fmt_length,
01557 fsprec: ub1; const lang_name: text; lang_length: size_t;
01558 var buf_size: ub4; buf: text): sword;
01559 begin
01560 Result := ZPlainOracle9i.OCIDateTimeToText(hndl, err, date, fmt, fmt_length,
01561 fsprec, lang_name, lang_length, buf_size, buf);
01562 end;
01563
01564 end.
01565