00001 {*********************************************************}
00002 { }
00003 { Zeos Database Objects }
00004 { Delphi interface to Oracle Call Interface }
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 ZPlainOracle9i;
00055
00056 interface
00057
00058 {$I ZPlain.inc}
00059
00060 {$J+}
00061
00062 uses
00063 {$IFNDEF UNIX}
00064
00065 {$ENDIF}
00066 ZPlainLoader;
00067
00068 {***************** Plain API types definition ****************}
00069
00070 const
00071 WINDOWS_DLL_LOCATION = 'oci.dll';
00072
00073 LINUX_DLL_LOCATION = 'libclntsh.so';
00074
00075
00076 type
00077 { Generic Oracle Types }
00078 sword = Integer;
00079 eword = Integer;
00080 uword = LongInt;
00081 sb4 = Integer;
00082 ub4 = LongInt;
00083 sb2 = SmallInt;
00084 ub2 = Word;
00085 sb1 = ShortInt;
00086 ub1 = Byte;
00087 dvoid = Pointer;
00088 text = PChar;
00089 size_T = Integer;
00090
00091 pub1 = ^ub1;
00092 psb1 = ^sb1;
00093 pub2 = ^ub2;
00094 psb2 = ^sb2;
00095 pub4 = ^ub4;
00096 psb4 = ^sb4;
00097
00098 { Handle Types }
00099 POCIHandle = Pointer;
00100 PPOCIHandle = ^Pointer;
00101 POCIEnv = POCIHandle;
00102 POCIServer = POCIHandle;
00103 POCIError = POCIHandle;
00104 POCISvcCtx = POCIHandle;
00105 POCIStmt = POCIHandle;
00106 POCIDefine = POCIHandle;
00107 POCISession = POCIHandle;
00108 POCIBind = POCIHandle;
00109 POCIDescribe = POCIHandle;
00110 POCITrans = POCIHandle;
00111
00112 { Descriptor Types }
00113 POCIDescriptor = Pointer;
00114 PPOCIDescriptor = ^POCIDescriptor;
00115 POCISnapshot = POCIDescriptor;
00116 POCILobLocator = POCIDescriptor;
00117 POCIParam = POCIDescriptor;
00118 POCIRowid = POCIDescriptor;
00119 POCIComplexObjectComp = POCIDescriptor;
00120 POCIAQEnqOptions = POCIDescriptor;
00121 POCIAQDeqOptions = POCIDescriptor;
00122 POCIAQMsgProperties = POCIDescriptor;
00123 POCIAQAgent = POCIDescriptor;
00124 POCIDate = POCIDescriptor;
00125 POCIDateTime = POCIDescriptor;
00126 POCINumber = POCIDescriptor;
00127 POCIString = POCIDescriptor;
00128
00129 OCIDuration = ub2;
00130
00131 const
00132 OCI_DURATION_INVALID = $FFFF; { Invalid duration }
00133 OCI_DURATION_BEGIN = 10; { beginning sequence of duration }
00134 OCI_DURATION_NULL = (OCI_DURATION_BEGIN-1); { null duration }
00135 OCI_DURATION_DEFAULT = (OCI_DURATION_BEGIN-2); { default }
00136 OCI_DURATION_USER_CALLBACK = (OCI_DURATION_BEGIN-3);
00137 OCI_DURATION_NEXT = (OCI_DURATION_BEGIN-4); { next special duration }
00138 OCI_DURATION_SESSION = (OCI_DURATION_BEGIN); { the end of user session }
00139 OCI_DURATION_TRANS = (OCI_DURATION_BEGIN+1); { the end of user transaction }
00140 OCI_DURATION_STATEMENT = (OCI_DURATION_BEGIN+3);
00141 { This is to be used only during callouts. It is similar to that
00142 of OCI_DURATION_CALL, but lasts only for the duration of a callout.
00143 Its heap is from PGA }
00144 OCI_DURATION_CALLOUT = (OCI_DURATION_BEGIN+4);
00145 OCI_DURATION_LAST = OCI_DURATION_CALLOUT; { last of predefined durations }
00146
00147 OCI_TEMP_BLOB = 1; { LOB type - BLOB }
00148 OCI_TEMP_CLOB = 2; { LOB type - CLOB }
00149
00150 const
00151 MAXTXNAMELEN = 64;
00152 XIDDATASIZE = 128; { size in bytes }
00153 MAXGTRIDSIZE = 64; { maximum size in bytes of gtrid }
00154 MAXBQUALSIZE = 64; { maximum size in bytes of bqual }
00155 NULLXID_ID = -1;
00156
00157 { Transaction branch identification: XID and NULLXID: }
00158 type
00159 PXID = ^TXID;
00160 TXID = record
00161 formatID: sb4; { format identifier }
00162 gtrid_length: sb4; { value from 1 through 64 }
00163 bqual_length: sb4; { value from 1 through 64 }
00164 data: array [0 .. XIDDATASIZE - 1] of ub1;
00165 end;
00166
00167 const
00168 MAXUB4 = High(ub4);
00169 MAXSB4 = High(sb4);
00170
00171 {***************** Plain API constants definition ****************}
00172
00173 { OCI Handle Types }
00174 OCI_HTYPE_FIRST = 1;
00175 OCI_HTYPE_ENV = 1;
00176 OCI_HTYPE_ERROR = 2;
00177 OCI_HTYPE_SVCCTX = 3;
00178 OCI_HTYPE_STMT = 4;
00179 OCI_HTYPE_BIND = 5;
00180 OCI_HTYPE_DEFINE = 6;
00181 OCI_HTYPE_DESCRIBE = 7;
00182 OCI_HTYPE_SERVER = 8;
00183 OCI_HTYPE_SESSION = 9;
00184 OCI_HTYPE_TRANS = 10;
00185 OCI_HTYPE_COMPLEXOBJECT = 11;
00186 OCI_HTYPE_SECURITY = 12;
00187 OCI_HTYPE_SUBSCRIPTION = 13;
00188 OCI_HTYPE_DIRPATH_CTX = 14;
00189 OCI_HTYPE_DIRPATH_COLUMN_ARRAY = 15;
00190 OCI_HTYPE_DIRPATH_STREAM = 16;
00191 OCI_HTYPE_PROC = 17;
00192 OCI_HTYPE_LAST = 17;
00193
00194 { OCI Descriptor Types }
00195 OCI_DTYPE_FIRST = 50;
00196 OCI_DTYPE_LOB = 50;
00197 OCI_DTYPE_SNAP = 51;
00198 OCI_DTYPE_RSET = 52;
00199 OCI_DTYPE_PARAM = 53;
00200 OCI_DTYPE_ROWID = 54;
00201 OCI_DTYPE_COMPLEXOBJECTCOMP = 55;
00202 OCI_DTYPE_FILE = 56;
00203 OCI_DTYPE_AQENQ_OPTIONS = 57;
00204 OCI_DTYPE_AQDEQ_OPTIONS = 58;
00205 OCI_DTYPE_AQMSG_PROPERTIES = 59;
00206 OCI_DTYPE_AQAGENT = 60;
00207 OCI_DTYPE_LOCATOR = 61;
00208 OCI_DTYPE_DATETIME = 62;
00209 OCI_DTYPE_INTERVAL = 63;
00210 OCI_DTYPE_AQNFY_DESCRIPTOR = 64;
00211 OCI_DTYPE_LAST = 64;
00212 OCI_DTYPE_DATE = 65; { Date }
00213 OCI_DTYPE_TIME = 66; { Time }
00214 OCI_DTYPE_TIME_TZ = 67; { Time with timezone }
00215 OCI_DTYPE_TIMESTAMP = 68; { Timestamp }
00216 OCI_DTYPE_TIMESTAMP_TZ = 69; { Timestamp with timezone }
00217 OCI_DTYPE_TIMESTAMP_LTZ = 70; { Timestamp with local tz }
00218
00219 { OCI Attributes Types }
00220 OCI_ATTR_FNCODE = 1;
00221 OCI_ATTR_OBJECT = 2;
00222 OCI_ATTR_NONBLOCKING_MODE = 3;
00223 OCI_ATTR_SQLCODE = 4;
00224 OCI_ATTR_ENV = 5;
00225 OCI_ATTR_SERVER = 6;
00226 OCI_ATTR_SESSION = 7;
00227 OCI_ATTR_TRANS = 8;
00228 OCI_ATTR_ROW_COUNT = 9;
00229 OCI_ATTR_SQLFNCODE = 10;
00230 OCI_ATTR_PREFETCH_ROWS = 11;
00231 OCI_ATTR_NESTED_PREFETCH_ROWS = 12;
00232 OCI_ATTR_PREFETCH_MEMORY = 13;
00233 OCI_ATTR_NESTED_PREFETCH_MEMORY = 14;
00234 OCI_ATTR_CHAR_COUNT = 15;
00235 OCI_ATTR_PDSCL = 16;
00236 OCI_ATTR_FSPRECISION = OCI_ATTR_PDSCL;
00237 OCI_ATTR_PDPRC = 17;
00238 OCI_ATTR_LFPRECISION = OCI_ATTR_PDPRC;
00239 OCI_ATTR_PARAM_COUNT = 18;
00240 OCI_ATTR_ROWID = 19;
00241 OCI_ATTR_CHARSET = 20;
00242 OCI_ATTR_NCHAR = 21;
00243 OCI_ATTR_USERNAME = 22;
00244 OCI_ATTR_PASSWORD = 23;
00245 OCI_ATTR_STMT_TYPE = 24;
00246 OCI_ATTR_INTERNAL_NAME = 25;
00247 OCI_ATTR_EXTERNAL_NAME = 26;
00248 OCI_ATTR_XID = 27;
00249 OCI_ATTR_TRANS_LOCK = 28;
00250 OCI_ATTR_TRANS_NAME = 29;
00251 OCI_ATTR_HEAPALLOC = 30;
00252 OCI_ATTR_CHARSET_ID = 31;
00253 OCI_ATTR_CHARSET_FORM = 32;
00254 OCI_ATTR_MAXDATA_SIZE = 33;
00255 OCI_ATTR_CACHE_OPT_SIZE = 34;
00256 OCI_ATTR_CACHE_MAX_SIZE = 35;
00257 OCI_ATTR_PINOPTION = 36;
00258 OCI_ATTR_ALLOC_DURATION = 37;
00259 OCI_ATTR_PIN_DURATION = 38;
00260 OCI_ATTR_FDO = 39;
00261 OCI_ATTR_POSTPROCESSING_CALLBACK = 40;
00262 OCI_ATTR_POSTPROCESSING_CONTEXT = 41;
00263 OCI_ATTR_ROWS_RETURNED = 42;
00264 OCI_ATTR_FOCBK = 43;
00265 OCI_ATTR_IN_V8_MODE = 44;
00266 OCI_ATTR_LOBEMPTY = 45;
00267 OCI_ATTR_SESSLANG = 46;
00268
00269 OCI_ATTR_VISIBILITY = 47;
00270 OCI_ATTR_RELATIVE_MSGID = 48;
00271 OCI_ATTR_SEQUENCE_DEVIATION = 49;
00272
00273 OCI_ATTR_CONSUMER_NAME = 50;
00274 OCI_ATTR_DEQ_MODE = 51;
00275 OCI_ATTR_NAVIGATION = 52;
00276 OCI_ATTR_WAIT = 53;
00277 OCI_ATTR_DEQ_MSGID = 54;
00278
00279 OCI_ATTR_PRIORITY = 55;
00280 OCI_ATTR_DELAY = 56;
00281 OCI_ATTR_EXPIRATION = 57;
00282 OCI_ATTR_CORRELATION = 58;
00283 OCI_ATTR_ATTEMPTS = 59;
00284 OCI_ATTR_RECIPIENT_LIST = 60;
00285 OCI_ATTR_EXCEPTION_QUEUE = 61;
00286 OCI_ATTR_ENQ_TIME = 62;
00287 OCI_ATTR_MSG_STATE = 63;
00288
00289 OCI_ATTR_AGENT_NAME = 64;
00290 OCI_ATTR_AGENT_ADDRESS = 65;
00291 OCI_ATTR_AGENT_PROTOCOL = 66;
00292
00293 OCI_ATTR_SENDER_ID = 68;
00294 OCI_ATTR_ORIGINAL_MSGID = 69;
00295
00296 OCI_ATTR_QUEUE_NAME = 70;
00297 OCI_ATTR_NFY_MSGID = 71;
00298 OCI_ATTR_MSG_PROP = 72;
00299
00300 OCI_ATTR_NUM_DML_ERRORS = 73;
00301 OCI_ATTR_DML_ROW_OFFSET = 74;
00302
00303 OCI_ATTR_DATEFORMAT = 75;
00304 OCI_ATTR_BUF_ADDR = 76;
00305 OCI_ATTR_BUF_SIZE = 77;
00306 OCI_ATTR_DIRPATH_MODE = 78;
00307 OCI_ATTR_DIRPATH_NOLOG = 79;
00308 OCI_ATTR_DIRPATH_PARALLEL = 80;
00309 OCI_ATTR_NUM_ROWS = 81;
00310
00311
00312
00313 OCI_ATTR_COL_COUNT = 82;
00314 OCI_ATTR_STREAM_OFFSET = 83;
00315 OCI_ATTR_SHARED_HEAPALLOC = 84;
00316
00317 OCI_ATTR_SERVER_GROUP = 85;
00318
00319 OCI_ATTR_MIGSESSION = 86;
00320
00321 OCI_ATTR_NOCACHE = 87;
00322
00323 OCI_ATTR_MEMPOOL_SIZE = 88;
00324 OCI_ATTR_MEMPOOL_INSTNAME = 89;
00325 OCI_ATTR_MEMPOOL_APPNAME = 90;
00326 OCI_ATTR_MEMPOOL_HOMENAME = 91;
00327 OCI_ATTR_MEMPOOL_MODEL = 92;
00328 OCI_ATTR_MODES = 93;
00329
00330 OCI_ATTR_SUBSCR_NAME = 94;
00331 OCI_ATTR_SUBSCR_CALLBACK = 95;
00332 OCI_ATTR_SUBSCR_CTX = 96;
00333 OCI_ATTR_SUBSCR_PAYLOAD = 97;
00334 OCI_ATTR_SUBSCR_NAMESPACE = 98;
00335
00336 OCI_ATTR_PROXY_CREDENTIALS = 99;
00337 OCI_ATTR_INITIAL_CLIENT_ROLES = 100;
00338
00339 OCI_ATTR_UNK = 101;
00340 OCI_ATTR_NUM_COLS = 102;
00341 OCI_ATTR_LIST_COLUMNS = 103;
00342 OCI_ATTR_RDBA = 104;
00343 OCI_ATTR_CLUSTERED = 105;
00344 OCI_ATTR_PARTITIONED = 106;
00345 OCI_ATTR_INDEX_ONLY = 107;
00346 OCI_ATTR_LIST_ARGUMENTS = 108;
00347 OCI_ATTR_LIST_SUBPROGRAMS = 109;
00348 OCI_ATTR_REF_TDO = 110;
00349 OCI_ATTR_LINK = 111;
00350 OCI_ATTR_MIN = 112;
00351 OCI_ATTR_MAX = 113;
00352 OCI_ATTR_INCR = 114;
00353 OCI_ATTR_CACHE = 115;
00354 OCI_ATTR_ORDER = 116;
00355 OCI_ATTR_HW_MARK = 117;
00356 OCI_ATTR_TYPE_SCHEMA = 118;
00357 OCI_ATTR_TIMESTAMP = 119;
00358 OCI_ATTR_NUM_ATTRS = 120;
00359 OCI_ATTR_NUM_PARAMS = 121;
00360 OCI_ATTR_OBJID = 122;
00361 OCI_ATTR_PTYPE = 123;
00362 OCI_ATTR_PARAM = 124;
00363 OCI_ATTR_OVERLOAD_ID = 125;
00364 OCI_ATTR_TABLESPACE = 126;
00365 OCI_ATTR_TDO = 127;
00366 OCI_ATTR_LTYPE = 128;
00367 OCI_ATTR_PARSE_ERROR_OFFSET = 129;
00368 OCI_ATTR_IS_TEMPORARY = 130;
00369 OCI_ATTR_IS_TYPED = 131;
00370 OCI_ATTR_DURATION = 132;
00371 OCI_ATTR_IS_INVOKER_RIGHTS = 133;
00372 OCI_ATTR_OBJ_NAME = 134;
00373 OCI_ATTR_OBJ_SCHEMA = 135;
00374 OCI_ATTR_OBJ_ID = 136;
00375
00376 { OCI Error Return Values }
00377 OCI_SUCCESS = 0;
00378 OCI_SUCCESS_WITH_INFO = 1;
00379 OCI_NO_DATA = 100;
00380 OCI_ERROR = -1;
00381 OCI_INVALID_HANDLE = -2;
00382 OCI_NEED_DATA = 99;
00383 OCI_STILL_EXECUTING = -3123;
00384 OCI_CONTINUE = -24200;
00385
00386 { Generic Default Value for Modes, .... }
00387 OCI_DEFAULT = $0;
00388
00389 { OCI Init Mode }
00390 OCI_THREADED = $1;
00391 OCI_OBJECT = $2;
00392 OCI_EVENTS = $4;
00393 OCI_SHARED = $10;
00394 OCI_NO_UCB = $40;
00395 OCI_NO_MUTEX = $80;
00396
00397 { OCI Credentials }
00398 OCI_CRED_RDBMS = 1;
00399 OCI_CRED_EXT = 2;
00400 OCI_CRED_PROXY = 3;
00401
00402 { OCI Authentication Mode }
00403 OCI_MIGRATE = $0001;
00404 OCI_SYSDBA = $0002;
00405 OCI_SYSOPER = $0004;
00406 OCI_PRELIM_AUTH = $0008;
00407
00408 { OCIPasswordChange }
00409 OCI_AUTH = $08;
00410
00411 { OCI Data Types }
00412 SQLT_CHR = 1 ;
00413 SQLT_NUM = 2 ;
00414 SQLT_INT = 3 ;
00415 SQLT_FLT = 4 ;
00416 SQLT_STR = 5 ;
00417 SQLT_VNU = 6 ;
00418 SQLT_PDN = 7 ;
00419 SQLT_LNG = 8 ;
00420 SQLT_VCS = 9 ;
00421 SQLT_NON = 10 ;
00422 SQLT_RID = 11 ;
00423 SQLT_DAT = 12 ;
00424 SQLT_VBI = 15 ;
00425 SQLT_BIN = 23 ;
00426 SQLT_LBI = 24 ;
00427 _SQLT_PLI = 29;
00428 SQLT_UIN = 68 ;
00429 SQLT_SLS = 91 ;
00430 SQLT_LVC = 94 ;
00431 SQLT_LVB = 95 ;
00432 SQLT_AFC = 96 ;
00433 SQLT_AVC = 97 ;
00434 SQLT_CUR = 102;
00435 SQLT_RDD = 104;
00436 SQLT_LAB = 105;
00437 SQLT_OSL = 106;
00438 SQLT_NTY = 108;
00439 SQLT_REF = 110;
00440 SQLT_CLOB = 112;
00441 SQLT_BLOB = 113;
00442 SQLT_BFILEE = 114;
00443 SQLT_CFILEE = 115;
00444 SQLT_RSET = 116;
00445 SQLT_NCO = 122;
00446 SQLT_VST = 155;
00447 SQLT_ODT = 156;
00448
00449 _SQLT_REC = 250;
00450 _SQLT_TAB = 251;
00451 _SQLT_BOL = 252;
00452
00453 { OCI Statement Types }
00454 OCI_STMT_SELECT = 1;
00455 OCI_STMT_UPDATE = 2;
00456 OCI_STMT_DELETE = 3;
00457 OCI_STMT_INSERT = 4;
00458 OCI_STMT_CREATE = 5;
00459 OCI_STMT_DROP = 6;
00460 OCI_STMT_ALTER = 7;
00461 OCI_STMT_BEGIN = 8;
00462 OCI_STMT_DECLARE = 9;
00463
00464 { OCI Statement language }
00465 OCI_NTV_SYNTAX = 1;
00466 OCI_V7_SYNTAX = 2;
00467 OCI_V8_SYNTAX = 3;
00468
00469 { OCI Statement Execute mode }
00470 OCI_BATCH_MODE = $01;
00471 OCI_EXACT_FETCH = $02;
00472 OCI_SCROLLABLE_CURSOR = $08;
00473 OCI_DESCRIBE_ONLY = $10;
00474 OCI_COMMIT_ON_SUCCESS = $20;
00475 OCI_NON_BLOCKING = $40;
00476 OCI_BATCH_ERRORS = $80;
00477 OCI_PARSE_ONLY = $100;
00478
00479 OCI_DATA_AT_EXEC = $02;
00480 OCI_DYNAMIC_FETCH = $02;
00481 OCI_PIECEWISE = $04;
00482
00483 { OCI Transaction modes }
00484 OCI_TRANS_NEW = $00000001;
00485 OCI_TRANS_JOIN = $00000002;
00486 OCI_TRANS_RESUME = $00000004;
00487 OCI_TRANS_STARTMASK = $000000ff;
00488
00489 OCI_TRANS_READONLY = $00000100;
00490 OCI_TRANS_READWRITE = $00000200;
00491 OCI_TRANS_SERIALIZABLE = $00000400;
00492 OCI_TRANS_ISOLMASK = $0000ff00;
00493
00494 OCI_TRANS_LOOSE = $00010000;
00495 OCI_TRANS_TIGHT = $00020000;
00496 OCI_TRANS_TYPEMASK = $000f0000;
00497
00498 OCI_TRANS_NOMIGRATE = $00100000;
00499 OCI_TRANS_TWOPHASE = $01000000;
00500
00501 { OCI pece wise fetch }
00502 OCI_ONE_PIECE = 0;
00503 OCI_FIRST_PIECE = 1;
00504 OCI_NEXT_PIECE = 2;
00505 OCI_LAST_PIECE = 3;
00506
00507 { OCI fetch modes }
00508 OCI_FETCH_NEXT = $02;
00509 OCI_FETCH_FIRST = $04;
00510 OCI_FETCH_LAST = $08;
00511 OCI_FETCH_PRIOR = $10;
00512 OCI_FETCH_ABSOLUTE = $20;
00513 OCI_FETCH_RELATIVE = $40;
00514
00515 {****************** Describe Handle Parameter Attributes *****************}
00516
00517 { Attributes common to Columns and Stored Procs }
00518 OCI_ATTR_DATA_SIZE = 1;
00519 OCI_ATTR_DATA_TYPE = 2;
00520 OCI_ATTR_DISP_SIZE = 3;
00521 OCI_ATTR_NAME = 4;
00522 OCI_ATTR_PRECISION = 5;
00523 OCI_ATTR_SCALE = 6;
00524 OCI_ATTR_IS_NULL = 7;
00525 OCI_ATTR_TYPE_NAME = 8;
00526 OCI_ATTR_SCHEMA_NAME = 9;
00527 OCI_ATTR_SUB_NAME = 10;
00528 OCI_ATTR_POSITION = 11;
00529
00530 { complex object retrieval parameter attributes }
00531 OCI_ATTR_COMPLEXOBJECTCOMP_TYPE = 50;
00532 OCI_ATTR_COMPLEXOBJECTCOMP_TYPE_LEVEL = 51;
00533 OCI_ATTR_COMPLEXOBJECT_LEVEL = 52;
00534 OCI_ATTR_COMPLEXOBJECT_COLL_OUTOFLINE = 53;
00535
00536 { Only Columns }
00537 OCI_ATTR_DISP_NAME = 100;
00538
00539 { Only Stored Procs }
00540 OCI_ATTR_OVERLOAD = 210;
00541 OCI_ATTR_LEVEL = 211;
00542 OCI_ATTR_HAS_DEFAULT = 212;
00543 OCI_ATTR_IOMODE = 213;
00544 OCI_ATTR_RADIX = 214;
00545 OCI_ATTR_NUM_ARGS = 215;
00546
00547 { only named type attributes }
00548 OCI_ATTR_TYPECODE = 216;
00549 OCI_ATTR_COLLECTION_TYPECODE = 217;
00550 OCI_ATTR_VERSION = 218;
00551 OCI_ATTR_IS_INCOMPLETE_TYPE = 219;
00552 OCI_ATTR_IS_SYSTEM_TYPE = 220;
00553 OCI_ATTR_IS_PREDEFINED_TYPE = 221;
00554 OCI_ATTR_IS_TRANSIENT_TYPE = 222;
00555 OCI_ATTR_IS_SYSTEM_GENERATED_TYPE = 223;
00556 OCI_ATTR_HAS_NESTED_TABLE = 224;
00557 OCI_ATTR_HAS_LOB = 225;
00558 OCI_ATTR_HAS_FILE = 226;
00559 OCI_ATTR_COLLECTION_ELEMENT = 227;
00560 OCI_ATTR_NUM_TYPE_ATTRS = 228;
00561 OCI_ATTR_LIST_TYPE_ATTRS = 229;
00562 OCI_ATTR_NUM_TYPE_METHODS = 230;
00563 OCI_ATTR_LIST_TYPE_METHODS = 231;
00564 OCI_ATTR_MAP_METHOD = 232;
00565 OCI_ATTR_ORDER_METHOD = 233;
00566
00567 { only collection element }
00568 OCI_ATTR_NUM_ELEMS = 234;
00569
00570 { only type methods }
00571 OCI_ATTR_ENCAPSULATION = 235;
00572 OCI_ATTR_IS_SELFISH = 236;
00573 OCI_ATTR_IS_VIRTUAL = 237;
00574 OCI_ATTR_IS_INLINE = 238;
00575 OCI_ATTR_IS_CONSTANT = 239;
00576 OCI_ATTR_HAS_RESULT = 240;
00577 OCI_ATTR_IS_CONSTRUCTOR = 241;
00578 OCI_ATTR_IS_DESTRUCTOR = 242;
00579 OCI_ATTR_IS_OPERATOR = 243;
00580 OCI_ATTR_IS_MAP = 244;
00581 OCI_ATTR_IS_ORDER = 245;
00582 OCI_ATTR_IS_RNDS = 246;
00583 OCI_ATTR_IS_RNPS = 247;
00584 OCI_ATTR_IS_WNDS = 248;
00585 OCI_ATTR_IS_WNPS = 249;
00586
00587 OCI_ATTR_DESC_PUBLIC = 250;
00588
00589 { Object Cache Enhancements : attributes for User Constructed Instances }
00590 OCI_ATTR_CACHE_CLIENT_CONTEXT = 251;
00591 OCI_ATTR_UCI_CONSTRUCT = 252;
00592 OCI_ATTR_UCI_DESTRUCT = 253;
00593 OCI_ATTR_UCI_COPY = 254;
00594 OCI_ATTR_UCI_PICKLE = 255;
00595 OCI_ATTR_UCI_UNPICKLE = 256;
00596 OCI_ATTR_UCI_REFRESH = 257;
00597
00598 { for type inheritance }
00599 OCI_ATTR_IS_SUBTYPE = 258;
00600 OCI_ATTR_SUPERTYPE_SCHEMA_NAME = 259;
00601 OCI_ATTR_SUPERTYPE_NAME = 260;
00602
00603 { for schemas }
00604 OCI_ATTR_LIST_OBJECTS = 261;
00605
00606 { for database }
00607 OCI_ATTR_NCHARSET_ID = 262;
00608 OCI_ATTR_LIST_SCHEMAS = 263;
00609 OCI_ATTR_MAX_PROC_LEN = 264;
00610 OCI_ATTR_MAX_COLUMN_LEN = 265;
00611 OCI_ATTR_CURSOR_COMMIT_BEHAVIOR = 266;
00612 OCI_ATTR_MAX_CATALOG_NAMELEN = 267;
00613 OCI_ATTR_CATALOG_LOCATION = 268;
00614 OCI_ATTR_SAVEPOINT_SUPPORT = 269;
00615 OCI_ATTR_NOWAIT_SUPPORT = 270;
00616 OCI_ATTR_AUTOCOMMIT_DDL = 271;
00617 OCI_ATTR_LOCKING_MODE = 272;
00618
00619 OCI_ATTR_CACHE_ARRAYFLUSH = $40;
00620 OCI_ATTR_OBJECT_NEWNOTNULL = $10;
00621 OCI_ATTR_OBJECT_DETECTCHANGE = $20;
00622
00623 { Piece Information }
00624 OCI_PARAM_IN = $01;
00625 OCI_PARAM_OUT = $02;
00626
00627 { LOB Buffering Flush Flags }
00628 OCI_LOB_BUFFER_FREE = 1;
00629 OCI_LOB_BUFFER_NOFREE = 2;
00630
00631 { FILE open modes }
00632 OCI_FILE_READONLY = 1;
00633 { LOB open modes }
00634 OCI_LOB_READONLY = 1;
00635 OCI_LOB_READWRITE = 2;
00636
00637 { CHAR/NCHAR/VARCHAR2/NVARCHAR2/CLOB/NCLOB char set "form" information }
00638 SQLCS_IMPLICIT = 1;
00639 SQLCS_NCHAR = 2;
00640 SQLCS_EXPLICIT = 3;
00641 SQLCS_FLEXIBLE = 4;
00642 SQLCS_LIT_NULL = 5;
00643
00644 {************************ OCIDesribeAny *************************}
00645
00646 { Describe mode }
00647 OCI_OTYPE_NAME = 1;
00648 OCI_OTYPE_REF = 2;
00649 OCI_OTYPE_PTR = 3;
00650
00651 { Object type }
00652 OCI_PTYPE_UNK = 0;
00653 OCI_PTYPE_TABLE = 1;
00654 OCI_PTYPE_VIEW = 2;
00655 OCI_PTYPE_PROC = 3;
00656 OCI_PTYPE_FUNC = 4;
00657 OCI_PTYPE_PKG = 5;
00658 OCI_PTYPE_TYPE = 6;
00659 OCI_PTYPE_SYN = 7;
00660 OCI_PTYPE_SEQ = 8;
00661 OCI_PTYPE_COL = 9;
00662 OCI_PTYPE_ARG = 10;
00663 OCI_PTYPE_LIST = 11;
00664 OCI_PTYPE_TYPE_ATTR = 12;
00665 OCI_PTYPE_TYPE_COLL = 13;
00666 OCI_PTYPE_TYPE_METHOD = 14;
00667 OCI_PTYPE_TYPE_ARG = 15;
00668 OCI_PTYPE_TYPE_RESULT = 16;
00669
00670 { Proc/Func param type }
00671 OCI_TYPEPARAM_IN = 0;
00672 OCI_TYPEPARAM_OUT = 1;
00673 OCI_TYPEPARAM_INOUT = 2;
00674
00675 { Number formats }
00676 OCI_NUMBER_UNSIGNED = 0;
00677 OCI_NUMBER_SIGNED = 2;
00678
00679 type
00680 PPointer = ^Pointer;
00681
00682 TOCIInitialize = function(mode: ub4; ctxp: Pointer; malocfp: Pointer;
00683 ralocfp: Pointer; mfreefp: Pointer): sword; cdecl;
00684
00685 TOCIEnvInit = function(var envhpp: POCIEnv; mode: ub4; xtramemsz: size_T;
00686 usrmempp: PPointer): sword; cdecl;
00687
00688 TOCIEnvCreate = function(var envhpp: POCIEnv; mode: ub4; ctxp: Pointer;
00689 malocfp: Pointer; ralocfp: Pointer; mfreefp: Pointer; xtramemsz: size_T;
00690 usrmempp: PPointer): sword; cdecl;
00691
00692 TOCIHandleAlloc = function(parenth: POCIHandle; var hndlpp: POCIHandle;
00693 atype: ub4; xtramem_sz: size_T; usrmempp: PPointer): sword; cdecl;
00694
00695 TOCIServerAttach = function(srvhp: POCIServer; errhp: POCIError; dblink: text;
00696 dblink_len: sb4; mode: ub4): sword; cdecl;
00697
00698 TOCIAttrSet = function(trgthndlp: POCIHandle; trghndltyp: ub4;
00699 attributep: Pointer; size: ub4; attrtype: ub4; errhp: POCIError):sword; cdecl;
00700
00701 TOCISessionBegin = function(svchp: POCISvcCtx; errhp: POCIError;
00702 usrhp: POCISession; credt: ub4; mode: ub4):sword; cdecl;
00703
00704 TOCISessionEnd = function(svchp: POCISvcCtx; errhp: POCIError;
00705 usrhp: POCISession; mode: ub4): sword; cdecl;
00706
00707 TOCIServerDetach = function(srvhp: POCIServer; errhp: POCIError;
00708 mode: ub4): sword; cdecl;
00709
00710 TOCIHandleFree = function(hndlp: Pointer; atype: ub4): sword; cdecl;
00711
00712 TOCIErrorGet = function(hndlp: Pointer; recordno: ub4; sqlstate: text;
00713 var errcodep: sb4; bufp: text; bufsiz: ub4; atype: ub4): sword; cdecl;
00714
00715 TOCIStmtPrepare = function(stmtp: POCIStmt; errhp: POCIError; stmt: text;
00716 stmt_len: ub4; language:ub4; mode: ub4):sword; cdecl;
00717
00718 TOCIStmtExecute = function(svchp: POCISvcCtx; stmtp: POCIStmt;
00719 errhp: POCIError; iters: ub4; rowoff: ub4; snap_in: POCISnapshot;
00720 snap_out: POCISnapshot; mode: ub4): sword; cdecl;
00721
00722 TOCIParamGet = function(hndlp: Pointer; htype: ub4; errhp: POCIError;
00723 var parmdpp: Pointer; pos: ub4): sword; cdecl;
00724
00725 TOCIAttrGet = function(trgthndlp: POCIHandle; trghndltyp: ub4;
00726 attributep: Pointer; sizep: Pointer; attrtype: ub4;
00727 errhp: POCIError):sword; cdecl;
00728
00729 TOCIStmtFetch = function(stmtp: POCIStmt; errhp: POCIError; nrows: ub4;
00730 orientation: ub2; mode: ub4): sword; cdecl;
00731
00732 TOCIDefineByPos = function(stmtp: POCIStmt; var defnpp: POCIDefine;
00733 errhp: POCIError; position: ub4; valuep: Pointer; value_sz: sb4; dty: ub2;
00734 indp: Pointer; rlenp: Pointer; rcodep: Pointer; mode: ub4): sword; cdecl;
00735
00736 TOCIDefineArrayOfStruct = function(defnpp: POCIDefine; errhp: POCIError;
00737 pvskip: ub4; indskip: ub4; rlskip: ub4; rcskip: ub4): sword; cdecl;
00738
00739 TOCIBindByPos = function(stmtp: POCIStmt; var bindpp: POCIBind;
00740 errhp: POCIError; position: ub4; valuep: Pointer; value_sz: sb4; dty: ub2;
00741 indp: Pointer; alenp: Pointer; rcodep: Pointer; maxarr_len: ub4;
00742 curelep: Pointer; mode: ub4): sword; cdecl;
00743
00744 TOCIBindByName = function(stmtp: POCIStmt; var bindpp: POCIBind;
00745 errhp: POCIError; placeholder: text; placeh_len: sb4; valuep: Pointer;
00746 value_sz: sb4; dty: ub2; indp: Pointer; alenp: Pointer; rcodep: Pointer;
00747 maxarr_len: ub4; curelep: Pointer; mode: ub4): sword; cdecl;
00748
00749 TOCIBindDynamic = function(bindp: POCIBind; errhp: POCIError; ictxp: Pointer;
00750 icbfp: Pointer; octxp: Pointer; ocbfp: Pointer): sword; cdecl;
00751
00752 TOCITransStart = function(svchp: POCISvcCtx; errhp: POCIError; timeout: word;
00753 flags: ub4): sword; cdecl;
00754
00755 TOCITransRollback = function(svchp:POCISvcCtx; errhp:POCIError;
00756 flags: ub4): sword; cdecl;
00757
00758 TOCITransCommit = function(svchp: POCISvcCtx; errhp: POCIError;
00759 flags: ub4) :sword; cdecl;
00760
00761 TOCITransDetach = function(svchp: POCISvcCtx; errhp: POCIError;
00762 flags: ub4) :sword; cdecl;
00763
00764 TOCITransPrepare = function(svchp: POCISvcCtx; errhp: POCIError;
00765 flags: ub4) :sword; cdecl;
00766
00767 TOCITransForget = function(svchp: POCISvcCtx; errhp: POCIError;
00768 flags: ub4) :sword; cdecl;
00769
00770 TOCIDescribeAny = function(svchp: POCISvcCtx; errhp: POCIError;
00771 objptr: Pointer; objnm_len: ub4; objptr_typ: ub1; info_level: ub1;
00772 objtyp: ub1; dschp: POCIDescribe): sword; cdecl;
00773
00774 TOCIBreak = function(svchp: POCISvcCtx; errhp:POCIError): sword; cdecl;
00775
00776 TOCIReset = function(svchp: POCISvcCtx; errhp:POCIError): sword; cdecl;
00777
00778 TOCIDescriptorAlloc = function(parenth: POCIEnv; var descpp: POCIDescriptor;
00779 htype: ub4; xtramem_sz: integer; usrmempp: Pointer): sword; cdecl;
00780
00781 TOCIDescriptorFree = function(descp: Pointer; htype: ub4): sword; cdecl;
00782
00783 TOCIDateTimeAssign = function(hndl: POCIEnv; err: POCIError;
00784 const from: POCIDateTime;_to: POCIDateTime): sword; cdecl;
00785
00786 TOCIDateTimeCheck = function(hndl: POCIEnv; err: POCIError;
00787 const date: POCIDateTime; var valid: ub4): sword; cdecl;
00788
00789 TOCIDateTimeCompare = function(hndl: POCIEnv; err: POCIError;
00790 const date1: POCIDateTime; const date2: POCIDateTime;
00791 var result: sword): sword; cdecl;
00792
00793 TOCIDateTimeConvert = function(hndl: POCIEnv; err: POCIError;
00794 indate: POCIDateTime; outdate: POCIDateTime): sword; cdecl;
00795
00796 TOCIDateTimeFromText= function(hndl: POCIEnv; err: POCIError;
00797 const date_str: text; d_str_length: size_t; const fmt: text;
00798 fmt_length: ub1; const lang_name: text; lang_length: size_t;
00799 date: POCIDateTime): sword; cdecl;
00800
00801 TOCIDateTimeGetDate = function(hndl: POCIEnv; err: POCIError;
00802 const date: POCIDateTime; var year: sb2; var month: ub1;
00803 var day: ub1): sword; cdecl;
00804
00805 TOCIDateTimeGetTime = function(hndl: POCIEnv; err: POCIError;
00806 datetime: POCIDateTime; var hour: ub1; var minute: ub1; var sec: ub1;
00807 var fsec: ub4): sword; cdecl;
00808
00809 TOCIDateTimeGetTimeZoneOffset = function(hndl: POCIEnv; err: POCIError;
00810 const datetime: POCIDateTime; var hour: sb1; var minute: sb1): sword; cdecl;
00811
00812 TOCIDateTimeSysTimeStamp = function(hndl: POCIEnv; err: POCIError;
00813 sys_date: POCIDateTime): sword; cdecl;
00814
00815 TOCIDateTimeConstruct = function(hndl: POCIEnv; err: POCIError;
00816 datetime: POCIDateTime; year: sb2; month: ub1; day: ub1; hour: ub1;
00817 min: ub1; sec: ub1; fsec: ub4; timezone: text;
00818 timezone_length: size_t): sword; cdecl;
00819
00820 TOCIDateTimeToText = function(hndl: POCIEnv; err: POCIError;
00821 const date: POCIDateTime; const fmt: text; fmt_length: ub1;
00822 fsprec: ub1; const lang_name: text; lang_length: size_t;
00823 var buf_size: ub4; buf: text): sword; cdecl;
00824
00825 TOCIDateTimeGetTimeZoneName = function(hndl: POCIEnv; err: POCIError;
00826 datetime: POCIDateTime; var buf: ub1; var buflen: ub4): sword; cdecl;
00827
00828 TOCILobAppend = function(svchp: POCISvcCtx; errhp: POCIError; dst_locp,
00829 src_locp: POCILobLocator): sword; cdecl;
00830
00831 TOCILobAssign = function(svchp: POCISvcCtx; errhp: POCIError;
00832 src_locp: POCILobLocator; var dst_locpp: POCILobLocator): sword; cdecl;
00833
00834 TOCILobClose = function(svchp: POCISvcCtx; errhp: POCIError;
00835 locp: POCILobLocator): sword; cdecl;
00836
00837 TOCILobCopy = function(svchp: POCISvcCtx; errhp: POCIError;
00838 dst_locp: POCILobLocator; src_locp: POCILobLocator; amount: ub4;
00839 dst_offset: ub4; src_offset: ub4): sword; cdecl;
00840
00841 TOCILobCreateTemporary = function(svchp: POCISvcCtx; errhp: POCIError;
00842 locp: POCILobLocator; csid: ub2; csfrm: ub1; lobtype: ub1;
00843 cache: LongBool; duration: OCIDuration): sword; cdecl;
00844
00845 TOCILobEnableBuffering = function(svchp: POCISvcCtx; errhp: POCIError;
00846 locp: POCILobLocator): sword; cdecl;
00847
00848 TOCILobDisableBuffering = function(svchp: POCISvcCtx; errhp: POCIError;
00849 locp: POCILobLocator): sword; cdecl;
00850
00851 TOCILobErase = function(svchp: POCISvcCtx; errhp: POCIError; locp: POCILobLocator;
00852 var amount: ub4; offset: ub4): sword; cdecl;
00853
00854 TOCILobFileExists = function(svchp: POCISvcCtx; errhp: POCIError;
00855 filep: POCILobLocator; var flag: Boolean): sword; cdecl;
00856
00857 TOCILobFileGetName = function(envhp: POCIEnv; errhp: POCIError;
00858 filep: POCILobLocator; dir_alias: text; var d_length: ub2; filename: text;
00859 var f_length: ub2): sword; cdecl;
00860
00861 TOCILobFileSetName = function(envhp: POCIEnv; errhp: POCIError;
00862 var filep: POCILobLocator; dir_alias: text; d_length: ub2; filename: text;
00863 f_length: ub2): sword; cdecl;
00864
00865 TOCILobFlushBuffer = function(svchp: POCISvcCtx; errhp: POCIError;
00866 locp: POCILobLocator; flag: ub4): sword; cdecl;
00867
00868 TOCILobFreeTemporary = function(svchp: POCISvcCtx; errhp: POCIError;
00869 locp: POCILobLocator): sword; cdecl;
00870
00871 TOCILobGetLength = function(svchp: POCISvcCtx; errhp: POCIError;
00872 locp: POCILobLocator; var lenp: ub4): sword; cdecl;
00873
00874 TOCILobIsOpen = function(svchp: POCISvcCtx; errhp: POCIError;
00875 locp: POCILobLocator; var flag: LongBool): sword; cdecl;
00876
00877 TOCILobIsTemporary = function(svchp: POCISvcCtx; errhp: POCIError;
00878 locp: POCILobLocator; var is_temporary: LongBool): sword; cdecl;
00879
00880 TOCILobLoadFromFile = function(svchp: POCISvcCtx; errhp: POCIError;
00881 dst_locp: POCILobLocator; src_locp: POCILobLocator; amount: ub4;
00882 dst_offset: ub4; src_offset: ub4): sword; cdecl;
00883
00884 TOCILobLocatorIsInit = function(envhp: POCIEnv; errhp: POCIError;
00885 locp: POCILobLocator; var is_initialized: LongBool): sword; cdecl;
00886
00887 TOCILobOpen = function(svchp: POCISvcCtx; errhp: POCIError;
00888 locp: POCILobLocator; mode: ub1): sword; cdecl;
00889
00890 TOCILobRead = function(svchp: POCISvcCtx; errhp: POCIError;
00891 locp: POCILobLocator; var amtp: ub4; offset: ub4; bufp: Pointer; bufl: ub4;
00892 ctxp: Pointer; cbfp: Pointer; csid: ub2; csfrm: ub1): sword; cdecl;
00893
00894 TOCILobTrim = function(svchp: POCISvcCtx; errhp: POCIError;
00895 locp: POCILobLocator; newlen: ub4): sword; cdecl;
00896
00897 TOCILobWrite = function(svchp: POCISvcCtx; errhp: POCIError;
00898 locp: POCILobLocator; var amtp: ub4; offset: ub4; bufp: Pointer; bufl: ub4;
00899 piece: ub1; ctxp: Pointer; cbfp: Pointer; csid: ub2; csfrm: ub1): sword; cdecl;
00900
00901 TOCIStmtGetPieceInfo = function(stmtp: POCIStmt; errhp: POCIError;
00902 var hndlpp: Pointer; var typep: ub4; var in_outp: ub1; var iterp: ub4;
00903 var idxp: ub4; var piecep: ub1): sword; cdecl;
00904
00905 TOCIStmtSetPieceInfo = function(handle: Pointer; typep: ub4; errhp: POCIError;
00906 buf: Pointer; var alenp: ub4; piece: ub1; indp: Pointer;
00907 var rcodep: ub2): sword; cdecl;
00908
00909 TOCIPasswordChange = function(svchp: POCISvcCtx; errhp: POCIError;
00910 user_name: text; usernm_len: ub4; opasswd: text; opasswd_len: ub4;
00911 npasswd: text; npasswd_len: sb4; mode: ub4): sword; cdecl;
00912
00913 TOCIServerVersion = function(hndlp: POCIHandle; errhp: POCIError; bufp: text;
00914 bufsz: ub4; hndltype: ub1): sword; cdecl;
00915
00916 TOCIResultSetToStmt = function(rsetdp: POCIHandle; errhp: POCIError): sword; cdecl;
00917
00918 var
00919 OCIPasswordChange: TOCIPasswordChange;
00920 OCIInitialize: TOCIInitialize;
00921 OCIEnvInit: TOCIEnvInit;
00922 OCIEnvCreate: TOCIEnvCreate;
00923 OCIHandleAlloc: TOCIHandleAlloc;
00924 OCIServerAttach: TOCIServerAttach;
00925 OCIAttrSet: TOCIAttrSet;
00926 OCISessionBegin: TOCISessionBegin;
00927 OCISessionEnd: TOCISessionEnd;
00928 OCIServerDetach: TOCIServerDetach;
00929 OCIHandleFree: TOCIHandleFree;
00930 OCIErrorGet: TOCIErrorGet;
00931 OCIStmtPrepare: TOCIStmtPrepare;
00932 OCIStmtExecute: TOCIStmtExecute;
00933 OCIParamGet: TOCIParamGet;
00934 OCIAttrGet: TOCIAttrGet;
00935 OCIStmtFetch: TOCIStmtFetch;
00936 OCIDefineByPos: TOCIDefineByPos;
00937 OCIDefineArrayOfStruct: TOCIDefineArrayOfStruct;
00938 OCIBindByPos: TOCIBindByPos;
00939 OCIBindByName: TOCIBindByName;
00940 OCITransStart: TOCITransStart;
00941 OCITransCommit: TOCITransCommit;
00942 OCITransRollback: TOCITransRollback;
00943 OCITransDetach: TOCITransDetach;
00944 OCITransPrepare: TOCITransPrepare;
00945 OCITransForget: TOCITransForget;
00946 OCIDescribeAny: TOCIDescribeAny;
00947 OCIBreak: TOCIBreak;
00948 OCIReset: TOCIReset;
00949 OCIDescriptorAlloc: TOCIDescriptorAlloc;
00950 OCIDescriptorFree: TOCIDescriptorFree;
00951 OCIStmtGetPieceInfo: TOCIStmtGetPieceInfo;
00952 OCIStmtSetPieceInfo: TOCIStmtSetPieceInfo;
00953 OCIServerVersion: TOCIServerVersion;
00954 OCIBindDynamic: TOCIBindDynamic;
00955 OCIDateTimeAssign: TOCIDateTimeAssign;
00956 OCIDateTimeCheck: TOCIDateTimeCheck;
00957 OCIDateTimeCompare: TOCIDateTimeCompare;
00958 OCIDateTimeConvert: TOCIDateTimeConvert;
00959 OCIDateTimeFromText: TOCIDateTimeFromText;
00960 OCIDateTimeGetDate: TOCIDateTimeGetDate;
00961 OCIDateTimeGetTime: TOCIDateTimeGetTime;
00962 OCIDateTimeGetTimeZoneOffset: TOCIDateTimeGetTimeZoneOffset;
00963 OCIDateTimeSysTimeStamp: TOCIDateTimeSysTimeStamp;
00964 OCIDateTimeConstruct: TOCIDateTimeConstruct;
00965 OCIDateTimeToText: TOCIDateTimeToText;
00966 OCIDateTimeGetTimeZoneName: TOCIDateTimeGetTimeZoneName;
00967 OCILobAppend: TOCILobAppend;
00968 OCILobAssign: TOCILobAssign;
00969 OCILobClose: TOCILobClose;
00970 OCILobCopy: TOCILobCopy;
00971 OCILobCreateTemporary: TOCILobCreateTemporary;
00972 OCILobEnableBuffering: TOCILobEnableBuffering;
00973 OCILobDisableBuffering: TOCILobDisableBuffering;
00974 OCILobErase: TOCILobErase;
00975 OCILobFileExists: TOCILobFileExists;
00976 OCILobFileGetName: TOCILobFileGetName;
00977 OCILobFileSetName: TOCILobFileSetName;
00978 OCILobFlushBuffer: TOCILobFlushBuffer;
00979 OCILobFreeTemporary: TOCILobFreeTemporary;
00980 OCILobGetLength: TOCILobGetLength;
00981 OCILobIsOpen: TOCILobIsOpen;
00982 OCILobIsTemporary: TOCILobIsTemporary;
00983 OCILobLoadFromFile: TOCILobLoadFromFile;
00984 OCILobLocatorIsInit: TOCILobLocatorIsInit;
00985 OCILobOpen: TOCILobOpen;
00986 OCILobRead: TOCILobRead;
00987 OCILobTrim: TOCILobTrim;
00988 OCILobWrite: TOCILobWrite;
00989 OCIResultSetToStmt: TOCIResultSetToStmt;
00990
00991 var
00992 LibraryLoader: TZNativeLibraryLoader;
00993
00994 implementation
00995
00996 type
00997 {** Implements a loader for Oracle native library. }
00998 TZOracleNativeLibraryLoader = class (TZNativeLibraryLoader)
00999 public
01000 function Load: Boolean; override;
01001 end;
01002
01003 { TZOracleNativeLibraryLoader }
01004
01005 {**
01006 Loads a library module.
01007 @return <code>True</code> if library was successfully loaded.
01008 }
01009 function TZOracleNativeLibraryLoader.Load: Boolean;
01010 begin
01011 Result := inherited Load;
01012
01013 @OCIEnvCreate := GetAddress('OCIEnvCreate');
01014 @OCIInitialize := GetAddress('OCIInitialize');
01015 @OCIEnvInit := GetAddress('OCIEnvInit');
01016
01017 @OCIHandleAlloc := GetAddress('OCIHandleAlloc');
01018 @OCIHandleFree := GetAddress('OCIHandleFree');
01019 @OCIAttrSet := GetAddress('OCIAttrSet');
01020 @OCIAttrGet := GetAddress('OCIAttrGet');
01021 @OCIDescriptorAlloc := GetAddress('OCIDescriptorAlloc');
01022 @OCIDescriptorFree := GetAddress('OCIDescriptorFree');
01023 @OCIErrorGet := GetAddress('OCIErrorGet');
01024
01025 @OCIServerAttach := GetAddress('OCIServerAttach');
01026 @OCIServerDetach := GetAddress('OCIServerDetach');
01027 @OCIServerVersion := GetAddress('OCIServerVersion');
01028 @OCIBreak := GetAddress('OCIBreak');
01029
01030 { For Oracle >= 8.1 }
01031 @OCIReset := GetAddress('OCIReset');
01032
01033 @OCISessionBegin := GetAddress('OCISessionBegin');
01034 @OCISessionEnd := GetAddress('OCISessionEnd');
01035 @OCIPasswordChange := GetAddress('OCIPasswordChange');
01036
01037 @OCITransStart := GetAddress('OCITransStart');
01038 @OCITransCommit := GetAddress('OCITransCommit');
01039 @OCITransRollback := GetAddress('OCITransRollback');
01040 @OCITransDetach := GetAddress('OCITransDetach');
01041 @OCITransPrepare := GetAddress('OCITransPrepare');
01042 @OCITransForget := GetAddress('OCITransForget');
01043
01044 @OCIStmtPrepare := GetAddress('OCIStmtPrepare');
01045 @OCIStmtExecute := GetAddress('OCIStmtExecute');
01046 @OCIStmtFetch := GetAddress('OCIStmtFetch');
01047 @OCIStmtGetPieceInfo := GetAddress('OCIStmtGetPieceInfo');
01048 @OCIStmtSetPieceInfo := GetAddress('OCIStmtSetPieceInfo');
01049 @OCIParamGet := GetAddress('OCIParamGet');
01050 @OCIResultSetToStmt := GetAddress('OCIResultSetToStmt');
01051
01052 @OCIDefineByPos := GetAddress('OCIDefineByPos');
01053 @OCIDefineArrayOfStruct := GetAddress('OCIDefineArrayOfStruct');
01054
01055 @OCIBindByPos := GetAddress('OCIBindByPos');
01056 @OCIBindByName := GetAddress('OCIBindByName');
01057 @OCIBindDynamic := GetAddress('OCIBindDynamic');
01058
01059 @OCILobAppend := GetAddress('OCILobAppend');
01060 @OCILobAssign := GetAddress('OCILobAssign');
01061 @OCILobCopy := GetAddress('OCILobCopy');
01062 @OCILobEnableBuffering := GetAddress('OCILobEnableBuffering');
01063 @OCILobDisableBuffering := GetAddress('OCILobDisableBuffering');
01064 @OCILobErase := GetAddress('OCILobErase');
01065 @OCILobFileExists := GetAddress('OCILobFileExists');
01066 @OCILobFileGetName := GetAddress('OCILobFileGetName');
01067 @OCILobFileSetName := GetAddress('OCILobFileSetName');
01068 @OCILobFlushBuffer := GetAddress('OCILobFlushBuffer');
01069 @OCILobGetLength := GetAddress('OCILobGetLength');
01070 @OCILobLoadFromFile := GetAddress('OCILobLoadFromFile');
01071 @OCILobLocatorIsInit := GetAddress('OCILobLocatorIsInit');
01072 @OCILobRead := GetAddress('OCILobRead');
01073 @OCILobTrim := GetAddress('OCILobTrim');
01074 @OCILobWrite := GetAddress('OCILobWrite');
01075
01076 { For Oracle >= 8.1 }
01077 @OCILobCreateTemporary := GetAddress('OCILobCreateTemporary');
01078 @OCILobFreeTemporary := GetAddress('OCILobFreeTemporary');
01079 @OCILobClose := GetAddress('OCILobClose');
01080 @OCILobIsOpen := GetAddress('OCILobIsOpen');
01081 @OCILobIsTemporary := GetAddress('OCILobIsTemporary');
01082 @OCILobOpen := GetAddress('OCILobOpen');
01083
01084 @OCIDateTimeAssign := GetAddress('OCIDateTimeAssign');
01085 @OCIDateTimeCheck := GetAddress('OCIDateTimeCheck');
01086 @OCIDateTimeCompare := GetAddress('OCIDateTimeCompare');
01087 @OCIDateTimeConvert := GetAddress('OCIDateTimeConvert');
01088 @OCIDateTimeFromText := GetAddress('OCIDateTimeFromText');
01089 @OCIDateTimeGetDate := GetAddress('OCIDateTimeGetDate');
01090 @OCIDateTimeGetTime := GetAddress('OCIDateTimeGetTime');
01091 @OCIDateTimeGetTimeZoneOffset := GetAddress('OCIDateTimeGetTimeZoneOffset');
01092 @OCIDateTimeSysTimeStamp := GetAddress('OCIDateTimeSysTimeStamp');
01093 @OCIDateTimeConstruct := GetAddress('OCIDateTimeConstruct');
01094 @OCIDateTimeToText := GetAddress('OCIDateTimeToText');
01095 @OCIDateTimeGetTimeZoneName := GetAddress('OCIDateTimeGetTimeZoneName');
01096
01097 { For Oracle < 8.1 }
01098
01099
01100
01101
01102 @OCIDescribeAny := GetAddress('OCIDescribeAny');
01103 end;
01104
01105 initialization
01106 {$IFNDEF UNIX}
01107 LibraryLoader := TZOracleNativeLibraryLoader.Create(
01108 [WINDOWS_DLL_LOCATION]);
01109 {$ELSE}
01110 LibraryLoader := TZOracleNativeLibraryLoader.Create(
01111 [LINUX_DLL_LOCATION]);
01112 {$ENDIF}
01113 finalization
01114 if Assigned(LibraryLoader) then
01115 LibraryLoader.Free;
01116 end.
01117