zeoslib  UNKNOWN
 All Files
ZPlainOracleDriver.pas
Go to the documentation of this file.
1 {*********************************************************}
2 { }
3 { Zeos Database Objects }
4 { Native Plain Drivers for Oracle }
5 { }
6 { Originally written by Sergey Seroukhov }
7 { }
8 {*********************************************************}
9 
10 {@********************************************************}
11 { Copyright (c) 1999-2012 Zeos Development Group }
12 { }
13 { License Agreement: }
14 { }
15 { This library is distributed in the hope that it will be }
16 { useful, but WITHOUT ANY WARRANTY; without even the }
17 { implied warranty of MERCHANTABILITY or FITNESS FOR }
18 { A PARTICULAR PURPOSE. See the GNU Lesser General }
19 { Public License for more details. }
20 { }
21 { The source code of the ZEOS Libraries and packages are }
22 { distributed under the Library GNU General Public }
23 { License (see the file COPYING / COPYING.ZEOS) }
24 { with the following modification: }
25 { As a special exception, the copyright holders of this }
26 { library give you permission to link this library with }
27 { independent modules to produce an executable, }
28 { regardless of the license terms of these independent }
29 { modules, and to copy and distribute the resulting }
30 { executable under terms of your choice, provided that }
31 { you also meet, for each linked independent module, }
32 { the terms and conditions of the license of that module. }
33 { An independent module is a module which is not derived }
34 { from or based on this library. If you modify this }
35 { library, you may extend this exception to your version }
36 { of the library, but you are not obligated to do so. }
37 { If you do not wish to do so, delete this exception }
38 { statement from your version. }
39 { }
40 { }
41 { The project web site is located on: }
42 { http://zeos.firmos.at (FORUM) }
43 { http://sourceforge.net/p/zeoslib/tickets/ (BUGTRACKER)}
44 { svn://svn.code.sf.net/p/zeoslib/code-0/trunk (SVN) }
45 { }
46 { http://www.sourceforge.net/projects/zeoslib. }
47 { }
48 { }
49 { Zeos Development Group. }
50 {********************************************************@}
51 
52 unit ZPlainOracleDriver;
53 
54 interface
55 
56 {$I ZPlain.inc}
57 
58 {$J+}
59 
60 uses
61 {$IFNDEF UNIX}
62 // Windows,
63 {$ENDIF}
64  ZPlainLoader, ZCompatibility, ZPlainOracleConstants, ZPlainDriver;
65 
66 {***************** Plain API types definition ****************}
67 
68 const
69  WINDOWS_DLL_LOCATION = 'oci.dll';
70 // WINDOWS_DLL_LOCATION = 'ora803.dll';
71  LINUX_DLL_LOCATION = 'libclntsh'+SharedSuffix;
72 // LINUX_DLL_LOCATION = 'libwtc8.so';
73 
74 type
75 
76  {** Represents a generic interface to Oracle native API. }
77  IZOraclePlainDriver = interface (IZPlainDriver)
78  ['{22404660-C95F-4346-A3DB-7C6DFE15F115}']
79 
80  function Initializ(mode: ub4; ctxp: Pointer; malocfp: Pointer;
81  ralocfp: Pointer; mfreefp: Pointer): sword;
82  function EnvInit(var envhpp: POCIEnv; mode: ub4; xtramemsz: size_T;
83  usrmempp: PPointer): sword;
84  function EnvCreate(var envhpp: POCIEnv; mode: ub4; ctxp: Pointer;
85  malocfp: Pointer; ralocfp: Pointer; mfreefp: Pointer; xtramemsz: size_T;
86  usrmempp: PPointer): sword;
87  function EnvNlsCreate(var envhpp: POCIEnv; mode: ub4; ctxp: Pointer;
88  malocfp: Pointer; ralocfp: Pointer; mfreefp: Pointer; xtramemsz: size_T;
89  usrmempp: PPointer; charset, ncharset: ub2): sword;
90 
91  function HandleAlloc(parenth: POCIHandle; var hndlpp: POCIHandle;
92  atype: ub4; xtramem_sz: size_T; usrmempp: PPointer): sword;
93  function ServerAttach(srvhp: POCIServer; errhp: POCIError; dblink: text;
94  dblink_len: sb4; mode: ub4): sword;
95  function AttrSet(trgthndlp: POCIHandle; trghndltyp: ub4;
96  attributep: Pointer; size: ub4; attrtype: ub4; errhp: POCIError):sword;
97  function SessionBegin(svchp: POCISvcCtx; errhp: POCIError;
98  usrhp: POCISession; credt: ub4; mode: ub4):sword;
99  function SessionEnd(svchp: POCISvcCtx; errhp: POCIError;
100  usrhp: POCISession; mode: ub4): sword;
101  function ServerDetach(srvhp: POCIServer; errhp: POCIError;
102  mode: ub4): sword;
103  function HandleFree(hndlp: Pointer; atype: ub4): sword;
104  function ErrorGet(hndlp: Pointer; recordno: ub4; sqlstate: text;
105  var errcodep: sb4; bufp: text; bufsiz: ub4; atype: ub4): sword;
106 
107  function StmtPrepare(stmtp: POCIStmt; errhp: POCIError; stmt: text;
108  stmt_len: ub4; language:ub4; mode: ub4):sword;
109  function StmtExecute(svchp: POCISvcCtx; stmtp: POCIStmt;
110  errhp: POCIError; iters: ub4; rowoff: ub4; snap_in: POCISnapshot;
111  snap_out: POCISnapshot; mode: ub4): sword;
112  function ParamGet(hndlp: Pointer; htype: ub4; errhp: POCIError;
113  var parmdpp: Pointer; pos: ub4): sword;
114  function AttrGet(trgthndlp: POCIHandle; trghndltyp: ub4;
115  attributep: Pointer; sizep: Pointer; attrtype: ub4;
116  errhp: POCIError): sword;
117  function StmtFetch(stmtp: POCIStmt; errhp: POCIError; nrows: ub4;
118  orientation: ub2; mode: ub4): sword;
119  function DefineByPos(stmtp: POCIStmt; var defnpp: POCIDefine;
120  errhp: POCIError; position: ub4; valuep: Pointer; value_sz: sb4; dty: ub2;
121  indp: Pointer; rlenp: Pointer; rcodep: Pointer; mode: ub4): sword;
122  function DefineArrayOfStruct(defnpp: POCIDefine; errhp: POCIError;
123  pvskip: ub4; indskip: ub4; rlskip: ub4; rcskip: ub4): sword;
124 
125  function BindByPos(stmtp: POCIStmt; var bindpp: POCIBind;
126  errhp: POCIError; position: ub4; valuep: Pointer; value_sz: sb4; dty: ub2;
127  indp: Pointer; alenp: Pointer; rcodep: Pointer; maxarr_len: ub4;
128  curelep: Pointer; mode: ub4): sword;
129  function BindByName(stmtp: POCIStmt; var bindpp: POCIBind;
130  errhp: POCIError; placeholder: text; placeh_len: sb4; valuep: Pointer;
131  value_sz: sb4; dty: ub2; indp: Pointer; alenp: Pointer; rcodep: Pointer;
132  maxarr_len: ub4; curelep: Pointer; mode: ub4): sword;
133  function BindDynamic(bindp: POCIBind; errhp: POCIError; ictxp: Pointer;
134  icbfp: Pointer; octxp: Pointer; ocbfp: Pointer): sword;
135  function BindObject(bindp: POCIBind; errhp: POCIError;
136  const _type: POCIType; pgvpp: PPointer;
137  pvszsp: pub4; indpp: PPointer;
138  indszp: pub4): sword;
139 
140  function DefineObject(defnpp: POCIDefine; errhp: POCIError;
141  _type: POCIHandle; pgvpp, pvszsp, indpp, indszp: pointer): sword;
142 
143  { > ori.h}
144  function ObjectNew(env: POCIEnv; err: POCIError; const svc: POCISvcCtx;
145  typecode: OCITypeCode; tdo: POCIType; table: Pointer;
146  duration: OCIDuration; value: Longbool;
147  instance: PPointer): sword;
148  function ObjectPin(env: POCIEnv; err: POCIError;
149  const object_ref: POCIRef; const corhdl: POCIComplexObject;
150  const pin_option: OCIPinOpt; const pin_duration: OCIDuration;
151  const lock_option: OCILockOpt; _object: PPointer): sword;
152  function ObjectUnpin(env: POCIEnv; err: POCIError;
153  const _object: Pointer): sword;
154  function ObjectPinCountReset(env: POCIEnv; err: POCIError;
155  const _object: pointer): sword;
156  function ObjectLock(env: POCIEnv; err: POCIError;
157  const _object: pointer): sword;
158  function ObjectLockNoWait(env: POCIEnv; err: POCIError;
159  const _object: pointer): sword;
160  function ObjectMarkUpdate(env: POCIEnv; err: POCIError;
161  const _object: pointer): sword;
162  function ObjectUnmark(env: POCIEnv; err: POCIError;
163  const _object:pointer): sword;
164  function ObjectUnmarkByRef(env: POCIEnv; err: POCIError;
165  const ref: POCIRef): sword;
166  function ObjectFree(hndl: POCIEnv; err: POCIError;
167  instance: POCIHandle;flags :ub2):sword;
168  function ObjectMarkDeleteByRef(env: POCIEnv; err: POCIError;
169  const object_ref:POCIRef): sword;
170  function ObjectMarkDelete(env: POCIEnv; err: POCIError;
171  const instance:pointer): sword;
172  function ObjectFlush(env: POCIEnv; err: POCIError;
173  const _object: pointer): sword;
174  function ObjectRefresh(env: POCIEnv; err: POCIError;
175  _object: pointer): sword;
176  function ObjectCopy(env: POCIEnv; err: POCIError; const svc: POCISvcCtx;
177  const source, null_source, target, null_target: pointer; const tdo: POCIType;
178  const duration: OCIDuration; const option: ub1): sword;
179  function ObjectGetTypeRef(env: POCIEnv; err: POCIError;
180  const instance:pointer; type_ref: POCIRef): sword;
181  function ObjectGetObjectRef(env: POCIEnv; err: POCIError;
182  const _object: pointer; object_ref: POCIRef): sword;
183  function ObjectMakeObjectRef(env: POCIEnv; err: POCIError;
184  const svc: POCISvcCtx; const table: pointer; const values: PPointer;
185  const array_len: ub4; object_ref: POCIRef): sword;
186  function ObjectGetPrimaryKeyTypeRef(env: POCIEnv; err: POCIError;
187  const svc:POCISvcCtx; const table: pointer; type_ref: POCIRef): sword;
188  function ObjectGetInd(env: POCIEnv; err: POCIError;
189  const instance: pointer; null_struct: PPointer): sword;
190  function ObjectExists(env: POCIEnv; err: POCIError; const ins: pointer;
191  exist: PBoolean): sword;
192  function ObjectGetProperty(envh: POCIEnv; errh: POCIError;
193  const obj: pointer; const propertyId: OCIObjectPropId;
194  _property: pointer; size: Pub4): sword;
195  function ObjectIsLocked(env: POCIEnv; err: POCIError; const ins: pointer;
196  lock: Pboolean): sword;
197  function ObjectIsDirty(env: POCIEnv; err: POCIError; const ins: pointer;
198  dirty: PBoolean): sword;
199  function ObjectPinTable(env: POCIEnv; err: POCIError;
200  const svc:POCISvcCtx; const schema_name: Poratext; const s_n_length: ub4;
201  const object_name: Poratext; const o_n_length:ub4;
202  const scope_obj_ref: POCIRef; const pin_duration: OCIDuration;
203  _object: PPointer): sword;
204  function ObjectArrayPin(env: POCIEnv; err: POCIError;
205  const ref_array: PPOCIRef; const array_size: ub4;
206  const cor_array: PPOCIComplexObject; const cor_array_size: ub4;
207  const pin_option: OCIPinOpt; const pin_duration: OCIDuration;
208  const lock: OCILockOpt; obj_array: PPointer;
209  pos: Pub4): sword;
210  function CacheFlush(env: POCIEnv; err: POCIError; const svc:POCISvcCtx;
211  const context: pointer; const get: TOCICacheFlushGet;
212  ref: PPOCIRef): sword;
213  function CacheRefresh(env: POCIEnv; err: POCIError;
214  const svc:POCISvcCtx; const option: OCIRefreshOpt; const context: pointer;
215  get: TOCICacheRefreshGet; ref: PPOCIRef): sword;
216  function CacheUnpin(env: POCIEnv; err: POCIError;
217  const svc:POCISvcCtx): sword;
218  function CacheFree(env: POCIEnv; err: POCIError;
219  const svc: POCISvcCtx): sword;
220  function CacheUnmark(env: POCIEnv; err: POCIError;
221  const svc: POCISvcCtx): sword;
222  function DurationBegin(env: POCIEnv; err: POCIError;
223  svc: POCISvcCtx; const parent: OCIDuration;
224  dur: POCIDuration): sword;
225  function DurationEnd(env: POCIEnv; err: POCIError; svc: POCISvcCtx;
226  duration: OCIDuration): sword;
227  { < ori.h}
228 
229  function TransStart(svchp: POCISvcCtx; errhp: POCIError; timeout: word;
230  flags: ub4): sword;
231  function TransRollback(svchp: POCISvcCtx; errhp: POCIError;
232  flags: ub4): sword;
233  function TransCommit(svchp: POCISvcCtx; errhp: POCIError;
234  flags: ub4): sword;
235  function TransDetach(svchp: POCISvcCtx; errhp: POCIError;
236  flags: ub4): sword;
237  function TransPrepare(svchp: POCISvcCtx; errhp: POCIError;
238  flags: ub4): sword;
239  function TransForget(svchp: POCISvcCtx; errhp: POCIError;
240  flags: ub4): sword;
241 
242  function DescribeAny(svchp: POCISvcCtx; errhp: POCIError;
243  objptr: Pointer; objnm_len: ub4; objptr_typ: ub1; info_level: ub1;
244  objtyp: ub1; dschp: POCIDescribe): sword;
245  function Break(svchp: POCISvcCtx; errhp:POCIError): sword;
246  function Reset(svchp: POCISvcCtx; errhp:POCIError): sword;
247  function DescriptorAlloc(parenth: POCIEnv; var descpp: POCIDescriptor;
248  htype: ub4; xtramem_sz: integer; usrmempp: Pointer): sword;
249  function DescriptorFree(descp: Pointer; htype: ub4): sword;
250 
251  function DateTimeAssign(hndl: POCIEnv; err: POCIError;
252  const from: POCIDateTime;_to: POCIDateTime): sword;
253  function DateTimeCheck(hndl: POCIEnv; err: POCIError;
254  const date: POCIDateTime; var valid: ub4): sword;
255  function DateTimeCompare(hndl: POCIEnv; err: POCIError;
256  const date1: POCIDateTime; const date2: POCIDateTime;
257  var result: sword): sword;
258  function DateTimeConvert(hndl: POCIEnv; err: POCIError;
259  indate: POCIDateTime; outdate: POCIDateTime): sword;
260  function DateTimeFromText(hndl: POCIEnv; err: POCIError;
261  const date_str: text; d_str_length: size_t; const fmt: text;
262  fmt_length: ub1; const lang_name: text; lang_length: size_t;
263  date: POCIDateTime): sword;
264  function DateTimeGetDate(hndl: POCIEnv; err: POCIError;
265  const date: POCIDateTime; var year: sb2; var month: ub1;
266  var day: ub1): sword;
267  function DateTimeGetTime(hndl: POCIEnv; err: POCIError;
268  datetime: POCIDateTime; var hour: ub1; var minute: ub1; var sec: ub1;
269  var fsec: ub4): sword;
270  function DateTimeGetTimeZoneOffset(hndl: POCIEnv; err: POCIError;
271  const datetime: POCIDateTime; var hour: sb1; var minute: sb1): sword;
272  function DateTimeSysTimeStamp(hndl: POCIEnv; err: POCIError;
273  sys_date: POCIDateTime): sword;
274  function DateTimeConstruct(hndl: POCIEnv; err: POCIError;
275  datetime: POCIDateTime; year: sb2; month: ub1; day: ub1; hour: ub1;
276  min: ub1; sec: ub1; fsec: ub4; timezone: text;
277  timezone_length: size_t): sword;
278  function DateTimeToText(hndl: POCIEnv; err: POCIError;
279  const date: POCIDateTime; const fmt: text; fmt_length: ub1;
280  fsprec: ub1; const lang_name: text; lang_length: size_t;
281  var buf_size: ub4; buf: text): sword;
282  function DateTimeGetTimeZoneName(hndl: POCIEnv; err: POCIError;
283  datetime: POCIDateTime; var buf: ub1; var buflen: ub4): sword;
284 
285  function LobAppend(svchp: POCISvcCtx; errhp: POCIError; dst_locp,
286  src_locp: POCILobLocator): sword;
287  function LobAssign(svchp: POCISvcCtx; errhp: POCIError;
288  src_locp: POCILobLocator; var dst_locpp: POCILobLocator): sword;
289  function LobClose(svchp: POCISvcCtx; errhp: POCIError;
290  locp: POCILobLocator): sword;
291  function LobCopy(svchp: POCISvcCtx; errhp: POCIError;
292  dst_locp: POCILobLocator; src_locp: POCILobLocator; amount: ub4;
293  dst_offset: ub4; src_offset: ub4): sword;
294  function LobEnableBuffering(svchp: POCISvcCtx; errhp: POCIError;
295  locp: POCILobLocator): sword;
296  function LobDisableBuffering(svchp: POCISvcCtx; errhp: POCIError;
297  locp: POCILobLocator): sword;
298  function LobErase(svchp: POCISvcCtx; errhp: POCIError; locp: POCILobLocator;
299  var amount: ub4; offset: ub4): sword;
300  function LobFileExists(svchp: POCISvcCtx; errhp: POCIError;
301  filep: POCILobLocator; var flag: Boolean): sword;
302  function LobFileGetName(envhp: POCIEnv; errhp: POCIError;
303  filep: POCILobLocator; dir_alias: text; var d_length: ub2; filename: text;
304  var f_length: ub2): sword;
305  function LobFileSetName(envhp: POCIEnv; errhp: POCIError;
306  var filep: POCILobLocator; dir_alias: text; d_length: ub2; filename: text;
307  f_length: ub2): sword;
308  function LobFlushBuffer(svchp: POCISvcCtx; errhp: POCIError;
309  locp: POCILobLocator; flag: ub4): sword;
310  function LobGetLength(svchp: POCISvcCtx; errhp: POCIError;
311  locp: POCILobLocator; var lenp: ub4): sword;
312  function LobIsOpen(svchp: POCISvcCtx; errhp: POCIError;
313  locp: POCILobLocator; var flag: LongBool): sword;
314  function LobLoadFromFile(svchp: POCISvcCtx; errhp: POCIError;
315  dst_locp: POCILobLocator; src_locp: POCILobLocator; amount: ub4;
316  dst_offset: ub4; src_offset: ub4): sword;
317  function LobLocatorIsInit(envhp: POCIEnv; errhp: POCIError;
318  locp: POCILobLocator; var is_initialized: LongBool): sword;
319  function LobOpen(svchp: POCISvcCtx; errhp: POCIError;
320  locp: POCILobLocator; mode: ub1): sword;
321  function LobRead(svchp: POCISvcCtx; errhp: POCIError;
322  locp: POCILobLocator; var amtp: ub4; offset: ub4; bufp: Pointer; bufl: ub4;
323  ctxp: Pointer; cbfp: Pointer; csid: ub2; csfrm: ub1): sword;
324  function LobTrim(svchp: POCISvcCtx; errhp: POCIError;
325  locp: POCILobLocator; newlen: ub4): sword;
326  function LobWrite(svchp: POCISvcCtx; errhp: POCIError;
327  locp: POCILobLocator; var amtp: ub4; offset: ub4; bufp: Pointer; bufl: ub4;
328  piece: ub1; ctxp: Pointer; cbfp: Pointer; csid: ub2; csfrm: ub1): sword;
329  function LobCreateTemporary(svchp: POCISvcCtx; errhp: POCIError;
330  locp: POCILobLocator; csid: ub2; csfrm: ub1; lobtype: ub1;
331  cache: LongBool; duration: OCIDuration): sword;
332  function LobIsTemporary(svchp: POCISvcCtx; errhp: POCIError;
333  locp: POCILobLocator; var is_temporary: LongBool): sword;
334  function LobFreeTemporary(svchp: POCISvcCtx; errhp: POCIError;
335  locp: POCILobLocator): sword;
336  function LobCharSetForm ( envhp: POCIEnv; errhp: POCIError;
337  const locp: POCILobLocator; csfrm: pub1): sword;
338  function LobCharSetId ( envhp: POCIEnv; errhp: POCIError;
339  const locp: POCILobLocator; csid: pub2): sword;
340 
341  function StmtGetPieceInfo(stmtp: POCIStmt; errhp: POCIError;
342  var hndlpp: Pointer; var typep: ub4; var in_outp: ub1; var iterp: ub4;
343  var idxp: ub4; var piecep: ub1): sword;
344  function StmtSetPieceInfo(handle: Pointer; typep: ub4; errhp: POCIError;
345  buf: Pointer; var alenp: ub4; piece: ub1; indp: Pointer;
346  var rcodep: ub2): sword;
347  function PasswordChange(svchp: POCISvcCtx; errhp: POCIError;
348  user_name: text; usernm_len: ub4; opasswd: text; opasswd_len: ub4;
349  npasswd: text; npasswd_len: sb4; mode: ub4): sword;
350  function ServerVersion(hndlp: POCIHandle; errhp: POCIError; bufp: text;
351  bufsz: ub4; hndltype: ub1): sword;
352  function ServerRelease(hndlp: POCIHandle;
353  errhp: POCIError; bufp: text; bufsz: ub4; hndltype: ub1; version:pointer): sword;
354  function ResultSetToStmt(rsetdp: POCIHandle; errhp: POCIError): sword;
355 
356  function GetEnvCharsetByteWidth(hndl: POCIEnv; err: POCIError;
357  Value: sb4): sword;
358  procedure ClientVersion(major_version, minor_version, update_num,
359  patch_num, port_update_num: psword);
360 
361  function NumberInc(err: POCIError; number: POCINumber): sword;
362  function NumberDec(err: POCIError; number: POCINumber): sword;
363  procedure NumberSetZero(err: POCIError; number: POCINumber);
364  procedure NumberSetPi(err: POCIError; number: POCINumber);
365  function NumberAdd(err: POCIError; const number1: POCINumber;
366  const number2: POCINumber; _result: POCINumber): sword;
367  function NumberSub(err: POCIError; const number1: POCINumber;
368  const number2: POCINumber; _result: POCINumber): sword;
369  function NumberMul(err: POCIError; const number1: POCINumber;
370  const number2: POCINumber; _result: POCINumber): sword;
371  function NumberDiv(err: POCIError; const number1: POCINumber;
372  const number2: POCINumber; _result: POCINumber): sword;
373  function NumberMod(err: POCIError; const number1: POCINumber;
374  const number2: POCINumber; _result: POCINumber): sword;
375  function NumberIntPower(err: POCIError; const number1: POCINumber;
376  const number2: POCINumber; _result: POCINumber): sword;
377  function NumberShift(err: POCIError; const number: POCINumber;
378  const nDig: sword; _result: POCINumber): sword;
379  function NumberNeg(err: POCIError; const number: POCINumber;
380  _result: POCINumber): sword;
381  function NumberToText(err: POCIError; const number: POCINumber;
382  const fmt: Poratext; fmt_length: ub4; const nls_params: Poratext;
383  nls_p_length: ub4; buf_size: pub4; buf: poratext): sword;
384  function NumberFromText(err: POCIError; const str: poratext;
385  str_length: ub4; const fmt: poratext; fmt_length: ub4;
386  const nls_params: poratext; nls_p_length: ub4; number: POCINumber): sword;
387  function NumberToInt(err: POCIError; const number: POCINumber;
388  rsl_length: uword; rsl_flag: uword; rsl: Pointer): sword;
389  function NumberFromInt(err: POCIError; const inum: Pointer;
390  inum_length: uword; inum_s_flag: uword; number: POCINumber): sword;
391  function NumberToReal(err: POCIError; const number: POCINumber;
392  rsl_length: uword; rsl: Pointer): sword;
393  function NumberToRealArray(err: POCIError; const number: PPOCINumber;
394  elems: uword; rsl_length: uword; rsl: Pointer): sword;
395  function NumberFromReal(err: POCIError; const rnum: Pointer;
396  rnum_length: uword; number: POCINumber): sword;
397  function NumberCmp(err: POCIError; const number1: POCINumber;
398  const number2: POCINumber; _result: psword): sword;
399  function NumberSign(err: POCIError; const number: POCINumber;
400  _result: psword): sword;
401  function NumberIsZero(err: POCIError; const number: POCINumber;
402  _Result: pboolean): sword;
403  function NumberIsInt(err: POCIError; const number: POCINumber;
404  _result: Pboolean): sword;
405  function NumberAssign(err: POCIError; const from: POCINumber;
406  _to: POCINumber): sword;
407  function NumberAbs(err: POCIError; const number: POCINumber;
408  _result: POCINumber): sword;
409  function NumberCeil(err: POCIError; const number: POCINumber;
410  _result: POCINumber): sword;
411  function NumberFloor(err: POCIError; const number: POCINumber;
412  _result: POCINumber): sword;
413  function NumberSqrt(err: POCIError; const number: POCINumber;
414  _result: POCINumber): sword;
415  function NumberTrunc(err: POCIError; const number: POCINumber;
416  _result: POCINumber): sword;
417  function NumberPower(err: POCIError; const base: POCINumber;
418  const number: POCINumber; _result: POCINumber): sword;
419  function NumberRound(err: POCIError; const number: POCINumber;
420  decplace: sword; _result: POCINumber): sword;
421  function NumberPrec(err: POCIError; const number: POCINumber;
422  nDigs: sword; _result: POCINumber): sword;
423  function NumberSin(err: POCIError; const number: POCINumber;
424  _result: POCINumber): sword;
425  function NumberArcSin(err: POCIError; const number: POCINumber;
426  _result: POCINumber): sword;
427  function NumberHypSin(err: POCIError; const number: POCINumber;
428  _result: POCINumber): sword;
429  function NumberCos(err: POCIError; const number: POCINumber;
430  _result: POCINumber): sword;
431  function NumberArcCos(err: POCIError; const number: POCINumber;
432  _result: POCINumber): sword;
433  function NumberHypCos(err: POCIError; const number: POCINumber;
434  _result: POCINumber): sword;
435  function NumberTan(err: POCIError; const number: POCINumber;
436  _result: POCINumber): sword;
437  function NumberArcTan(err: POCIError; const number: POCINumber;
438  _result: POCINumber): sword;
439  function NumberArcTan2(err: POCIError; const number1: POCINumber;
440  const number2: POCINumber; _result: POCINumber): sword;
441  function NumberHypTan(err: POCIError; const number: POCINumber;
442  _result: POCINumber): sword;
443  function NumberExp(err: POCIError; const number: POCINumber;
444  _result: POCINumber): sword;
445  function NumberLn(err: POCIError; const number: POCINumber;
446  _result: POCINumber): sword;
447  function NumberLog(err: POCIError; const base: POCINumber;
448  const number: POCINumber; _result: POCINumber): sword;
449 
450  function TableSize(hndl: POCIEnv; err: POCIError; const tbl: POCITable;
451  size: psb4): sword;
452  function TableExists(hndl: POCIEnv; err: POCIError; const tbl: POCITable;
453  index: sb4; exists: PBoolean): sword;
454  function TableDelete(hndl: POCIEnv; err: POCIError; index: sb4;
455  tbl: POCITable): sword;
456  function TableFirst(hndl: POCIEnv; err: POCIError; const tbl: POCITable;
457  index: sb4): sword;
458  function TableLast(hndl: POCIEnv; err: POCIError; const tbl: POCITable;
459  index: sb4): sword;
460  function TableNext(hndl: POCIEnv; err: POCIError; index: sb4;
461  const tbl: POCITable; next_index: psb4; exists: PBoolean): sword;
462  function TablePrev(hndl: POCIEnv; err: POCIError; index: sb4;
463  const tbl: POCITable; prev_index: psb4; exists: PBoolean): sword;
464  function ObjectSetAttr(env: POCIEnv; err: POCIError; instance: Pointer;
465  null_struct: pointer; tdo: POCIType; const names: PPAnsiChar;
466  const lengths: pub4; const name_count: ub4;
467  const indexes: pub4; const index_count: ub4;
468  const null_status: POCIInd; const attr_null_struct: Pointer;
469  const attr_value: Pointer): sword; cdecl;
470  function ObjectGetAttr(env: POCIEnv; err: POCIError; instance: Pointer;
471  null_struct: Pointer; tdo: POCIType;
472  const names: PPoratext; const lengths: pub4;
473  const name_count: ub4; const indexes: pub4;
474  const index_count: ub4; attr_null_status: POCIInd;
475  attr_null_struct, attr_value: PPointer;
476  attr_tdo: PPOCIType): sword;
477  {ociap.h}
478  function Ping(svchp: POCISvcCtx; errhp: POCIError; mode: ub4 = OCI_DEFAULT): sword;
479  {ort.h}
480  function TypeIterNew(env: POCIEnv; err: POCIError; const tdo: POCIType;
481  iterator_ort: PPOCITypeIter):sword;
482  function TypeIterSet(env: POCIEnv; err: POCIError; const tdo: POCIType;
483  iterator_ort: POCITypeIter): sword;
484  function TypeIterFree(env: POCIEnv; err: POCIError;
485  iterator_ort: POCITypeIter): sword;
486  function TypeByName(env: POCIEnv; err: POCIError; const svc: POCISvcCtx;
487  schema_name: Poratext; const s_length: ub4; const type_name: Poratext;
488  const t_length: ub4; version_name: Poratext; const v_length: ub4;
489  const pin_duration: OCIDuration; const get_option: OCITypeGetOpt;
490  tdo: PPOCIType): sword;
491  function TypeArrayByName(env: POCIEnv; err: POCIError; svc: POCISvcCtx;
492  array_len: ub4; schema_name: PPoratext; s_length: Pub4;
493  type_name: PPoratext; t_length: Pub4; version_name: PPoratext;
494  v_length: Pub4; pin_duration: OCIDuration; get_option: OCITypeGetOpt;
495  tdo: PPOCIType): sword;
496  function TypeByRef(env: POCIEnv; err: POCIError; type_ref: POCIRef;
497  pin_duration: OCIDuration; get_option: OCITypeGetOpt;
498  tdo: PPOCIType): sword;
499  function TypeArrayByRef(env: POCIEnv; err: POCIError; array_len: ub4;
500  type_ref: PPOCIRef; pin_duration: OCIDuration; get_option: OCITypeGetOpt;
501  tdo: PPOCIType): sword;
502  function TypeName(env: POCIEnv; err: POCIError; tdo: POCIType;
503  n_length: Pub4): poratext;
504  function TypeSchema(env: POCIEnv; err: POCIError; const tdo: POCIType;
505  n_length: Pub4): poratext;
506  function TypeTypeCode(env: POCIEnv; err: POCIError;
507  const tdo: POCIType): OCITypeCode;
508  function TypeCollTypeCode(env:POCIEnv; err:POCIError;
509  const tdo: POCIType): OCITypeCode;
510  function TypeVersion(env: POCIEnv; err: POCIError; const tdo: POCIType;
511  v_length: Pub4): poratext;
512  function TypeAttrs(env: POCIEnv; err: POCIError;
513  const tdo:POCIType): ub4;
514  function TypeMethods(env: POCIEnv; err: POCIError;
515  const tdo: POCIType): ub4;
516  function TypeElemName(env: POCIEnv; err: POCIError;
517  const elem: POCITypeElem; n_length:Pub4): poratext;
518  function TypeElemTypeCode(env: POCIEnv; err: POCIError;
519  const elem: POCITypeElem): OCITypeCode;
520  function TypeElemType(env: POCIEnv; err: POCIError;
521  const elem: POCITypeElem; elem_tdo:PPOCIType): sword;
522  function TypeElemFlags(env: POCIEnv; err: POCIError;
523  const elem: POCITypeElem): ub4;
524  function TypeElemNumPrec(env: POCIEnv; err: POCIError;
525  const elem: POCITypeElem): ub1;
526  function TypeElemNumScale(env: POCIEnv; err: POCIError;
527  const elem: POCITypeElem): sb1;
528  function TypeElemLength(env: POCIEnv; err: POCIError;
529  const elem:POCITypeElem): ub4;
530  function TypeElemCharSetID(env: POCIEnv; err: POCIError;
531  const elem: POCITypeElem): ub2;
532  function TypeElemCharSetForm(env: POCIEnv; err: POCIError;
533  const elem: POCITypeElem): ub2;
534  function TypeElemParameterizedType(env: POCIEnv; err: POCIError;
535  const elem: POCITypeElem; type_stored: PPOCIType): sword;
536  function TypeElemExtTypeCode(env: POCIEnv; err: POCIError;
537  const elem: POCITypeElem): OCITypeCode;
538  function TypeAttrByName(env: POCIEnv; err: POCIError;
539  const tdo: POCIType; const name: Poratext; const n_length: ub4;
540  elem: PPOCITypeElem): sword;
541  function TypeAttrNext(env: POCIEnv; err: POCIError;
542  iterator_ort: POCITypeIter; elem: PPOCITypeElem): sword;
543  function TypeCollElem(env: POCIEnv; err: POCIError; const tdo:POCIType;
544  element: PPOCITypeElem): sword;
545  function TypeCollSize(env: POCIEnv; err: POCIError; const tdo: POCIType;
546  num_elems: Pub4): sword;
547  function TypeCollExtTypeCode(env: POCIEnv; err: POCIError;
548  const tdo:POCIType; sqt_code: POCITypeCode): sword;
549  function TypeMethodOverload(env: POCIEnv; err: POCIError;
550  const tdo: POCIType; const method_name: Poratext;
551  const m_length: ub4): ub4;
552  function TypeMethodByName(env: POCIEnv; err: POCIError;
553  const tdo: POCIType; const method_name: Poratext; const m_length: ub4;
554  mdos: PPOCITypeMethod): sword;
555  function TypeMethodNext(env: POCIEnv; err: POCIError;
556  iterator_ort: POCITypeIter; mdo: PPOCITypeMethod): sword;
557  function TypeMethodName(env:POCIEnv; err: POCIError;
558  const mdo: POCITypeMethod; n_length: Pub4): poratext;
559  function TypeMethodEncap(env: POCIEnv; err: POCIError;
560  const mdo: POCITypeMethod): OCITypeEncap;
561  function TypeMethodFlags(env: POCIEnv; err: POCIError;
562  const mdo:POCITypeMethod): OCITypeMethodFlag;
563  function TypeMethodMap(env: POCIEnv; err: POCIError; const tdo: POCIType;
564  mdo: PPOCITypeMethod): sword;
565  function TypeMethodOrder(env: POCIEnv; err: POCIError;
566  const tdo: POCIType; mdo: PPOCITypeMethod): sword;
567  function TypeMethodParams(env: POCIEnv; err: POCIError;
568  const mdo: POCITypeMethod): ub4;
569  function TypeResult(env: POCIEnv; err: POCIError;
570  const mdo: POCITypeMethod; elem: PPOCITypeElem): sword;
571  function TypeParamByPos(env: POCIEnv; err: POCIError;
572  const mdo: POCITypeMethod; const position: ub4;
573  elem: PPOCITypeElem): sword;
574  function TypeParamByName(env: POCIEnv; err: POCIError;
575  const mdo: POCITypeMethod; const name: Poratext; const n_length: ub4;
576  elem:PPOCITypeElem): sword;
577  function TypeParamPos(env: POCIEnv; err: POCIError;
578  const mdo: POCITypeMethod; const name: Poratext; const n_length: ub4;
579  position: Pub4; elem: PPOCITypeElem): sword;
580  function TypeElemParamMode(env: POCIEnv; err: POCIError;
581  const elem: POCITypeElem): OCITypeParamMode;
582  function TypeElemDefaultValue(env: POCIEnv; err: POCIError;
583  const elem: POCITypeElem; d_v_length: Pub4): poratext;
584  function TypeVTInit(env: POCIEnv; err: POCIError): sword;
585  function TypeVTInsert(env: POCIEnv; err: POCIError;
586  const schema_name: Poratext; const s_n_length: ub4;
587  const type_name: Poratext; const t_n_length: ub4;
588  const user_version:Poratext; const u_v_length:ub4): sword;
589  function TypeVTSelect(env: POCIEnv; err: POCIError;
590  const schema_name: Poratext; const s_n_length: ub4;
591  const type_name: Poratext; const t_n_length: ub4; user_version: PPoratext;
592  u_v_length: Pub4; version: Pub2): sword;
593  end;
594 
595  {** Implements a driver for Oracle 9i }
596  TZOracle9iPlainDriver = class (TZAbstractPlainDriver, IZPlainDriver,
597  IZOraclePlainDriver)
598  private
599  OracleAPI: OracleOCI_API;
600  protected
601  procedure LoadApi; override;
602  function Clone: IZPlainDriver; override;
603  public
604  constructor Create;
605 
606  function GetUnicodeCodePageName: String; override;
607  procedure LoadCodePages; override;
608  function GetProtocol: string; override;
609  function GetDescription: string; override;
610  procedure Initialize(const Location: String); override;
611 
612  function Initializ(mode: ub4; ctxp: Pointer; malocfp: Pointer;
613  ralocfp: Pointer; mfreefp: Pointer): sword;
614  function EnvInit(var envhpp: POCIEnv; mode: ub4; xtramemsz: size_T;
615  usrmempp: PPointer): sword;
616  function EnvCreate(var envhpp: POCIEnv; mode: ub4; ctxp: Pointer;
617  malocfp: Pointer; ralocfp: Pointer; mfreefp: Pointer; xtramemsz: size_T;
618  usrmempp: PPointer): sword;
619  function EnvNlsCreate(var envhpp: POCIEnv; mode: ub4; ctxp: Pointer;
620  malocfp: Pointer; ralocfp: Pointer; mfreefp: Pointer; xtramemsz: size_T;
621  usrmempp: PPointer; charset, ncharset: ub2): sword;
622 
623  function HandleAlloc(parenth: POCIHandle; var hndlpp: POCIHandle;
624  atype: ub4; xtramem_sz: size_T; usrmempp: PPointer): sword;
625  function ServerAttach(srvhp: POCIServer; errhp: POCIError; dblink: text;
626  dblink_len: sb4; mode: ub4): sword;
627  function AttrSet(trgthndlp: POCIHandle; trghndltyp: ub4;
628  attributep: Pointer; size: ub4; attrtype: ub4; errhp: POCIError):sword;
629  function SessionBegin(svchp: POCISvcCtx; errhp: POCIError;
630  usrhp: POCISession; credt: ub4; mode: ub4):sword;
631  function SessionEnd(svchp: POCISvcCtx; errhp: POCIError;
632  usrhp: POCISession; mode: ub4): sword;
633  function ServerDetach(srvhp: POCIServer; errhp: POCIError;
634  mode: ub4): sword;
635  function HandleFree(hndlp: Pointer; atype: ub4): sword;
636  function ErrorGet(hndlp: Pointer; recordno: ub4; sqlstate: text;
637  var errcodep: sb4; bufp: text; bufsiz: ub4; atype: ub4): sword;
638 
639  function StmtPrepare(stmtp: POCIStmt; errhp: POCIError; stmt: text;
640  stmt_len: ub4; language:ub4; mode: ub4):sword;
641  function StmtExecute(svchp: POCISvcCtx; stmtp: POCIStmt;
642  errhp: POCIError; iters: ub4; rowoff: ub4; snap_in: POCISnapshot;
643  snap_out: POCISnapshot; mode: ub4): sword;
644  function ParamGet(hndlp: Pointer; htype: ub4; errhp: POCIError;
645  var parmdpp: Pointer; pos: ub4): sword;
646  function AttrGet(trgthndlp: POCIHandle; trghndltyp: ub4;
647  attributep: Pointer; sizep: Pointer; attrtype: ub4;
648  errhp: POCIError): sword;
649  function StmtFetch(stmtp: POCIStmt; errhp: POCIError; nrows: ub4;
650  orientation: ub2; mode: ub4): sword;
651  function DefineByPos(stmtp: POCIStmt; var defnpp: POCIDefine;
652  errhp: POCIError; position: ub4; valuep: Pointer; value_sz: sb4; dty: ub2;
653  indp: Pointer; rlenp: Pointer; rcodep: Pointer; mode: ub4): sword;
654  function DefineArrayOfStruct(defnpp: POCIDefine; errhp: POCIError;
655  pvskip: ub4; indskip: ub4; rlskip: ub4; rcskip: ub4): sword;
656 
657  function BindByPos(stmtp: POCIStmt; var bindpp: POCIBind;
658  errhp: POCIError; position: ub4; valuep: Pointer; value_sz: sb4; dty: ub2;
659  indp: Pointer; alenp: Pointer; rcodep: Pointer; maxarr_len: ub4;
660  curelep: Pointer; mode: ub4): sword;
661  function BindByName(stmtp: POCIStmt; var bindpp: POCIBind;
662  errhp: POCIError; placeholder: text; placeh_len: sb4; valuep: Pointer;
663  value_sz: sb4; dty: ub2; indp: Pointer; alenp: Pointer; rcodep: Pointer;
664  maxarr_len: ub4; curelep: Pointer; mode: ub4): sword;
665  function BindDynamic(bindp: POCIBind; errhp: POCIError; ictxp: Pointer;
666  icbfp: Pointer; octxp: Pointer; ocbfp: Pointer): sword;
667  function BindObject(bindp: POCIBind; errhp: POCIError;
668  const _type: POCIType; pgvpp: PPointer;
669  pvszsp: pub4; indpp: PPointer;
670  indszp: pub4): sword;
671 
672  function DefineObject(defnpp:POCIDefine; errhp:POCIError;
673  _type:POCIHandle; pgvpp,pvszsp,indpp,indszp:pointer): sword;
674 
675  { > ori.h}
676  function ObjectNew(env: POCIEnv; err: POCIError; const svc: POCISvcCtx;
677  typecode: OCITypeCode; tdo: POCIType; table: Pointer;
678  duration: OCIDuration; value: Longbool;
679  instance: PPointer): sword;
680  function ObjectPin(env: POCIEnv; err: POCIError;
681  const object_ref: POCIRef; const corhdl: POCIComplexObject;
682  const pin_option: OCIPinOpt; const pin_duration: OCIDuration;
683  const lock_option: OCILockOpt; _object: PPointer): sword;
684  function ObjectUnpin(env: POCIEnv; err: POCIError;
685  const _object: Pointer): sword;
686  function ObjectPinCountReset(env: POCIEnv; err: POCIError;
687  const _object: pointer): sword;
688  function ObjectLock(env: POCIEnv; err: POCIError;
689  const _object: pointer): sword;
690  function ObjectLockNoWait(env: POCIEnv; err: POCIError;
691  const _object: pointer): sword;
692  function ObjectMarkUpdate(env: POCIEnv; err: POCIError;
693  const _object: pointer): sword;
694  function ObjectUnmark(env: POCIEnv; err: POCIError;
695  const _object:pointer): sword;
696  function ObjectUnmarkByRef(env: POCIEnv; err: POCIError;
697  const ref: POCIRef): sword;
698  function ObjectFree(hndl: POCIEnv; err: POCIError;
699  instance:POCIHandle;flags :ub2):sword;
700  function ObjectMarkDeleteByRef(env: POCIEnv; err: POCIError;
701  const object_ref:POCIRef): sword;
702  function ObjectMarkDelete(env: POCIEnv; err: POCIError;
703  const instance:pointer): sword;
704  function ObjectFlush(env: POCIEnv; err: POCIError;
705  const _object: pointer): sword;
706  function ObjectRefresh(env: POCIEnv; err: POCIError;
707  _object: pointer): sword;
708  function ObjectCopy(env: POCIEnv; err: POCIError; const svc: POCISvcCtx;
709  const source, null_source, target, null_target: pointer; const tdo: POCIType;
710  const duration: OCIDuration; const option: ub1): sword;
711  function ObjectGetTypeRef(env: POCIEnv; err: POCIError;
712  const instance:pointer; type_ref: POCIRef): sword;
713  function ObjectGetObjectRef(env: POCIEnv; err: POCIError;
714  const _object: pointer; object_ref: POCIRef): sword;
715  function ObjectMakeObjectRef(env: POCIEnv; err: POCIError;
716  const svc: POCISvcCtx; const table: pointer; const values: PPointer;
717  const array_len: ub4; object_ref: POCIRef): sword;
718  function ObjectGetPrimaryKeyTypeRef(env: POCIEnv; err: POCIError;
719  const svc:POCISvcCtx; const table: pointer; type_ref: POCIRef): sword;
720  function ObjectGetInd(env: POCIEnv; err: POCIError;
721  const instance: pointer; null_struct: PPointer): sword;
722  function ObjectExists(env: POCIEnv; err: POCIError; const ins: pointer;
723  exist: PBoolean): sword;
724  function ObjectGetProperty(envh: POCIEnv; errh: POCIError;
725  const obj: pointer; const propertyId: OCIObjectPropId;
726  _property: pointer; size: Pub4): sword;
727  function ObjectIsLocked(env: POCIEnv; err: POCIError; const ins: pointer;
728  lock: Pboolean): sword;
729  function ObjectIsDirty(env: POCIEnv; err: POCIError; const ins: pointer;
730  dirty: PBoolean): sword;
731  function ObjectPinTable(env: POCIEnv; err: POCIError;
732  const svc:POCISvcCtx; const schema_name: Poratext; const s_n_length: ub4;
733  const object_name: Poratext; const o_n_length:ub4;
734  const scope_obj_ref: POCIRef; const pin_duration: OCIDuration;
735  _object: PPointer): sword;
736  function ObjectArrayPin(env: POCIEnv; err: POCIError;
737  const ref_array: PPOCIRef; const array_size: ub4;
738  const cor_array: PPOCIComplexObject; const cor_array_size: ub4;
739  const pin_option: OCIPinOpt; const pin_duration: OCIDuration;
740  const lock: OCILockOpt; obj_array: PPointer;
741  pos: Pub4): sword;
742  function CacheFlush(env: POCIEnv; err: POCIError; const svc:POCISvcCtx;
743  const context: pointer; const get: TOCICacheFlushGet;
744  ref: PPOCIRef): sword;
745  function CacheRefresh(env: POCIEnv; err: POCIError;
746  const svc:POCISvcCtx; const option: OCIRefreshOpt; const context: pointer;
747  get: TOCICacheRefreshGet; ref: PPOCIRef): sword;
748  function CacheUnpin(env: POCIEnv; err: POCIError;
749  const svc:POCISvcCtx): sword;
750  function CacheFree(env: POCIEnv; err: POCIError;
751  const svc: POCISvcCtx): sword;
752  function CacheUnmark(env: POCIEnv; err: POCIError;
753  const svc: POCISvcCtx): sword;
754  function DurationBegin(env: POCIEnv; err: POCIError;
755  svc: POCISvcCtx; const parent: OCIDuration;
756  dur: POCIDuration): sword;
757  function DurationEnd(env: POCIEnv; err: POCIError; svc: POCISvcCtx;
758  duration: OCIDuration): sword;
759  { < ori.h}
760 
761  function TransStart(svchp: POCISvcCtx; errhp: POCIError; timeout: word;
762  flags: ub4): sword;
763  function TransRollback(svchp:POCISvcCtx; errhp:POCIError;
764  flags: ub4): sword;
765  function TransCommit(svchp: POCISvcCtx; errhp: POCIError;
766  flags: ub4): sword;
767  function TransDetach(svchp: POCISvcCtx; errhp: POCIError;
768  flags: ub4): sword;
769  function TransPrepare(svchp: POCISvcCtx; errhp: POCIError;
770  flags: ub4): sword;
771  function TransForget(svchp: POCISvcCtx; errhp: POCIError;
772  flags: ub4): sword;
773 
774  function DescribeAny(svchp: POCISvcCtx; errhp: POCIError;
775  objptr: Pointer; objnm_len: ub4; objptr_typ: ub1; info_level: ub1;
776  objtyp: ub1; dschp: POCIDescribe): sword;
777  function Break(svchp: POCISvcCtx; errhp:POCIError): sword;
778  function Reset(svchp: POCISvcCtx; errhp:POCIError): sword;
779  function DescriptorAlloc(parenth: POCIEnv; var descpp: POCIDescriptor;
780  htype: ub4; xtramem_sz: integer; usrmempp: Pointer): sword;
781  function DescriptorFree(descp: Pointer; htype: ub4): sword;
782 
783  function DateTimeAssign(hndl: POCIEnv; err: POCIError;
784  const from: POCIDateTime;_to: POCIDateTime): sword;
785  function DateTimeCheck(hndl: POCIEnv; err: POCIError;
786  const date: POCIDateTime; var valid: ub4): sword;
787  function DateTimeCompare(hndl: POCIEnv; err: POCIError;
788  const date1: POCIDateTime; const date2: POCIDateTime;
789  var _result: sword): sword;
790  function DateTimeConvert(hndl: POCIEnv; err: POCIError;
791  indate: POCIDateTime; outdate: POCIDateTime): sword;
792  function DateTimeFromText(hndl: POCIEnv; err: POCIError;
793  const date_str: text; d_str_length: size_t; const fmt: text;
794  fmt_length: ub1; const lang_name: text; lang_length: size_t;
795  date: POCIDateTime): sword;
796  function DateTimeGetDate(hndl: POCIEnv; err: POCIError;
797  const date: POCIDateTime; var year: sb2; var month: ub1;
798  var day: ub1): sword;
799  function DateTimeGetTime(hndl: POCIEnv; err: POCIError;
800  datetime: POCIDateTime; var hour: ub1; var minute: ub1; var sec: ub1;
801  var fsec: ub4): sword;
802  function DateTimeGetTimeZoneOffset(hndl: POCIEnv; err: POCIError;
803  const datetime: POCIDateTime; var hour: sb1; var minute: sb1): sword;
804  function DateTimeSysTimeStamp(hndl: POCIEnv; err: POCIError;
805  sys_date: POCIDateTime): sword;
806  function DateTimeConstruct(hndl: POCIEnv; err: POCIError;
807  datetime: POCIDateTime; year: sb2; month: ub1; day: ub1; hour: ub1;
808  min: ub1; sec: ub1; fsec: ub4; timezone: text;
809  timezone_length: size_t): sword;
810  function DateTimeToText(hndl: POCIEnv; err: POCIError;
811  const date: POCIDateTime; const fmt: text; fmt_length: ub1;
812  fsprec: ub1; const lang_name: text; lang_length: size_t;
813  var buf_size: ub4; buf: text): sword;
814  function DateTimeGetTimeZoneName(hndl: POCIEnv; err: POCIError;
815  datetime: POCIDateTime; var buf: ub1; var buflen: ub4): sword;
816 
817  function LobAppend(svchp: POCISvcCtx; errhp: POCIError; dst_locp,
818  src_locp: POCILobLocator): sword;
819  function LobAssign(svchp: POCISvcCtx; errhp: POCIError;
820  src_locp: POCILobLocator; var dst_locpp: POCILobLocator): sword;
821  function LobClose(svchp: POCISvcCtx; errhp: POCIError;
822  locp: POCILobLocator): sword;
823  function LobCopy(svchp: POCISvcCtx; errhp: POCIError;
824  dst_locp: POCILobLocator; src_locp: POCILobLocator; amount: ub4;
825  dst_offset: ub4; src_offset: ub4): sword;
826  function LobEnableBuffering(svchp: POCISvcCtx; errhp: POCIError;
827  locp: POCILobLocator): sword;
828  function LobDisableBuffering(svchp: POCISvcCtx; errhp: POCIError;
829  locp: POCILobLocator): sword;
830  function LobErase(svchp: POCISvcCtx; errhp: POCIError; locp: POCILobLocator;
831  var amount: ub4; offset: ub4): sword;
832  function LobFileExists(svchp: POCISvcCtx; errhp: POCIError;
833  filep: POCILobLocator; var flag: Boolean): sword;
834  function LobFileGetName(envhp: POCIEnv; errhp: POCIError;
835  filep: POCILobLocator; dir_alias: text; var d_length: ub2; filename: text;
836  var f_length: ub2): sword;
837  function LobFileSetName(envhp: POCIEnv; errhp: POCIError;
838  var filep: POCILobLocator; dir_alias: text; d_length: ub2; filename: text;
839  f_length: ub2): sword;
840  function LobFlushBuffer(svchp: POCISvcCtx; errhp: POCIError;
841  locp: POCILobLocator; flag: ub4): sword;
842  function LobGetLength(svchp: POCISvcCtx; errhp: POCIError;
843  locp: POCILobLocator; var lenp: ub4): sword;
844  function LobIsOpen(svchp: POCISvcCtx; errhp: POCIError;
845  locp: POCILobLocator; var flag: LongBool): sword;
846  function LobLoadFromFile(svchp: POCISvcCtx; errhp: POCIError;
847  dst_locp: POCILobLocator; src_locp: POCILobLocator; amount: ub4;
848  dst_offset: ub4; src_offset: ub4): sword;
849  function LobLocatorIsInit(envhp: POCIEnv; errhp: POCIError;
850  locp: POCILobLocator; var is_initialized: LongBool): sword;
851  function LobOpen(svchp: POCISvcCtx; errhp: POCIError;
852  locp: POCILobLocator; mode: ub1): sword;
853  function LobRead(svchp: POCISvcCtx; errhp: POCIError;
854  locp: POCILobLocator; var amtp: ub4; offset: ub4; bufp: Pointer; bufl: ub4;
855  ctxp: Pointer; cbfp: Pointer; csid: ub2; csfrm: ub1): sword;
856  function LobTrim(svchp: POCISvcCtx; errhp: POCIError;
857  locp: POCILobLocator; newlen: ub4): sword;
858  function LobWrite(svchp: POCISvcCtx; errhp: POCIError;
859  locp: POCILobLocator; var amtp: ub4; offset: ub4; bufp: Pointer; bufl: ub4;
860  piece: ub1; ctxp: Pointer; cbfp: Pointer; csid: ub2; csfrm: ub1): sword;
861  function LobCreateTemporary(svchp: POCISvcCtx; errhp: POCIError;
862  locp: POCILobLocator; csid: ub2; csfrm: ub1; lobtype: ub1;
863  cache: LongBool; duration: OCIDuration): sword;
864  function LobIsTemporary(svchp: POCISvcCtx; errhp: POCIError;
865  locp: POCILobLocator; var is_temporary: LongBool): sword;
866  function LobFreeTemporary(svchp: POCISvcCtx; errhp: POCIError;
867  locp: POCILobLocator): sword;
868  function LobCharSetForm ( envhp: POCIEnv; errhp: POCIError;
869  const locp: POCILobLocator; csfrm: pub1): sword;
870  function LobCharSetId ( envhp: POCIEnv; errhp: POCIError;
871  const locp: POCILobLocator; csid: pub2): sword;
872 
873  function StmtGetPieceInfo(stmtp: POCIStmt; errhp: POCIError;
874  var hndlpp: Pointer; var typep: ub4; var in_outp: ub1; var iterp: ub4;
875  var idxp: ub4; var piecep: ub1): sword;
876  function StmtSetPieceInfo(handle: Pointer; typep: ub4; errhp: POCIError;
877  buf: Pointer; var alenp: ub4; piece: ub1; indp: Pointer;
878  var rcodep: ub2): sword;
879  function PasswordChange(svchp: POCISvcCtx; errhp: POCIError;
880  user_name: text; usernm_len: ub4; opasswd: text; opasswd_len: ub4;
881  npasswd: text; npasswd_len: sb4; mode: ub4): sword;
882  function ServerVersion(hndlp: POCIHandle; errhp: POCIError; bufp: text;
883  bufsz: ub4; hndltype: ub1): sword;
884  function ServerRelease(hndlp: POCIHandle;
885  errhp: POCIError; bufp: text; bufsz: ub4; hndltype: ub1; version:pointer): sword;
886  function ResultSetToStmt(rsetdp: POCIHandle; errhp: POCIError): sword;
887  function GetEnvCharsetByteWidth(hndl: POCIEnv; err: POCIError;
888  Value: sb4): sword;
889  procedure ClientVersion(major_version, minor_version, update_num,
890  patch_num, port_update_num: psword);
891 
892  function NumberInc(err: POCIError; number: POCINumber): sword;
893  function NumberDec(err: POCIError; number: POCINumber): sword;
894  procedure NumberSetZero(err: POCIError; number: POCINumber);
895  procedure NumberSetPi(err: POCIError; number: POCINumber);
896  function NumberAdd(err: POCIError; const number1: POCINumber;
897  const number2: POCINumber; _result: POCINumber): sword;
898  function NumberSub(err: POCIError; const number1: POCINumber;
899  const number2: POCINumber; _result: POCINumber): sword;
900  function NumberMul(err: POCIError; const number1: POCINumber;
901  const number2: POCINumber; _result: POCINumber): sword;
902  function NumberDiv(err: POCIError; const number1: POCINumber;
903  const number2: POCINumber; _result: POCINumber): sword;
904  function NumberMod(err: POCIError; const number1: POCINumber;
905  const number2: POCINumber; _result: POCINumber): sword;
906  function NumberIntPower(err: POCIError; const number1: POCINumber;
907  const number2: POCINumber; _result: POCINumber): sword;
908  function NumberShift(err: POCIError; const number: POCINumber;
909  const nDig: sword; _result: POCINumber): sword;
910  function NumberNeg(err: POCIError; const number: POCINumber;
911  _result: POCINumber): sword;
912  function NumberToText(err: POCIError; const number: POCINumber;
913  const fmt: Poratext; fmt_length: ub4; const nls_params: Poratext;
914  nls_p_length: ub4; buf_size: pub4; buf: poratext): sword;
915  function NumberFromText(err: POCIError; const str: poratext;
916  str_length: ub4; const fmt: poratext; fmt_length: ub4;
917  const nls_params: poratext; nls_p_length: ub4; number: POCINumber): sword;
918  function NumberToInt(err: POCIError; const number: POCINumber;
919  rsl_length: uword; rsl_flag: uword; rsl: Pointer): sword;
920  function NumberFromInt(err: POCIError; const inum: Pointer;
921  inum_length: uword; inum_s_flag: uword; number: POCINumber): sword;
922  function NumberToReal(err: POCIError; const number: POCINumber;
923  rsl_length: uword; rsl: Pointer): sword;
924  function NumberToRealArray(err: POCIError; const number: PPOCINumber;
925  elems: uword; rsl_length: uword; rsl: Pointer): sword;
926  function NumberFromReal(err: POCIError; const rnum: Pointer;
927  rnum_length: uword; number: POCINumber): sword;
928  function NumberCmp(err: POCIError; const number1: POCINumber;
929  const number2: POCINumber; _result: psword): sword;
930  function NumberSign(err: POCIError; const number: POCINumber;
931  _result: psword): sword;
932  function NumberIsZero(err: POCIError; const number: POCINumber;
933  _Result: pboolean): sword;
934  function NumberIsInt(err: POCIError; const number: POCINumber;
935  _result: Pboolean): sword;
936  function NumberAssign(err: POCIError; const from: POCINumber;
937  _to: POCINumber): sword;
938  function NumberAbs(err: POCIError; const number: POCINumber;
939  _result: POCINumber): sword;
940  function NumberCeil(err: POCIError; const number: POCINumber;
941  _result: POCINumber): sword;
942  function NumberFloor(err: POCIError; const number: POCINumber;
943  _result: POCINumber): sword;
944  function NumberSqrt(err: POCIError; const number: POCINumber;
945  _result: POCINumber): sword;
946  function NumberTrunc(err: POCIError; const number: POCINumber;
947  _result: POCINumber): sword;
948  function NumberPower(err: POCIError; const base: POCINumber;
949  const number: POCINumber; _result: POCINumber): sword;
950  function NumberRound(err: POCIError; const number: POCINumber;
951  decplace: sword; _result: POCINumber): sword;
952  function NumberPrec(err: POCIError; const number: POCINumber;
953  nDigs: sword; _result: POCINumber): sword;
954  function NumberSin(err: POCIError; const number: POCINumber;
955  _result: POCINumber): sword;
956  function NumberArcSin(err: POCIError; const number: POCINumber;
957  _result: POCINumber): sword;
958  function NumberHypSin(err: POCIError; const number: POCINumber;
959  _result: POCINumber): sword;
960  function NumberCos(err: POCIError; const number: POCINumber;
961  _result: POCINumber): sword;
962  function NumberArcCos(err: POCIError; const number: POCINumber;
963  _result: POCINumber): sword;
964  function NumberHypCos(err: POCIError; const number: POCINumber;
965  _result: POCINumber): sword;
966  function NumberTan(err: POCIError; const number: POCINumber;
967  _result: POCINumber): sword;
968  function NumberArcTan(err: POCIError; const number: POCINumber;
969  _result: POCINumber): sword;
970  function NumberArcTan2(err: POCIError; const number1: POCINumber;
971  const number2: POCINumber; _result: POCINumber): sword;
972  function NumberHypTan(err: POCIError; const number: POCINumber;
973  _result: POCINumber): sword;
974  function NumberExp(err: POCIError; const number: POCINumber;
975  _result: POCINumber): sword;
976  function NumberLn(err: POCIError; const number: POCINumber;
977  _result: POCINumber): sword;
978  function NumberLog(err: POCIError; const base: POCINumber;
979  const number: POCINumber; _result: POCINumber): sword;
980 
981  function TableSize(hndl: POCIEnv; err: POCIError; const tbl: POCITable;
982  size: psb4): sword;
983  function TableExists(hndl: POCIEnv; err: POCIError; const tbl: POCITable;
984  index: sb4; exists: PBoolean): sword;
985  function TableDelete(hndl: POCIEnv; err: POCIError; index: sb4;
986  tbl: POCITable): sword;
987  function TableFirst(hndl: POCIEnv; err: POCIError; const tbl: POCITable;
988  index: sb4): sword;
989  function TableLast(hndl: POCIEnv; err: POCIError; const tbl: POCITable;
990  index: sb4): sword;
991  function TableNext(hndl: POCIEnv; err: POCIError; index: sb4;
992  const tbl: POCITable; next_index: psb4; exists: PBoolean): sword;
993  function TablePrev(hndl: POCIEnv; err: POCIError; index: sb4;
994  const tbl: POCITable; prev_index: psb4; exists: PBoolean): sword;
995 
996  function ObjectSetAttr(env: POCIEnv; err: POCIError; instance: Pointer;
997  null_struct: pointer; tdo: POCIType; const names: PPAnsiChar;
998  const lengths: pub4; const name_count: ub4;
999  const indexes: pub4; const index_count: ub4;
1000  const null_status: POCIInd; const attr_null_struct: Pointer;
1001  const attr_value: Pointer): sword; cdecl;
1002  function ObjectGetAttr(env: POCIEnv; err: POCIError; instance: Pointer;
1003  null_struct: Pointer; tdo: POCIType;
1004  const names: PPoratext; const lengths: pub4;
1005  const name_count: ub4; const indexes: pub4;
1006  const index_count: ub4; attr_null_status: POCIInd;
1007  attr_null_struct, attr_value: PPointer;
1008  attr_tdo: PPOCIType): sword;
1009  {ociap.h}
1010  function Ping(svchp: POCISvcCtx; errhp: POCIError; mode: ub4 = OCI_DEFAULT): sword;
1011  {ort.h}
1012  function TypeIterNew(env: POCIEnv; err: POCIError; const tdo: POCIType;
1013  iterator_ort: PPOCITypeIter):sword;
1014  function TypeIterSet(env: POCIEnv; err: POCIError; const tdo: POCIType;
1015  iterator_ort: POCITypeIter): sword;
1016  function TypeIterFree(env: POCIEnv; err: POCIError;
1017  iterator_ort: POCITypeIter): sword;
1018  function TypeByName(env: POCIEnv; err: POCIError; const svc: POCISvcCtx;
1019  schema_name: Poratext; const s_length: ub4; const type_name: Poratext;
1020  const t_length: ub4; version_name: Poratext; const v_length: ub4;
1021  const pin_duration: OCIDuration; const get_option: OCITypeGetOpt;
1022  tdo: PPOCIType): sword;
1023  function TypeArrayByName(env: POCIEnv; err: POCIError; svc: POCISvcCtx;
1024  array_len: ub4; schema_name: PPoratext; s_length: Pub4;
1025  type_name: PPoratext; t_length: Pub4; version_name: PPoratext;
1026  v_length: Pub4; pin_duration: OCIDuration; get_option: OCITypeGetOpt;
1027  tdo: PPOCIType): sword;
1028  function TypeByRef(env: POCIEnv; err: POCIError; type_ref: POCIRef;
1029  pin_duration: OCIDuration; get_option: OCITypeGetOpt;
1030  tdo: PPOCIType): sword;
1031  function TypeArrayByRef(env: POCIEnv; err: POCIError; array_len: ub4;
1032  type_ref: PPOCIRef; pin_duration: OCIDuration; get_option: OCITypeGetOpt;
1033  tdo: PPOCIType): sword;
1034  function TypeName(env: POCIEnv; err: POCIError; tdo: POCIType;
1035  n_length: Pub4): poratext;
1036  function TypeSchema(env: POCIEnv; err: POCIError; const tdo: POCIType;
1037  n_length: Pub4): poratext;
1038  function TypeTypeCode(env: POCIEnv; err: POCIError;
1039  const tdo: POCIType): OCITypeCode;
1040  function TypeCollTypeCode(env:POCIEnv; err:POCIError;
1041  const tdo: POCIType): OCITypeCode;
1042  function TypeVersion(env: POCIEnv; err: POCIError; const tdo: POCIType;
1043  v_length: Pub4): poratext;
1044  function TypeAttrs(env: POCIEnv; err: POCIError;
1045  const tdo:POCIType): ub4;
1046  function TypeMethods(env: POCIEnv; err: POCIError;
1047  const tdo: POCIType): ub4;
1048  function TypeElemName(env: POCIEnv; err: POCIError;
1049  const elem: POCITypeElem; n_length:Pub4): poratext;
1050  function TypeElemTypeCode(env: POCIEnv; err: POCIError;
1051  const elem: POCITypeElem): OCITypeCode;
1052  function TypeElemType(env: POCIEnv; err: POCIError;
1053  const elem: POCITypeElem; elem_tdo:PPOCIType): sword;
1054  function TypeElemFlags(env: POCIEnv; err: POCIError;
1055  const elem: POCITypeElem): ub4;
1056  function TypeElemNumPrec(env: POCIEnv; err: POCIError;
1057  const elem: POCITypeElem): ub1;
1058  function TypeElemNumScale(env: POCIEnv; err: POCIError;
1059  const elem: POCITypeElem): sb1;
1060  function TypeElemLength(env: POCIEnv; err: POCIError;
1061  const elem:POCITypeElem): ub4;
1062  function TypeElemCharSetID(env: POCIEnv; err: POCIError;
1063  const elem: POCITypeElem): ub2;
1064  function TypeElemCharSetForm(env: POCIEnv; err: POCIError;
1065  const elem: POCITypeElem): ub2;
1066  function TypeElemParameterizedType(env: POCIEnv; err: POCIError;
1067  const elem: POCITypeElem; type_stored: PPOCIType): sword;
1068  function TypeElemExtTypeCode(env: POCIEnv; err: POCIError;
1069  const elem: POCITypeElem): OCITypeCode;
1070  function TypeAttrByName(env: POCIEnv; err: POCIError;
1071  const tdo: POCIType; const name: Poratext; const n_length: ub4;
1072  elem: PPOCITypeElem): sword;
1073  function TypeAttrNext(env: POCIEnv; err: POCIError;
1074  iterator_ort: POCITypeIter; elem: PPOCITypeElem): sword;
1075  function TypeCollElem(env: POCIEnv; err: POCIError; const tdo:POCIType;
1076  element: PPOCITypeElem): sword;
1077  function TypeCollSize(env: POCIEnv; err: POCIError; const tdo: POCIType;
1078  num_elems: Pub4): sword;
1079  function TypeCollExtTypeCode(env: POCIEnv; err: POCIError;
1080  const tdo:POCIType; sqt_code: POCITypeCode): sword;
1081  function TypeMethodOverload(env: POCIEnv; err: POCIError;
1082  const tdo: POCIType; const method_name: Poratext;
1083  const m_length: ub4): ub4;
1084  function TypeMethodByName(env: POCIEnv; err: POCIError;
1085  const tdo: POCIType; const method_name: Poratext; const m_length: ub4;
1086  mdos: PPOCITypeMethod): sword;
1087  function TypeMethodNext(env: POCIEnv; err: POCIError;
1088  iterator_ort: POCITypeIter; mdo: PPOCITypeMethod): sword;
1089  function TypeMethodName(env:POCIEnv; err: POCIError;
1090  const mdo: POCITypeMethod; n_length: Pub4): poratext;
1091  function TypeMethodEncap(env: POCIEnv; err: POCIError;
1092  const mdo: POCITypeMethod): OCITypeEncap;
1093  function TypeMethodFlags(env: POCIEnv; err: POCIError;
1094  const mdo:POCITypeMethod): OCITypeMethodFlag;
1095  function TypeMethodMap(env: POCIEnv; err: POCIError; const tdo: POCIType;
1096  mdo: PPOCITypeMethod): sword;
1097  function TypeMethodOrder(env: POCIEnv; err: POCIError;
1098  const tdo: POCIType; mdo: PPOCITypeMethod): sword;
1099  function TypeMethodParams(env: POCIEnv; err: POCIError;
1100  const mdo: POCITypeMethod): ub4;
1101  function TypeResult(env: POCIEnv; err: POCIError;
1102  const mdo: POCITypeMethod; elem: PPOCITypeElem): sword;
1103  function TypeParamByPos(env: POCIEnv; err: POCIError;
1104  const mdo: POCITypeMethod; const position: ub4;
1105  elem: PPOCITypeElem): sword;
1106  function TypeParamByName(env: POCIEnv; err: POCIError;
1107  const mdo: POCITypeMethod; const name: Poratext; const n_length: ub4;
1108  elem:PPOCITypeElem): sword;
1109  function TypeParamPos(env: POCIEnv; err: POCIError;
1110  const mdo: POCITypeMethod; const name: Poratext; const n_length: ub4;
1111  position: Pub4; elem: PPOCITypeElem): sword;
1112  function TypeElemParamMode(env: POCIEnv; err: POCIError;
1113  const elem: POCITypeElem): OCITypeParamMode;
1114  function TypeElemDefaultValue(env: POCIEnv; err: POCIError;
1115  const elem: POCITypeElem; d_v_length: Pub4): poratext;
1116  function TypeVTInit(env: POCIEnv; err: POCIError): sword;
1117  function TypeVTInsert(env: POCIEnv; err: POCIError;
1118  const schema_name: Poratext; const s_n_length: ub4;
1119  const type_name: Poratext; const t_n_length: ub4;
1120  const user_version:Poratext; const u_v_length:ub4): sword;
1121  function TypeVTSelect(env: POCIEnv; err: POCIError;
1122  const schema_name: Poratext; const s_n_length: ub4;
1123  const type_name: Poratext; const t_n_length: ub4; user_version: PPoratext;
1124  u_v_length: Pub4; version: Pub2): sword;
1125  end;
1126 
1127 implementation
1128 
1129 uses ZEncoding;
1130 
1131 { TZOracle9iPlainDriver }
1132 
1133 function TZOracle9iPlainDriver.GetUnicodeCodePageName: String;
1134 begin
1135  Result := 'UTF8';
1136 end;
1137 
1138 procedure TZOracle9iPlainDriver.LoadCodePages;
1139 begin
1140 (* AddCodePage('AL16UTF16', 2000, ceUTF16, zCP_UTF16); {Unicode 3.1 UTF-16 Universal character set}
1141  AddCodePage('AL32UTF8', 873, ceUTF8, zCP_UTF8); {Unicode 3.1 UTF-8 Universal character set}
1142  //AddCodePage('AR8ADOS710', 3); {Arabic MS-DOS 710 Server 8-bit Latin/Arabic}
1143 // AddCodePage('AR8ADOS710T', 4); {Arabic MS-DOS 710 8-bit Latin/Arabic}
1144  AddCodePage('AR8ADOS720', 558); {Arabic MS-DOS 720 Server 8-bit Latin/Arabic}
1145 // AddCodePage('AR8ADOS720T', 6); {Arabic MS-DOS 720 8-bit Latin/Arabic}
1146 // AddCodePage('AR8APTEC715', 7); {APTEC 715 Server 8-bit Latin/Arabic}
1147 // AddCodePage('AR8APTEC715T', 8); {APTEC 715 8-bit Latin/Arabic}
1148 // AddCodePage('AR8ASMO708PLUS', 9); {ASMO 708 Plus 8-bit Latin/Arabic}
1149  AddCodePage('AR8ASMO8X', 500); {ASMO Extended 708 8-bit Latin/Arabic}
1150 // AddCodePage('BN8BSCII', 11); {Bangladesh National Code 8-bit BSCII}
1151 // AddCodePage('TR7DEC', 12); {DEC VT100 7-bit Turkish}
1152 // AddCodePage('TR8DEC', 13); {DEC 8-bit Turkish}
1153 // AddCodePage('EL8DEC', 14); {DEC 8-bit Latin/Greek}
1154 // AddCodePage('EL8GCOS7', 15); {Bull EBCDIC GCOS7 8-bit Greek}
1155 // AddCodePage('IN8ISCII', 16); {Multiple-Script Indian Standard 8-bit Latin/Indian Languages}
1156 // AddCodePage('JA16DBCS', 17); {IBM EBCDIC 16-bit Japanese UDC}
1157 // AddCodePage('JA16EBCDIC930', 18); {IBM DBCS Code Page 290 16-bit Japanese UDC}
1158  AddCodePage('JA16EUC', 830); {EUC 24-bit Japanese}
1159  AddCodePage('JA16EUCTILDE', 837); {The same as JA16EUC except for the way that the wave dash and the tilde are mapped to and from Unicode.}
1160 // AddCodePage('JA16EUCYEN', 21); {EUC 24-bit Japanese with '\' mapped to the Japanese yen character}
1161 // AddCodePage('JA16MACSJIS', 22); {Mac client Shift-JIS 16-bit Japanese}
1162  AddCodePage('JA16SJIS', 832); {Shift-JIS 16-bit Japanese UDC}
1163  AddCodePage('JA16SJISTILDE', 838); {The same as JA16SJIS except for the way that the wave dash and the tilde are mapped to and from Unicode. UDC}
1164 // AddCodePage('JA16SJISYEN', 25); {Shift-JIS 16-bit Japanese with '\' mapped to the Japanese yen character UDC}
1165 // AddCodePage('JA16VMS', 26); {JVMS 16-bit Japanese}
1166 // AddCodePage('RU8BESTA', 27); {BESTA 8-bit Latin/Cyrillic}
1167 // AddCodePage('SF7ASCII', 28); {ASCII 7-bit Finnish}
1168 // AddCodePage('KO16DBCS', 29); {IBM EBCDIC 16-bit Korean UDC}
1169 // AddCodePage('KO16KSCCS', 30); {KSCCS 16-bit Korean}
1170  AddCodePage('KO16KSC5601', 840); {KSC5601 16-bit Korean}
1171  AddCodePage('KO16MSWIN949', 846); {MS Windows Code Page 949 Korean UDC}
1172 // AddCodePage('TH8MACTHAI', 33); {Mac Client 8-bit Latin/Thai}
1173 // AddCodePage('TH8MACTHAIS', 34); {Mac Server 8-bit Latin/Thai}
1174  AddCodePage('TH8TISASCII', 41); {Thai Industrial Standard 620-2533 - ASCII 8-bit}
1175 // AddCodePage('TH8TISEBCDIC', 36); {Thai Industrial Standard 620-2533 - EBCDIC 8-bit}
1176 // AddCodePage('TH8TISEBCDICS', 37); {Thai Industrial Standard 620-2533-EBCDIC Server 8-bit}
1177  AddCodePage('US7ASCII', 1); {U.S. 7-bit ASCII American}
1178  AddCodePage('VN8MSWIN1258', 45); {MS Windows Code Page 1258 8-bit Vietnamese}
1179 // AddCodePage('VN8VN3', 38); {VN3 8-bit Vietnamese}
1180 // AddCodePage('WE8GCOS7', 41); {Bull EBCDIC GCOS7 8-bit West European}
1181 // AddCodePage('YUG7ASCII', 42); {ASCII 7-bit Yugoslavian}
1182  AddCodePage('ZHS16CGB231280', 850); {CGB2312-80 16-bit Simplified Chinese}
1183 // AddCodePage('ZHS16DBCS', 44); {IBM EBCDIC 16-bit Simplified Chinese UDC}
1184  AddCodePage('ZHS16GBK', 852); {GBK 16-bit Simplified Chinese UDC}
1185 // AddCodePage('ZHS16MACCGB231280', 46); {Mac client CGB2312-80 16-bit Simplified Chinese}
1186  AddCodePage('ZHS32GB18030', 854); {GB18030-2000}
1187  AddCodePage('ZHT16BIG5', 856); {BIG5 16-bit Traditional Chinese}
1188 // AddCodePage('ZHT16CCDC', 49); {HP CCDC 16-bit Traditional Chinese}
1189 // AddCodePage('ZHT16DBCS', 50); {IBM EBCDIC 16-bit Traditional Chinese UDC}
1190 // AddCodePage('ZHT16DBT', 51); {Taiwan Taxation 16-bit Traditional Chinese}
1191  AddCodePage('ZHT16HKSCS', 868); {MS Windows Code Page 950 with Hong Kong Supplementary Character Set}
1192  AddCodePage('ZHT16MSWIN950', 867); {MS Windows Code Page 950 Traditional Chinese UDC}
1193  AddCodePage('ZHT32EUC', 860); {EUC 32-bit Traditional Chinese}
1194 // AddCodePage('ZHT32SOPS', 55); {SOPS 32-bit Traditional Chinese}
1195 // AddCodePage('ZHT32TRIS', 56); {TRIS 32-bit Traditional Chinese}
1196 
1197 // AddCodePage('WE8DEC', 57); {DEC 8-bit West European}
1198 // AddCodePage('D7DEC', 58); {DEC VT100 7-bit German}
1199 // AddCodePage('F7DEC', 59); {DEC VT100 7-bit French}
1200 // AddCodePage('S7DEC', 60); {DEC VT100 7-bit Swedish}
1201 // AddCodePage('E7DEC', 61); {DEC VT100 7-bit Spanish}
1202 // AddCodePage('NDK7DEC', 62); {DEC VT100 7-bit Norwegian/Danish}
1203 // AddCodePage('I7DEC', 63); {DEC VT100 7-bit Italian}
1204 // AddCodePage('NL7DEC', 64); {DEC VT100 7-bit Dutch}
1205 // AddCodePage('CH7DEC', 65); {DEC VT100 7-bit Swiss (German/French)}
1206 // AddCodePage('SF7DEC', 66); {DEC VT100 7-bit Finnish}
1207 // AddCodePage('WE8DG', 67); {DG 8-bit West European}
1208 // AddCodePage('WE8EBCDIC37', 68, ceAnsi, zCP_EBC037); {EBCDIC Code Page 37 8-bit West European}
1209 // AddCodePage('D8EBCDIC273', 69, ceAnsi, zCP_EBC273); {EBCDIC Code Page 273/1 8-bit Austrian German}
1210 // AddCodePage('DK8EBCDIC277', 70, ceAnsi, zCP_EBC277); {EBCDIC Code Page 277/1 8-bit Danish}
1211 // AddCodePage('S8EBCDIC278', 71, ceAnsi, zCP_EBC278); {EBCDIC Code Page 278/1 8-bit Swedish}
1212 // AddCodePage('I8EBCDIC280', 72, ceAnsi, zCP_EBC280); {EBCDIC Code Page 280/1 8-bit Italian}
1213 // AddCodePage('WE8EBCDIC284', 73, ceAnsi, zCP_EBC284); {EBCDIC Code Page 284 8-bit Latin American/Spanish}
1214 // AddCodePage('WE8EBCDIC285', 74); {EBCDIC Code Page 285 8-bit West European}
1215 // AddCodePage('WE8EBCDIC924', 75); {Latin 9 EBCDIC 924}
1216 // AddCodePage('WE8EBCDIC1047', 76); {EBCDIC Code Page 1047 8-bit West European}
1217 // AddCodePage('WE8EBCDIC1047E', 77); {Latin 1/Open Systems 1047}
1218 // AddCodePage('WE8EBCDIC1140', 78); {EBCDIC Code Page 1140 8-bit West European}
1219 // AddCodePage('WE8EBCDIC1140C', 79); {EBCDIC Code Page 1140 Client 8-bit West European}
1220 // AddCodePage('WE8EBCDIC1145', 80); {EBCDIC Code Page 1145 8-bit West European}
1221 // AddCodePage('WE8EBCDIC1146', 81); {EBCDIC Code Page 1146 8-bit West European}
1222 // AddCodePage('WE8EBCDIC1148', 82); {EBCDIC Code Page 1148 8-bit West European}
1223 // AddCodePage('WE8EBCDIC1148C', 83); {EBCDIC Code Page 1148 Client 8-bit West European}
1224 // AddCodePage('F8EBCDIC297', 84); {EBCDIC Code Page 297 8-bit French}
1225 // AddCodePage('WE8EBCDIC500', 85); {EBCDIC Code Page 500 8-bit West European}
1226 // AddCodePage('EE8EBCDIC870', 85); {EBCDIC Code Page 870 8-bit East European}
1227 // AddCodePage('EE8EBCDIC870C', 87); {EBCDIC Code Page 870 Client 8-bit East European}
1228 // AddCodePage('EE8EBCDIC870S', 88); {EBCDIC Code Page 870 Server 8-bit East European}
1229 // AddCodePage('WE8EBCDIC871', 89); {EBCDIC Code Page 871 8-bit Icelandic}
1230  AddCodePage('EL8EBCDIC875', 90); {EBCDIC Code Page 875 8-bit Greek}
1231  AddCodePage('EL8EBCDIC875R', 91); {EBCDIC Code Page 875 Server 8-bit Greek}
1232  AddCodePage('CL8EBCDIC1025', 92); {EBCDIC Code Page 1025 8-bit Cyrillic}
1233  AddCodePage('CL8EBCDIC1025C', 93); {EBCDIC Code Page 1025 Client 8-bit Cyrillic}
1234  AddCodePage('CL8EBCDIC1025R', 94); {EBCDIC Code Page 1025 Server 8-bit Cyrillic}
1235  AddCodePage('CL8EBCDIC1025S', 95); {EBCDIC Code Page 1025 Server 8-bit Cyrillic}
1236  AddCodePage('CL8EBCDIC1025X', 96); {EBCDIC Code Page 1025 (Modified) 8-bit Cyrillic}
1237  AddCodePage('BLT8EBCDIC1112', 97); {EBCDIC Code Page 1112 8-bit Baltic Multilingual}
1238  AddCodePage('BLT8EBCDIC1112S', 98); {EBCDIC Code Page 1112 8-bit Server Baltic Multilingual}
1239  AddCodePage('D8EBCDIC1141', 99); {EBCDIC Code Page 1141 8-bit Austrian German}
1240  AddCodePage('DK8EBCDIC1142', 100); {EBCDIC Code Page 1142 8-bit Danish}
1241  AddCodePage('S8EBCDIC1143', 101); {EBCDIC Code Page 1143 8-bit Swedish}
1242  AddCodePage('I8EBCDIC1144', 102); {EBCDIC Code Page 1144 8-bit Italian}
1243  AddCodePage('F8EBCDIC1147', 103); {EBCDIC Code Page 1147 8-bit French}
1244  AddCodePage('EEC8EUROASCI', 104); {EEC Targon 35 ASCI West European/Greek}
1245  AddCodePage('EEC8EUROPA3', 105); {EEC EUROPA3 8-bit West European/Greek}
1246  AddCodePage('LA8PASSPORT', 106); {German Government Printer 8-bit All-European Latin}
1247  AddCodePage('WE8HP', 107); {HP LaserJet 8-bit West European}
1248  AddCodePage('WE8ROMAN8', 108); {HP Roman8 8-bit West European}
1249  AddCodePage('HU8CWI2', 109); {Hungarian 8-bit CWI-2}
1250  AddCodePage('HU8ABMOD', 110); {Hungarian 8-bit Special AB Mod}
1251  AddCodePage('LV8RST104090', 111); {IBM-PC Alternative Code Page 8-bit Latvian (Latin/Cyrillic)}
1252  AddCodePage('US8PC437', 112); {IBM-PC Code Page 437 8-bit American}
1253  AddCodePage('BG8PC437S', 113); {IBM-PC Code Page 437 8-bit (Bulgarian Modification)}
1254  AddCodePage('EL8PC437S', 114); {IBM-PC Code Page 437 8-bit (Greek modification)}
1255  AddCodePage('EL8PC737', 115); {IBM-PC Code Page 737 8-bit Greek/Latin}
1256  AddCodePage('LT8PC772', 116); {IBM-PC Code Page 772 8-bit Lithuanian (Latin/Cyrillic)}
1257  AddCodePage('LT8PC774', 117); {IBM-PC Code Page 774 8-bit Lithuanian (Latin)}
1258  AddCodePage('BLT8PC775', 118); {IBM-PC Code Page 775 8-bit Baltic}
1259  AddCodePage('WE8PC850', 119); {IBM-PC Code Page 850 8-bit West European}
1260  AddCodePage('EL8PC851', 120); {IBM-PC Code Page 851 8-bit Greek/Latin}
1261  AddCodePage('EE8PC852', 121); {IBM-PC Code Page 852 8-bit East European}
1262  AddCodePage('RU8PC855', 122); {IBM-PC Code Page 855 8-bit Latin/Cyrillic}
1263  AddCodePage('WE8PC858', 123); {IBM-PC Code Page 858 8-bit West European}
1264  AddCodePage('WE8PC860', 124); {IBM-PC Code Page 860 8-bit West European}
1265  AddCodePage('IS8PC861', 125); {IBM-PC Code Page 861 8-bit Icelandic}
1266  AddCodePage('CDN8PC863', 126); {IBM-PC Code Page 863 8-bit Canadian French}
1267  AddCodePage('N8PC865', 127); {IBM-PC Code Page 865 8-bit Norwegian}
1268  AddCodePage('RU8PC866', 128); {IBM-PC Code Page 866 8-bit Latin/Cyrillic}
1269  AddCodePage('EL8PC869', 129); {IBM-PC Code Page 869 8-bit Greek/Latin}
1270  AddCodePage('LV8PC1117', 130); {IBM-PC Code Page 1117 8-bit Latvian}
1271  AddCodePage('US8ICL', 131); {ICL EBCDIC 8-bit American}
1272  AddCodePage('WE8ICL', 132); {ICL EBCDIC 8-bit West European}
1273  AddCodePage('WE8ISOICLUK', 133); {ICL special version ISO8859-1}
1274  AddCodePage('WE8ISO8859P1', 134); {ISO 8859-1 West European}
1275  AddCodePage('EE8ISO8859P2', 135); {ISO 8859-2 East European}
1276  AddCodePage('SE8ISO8859P3', 136); {ISO 8859-3 South European}
1277  AddCodePage('NEE8ISO8859P4', 137); {ISO 8859-4 North and North-East European}
1278  AddCodePage('CL8ISO8859P5', 138); {ISO 8859-5 Latin/Cyrillic}
1279  AddCodePage('EL8ISO8859P7', 139); {ISO 8859-7 Latin/Greek}
1280  AddCodePage('NE8ISO8859P10', 140); {ISO 8859-10 North European}
1281  AddCodePage('BLT8ISO8859P13', 141); {ISO 8859-13 Baltic}
1282  AddCodePage('CEL8ISO8859P14', 142); {ISO 8859-13 Celtic}
1283  AddCodePage('WE8ISO8859P15', 143); {ISO 8859-15 West European}
1284  AddCodePage('AR8ARABICMAC', 144); {Mac Client 8-bit Latin/Arabic}
1285  AddCodePage('EE8MACCE', 145); {Mac Client 8-bit Central European}
1286  AddCodePage('EE8MACCROATIAN', 146); {Mac Client 8-bit Croatian}
1287  AddCodePage('WE8MACROMAN8', 147); {Mac Client 8-bit Extended Roman8 West European}
1288  AddCodePage('EL8MACGREEK', 148); {Mac Client 8-bit Greek}
1289  AddCodePage('IS8MACICELANDIC', 149); {Mac Client 8-bit Icelandic}
1290  AddCodePage('CL8MACCYRILLIC', 150); {Mac Client 8-bit Latin/Cyrillic}
1291  AddCodePage('EE8MACCES', 151); {Mac Server 8-bit Central European}
1292  AddCodePage('EE8MACCROATIANS', 152); {Mac Server 8-bit Croatian}
1293  AddCodePage('WE8MACROMAN8S', 153); {Mac Server 8-bit Extended Roman8 West European}
1294  AddCodePage('CL8MACCYRILLICS', 154); {Mac Server 8-bit Latin/Cyrillic}
1295  AddCodePage('EL8MACGREEKS', 155); {Mac Server 8-bit Greek}
1296  AddCodePage('IS8MACICELANDICS', 156); {Mac Server 8-bit Icelandic}
1297  AddCodePage('BG8MSWIN', 157); {MS Windows 8-bit Bulgarian Cyrillic}
1298  AddCodePage('LT8MSWIN921', 158); {MS Windows Code Page 921 8-bit Lithuanian}
1299  AddCodePage('ET8MSWIN923', 159); {MS Windows Code Page 923 8-bit Estonian}
1300  AddCodePage('EE8MSWIN1250', 160, ceAnsi, zCP_WIN1250); {MS Windows Code Page 1250 8-bit East European}
1301  AddCodePage('CL8MSWIN1251', 161, ceAnsi, zCP_WIN1251); {MS Windows Code Page 1251 8-bit Latin/Cyrillic}
1302  AddCodePage('WE8MSWIN1252', 162, ceAnsi, zCP_WIN1252); {MS Windows Code Page 1252 8-bit West European}
1303  AddCodePage('EL8MSWIN1253', 163, ceAnsi, zCP_WIN1253); {MS Windows Code Page 1253 8-bit Latin/Greek}
1304  AddCodePage('BLT8MSWIN1257', 164, ceAnsi, zCP_WIN1257); {MS Windows Code Page 1257 8-bit Baltic}
1305  AddCodePage('BLT8CP921', 165); {Latvian Standard LVS8-92(1) Windows/Unix 8-bit Baltic}
1306  AddCodePage('LV8PC8LR', 166, ceAnsi, zCP_DOS866); {Latvian Version IBM-PC Code Page 866 8-bit Latin/Cyrillic}
1307  AddCodePage('WE8NCR4970', 167); {NCR 4970 8-bit West European}
1308  AddCodePage('WE8NEXTSTEP', 168); {NeXTSTEP PostScript 8-bit West European}
1309  AddCodePage('CL8ISOIR111', 169); {ISOIR111 Cyrillic}
1310  AddCodePage('CL8KOI8R', 170, ceAnsi, zCP_KOI8R); {RELCOM Internet Standard 8-bit Latin/Cyrillic}
1311  AddCodePage('CL8KOI8U', 171); {KOI8 Ukrainian Cyrillic}
1312  AddCodePage('US8BS2000', 172); {Siemens 9750-62 EBCDIC 8-bit American}
1313  AddCodePage('DK8BS2000', 173); {Siemens 9750-62 EBCDIC 8-bit Danish}
1314  AddCodePage('F8BS2000', 174); {Siemens 9750-62 EBCDIC 8-bit French}
1315  AddCodePage('D8BS2000', 175); {Siemens 9750-62 EBCDIC 8-bit German}
1316  AddCodePage('E8BS2000', 176); {Siemens 9750-62 EBCDIC 8-bit Spanish}
1317  AddCodePage('S8BS2000', 177); {Siemens 9750-62 EBCDIC 8-bit Swedish}
1318  AddCodePage('DK7SIEMENS9780X', 178); {Siemens 97801/97808 7-bit Danish}
1319  AddCodePage('F7SIEMENS9780X', 179); {Siemens 97801/97808 7-bit French}
1320  AddCodePage('D7SIEMENS9780X', 180); {Siemens 97801/97808 7-bit German}
1321  AddCodePage('I7SIEMENS9780X', 181); {Siemens 97801/97808 7-bit Italian}
1322  AddCodePage('N7SIEMENS9780X', 182); {Siemens 97801/97808 7-bit Norwegian}
1323  AddCodePage('E7SIEMENS9780X', 183); {Siemens 97801/97808 7-bit Spanish}
1324  AddCodePage('S7SIEMENS9780X', 184); {Siemens 97801/97808 7-bit Swedish}
1325  AddCodePage('EE8BS2000', 185); {Siemens EBCDIC.DF.04 8-bit East European}
1326  AddCodePage('WE8BS2000', 186); {Siemens EBCDIC.DF.04 8-bit West European}
1327  AddCodePage('WE8BS2000E', 187); {Siemens EBCDIC.DF.04 8-bit West European}
1328  AddCodePage('CL8BS2000', 188); {Siemens EBCDIC.EHC.LC 8-bit Cyrillic}
1329  AddCodePage('WE8EBCDIC37C', 189); {EBCDIC Code Page 37 8-bit Oracle/c}
1330  AddCodePage('IW8EBCDIC424', 190); {EBCDIC Code Page 424 8-bit Latin/Hebrew}
1331  AddCodePage('IW8EBCDIC424S', 191); {EBCDIC Code Page 424 Server 8-bit Latin/Hebrew}
1332  AddCodePage('WE8EBCDIC500C', 192); {EBCDIC Code Page 500 8-bit Oracle/c}
1333  AddCodePage('IW8EBCDIC1086', 193); {EBCDIC Code Page 1086 8-bit Hebrew}
1334  AddCodePage('AR8EBCDIC420S', 194); {EBCDIC Code Page 420 Server 8-bit Latin/Arabic}
1335  AddCodePage('AR8EBCDICX', 195); {EBCDIC XBASIC Server 8-bit Latin/Arabic}
1336  AddCodePage('TR8EBCDIC1026', 196, ceAnsi, zCP_IBM1026); {EBCDIC Code Page 1026 8-bit Turkish}
1337  AddCodePage('TR8EBCDIC1026S', 197); {EBCDIC Code Page 1026 Server 8-bit Turkish}
1338  AddCodePage('AR8HPARABIC8T', 198); {HP 8-bit Latin/Arabic}
1339  AddCodePage('TR8PC857', 199); {IBM-PC Code Page 857 8-bit Turkish}
1340  AddCodePage('IW8PC1507', 200); {IBM-PC Code Page 1507/862 8-bit Latin/Hebrew}
1341  AddCodePage('AR8ISO8859P6', 201); {ISO 8859-6 Latin/Arabic}
1342  AddCodePage('IW8ISO8859P8', 201); {ISO 8859-8 Latin/Hebrew}
1343  AddCodePage('WE8ISO8859P9', 203); {ISO 8859-9 West European & Turkish}
1344  AddCodePage('LA8ISO6937', 204); {ISO 6937 8-bit Coded Character Set for Text Communication}
1345  AddCodePage('IW7IS960', 205); {Israeli Standard 960 7-bit Latin/Hebrew}
1346  AddCodePage('IW8MACHEBREW', 206); {Mac Client 8-bit Hebrew}
1347  AddCodePage('AR8ARABICMACT', 207); {Mac 8-bit Latin/Arabic}
1348  AddCodePage('TR8MACTURKISH', 208); {Mac Client 8-bit Turkish}
1349  AddCodePage('IW8MACHEBREWS', 209); {Mac Server 8-bit Hebrew}
1350  AddCodePage('TR8MACTURKISHS', 210); {Mac Server 8-bit Turkish}
1351  AddCodePage('TR8MSWIN1254', 211); {MS Windows Code Page 1254 8-bit Turkish}
1352  AddCodePage('IW8MSWIN1255', 212); {MS Windows Code Page 1255 8-bit Latin/Hebrew}
1353  AddCodePage('AR8MSWIN1256', 213); {MS Windows Code Page 1256 8-Bit Latin/Arabic}
1354  AddCodePage('IN8ISCII', 214); {Multiple-Script Indian Standard 8-bit Latin/Indian Languages}
1355  AddCodePage('AR8MUSSAD768', 215); {Mussa'd Alarabi/2 768 Server 8-bit Latin/Arabic}
1356  AddCodePage('AR8MUSSAD768T', 216); {Mussa'd Alarabi/2 768 8-bit Latin/Arabic}
1357  AddCodePage('AR8NAFITHA711', 217); {Nafitha Enhanced 711 Server 8-bit Latin/Arabic}
1358  AddCodePage('AR8NAFITHA711T', 218); {Nafitha Enhanced 711 8-bit Latin/Arabic}
1359  AddCodePage('AR8NAFITHA721', 219); {Nafitha International 721 Server 8-bit Latin/Arabic}
1360  AddCodePage('AR8NAFITHA721T', 220); {Nafitha International 721 8-bit Latin/Arabic}
1361  AddCodePage('AR8SAKHR706', 221); {SAKHR 706 Server 8-bit Latin/Arabic}
1362  AddCodePage('AR8SAKHR707', 222); {SAKHR 707 Server 8-bit Latin/Arabic}
1363  AddCodePage('AR8SAKHR707T', 223); {SAKHR 707 8-bit Latin/Arabic}
1364  AddCodePage('AR8XBASIC', 224); {XBASIC 8-bit Latin/Arabic}
1365  AddCodePage('WE8BS2000L5', 225); {Siemens EBCDIC.DF.04.L5 8-bit West European/Turkish})
1366  AddCodePage('UTF8', 871, ceUTF8, zCP_UTF8); {Unicode 3.0 UTF-8 Universal character set, CESU-8 compliant}
1367  AddCodePage('UTFE', 227, ceUTF8, zCP_UTF8); {EBCDIC form of Unicode 3.0 UTF-8 Universal character set}
1368 *)
1369 
1370  //All supporteds from XE
1371  AddCodePage('US7ASCII', 1, ceAnsi, zCP_us_ascii);
1372  AddCodePage('US8PC437', 4, ceAnsi, zCP_DOS437);
1373  AddCodePage('WE8PC850', 10, ceAnsi, zCP_DOS850);
1374  AddCodePage('WE8PC858', 28, ceAnsi, zCP_DOS858);
1375  AddCodePage('WE8ISO8859P1', 31, ceAnsi, zCP_L1_ISO_8859_1);
1376  AddCodePage('EE8ISO8859P2', 32, ceAnsi, zCP_L2_ISO_8859_2);
1377  AddCodePage('SE8ISO8859P3', 33, ceAnsi, zCP_L3_ISO_8859_3);
1378  AddCodePage('NEE8ISO8859P4', 34, ceAnsi, zCP_L4_ISO_8859_4);
1379  AddCodePage('CL8ISO8859P5', 35, ceAnsi, zCP_L5_ISO_8859_5);
1380  AddCodePage('AR8ISO8859P6', 36, ceAnsi, zCP_L6_ISO_8859_6);
1381  AddCodePage('EL8ISO8859P7', 37, ceAnsi, zCP_L7_ISO_8859_7);
1382  AddCodePage('IW8ISO8859P8', 38, ceAnsi, zCP_L8_ISO_8859_8);
1383  AddCodePage('WE8ISO8859P9', 39, ceAnsi, zCP_L5_ISO_8859_9);
1384  AddCodePage('NE8ISO8859P10', 40, ceAnsi, zCP_L6_ISO_8859_10);
1385  AddCodePage('TH8TISASCII', 41, ceAnsi);
1386  AddCodePage('VN8MSWIN1258', 45, ceAnsi, zCP_WIN1258);
1387  AddCodePage('WE8ISO8859P15', 46, ceAnsi, zCP_L9_ISO_8859_15);
1388  AddCodePage('BLT8ISO8859P13', 47, ceAnsi, zCP_L7_ISO_8859_13);
1389  AddCodePage('CEL8ISO8859P14', 48, ceAnsi, zCP_L8_ISO_8859_14);
1390  AddCodePage('CL8KOI8U', 51, ceAnsi, zCP_KOI8U);
1391  AddCodePage('AZ8ISO8859P9E', 52, ceAnsi);
1392  AddCodePage('EE8PC852', 150, ceAnsi, zCP_DOS852);
1393  AddCodePage('RU8PC866', 152, ceAnsi, zCP_DOS856);
1394  AddCodePage('TR8PC857', 156, ceAnsi, zCP_DOS857);
1395  AddCodePage('EE8MSWIN1250', 170, ceAnsi, zCP_WIN1250);
1396  AddCodePage('CL8MSWIN1251', 171, ceAnsi, zCP_WIN1251);
1397  AddCodePage('ET8MSWIN923', 172, ceAnsi, zCP_MSWIN923);
1398  AddCodePage('EL8MSWIN1253', 174, ceAnsi, zCP_WIN1253);
1399  AddCodePage('IW8MSWIN1255', 175, ceAnsi, zCP_WIN1255);
1400  AddCodePage('LT8MSWIN921', 176, ceAnsi, zCP_MSWIN921);
1401  AddCodePage('TR8MSWIN1254', 177, ceAnsi, zCP_WIN1254);
1402  AddCodePage('WE8MSWIN1252', 178, ceAnsi, zCP_WIN1252);
1403  AddCodePage('BLT8MSWIN1257', 179, ceAnsi, zCP_WIN1257);
1404  AddCodePage('BLT8CP921', 191, ceAnsi, 921);
1405  AddCodePage('CL8KOI8R', 196, ceAnsi, zCP_KOI8R);
1406  AddCodePage('BLT8PC775', 197, ceAnsi, zCP_DOS775);
1407  AddCodePage('EL8PC737', 382, ceAnsi, zCP_DOS737);
1408  AddCodePage('AR8ASMO8X', 500, ceAnsi);
1409  AddCodePage('AR8ADOS720', 558, ceAnsi, zCP_DOS720);
1410  AddCodePage('AR8MSWIN1256', 560, ceAnsi, cCP_WIN1256);
1411  AddCodePage('JA16EUC', 830, ceAnsi, zCP_euc_JP_win);
1412  AddCodePage('JA16SJIS', 832, ceAnsi, zCP_csISO2022JP);
1413  AddCodePage('JA16EUCTILDE', 837, ceAnsi);
1414  AddCodePage('JA16SJISTILDE', 838, ceAnsi);
1415  AddCodePage('KO16KSC5601', 840, ceAnsi, 601);
1416  AddCodePage('KO16MSWIN949', 846, ceAnsi, zCP_EUCKR);
1417  AddCodePage('ZHS16CGB231280', 850, ceAnsi, zCP_GB2312);
1418  AddCodePage('ZHS16GBK', 852, ceAnsi);
1419  AddCodePage('ZHS32GB18030', 854, ceAnsi, zCP_GB18030);
1420  AddCodePage('ZHT32EUC', 860, ceAnsi, zCP_EUCKR);
1421  AddCodePage('ZHT16BIG5', 865, ceAnsi, zCP_Big5);
1422  AddCodePage('ZHT16MSWIN950', 867, ceAnsi, zCP_Big5);
1423  AddCodePage('ZHT16HKSCS', 868, ceAnsi);
1424  AddCodePage('UTF8', 871, ceUTF8, zCP_UTF8);
1425  AddCodePage('AL32UTF8', 873, ceUTF8, zCP_UTF8);
1426  AddCodePage('UTF16', 1000, ceUTF16, zCP_UTF16);
1427  AddCodePage('AL16UTF16', 2000, ceUTF16, zCP_UTF16);
1428  AddCodePage('AL16UTF16LE', 2002, ceUTF16, zCP_UTF16);
1429 end;
1430 
1431 procedure TZOracle9iPlainDriver.LoadApi;
1432 begin
1433 { ************** Load adresses of API Functions ************* }
1434  with Loader do
1435  begin
1436  @OracleAPI.OCIEnvCreate := GetAddress('OCIEnvCreate');
1437  @OracleAPI.OCIEnvNlsCreate := GetAddress('OCIEnvNlsCreate');
1438  @OracleAPI.OCIInitialize := GetAddress('OCIInitialize');
1439  @OracleAPI.OCIEnvInit := GetAddress('OCIEnvInit');
1440 
1441  @OracleAPI.OCIHandleAlloc := GetAddress('OCIHandleAlloc');
1442  @OracleAPI.OCIHandleFree := GetAddress('OCIHandleFree');
1443  @OracleAPI.OCIAttrSet := GetAddress('OCIAttrSet');
1444  @OracleAPI.OCIAttrGet := GetAddress('OCIAttrGet');
1445  @OracleAPI.OCIDescriptorAlloc := GetAddress('OCIDescriptorAlloc');
1446  @OracleAPI.OCIDescriptorFree := GetAddress('OCIDescriptorFree');
1447  @OracleAPI.OCIErrorGet := GetAddress('OCIErrorGet');
1448 
1449  @OracleAPI.OCIServerAttach := GetAddress('OCIServerAttach');
1450  @OracleAPI.OCIServerDetach := GetAddress('OCIServerDetach');
1451  @OracleAPI.OCIServerVersion := GetAddress('OCIServerVersion');
1452  @OracleAPI.OCIServerRelease := GetAddress('OCIServerRelease');
1453  @OracleAPI.OCIBreak := GetAddress('OCIBreak');
1454 
1455  { For Oracle >= 8.1 }
1456  @OracleAPI.OCIReset := GetAddress('OCIReset');
1457 
1458  @OracleAPI.OCISessionBegin := GetAddress('OCISessionBegin');
1459  @OracleAPI.OCISessionEnd := GetAddress('OCISessionEnd');
1460  @OracleAPI.OCIPasswordChange := GetAddress('OCIPasswordChange');
1461 
1462  @OracleAPI.OCITransStart := GetAddress('OCITransStart');
1463  @OracleAPI.OCITransCommit := GetAddress('OCITransCommit');
1464  @OracleAPI.OCITransRollback := GetAddress('OCITransRollback');
1465  @OracleAPI.OCITransDetach := GetAddress('OCITransDetach');
1466  @OracleAPI.OCITransPrepare := GetAddress('OCITransPrepare');
1467  @OracleAPI.OCITransForget := GetAddress('OCITransForget');
1468 
1469  @OracleAPI.OCIStmtPrepare := GetAddress('OCIStmtPrepare');
1470  @OracleAPI.OCIStmtExecute := GetAddress('OCIStmtExecute');
1471  @OracleAPI.OCIStmtFetch := GetAddress('OCIStmtFetch');
1472  @OracleAPI.OCIStmtGetPieceInfo := GetAddress('OCIStmtGetPieceInfo');
1473  @OracleAPI.OCIStmtSetPieceInfo := GetAddress('OCIStmtSetPieceInfo');
1474  @OracleAPI.OCIParamGet := GetAddress('OCIParamGet');
1475  @OracleAPI.OCIResultSetToStmt := GetAddress('OCIResultSetToStmt');
1476 
1477  @OracleAPI.OCIDefineByPos := GetAddress('OCIDefineByPos');
1478  @OracleAPI.OCIDefineArrayOfStruct := GetAddress('OCIDefineArrayOfStruct');
1479 
1480  @OracleAPI.OCIBindByPos := GetAddress('OCIBindByPos');
1481  @OracleAPI.OCIBindByName := GetAddress('OCIBindByName');
1482  @OracleAPI.OCIBindDynamic := GetAddress('OCIBindDynamic');
1483  @OracleAPI.OCIBindObject := GetAddress('OCIBindObject');
1484 
1485  @OracleAPI.OCIDefineObject := GetAddress('OCIDefineObject');
1486 
1487  { > ori.h }
1488  @OracleAPI.OCIObjectNew := GetAddress('OCIObjectNew');
1489  @OracleAPI.OCIObjectPin := GetAddress('OCIObjectPin');
1490  @OracleAPI.OCIObjectUnpin := GetAddress('OCIObjectUnpin');
1491  @OracleAPI.OCIObjectPinCountReset := GetAddress('OCIObjectPinCountReset');
1492  @OracleAPI.OCIObjectLock := GetAddress('OCIObjectLock');
1493  @OracleAPI.OCIObjectLockNoWait := GetAddress('OCIObjectLockNoWait');
1494  @OracleAPI.OCIObjectMarkUpdate := GetAddress('OCIObjectMarkUpdate');
1495  @OracleAPI.OCIObjectUnmark := GetAddress('OCIObjectUnmark');
1496  @OracleAPI.OCIObjectUnmarkByRef := GetAddress('OCIObjectUnmarkByRef');
1497  @OracleAPI.OCIObjectFree := GetAddress('OCIObjectFree');
1498  @OracleAPI.OCIObjectMarkDeleteByRef := GetAddress('OCIObjectMarkDeleteByRef');
1499  @OracleAPI.OCIObjectMarkDelete := GetAddress('OCIObjectMarkDelete');
1500  @OracleAPI.OCIObjectFlush := GetAddress('OCIObjectFlush');
1501  @OracleAPI.OCIObjectRefresh := GetAddress('OCIObjectRefresh');
1502  @OracleAPI.OCIObjectCopy := GetAddress('OCIObjectCopy');
1503  @OracleAPI.OCIObjectGetTypeRef := GetAddress('OCIObjectGetTypeRef');
1504  @OracleAPI.OCIObjectGetObjectRef := GetAddress('OCIObjectGetObjectRef');
1505  @OracleAPI.OCIObjectMakeObjectRef := GetAddress('OCIObjectMakeObjectRef');
1506  @OracleAPI.OCIObjectGetPrimaryKeyTypeRef := GetAddress('OCIObjectGetPrimaryKeyTypeRef');
1507  @OracleAPI.OCIObjectGetInd := GetAddress('OCIObjectGetInd');
1508  @OracleAPI.OCIObjectExists := GetAddress('OCIObjectExists');
1509  @OracleAPI.OCIObjectGetProperty := GetAddress('OCIObjectGetProperty');
1510  @OracleAPI.OCIObjectIsLocked := GetAddress('OCIObjectIsLocked');
1511  @OracleAPI.OCIObjectIsDirty := GetAddress('OCIObjectIsDirty');
1512  @OracleAPI.OCIObjectPinTable := GetAddress('OCIObjectPinTable');
1513  @OracleAPI.OCIObjectArrayPin := GetAddress('OCIObjectArrayPin');
1514  @OracleAPI.OCICacheFlush := GetAddress('OCICacheFlush');
1515  @OracleAPI.OCICacheRefresh := GetAddress('OCICacheRefresh');
1516  @OracleAPI.OCICacheUnpin := GetAddress('OCICacheUnpin');
1517  @OracleAPI.OCICacheFree := GetAddress('OCICacheFree');
1518  @OracleAPI.OCICacheUnmark := GetAddress('OCICacheUnmark');
1519  @OracleAPI.OCIDurationBegin := GetAddress('OCIDurationBegin');
1520  @OracleAPI.OCIDurationEnd := GetAddress('OCIDurationEnd');
1521  { < ori.h }
1522 
1523  @OracleAPI.OCILobAppend := GetAddress('OCILobAppend');
1524  @OracleAPI.OCILobAssign := GetAddress('OCILobAssign');
1525  @OracleAPI.OCILobCopy := GetAddress('OCILobCopy');
1526  @OracleAPI.OCILobEnableBuffering := GetAddress('OCILobEnableBuffering');
1527  @OracleAPI.OCILobDisableBuffering := GetAddress('OCILobDisableBuffering');
1528  @OracleAPI.OCILobErase := GetAddress('OCILobErase');
1529  @OracleAPI.OCILobFileExists := GetAddress('OCILobFileExists');
1530  @OracleAPI.OCILobFileGetName := GetAddress('OCILobFileGetName');
1531  @OracleAPI.OCILobFileSetName := GetAddress('OCILobFileSetName');
1532  @OracleAPI.OCILobFlushBuffer := GetAddress('OCILobFlushBuffer');
1533  @OracleAPI.OCILobGetLength := GetAddress('OCILobGetLength');
1534  @OracleAPI.OCILobLoadFromFile := GetAddress('OCILobLoadFromFile');
1535  @OracleAPI.OCILobLocatorIsInit := GetAddress('OCILobLocatorIsInit');
1536  @OracleAPI.OCILobRead := GetAddress('OCILobRead');
1537  @OracleAPI.OCILobTrim := GetAddress('OCILobTrim');
1538  @OracleAPI.OCILobWrite := GetAddress('OCILobWrite');
1539 
1540  { For Oracle >= 8.1 }
1541  @OracleAPI.OCILobCreateTemporary := GetAddress('OCILobCreateTemporary');
1542  @OracleAPI.OCILobFreeTemporary := GetAddress('OCILobFreeTemporary');
1543  @OracleAPI.OCILobCharSetForm := GetAddress('OCILobCharSetForm');
1544  @OracleAPI.OCILobCharSetId := GetAddress('OCILobCharSetId');
1545  @OracleAPI.OCILobClose := GetAddress('OCILobClose');
1546  @OracleAPI.OCILobIsOpen := GetAddress('OCILobIsOpen');
1547  @OracleAPI.OCILobIsTemporary := GetAddress('OCILobIsTemporary');
1548  @OracleAPI.OCILobOpen := GetAddress('OCILobOpen');
1549 
1550  @OracleAPI.OCIDateTimeAssign := GetAddress('OCIDateTimeAssign');
1551  @OracleAPI.OCIDateTimeCheck := GetAddress('OCIDateTimeCheck');
1552  @OracleAPI.OCIDateTimeCompare := GetAddress('OCIDateTimeCompare');
1553  @OracleAPI.OCIDateTimeConvert := GetAddress('OCIDateTimeConvert');
1554  @OracleAPI.OCIDateTimeFromText := GetAddress('OCIDateTimeFromText');
1555  @OracleAPI.OCIDateTimeGetDate := GetAddress('OCIDateTimeGetDate');
1556  @OracleAPI.OCIDateTimeGetTime := GetAddress('OCIDateTimeGetTime');
1557  @OracleAPI.OCIDateTimeGetTimeZoneOffset := GetAddress('OCIDateTimeGetTimeZoneOffset');
1558  @OracleAPI.OCIDateTimeSysTimeStamp := GetAddress('OCIDateTimeSysTimeStamp');
1559  @OracleAPI.OCIDateTimeConstruct := GetAddress('OCIDateTimeConstruct');
1560  @OracleAPI.OCIDateTimeToText := GetAddress('OCIDateTimeToText');
1561  @OracleAPI.OCIDateTimeGetTimeZoneName := GetAddress('OCIDateTimeGetTimeZoneName');
1562  @OracleAPI.OCINlsNumericInfoGet := GetAddress('OCINlsNumericInfoGet');
1563  @OracleAPI.OCIClientVersion := GetAddress('OCIClientVersion');
1564 
1565  { For Oracle < 8.1 }
1566  //@OracleAPI.OCILobClose := GetAddress('OCILobFileClose');
1567  //@OracleAPI.OCILobIsOpen := GetAddress('OCILobFileIsOpen');
1568  //@OracleAPI.OCILobOpen := GetAddress('OCILobFileOpen');
1569 
1570  @OracleAPI.OCIDescribeAny := GetAddress('OCIDescribeAny');
1571 
1572  { OCI Number mapping }
1573  @OracleAPI.OCINumberInc := GetAddress('OCINumberInc');
1574  @OracleAPI.OCINumberDec := GetAddress('OCINumberDec');
1575  @OracleAPI.OCINumberSetZero := GetAddress('OCINumberSetZero');
1576  @OracleAPI.OCINumberSetPi := GetAddress('OCINumberSetPi');
1577  @OracleAPI.OCINumberAdd := GetAddress('OCINumberAdd');
1578  @OracleAPI.OCINumberSub := GetAddress('OCINumberSub');
1579  @OracleAPI.OCINumberMul := GetAddress('OCINumberMul');
1580  @OracleAPI.OCINumberDiv := GetAddress('OCINumberDiv');
1581  @OracleAPI.OCINumberMod := GetAddress('OCINumberMod');
1582  @OracleAPI.OCINumberIntPower := GetAddress('OCINumberIntPower');
1583  @OracleAPI.OCINumberShift := GetAddress('OCINumberShift');
1584  @OracleAPI.OCINumberNeg := GetAddress('OCINumberNeg');
1585  @OracleAPI.OCINumberToText := GetAddress('OCINumberToText');
1586  @OracleAPI.OCINumberFromText := GetAddress('OCINumberFromText');
1587  @OracleAPI.OCINumberToInt := GetAddress('OCINumberToInt');
1588  @OracleAPI.OCINumberFromInt := GetAddress('OCINumberFromInt');
1589  @OracleAPI.OCINumberToReal := GetAddress('OCINumberToReal');
1590  @OracleAPI.OCINumberToRealArray := GetAddress('OCINumberToRealArray');
1591  @OracleAPI.OCINumberFromReal := GetAddress('OCINumberFromReal');
1592  @OracleAPI.OCINumberCmp := GetAddress('OCINumberCmp');
1593  @OracleAPI.OCINumberSign := GetAddress('OCINumberSign');
1594  @OracleAPI.OCINumberIsZero := GetAddress('OCINumberIsZero');
1595  @OracleAPI.OCINumberIsInt := GetAddress('OCINumberIsInt');
1596  @OracleAPI.OCINumberAssign := GetAddress('OCINumberAssign');
1597  @OracleAPI.OCINumberAbs := GetAddress('OCINumberAbs');
1598  @OracleAPI.OCINumberCeil := GetAddress('OCINumberCeil');
1599  @OracleAPI.OCINumberFloor := GetAddress('OCINumberFloor');
1600  @OracleAPI.OCINumberSqrt := GetAddress('OCINumberSqrt');
1601  @OracleAPI.OCINumberTrunc := GetAddress('OCINumberTrunc');
1602  @OracleAPI.OCINumberPower := GetAddress('OCINumberPower');
1603  @OracleAPI.OCINumberRound := GetAddress('OCINumberRound');
1604  @OracleAPI.OCINumberPrec := GetAddress('OCINumberPrec');
1605  @OracleAPI.OCINumberSin := GetAddress('OCINumberSin');
1606  @OracleAPI.OCINumberArcSin := GetAddress('OCINumberArcSin');
1607  @OracleAPI.OCINumberHypSin := GetAddress('OCINumberHypSin');
1608  @OracleAPI.OCINumberCos := GetAddress('OCINumberCos');
1609  @OracleAPI.OCINumberArcCos := GetAddress('OCINumberArcCos');
1610  @OracleAPI.OCINumberHypCos := GetAddress('OCINumberHypCos');
1611  @OracleAPI.OCINumberTan := GetAddress('OCINumberTan');
1612  @OracleAPI.OCINumberArcTan := GetAddress('OCINumberArcTan');
1613  @OracleAPI.OCINumberArcTan2 := GetAddress('OCINumberArcTan2');
1614  @OracleAPI.OCINumberHypTan := GetAddress('OCINumberHypTan');
1615  @OracleAPI.OCINumberExp := GetAddress('OCINumberExp');
1616  @OracleAPI.OCINumberLn := GetAddress('OCINumberLn');
1617  @OracleAPI.OCINumberLog := GetAddress('OCINumberLog');
1618 
1619  @OracleAPI.OCITableSize := GetAddress('OCITableSize');
1620  @OracleAPI.OCITableExists := GetAddress('OCITableExists');
1621  @OracleAPI.OCITableDelete := GetAddress('OCITableDelete');
1622  @OracleAPI.OCITableFirst := GetAddress('OCITableFirst');
1623  @OracleAPI.OCITableLast := GetAddress('OCITableLast');
1624  @OracleAPI.OCITableNext := GetAddress('OCITableNext');
1625  @OracleAPI.OCITablePrev := GetAddress('OCITablePrev');
1626 
1627  @OracleAPI.OCIObjectGetAttr := GetAddress('OCIObjectGetAttr');
1628  @OracleAPI.OCIObjectSetAttr := GetAddress('OCIObjectSetAttr');
1629  {ociap.h}
1630  @OracleAPI.OCIPing := GetAddress('OCIPing');
1631  {ort.h}
1632  @OracleAPI.OCITypeIterNew := GetAddress('OCITypeIterNew');
1633  @OracleAPI.OCITypeIterFree := GetAddress('OCITypeIterFree');
1634  @OracleAPI.OCITypeByName := GetAddress('OCITypeByName');
1635  @OracleAPI.OCITypeArrayByName := GetAddress('OCITypeArrayByName');
1636  @OracleAPI.OCITypeByRef := GetAddress('OCITypeByRef');
1637  @OracleAPI.OCITypeArrayByRef := GetAddress('OCITypeArrayByRef');
1638  @OracleAPI.OCITypeName := GetAddress('OCITypeName');
1639  @OracleAPI.OCITypeSchema := GetAddress('OCITypeSchema');
1640  @OracleAPI.OCITypeTypeCode := GetAddress('OCITypeTypeCode');
1641  @OracleAPI.OCITypeCollTypeCode:= GetAddress('OCITypeCollTypeCode');
1642  @OracleAPI.OCITypeVersion := GetAddress('OCITypeVersion');
1643  @OracleAPI.OCITypeAttrs := GetAddress('OCITypeAttrs');
1644  @OracleAPI.OCITypeMethods := GetAddress('OCITypeMethods');
1645  @OracleAPI.OCITypeElemName := GetAddress('OCITypeElemName');
1646  @OracleAPI.OCITypeElemTypeCode:= GetAddress('OCITypeElemTypeCode');
1647  @OracleAPI.OCITypeElemType := GetAddress('OCITypeElemType');
1648  @OracleAPI.OCITypeElemFlags := GetAddress('OCITypeElemFlags');
1649  @OracleAPI.OCITypeElemNumPrec := GetAddress('OCITypeElemNumPrec');
1650  @OracleAPI.OCITypeElemNumScale:= GetAddress('OCITypeElemNumScale');
1651  @OracleAPI.OCITypeElemLength := GetAddress('OCITypeElemLength');
1652  @OracleAPI.OCITypeElemCharSetID := GetAddress('OCITypeElemCharSetID');
1653  @OracleAPI.OCITypeElemCharSetForm := GetAddress('OCITypeElemCharSetForm');
1654  @OracleAPI.OCITypeElemParameterizedType := GetAddress('OCITypeElemParameterizedType');
1655  @OracleAPI.OCITypeElemExtTypeCode := GetAddress('OCITypeElemExtTypeCode');
1656  @OracleAPI.OCITypeAttrByName := GetAddress('OCITypeAttrByName');
1657  @OracleAPI.OCITypeAttrNext := GetAddress('OCITypeAttrNext');
1658  @OracleAPI.OCITypeCollElem := GetAddress('OCITypeCollElem');
1659  @OracleAPI.OCITypeCollSize := GetAddress('OCITypeCollSize');
1660  @OracleAPI.OCITypeCollExtTypeCode := GetAddress('OCITypeCollExtTypeCode');
1661  @OracleAPI.OCITypeMethodOverload := GetAddress('OCITypeMethodOverload');
1662  @OracleAPI.OCITypeMethodByName:= GetAddress('OCITypeMethodByName');
1663  @OracleAPI.OCITypeMethodNext := GetAddress('OCITypeMethodNext');
1664  @OracleAPI.OCITypeMethodName := GetAddress('OCITypeMethodName');
1665  @OracleAPI.OCITypeMethodEncap := GetAddress('OCITypeMethodEncap');
1666  @OracleAPI.OCITypeMethodFlags := GetAddress('OCITypeMethodFlags');
1667  @OracleAPI.OCITypeMethodMap := GetAddress('OCITypeMethodMap');
1668  @OracleAPI.OCITypeMethodOrder := GetAddress('OCITypeMethodOrder');
1669  @OracleAPI.OCITypeMethodParams:= GetAddress('OCITypeMethodParams');
1670  @OracleAPI.OCITypeResult := GetAddress('OCITypeResult');
1671  @OracleAPI.OCITypeParamByPos := GetAddress('OCITypeParamByPos');
1672  @OracleAPI.OCITypeParamByName := GetAddress('OCITypeParamByName');
1673  @OracleAPI.OCITypeParamPos := GetAddress('OCITypeParamPos');
1674  @OracleAPI.OCITypeElemParamMode := GetAddress('OCITypeElemParamMode');
1675  @OracleAPI.OCITypeElemDefaultValue := GetAddress('OCITypeElemDefaultValue');
1676  @OracleAPI.OCITypeVTInit := GetAddress('OCITypeVTInit');
1677  @OracleAPI.OCITypeVTInsert := GetAddress('OCITypeVTInsert');
1678  @OracleAPI.OCITypeVTSelect := GetAddress('OCITypeVTSelect');
1679  end;
1680 end;
1681 
1682 function TZOracle9iPlainDriver.Clone: IZPlainDriver;
1683 begin
1684  Result := TZOracle9iPlainDriver.Create;
1685 end;
1686 
1687 constructor TZOracle9iPlainDriver.Create;
1688 begin
1689  inherited create;
1690  FLoader := TZNativeLibraryLoader.Create([]);
1691  {$IFNDEF UNIX}
1692  FLoader.AddLocation(WINDOWS_DLL_LOCATION);
1693  {$ELSE}
1694  FLoader.AddLocation(LINUX_DLL_LOCATION);
1695  {$ENDIF}
1696  LoadCodePages;
1697 end;
1698 
1699 function TZOracle9iPlainDriver.GetProtocol: string;
1700 begin
1701  Result := 'oracle-9i';
1702 end;
1703 
1704 function TZOracle9iPlainDriver.GetDescription: string;
1705 begin
1706  Result := 'Native Plain Driver for Oracle 9i';
1707 end;
1708 
1709 procedure TZOracle9iPlainDriver.Initialize(const Location: String);
1710 begin
1711  inherited Initialize(Location);
1712  OracleAPI.OCIInitialize(OCI_THREADED, nil, nil, nil, nil);
1713 end;
1714 
1715 function TZOracle9iPlainDriver.AttrGet(trgthndlp: POCIHandle;
1716  trghndltyp: ub4; attributep, sizep: Pointer; attrtype: ub4;
1717  errhp: POCIError): sword;
1718 begin
1719  Result := OracleAPI.OCIAttrGet(trgthndlp, trghndltyp, attributep, sizep,
1720  attrtype, errhp);
1721 end;
1722 
1723 function TZOracle9iPlainDriver.AttrSet(trgthndlp: POCIHandle;
1724  trghndltyp: ub4; attributep: Pointer; size, attrtype: ub4;
1725  errhp: POCIError): sword;
1726 begin
1727  Result := OracleAPI.OCIAttrSet(trgthndlp, trghndltyp, attributep, size,
1728  attrtype, errhp);
1729 end;
1730 
1731 function TZOracle9iPlainDriver.BindByName(stmtp: POCIStmt;
1732  var bindpp: POCIBind; errhp: POCIError; placeholder: text;
1733  placeh_len: sb4; valuep: Pointer; value_sz: sb4; dty: ub2; indp, alenp,
1734  rcodep: Pointer; maxarr_len: ub4; curelep: Pointer; mode: ub4): sword;
1735 begin
1736  Result := OracleAPI.OCIBindByName(stmtp, bindpp, errhp, placeholder,
1737  placeh_len, valuep, value_sz, dty, indp, alenp, rcodep, maxarr_len,
1738  curelep, mode);
1739 end;
1740 
1741 function TZOracle9iPlainDriver.BindByPos(stmtp: POCIStmt;
1742  var bindpp: POCIBind; errhp: POCIError; position: ub4; valuep: Pointer;
1743  value_sz: sb4; dty: ub2; indp, alenp, rcodep: Pointer; maxarr_len: ub4;
1744  curelep: Pointer; mode: ub4): sword;
1745 begin
1746  Result := OracleAPI.OCIBindByPos(stmtp, bindpp, errhp, position, valuep,
1747  value_sz, dty, indp, alenp, rcodep, maxarr_len, curelep, mode);
1748 end;
1749 
1750 function TZOracle9iPlainDriver.BindDynamic(bindp: POCIBind;
1751  errhp: POCIError; ictxp, icbfp, octxp, ocbfp: Pointer): sword;
1752 begin
1753  Result := OracleAPI.OCIBindDynamic(bindp, errhp, ictxp, icbfp, octxp,
1754  ocbfp);
1755 end;
1756 
1757 function TZOracle9iPlainDriver.BindObject(bindp: POCIBind; errhp: POCIError;
1758  const _type: POCIType; pgvpp: PPointer;
1759  pvszsp: pub4; indpp: PPointer;
1760  indszp: pub4): sword;
1761 begin
1762  Result := OracleAPI.OCIBindObject(bindp, errhp, _type, pgvpp, pvszsp, indpp,
1763  indszp);
1764 end;
1765 
1766 function TZOracle9iPlainDriver.DefineObject(defnpp: POCIDefine;
1767  errhp: POCIError; _type: POCIHandle; pgvpp,pvszsp,indpp,indszp:pointer): sword;
1768 begin
1769  Result := OracleAPI.OCIDefineObject(defnpp, errhp, _type, pgvpp, pvszsp,
1770  indpp, indszp);
1771 end;
1772 
1773 { > ori.h}
1774 function TZOracle9iPlainDriver.ObjectNew(env: POCIEnv; err: POCIError;
1775  const svc: POCISvcCtx; typecode: OCITypeCode; tdo: POCIType; table: Pointer;
1776  duration: OCIDuration; value: Longbool; instance: PPointer): sword;
1777 begin
1778  Result := OracleAPI.OCIObjectNew(env, err, svc, typecode, tdo, table,
1779  duration, value, instance);
1780 end;
1781 
1782 function TZOracle9iPlainDriver.ObjectPin(env: POCIEnv; err: POCIError;
1783  const object_ref: POCIRef; const corhdl: POCIComplexObject;
1784  const pin_option: OCIPinOpt; const pin_duration: OCIDuration;
1785  const lock_option: OCILockOpt; _object: PPointer): sword;
1786 begin
1787  Result := OracleAPI.OCIObjectPin(env, err, object_ref, corhdl,
1788  pin_option, pin_duration, lock_option, _object);
1789 end;
1790 
1791 function TZOracle9iPlainDriver.ObjectUnpin(env: POCIEnv; err: POCIError;
1792  const _object: Pointer): sword;
1793 begin
1794  Result := OracleAPI.OCIObjectUnpin(env, err, _object);
1795 end;
1796 
1797 function TZOracle9iPlainDriver.ObjectPinCountReset(env: POCIEnv; err: POCIError;
1798  const _object: pointer): sword;
1799 begin
1800  Result := OracleAPI.OCIObjectPinCountReset(env, err, _object);
1801 end;
1802 
1803 function TZOracle9iPlainDriver.ObjectLock(env: POCIEnv; err: POCIError;
1804  const _object: pointer): sword;
1805 begin
1806  Result := OracleAPI.OCIObjectLock(env, err, _object);
1807 end;
1808 
1809 function TZOracle9iPlainDriver.ObjectLockNoWait(env: POCIEnv; err: POCIError;
1810  const _object: pointer): sword;
1811 begin
1812  Result := OracleAPI.OCIObjectLockNoWait(env, err, _object);
1813 end;
1814 
1815 function TZOracle9iPlainDriver.ObjectMarkUpdate(env: POCIEnv; err: POCIError;
1816  const _object: pointer): sword;
1817 begin
1818  Result := OracleAPI.OCIObjectMarkUpdate(env, err, _object);
1819 end;
1820 
1821 function TZOracle9iPlainDriver.ObjectUnmark(env: POCIEnv; err: POCIError;
1822  const _object:pointer): sword;
1823 begin
1824  Result := OracleAPI.OCIObjectUnmark(env, err, _object);
1825 end;
1826 
1827 function TZOracle9iPlainDriver.ObjectUnmarkByRef(env: POCIEnv; err: POCIError;
1828  const ref: POCIRef): sword;
1829 begin
1830  Result := OracleAPI.OCIObjectUnmarkByRef(env, err, ref);
1831 end;
1832 
1833 function TZOracle9iPlainDriver.ObjectFree(hndl: POCIEnv; err: POCIError;
1834  instance:POCIHandle;flags :ub2):sword;
1835 begin
1836  Result := OracleAPI.OCIObjectFree(hndl, err, instance, flags);
1837 end;
1838 
1839 function TZOracle9iPlainDriver.ObjectMarkDeleteByRef(env: POCIEnv;
1840  err: POCIError; const object_ref:POCIRef): sword;
1841 begin
1842  Result := OracleAPI.OCIObjectMarkDeleteByRef(env, err, object_ref);
1843 end;
1844 
1845 function TZOracle9iPlainDriver.ObjectMarkDelete(env: POCIEnv; err: POCIError;
1846  const instance:pointer): sword;
1847 begin
1848  Result := OracleAPI.OCIObjectMarkDelete(env, err, instance);
1849 end;
1850 
1851 function TZOracle9iPlainDriver.ObjectFlush(env: POCIEnv; err: POCIError;
1852  const _object: pointer): sword;
1853 begin
1854  Result := OracleAPI.OCIObjectFlush(env, err, _object);
1855 end;
1856 
1857 function TZOracle9iPlainDriver.ObjectRefresh(env: POCIEnv; err: POCIError;
1858  _object: pointer): sword;
1859 begin
1860  Result := OracleAPI.OCIObjectRefresh(env, err, _object);
1861 end;
1862 
1863 function TZOracle9iPlainDriver.ObjectCopy(env: POCIEnv; err: POCIError;
1864  const svc: POCISvcCtx; const source, null_source, target, null_target: pointer;
1865  const tdo: POCIType; const duration: OCIDuration; const option: ub1): sword;
1866 begin
1867  Result := OracleAPI.OCIObjectCopy(env, err, svc, source, null_source, target,
1868  null_target, tdo, duration, option);
1869 end;
1870 
1871 function TZOracle9iPlainDriver.ObjectGetTypeRef(env: POCIEnv; err: POCIError;
1872  const instance:pointer; type_ref: POCIRef): sword;
1873 begin
1874  Result := OracleAPI.OCIObjectGetTypeRef(env, err, instance, type_ref);
1875 end;
1876 
1877 function TZOracle9iPlainDriver.ObjectGetObjectRef(env: POCIEnv; err: POCIError;
1878  const _object: pointer; object_ref: POCIRef): sword;
1879 begin
1880  Result := OracleAPI.OCIObjectGetObjectRef(env, err, _object, object_ref);
1881 end;
1882 
1883 function TZOracle9iPlainDriver.ObjectMakeObjectRef(env: POCIEnv; err: POCIError;
1884  const svc: POCISvcCtx; const table: pointer; const values: PPointer;
1885  const array_len: ub4; object_ref: POCIRef): sword;
1886 begin
1887  Result := OracleAPI.OCIObjectMakeObjectRef(env, err, svc, table, values,
1888  array_len, object_ref);
1889 end;
1890 
1891 function TZOracle9iPlainDriver.ObjectGetPrimaryKeyTypeRef(env: POCIEnv;
1892  err: POCIError; const svc:POCISvcCtx; const table: pointer;
1893  type_ref: POCIRef): sword;
1894 begin
1895  Result := OracleAPI.OCIObjectGetPrimaryKeyTypeRef(env, err, svc, table,
1896  type_ref);
1897 end;
1898 
1899 function TZOracle9iPlainDriver.ObjectGetInd(env: POCIEnv; err: POCIError;
1900  const instance: pointer; null_struct: PPointer): sword;
1901 begin
1902  Result := OracleAPI.OCIObjectGetInd(env, err, instance, null_struct);
1903 end;
1904 
1905 function TZOracle9iPlainDriver.ObjectExists(env: POCIEnv; err: POCIError;
1906  const ins: pointer; exist: PBoolean): sword;
1907 begin
1908  Result := OracleAPI.OCIObjectExists(env, err, ins, exist);
1909 end;
1910 
1911 function TZOracle9iPlainDriver.ObjectGetProperty(envh: POCIEnv; errh: POCIError;
1912  const obj: pointer; const propertyId: OCIObjectPropId;
1913  _property: pointer; size: Pub4): sword;
1914 begin
1915  Result := OracleAPI.OCIObjectGetProperty(envh, errh, obj, propertyId,
1916  _property, size);
1917 end;
1918 
1919 function TZOracle9iPlainDriver.ObjectIsLocked(env: POCIEnv; err: POCIError;
1920  const ins: pointer; lock: Pboolean): sword;
1921 begin
1922  Result := OracleAPI.OCIObjectIsLocked(env, err, ins, lock);
1923 end;
1924 
1925 function TZOracle9iPlainDriver.ObjectIsDirty(env: POCIEnv; err: POCIError;
1926  const ins: pointer; dirty: PBoolean): sword;
1927 begin
1928  Result := OracleAPI.OCIObjectIsDirty(env, err, ins, dirty);
1929 end;
1930 
1931 function TZOracle9iPlainDriver.ObjectPinTable(env: POCIEnv; err: POCIError;
1932  const svc:POCISvcCtx; const schema_name: Poratext; const s_n_length: ub4;
1933  const object_name: Poratext; const o_n_length:ub4;
1934  const scope_obj_ref: POCIRef; const pin_duration: OCIDuration;
1935  _object: PPointer): sword;
1936 begin
1937  Result := OracleAPI.OCIObjectPinTable(env, err, svc, schema_name, s_n_length,
1938  object_name, o_n_length, scope_obj_ref, pin_duration, _object);
1939 end;
1940 
1941 function TZOracle9iPlainDriver.ObjectArrayPin(env: POCIEnv; err: POCIError;
1942  const ref_array: PPOCIRef; const array_size: ub4;
1943  const cor_array: PPOCIComplexObject; const cor_array_size: ub4;
1944  const pin_option: OCIPinOpt; const pin_duration: OCIDuration;
1945  const lock: OCILockOpt; obj_array: PPointer;
1946  pos: Pub4): sword;
1947 begin
1948  Result := OracleAPI.OCIObjectArrayPin(env, err, ref_array, array_size,
1949  cor_array, cor_array_size, pin_option, pin_duration, lock, obj_array, pos);
1950 end;
1951 
1952 function TZOracle9iPlainDriver.CacheFlush(env: POCIEnv; err: POCIError;
1953  const svc:POCISvcCtx; const context: pointer; const get: TOCICacheFlushGet;
1954  ref: PPOCIRef): sword;
1955 begin
1956  Result := OracleAPI.OCICacheFlush(env, err, svc, context, get, ref);
1957 end;
1958 
1959 function TZOracle9iPlainDriver.CacheRefresh(env: POCIEnv; err: POCIError;
1960  const svc:POCISvcCtx; const option: OCIRefreshOpt; const context: pointer;
1961  get: TOCICacheRefreshGet; ref: PPOCIRef): sword;
1962 begin
1963  Result := OracleAPI.OCICacheRefresh(env, err, svc, option, context, get, ref);
1964 end;
1965 
1966 function TZOracle9iPlainDriver.CacheUnpin(env: POCIEnv; err: POCIError;
1967  const svc:POCISvcCtx): sword;
1968 begin
1969  Result := OracleAPI.OCICacheUnpin(env, err, svc);
1970 end;
1971 
1972 function TZOracle9iPlainDriver.CacheFree(env: POCIEnv; err: POCIError;
1973  const svc: POCISvcCtx): sword;
1974 begin
1975  Result := OracleAPI.OCICacheFree(env, err, svc);
1976 end;
1977 
1978 function TZOracle9iPlainDriver.CacheUnmark(env: POCIEnv; err: POCIError;
1979  const svc: POCISvcCtx): sword;
1980 begin
1981  Result := OracleAPI.OCICacheUnmark(env, err, svc);
1982 end;
1983 
1984 function TZOracle9iPlainDriver.DurationBegin(env: POCIEnv; err: POCIError;
1985  svc: POCISvcCtx; const parent: OCIDuration;
1986  dur: POCIDuration): sword;
1987 begin
1988  Result := OracleAPI.OCIDurationBegin(env, err, svc, parent, dur);
1989 end;
1990 
1991 function TZOracle9iPlainDriver.DurationEnd(env: POCIEnv; err: POCIError;
1992  svc: POCISvcCtx; duration: OCIDuration): sword;
1993 begin
1994  Result := OracleAPI.OCIDurationEnd(env, err, svc, duration);
1995 end;
1996 { < ori.h}
1997 
1998 function TZOracle9iPlainDriver.Break(svchp: POCISvcCtx;
1999  errhp: POCIError): sword;
2000 begin
2001  Result := OracleAPI.OCIBreak(svchp, errhp);
2002 end;
2003 
2004 function TZOracle9iPlainDriver.DefineArrayOfStruct(defnpp: POCIDefine;
2005  errhp: POCIError; pvskip, indskip, rlskip, rcskip: ub4): sword;
2006 begin
2007  Result := OracleAPI.OCIDefineArrayOfStruct(defnpp, errhp, pvskip,
2008  indskip, rlskip, rcskip);
2009 end;
2010 
2011 function TZOracle9iPlainDriver.DefineByPos(stmtp: POCIStmt;
2012  var defnpp: POCIDefine; errhp: POCIError; position: ub4; valuep: Pointer;
2013  value_sz: sb4; dty: ub2; indp, rlenp, rcodep: Pointer; mode: ub4): sword;
2014 begin
2015  Result := OracleAPI.OCIDefineByPos(stmtp, defnpp, errhp, position,
2016  valuep, value_sz, dty, indp, rlenp, rcodep, mode);
2017 end;
2018 
2019 function TZOracle9iPlainDriver.DescribeAny(svchp: POCISvcCtx;
2020  errhp: POCIError; objptr: Pointer; objnm_len: ub4; objptr_typ,
2021  info_level, objtyp: ub1; dschp: POCIDescribe): sword;
2022 begin
2023  Result := OracleAPI.OCIDescribeAny(svchp, errhp, objptr,
2024  objnm_len, objptr_typ, info_level, objtyp, dschp);
2025 end;
2026 
2027 function TZOracle9iPlainDriver.DescriptorAlloc(parenth: POCIEnv;
2028  var descpp: POCIDescriptor; htype: ub4; xtramem_sz: integer;
2029  usrmempp: Pointer): sword;
2030 begin
2031  Result := OracleAPI.OCIDescriptorAlloc(parenth, descpp, htype,
2032  xtramem_sz, usrmempp);
2033 end;
2034 
2035 function TZOracle9iPlainDriver.DescriptorFree(descp: Pointer;
2036  htype: ub4): sword;
2037 begin
2038  Result := OracleAPI.OCIDescriptorFree(descp, htype);
2039 end;
2040 
2041 function TZOracle9iPlainDriver.EnvCreate(var envhpp: POCIEnv; mode: ub4;
2042  ctxp: Pointer; malocfp: Pointer; ralocfp: Pointer; mfreefp: Pointer;
2043  xtramemsz: size_T; usrmempp: PPointer): sword;
2044 begin
2045  Result := OracleAPI.OCIEnvCreate(envhpp, mode, ctxp, malocfp, ralocfp,
2046  mfreefp, xtramemsz, usrmempp);
2047 end;
2048 
2049 function TZOracle9iPlainDriver.EnvNlsCreate(var envhpp: POCIEnv; mode: ub4;
2050  ctxp: Pointer; malocfp: Pointer; ralocfp: Pointer; mfreefp: Pointer;
2051  xtramemsz: size_T; usrmempp: PPointer; charset, ncharset: ub2): sword;
2052 begin
2053  Result := OracleAPI.OCIEnvNlsCreate(envhpp, mode, ctxp, malocfp, ralocfp,
2054  mfreefp, xtramemsz, usrmempp, charset, ncharset);
2055 end;
2056 
2057 function TZOracle9iPlainDriver.EnvInit(var envhpp: POCIEnv; mode: ub4;
2058  xtramemsz: size_T; usrmempp: PPointer): sword;
2059 begin
2060  Result := OracleAPI.OCIEnvInit(envhpp, mode, xtramemsz, usrmempp);
2061 end;
2062 
2063 function TZOracle9iPlainDriver.ErrorGet(hndlp: Pointer; recordno: ub4;
2064  sqlstate: text; var errcodep: sb4; bufp: text; bufsiz,
2065  atype: ub4): sword;
2066 begin
2067  Result := OracleAPI.OCIErrorGet(hndlp, recordno, sqlstate, errcodep,
2068  bufp, bufsiz, atype);
2069 end;
2070 
2071 function TZOracle9iPlainDriver.HandleAlloc(parenth: POCIHandle;
2072  var hndlpp: POCIHandle; atype: ub4; xtramem_sz: size_T;
2073  usrmempp: PPointer): sword;
2074 begin
2075  Result := OracleAPI.OCIHandleAlloc(parenth, hndlpp, atype, xtramem_sz,
2076  usrmempp);
2077 end;
2078 
2079 function TZOracle9iPlainDriver.HandleFree(hndlp: Pointer; atype: ub4): sword;
2080 begin
2081  Result := OracleAPI.OCIHandleFree(hndlp, atype);
2082 end;
2083 
2084 function TZOracle9iPlainDriver.Initializ(mode: ub4; ctxp, malocfp,
2085  ralocfp, mfreefp: Pointer): sword;
2086 begin
2087  Result := OracleAPI.OCIInitialize(mode, ctxp, malocfp, ralocfp, mfreefp);
2088 end;
2089 
2090 function TZOracle9iPlainDriver.LobAppend(svchp: POCISvcCtx;
2091  errhp: POCIError; dst_locp, src_locp: POCILobLocator): sword;
2092 begin
2093  Result := OracleAPI.OCILobAppend(svchp, errhp, dst_locp, src_locp);
2094 end;
2095 
2096 function TZOracle9iPlainDriver.LobAssign(svchp: POCISvcCtx; errhp: POCIError;
2097  src_locp: POCILobLocator; var dst_locpp: POCILobLocator): sword;
2098 begin
2099  Result := OracleAPI.OCILobAssign(svchp, errhp, src_locp, dst_locpp);
2100 end;
2101 
2102 function TZOracle9iPlainDriver.LobClose(svchp: POCISvcCtx;
2103  errhp: POCIError; locp: POCILobLocator): sword;
2104 begin
2105  Result := OracleAPI.OCILobClose(svchp, errhp, locp);
2106 end;
2107 
2108 function TZOracle9iPlainDriver.LobCopy(svchp: POCISvcCtx; errhp: POCIError;
2109  dst_locp, src_locp: POCILobLocator; amount, dst_offset,
2110  src_offset: ub4): sword;
2111 begin
2112  Result := OracleAPI.OCILobCopy(svchp, errhp, dst_locp, src_locp,
2113  amount, dst_offset, src_offset);
2114 end;
2115 
2116 function TZOracle9iPlainDriver.LobDisableBuffering(svchp: POCISvcCtx;
2117  errhp: POCIError; locp: POCILobLocator): sword;
2118 begin
2119  Result := OracleAPI.OCILobDisableBuffering(svchp, errhp, locp);
2120 end;
2121 
2122 function TZOracle9iPlainDriver.LobEnableBuffering(svchp: POCISvcCtx;
2123  errhp: POCIError; locp: POCILobLocator): sword;
2124 begin
2125  Result := OracleAPI.OCILobEnableBuffering(svchp, errhp, locp);
2126 end;
2127 
2128 function TZOracle9iPlainDriver.LobErase(svchp: POCISvcCtx;
2129  errhp: POCIError; locp: POCILobLocator; var amount: ub4;
2130  offset: ub4): sword;
2131 begin
2132  Result := OracleAPI.OCILobErase(svchp, errhp, locp, amount, offset);
2133 end;
2134 
2135 function TZOracle9iPlainDriver.LobFileExists(svchp: POCISvcCtx;
2136  errhp: POCIError; filep: POCILobLocator; var flag: Boolean): sword;
2137 begin
2138  Result := OracleAPI.OCILobFileExists(svchp, errhp, filep, flag);
2139 end;
2140 
2141 function TZOracle9iPlainDriver.LobFileGetName(envhp: POCIEnv;
2142  errhp: POCIError; filep: POCILobLocator; dir_alias: text;
2143  var d_length: ub2; filename: text; var f_length: ub2): sword;
2144 begin
2145  Result := OracleAPI.OCILobFileGetName(envhp, errhp, filep, dir_alias,
2146  d_length, filename, f_length);
2147 end;
2148 
2149 function TZOracle9iPlainDriver.LobFileSetName(envhp: POCIEnv;
2150  errhp: POCIError; var filep: POCILobLocator; dir_alias: text;
2151  d_length: ub2; filename: text; f_length: ub2): sword;
2152 begin
2153  Result := OracleAPI.OCILobFileSetName(envhp, errhp, filep, dir_alias,
2154  d_length, filename, f_length);
2155 end;
2156 
2157 function TZOracle9iPlainDriver.LobFlushBuffer(svchp: POCISvcCtx;
2158  errhp: POCIError; locp: POCILobLocator; flag: ub4): sword;
2159 begin
2160  Result := OracleAPI.OCILobFlushBuffer(svchp, errhp, locp, flag);
2161 end;
2162 
2163 function TZOracle9iPlainDriver.LobGetLength(svchp: POCISvcCtx;
2164  errhp: POCIError; locp: POCILobLocator; var lenp: ub4): sword;
2165 begin
2166  Result := OracleAPI.OCILobGetLength(svchp, errhp, locp, lenp);
2167 end;
2168 
2169 function TZOracle9iPlainDriver.LobIsOpen(svchp: POCISvcCtx;
2170  errhp: POCIError; locp: POCILobLocator; var flag: LongBool): sword;
2171 begin
2172  Result := OracleAPI.OCILobIsOpen(svchp, errhp, locp, flag);
2173 end;
2174 
2175 function TZOracle9iPlainDriver.LobLoadFromFile(svchp: POCISvcCtx;
2176  errhp: POCIError; dst_locp, src_locp: POCILobLocator; amount, dst_offset,
2177  src_offset: ub4): sword;
2178 begin
2179  Result := OracleAPI.OCILobLoadFromFile(svchp, errhp, dst_locp, src_locp,
2180  amount, dst_offset, src_offset);
2181 end;
2182 
2183 function TZOracle9iPlainDriver.LobLocatorIsInit(envhp: POCIEnv;
2184  errhp: POCIError; locp: POCILobLocator;
2185  var is_initialized: LongBool): sword;
2186 begin
2187  Result := OracleAPI.OCILobLocatorIsInit(envhp, errhp, locp,
2188  is_initialized);
2189 end;
2190 
2191 function TZOracle9iPlainDriver.LobOpen(svchp: POCISvcCtx; errhp: POCIError;
2192  locp: POCILobLocator; mode: ub1): sword;
2193 begin
2194  Result := OracleAPI.OCILobOpen(svchp, errhp, locp, mode);
2195 end;
2196 
2197 function TZOracle9iPlainDriver.LobRead(svchp: POCISvcCtx; errhp: POCIError;
2198  locp: POCILobLocator; var amtp: ub4; offset: ub4; bufp: Pointer;
2199  bufl: ub4; ctxp, cbfp: Pointer; csid: ub2; csfrm: ub1): sword;
2200 begin
2201  Result := OracleAPI.OCILobRead(svchp, errhp, locp, amtp, offset, bufp,
2202  bufl, ctxp, cbfp, csid, csfrm);
2203 end;
2204 
2205 function TZOracle9iPlainDriver.LobTrim(svchp: POCISvcCtx; errhp: POCIError;
2206  locp: POCILobLocator; newlen: ub4): sword;
2207 begin
2208  Result := OracleAPI.OCILobTrim(svchp, errhp, locp, newlen);
2209 end;
2210 
2211 function TZOracle9iPlainDriver.LobWrite(svchp: POCISvcCtx;
2212  errhp: POCIError; locp: POCILobLocator; var amtp: ub4; offset: ub4;
2213  bufp: Pointer; bufl: ub4; piece: ub1; ctxp, cbfp: Pointer; csid: ub2;
2214  csfrm: ub1): sword;
2215 begin
2216  Result := OracleAPI.OCILobWrite(svchp, errhp, locp, amtp, offset,
2217  bufp, bufl, piece, ctxp, cbfp, csid, csfrm);
2218 end;
2219 
2220 function TZOracle9iPlainDriver.LobCreateTemporary(svchp: POCISvcCtx;
2221  errhp: POCIError; locp: POCILobLocator; csid: ub2; csfrm, lobtype: ub1;
2222  cache: LongBool; duration: OCIDuration): sword;
2223 begin
2224  Result := OracleAPI.OCILobCreateTemporary(svchp, errhp, locp,
2225  csid, csfrm, lobtype, cache, duration);
2226 end;
2227 
2228 function TZOracle9iPlainDriver.LobFreeTemporary(svchp: POCISvcCtx;
2229  errhp: POCIError; locp: POCILobLocator): sword;
2230 begin
2231  Result := OracleAPI.OCILobFreeTemporary(svchp, errhp, locp);
2232 end;
2233 
2234 function TZOracle9iPlainDriver.LobCharSetForm ( envhp: POCIEnv; errhp: POCIError;
2235  const locp: POCILobLocator; csfrm: pub1): sword;
2236 begin
2237  Result := OracleAPI.OCILobCharSetForm(envhp, errhp, locp, csfrm);
2238 end;
2239 
2240 function TZOracle9iPlainDriver.LobCharSetId ( envhp: POCIEnv; errhp: POCIError;
2241  const locp: POCILobLocator; csid: pub2): sword;
2242 begin
2243  Result := OracleAPI.OCILobCharSetId (envhp, errhp, locp, csid);
2244 end;
2245 
2246 function TZOracle9iPlainDriver.LobIsTemporary(svchp: POCISvcCtx;
2247  errhp: POCIError; locp: POCILobLocator;
2248  var is_temporary: LongBool): sword;
2249 begin
2250  Result := OracleAPI.OCILobIsTemporary(svchp, errhp, locp, is_temporary);
2251 end;
2252 
2253 function TZOracle9iPlainDriver.ParamGet(hndlp: Pointer; htype: ub4;
2254  errhp: POCIError; var parmdpp: Pointer; pos: ub4): sword;
2255 begin
2256  Result := OracleAPI.OCIParamGet(hndlp, htype, errhp, parmdpp, pos);
2257 end;
2258 
2259 function TZOracle9iPlainDriver.PasswordChange(svchp: POCISvcCtx;
2260  errhp: POCIError; user_name: text; usernm_len: ub4; opasswd: text;
2261  opasswd_len: ub4; npasswd: text; npasswd_len: sb4; mode: ub4): sword;
2262 begin
2263  Result := OracleAPI.OCIPasswordChange(svchp, errhp, user_name,
2264  usernm_len, opasswd, opasswd_len, npasswd, npasswd_len, mode);
2265 end;
2266 
2267 function TZOracle9iPlainDriver.Reset(svchp: POCISvcCtx;
2268  errhp: POCIError): sword;
2269 begin
2270  Result := OracleAPI.OCIReset(svchp, errhp);
2271 end;
2272 
2273 function TZOracle9iPlainDriver.ResultSetToStmt(rsetdp: POCIHandle;
2274  errhp: POCIError): sword;
2275 begin
2276  Result := OracleAPI.OCIResultSetToStmt(rsetdp, errhp);
2277 end;
2278 
2279 function TZOracle9iPlainDriver.GetEnvCharsetByteWidth(hndl: POCIEnv; err: POCIError;
2280  Value: sb4): sword;
2281 begin
2282  Result := OracleAPI.OCINlsNumericInfoGet(hndl, err, @value, OCI_NLS_CHARSET_MAXBYTESZ);
2283 end;
2284 
2285 procedure TZOracle9iPlainDriver.ClientVersion(major_version, minor_version,
2286  update_num, patch_num, port_update_num: psword);
2287 begin
2288  OracleAPI.OCIClientVersion(major_version, minor_version,
2289  update_num, patch_num, port_update_num);
2290 end;
2291 
2292 function TZOracle9iPlainDriver.NumberInc(err: POCIError; number: POCINumber): sword;
2293 begin
2294  Result := OracleAPI.OCINumberInc(err, number);
2295 end;
2296 
2297 function TZOracle9iPlainDriver.NumberDec(err: POCIError; number: POCINumber): sword;
2298 begin
2299  Result := OracleAPI.OCINumberDec(err, number);
2300 end;
2301 
2302 procedure TZOracle9iPlainDriver.NumberSetZero(err: POCIError; number: POCINumber);
2303 begin
2304  OracleAPI.OCINumberSetZero(err, number);
2305 end;
2306 
2307 procedure TZOracle9iPlainDriver.NumberSetPi(err: POCIError; number: POCINumber);
2308 begin
2309  OracleAPI.OCINumberSetPi(err, number);
2310 end;
2311 
2312 function TZOracle9iPlainDriver.NumberAdd(err: POCIError; const number1: POCINumber;
2313  const number2: POCINumber; _result: POCINumber): sword;
2314 begin
2315  Result := OracleAPI.OCINumberAdd(err, number1, number2, _result);
2316 end;
2317 
2318 function TZOracle9iPlainDriver.NumberSub(err: POCIError; const number1: POCINumber;
2319  const number2: POCINumber; _result: POCINumber): sword;
2320 begin
2321  Result := OracleAPI.OCINumberSub(err, number1, number2, _result);
2322 end;
2323 
2324 function TZOracle9iPlainDriver.NumberMul(err: POCIError; const number1: POCINumber;
2325  const number2: POCINumber; _result: POCINumber): sword;
2326 begin
2327  Result := OracleAPI.OCINumberMul(err, number1, number2, _result);
2328 end;
2329 
2330 function TZOracle9iPlainDriver.NumberDiv(err: POCIError; const number1: POCINumber;
2331  const number2: POCINumber; _result: POCINumber): sword;
2332 begin
2333  Result := OracleAPI.OCINumberDiv(err, number1, number2, _result);
2334 end;
2335 
2336 function TZOracle9iPlainDriver.NumberMod(err: POCIError; const number1: POCINumber;
2337  const number2: POCINumber; _result: POCINumber): sword;
2338 begin
2339  Result := OracleAPI.OCINumberMod(err, number1, number2, _result);
2340 end;
2341 
2342 function TZOracle9iPlainDriver.NumberIntPower(err: POCIError; const number1: POCINumber;
2343  const number2: POCINumber; _result: POCINumber): sword;
2344 begin
2345  Result := OracleAPI.OCINumberIntPower(err, number1, number2, _result);
2346 end;
2347 
2348 function TZOracle9iPlainDriver.NumberShift(err: POCIError; const number: POCINumber;
2349  const nDig: sword; _result: POCINumber): sword;
2350 begin
2351  Result := OracleAPI.OCINumberShift(err, number, nDig, _result);
2352 end;
2353 
2354 function TZOracle9iPlainDriver.NumberNeg(err: POCIError; const number: POCINumber;
2355  _result: POCINumber): sword;
2356 begin
2357  Result := OracleAPI.OCINumberNeg(err, number, _result);
2358 end;
2359 
2360 function TZOracle9iPlainDriver.NumberToText(err: POCIError; const number: POCINumber;
2361  const fmt: Poratext; fmt_length: ub4; const nls_params: Poratext;
2362  nls_p_length: ub4; buf_size: pub4; buf: poratext): sword;
2363 begin
2364  Result := OracleAPI.OCINumberToText(err, number, fmt, fmt_length, nls_params,
2365  nls_p_length, buf_size, buf);
2366 end;
2367 
2368 function TZOracle9iPlainDriver.NumberFromText(err: POCIError; const str: poratext;
2369  str_length: ub4; const fmt: poratext; fmt_length: ub4;
2370  const nls_params: poratext; nls_p_length: ub4; number: POCINumber): sword;
2371 begin
2372  Result := OracleAPI.OCINumberFromText(err, str, str_length, fmt, fmt_length,
2373  nls_params, nls_p_length, number);
2374 end;
2375 
2376 function TZOracle9iPlainDriver.NumberToInt(err: POCIError; const number: POCINumber;
2377  rsl_length: uword; rsl_flag: uword; rsl: Pointer): sword;
2378 begin
2379  Result := OracleAPI.OCINumberToInt(err, number, rsl_length, rsl_flag, rsl);
2380 end;
2381 
2382 function TZOracle9iPlainDriver.NumberFromInt(err: POCIError; const inum: Pointer;
2383  inum_length: uword; inum_s_flag: uword; number: POCINumber): sword;
2384 begin
2385  Result := OracleAPI.OCINumberFromInt(err, inum, inum_length, inum_s_flag, number);
2386 end;
2387 
2388 function TZOracle9iPlainDriver.NumberToReal(err: POCIError; const number: POCINumber;
2389  rsl_length: uword; rsl: Pointer): sword;
2390 begin
2391  Result := OracleAPI.OCINumberToReal(err, number, rsl_length, rsl);
2392 end;
2393 
2394 function TZOracle9iPlainDriver.NumberToRealArray(err: POCIError; const number: PPOCINumber;
2395  elems: uword; rsl_length: uword; rsl: Pointer): sword;
2396 begin
2397  Result := OracleAPI.OCINumberToRealArray(err, number, elems, rsl_length, rsl);
2398 end;
2399 
2400 function TZOracle9iPlainDriver.NumberFromReal(err: POCIError; const rnum: Pointer;
2401  rnum_length: uword; number: POCINumber): sword;
2402 begin
2403  Result := OracleAPI.OCINumberFromReal(err, rnum, rnum_length, number);
2404 end;
2405 
2406 function TZOracle9iPlainDriver.NumberCmp(err: POCIError; const number1: POCINumber;
2407  const number2: POCINumber; _result: psword): sword;
2408 begin
2409  Result := OracleAPI.OCINumberCmp(err, number1, number2, _result);
2410 end;
2411 
2412 function TZOracle9iPlainDriver.NumberSign(err: POCIError; const number: POCINumber;
2413  _result: psword): sword;
2414 begin
2415  Result := OracleAPI.OCINumberSign(err, number, _result);
2416 end;
2417 
2418 function TZOracle9iPlainDriver.NumberIsZero(err: POCIError; const number: POCINumber;
2419  _Result: pboolean): sword;
2420 begin
2421  Result := OracleAPI.OCINumberIsZero(err, number, _result);
2422 end;
2423 
2424 function TZOracle9iPlainDriver.NumberIsInt(err: POCIError; const number: POCINumber;
2425  _result: Pboolean): sword;
2426 begin
2427  Result := OracleAPI.OCINumberIsInt(err, number, _result);
2428 end;
2429 
2430 function TZOracle9iPlainDriver.NumberAssign(err: POCIError; const from: POCINumber;
2431  _to: POCINumber): sword;
2432 begin
2433  Result := OracleAPI.OCINumberAssign(err, from, _to);
2434 end;
2435 
2436 function TZOracle9iPlainDriver.NumberAbs(err: POCIError; const number: POCINumber;
2437  _result: POCINumber): sword;
2438 begin
2439  Result := OracleAPI.OCINumberAbs(err, number, _result);
2440 end;
2441 
2442 function TZOracle9iPlainDriver.NumberCeil(err: POCIError; const number: POCINumber;
2443  _result: POCINumber): sword;
2444 begin
2445  Result := OracleAPI.OCINumberCeil(err, number, _result);
2446 end;
2447 
2448 function TZOracle9iPlainDriver.NumberFloor(err: POCIError; const number: POCINumber;
2449  _result: POCINumber): sword;
2450 begin
2451  Result := OracleAPI.OCINumberFloor(err, number, _result);
2452 end;
2453 
2454 function TZOracle9iPlainDriver.NumberSqrt(err: POCIError; const number: POCINumber;
2455  _result: POCINumber): sword;
2456 begin
2457  Result := OracleAPI.OCINumberSqrt(err, number, _result);
2458 end;
2459 
2460 function TZOracle9iPlainDriver.NumberTrunc(err: POCIError; const number: POCINumber;
2461  _result: POCINumber): sword;
2462 begin
2463  Result := OracleAPI.OCINumberTrunc(err, number, _result);
2464 end;
2465 
2466 function TZOracle9iPlainDriver.NumberPower(err: POCIError; const base: POCINumber;
2467  const number: POCINumber; _result: POCINumber): sword;
2468 begin
2469  Result := OracleAPI.OCINumberPower(err, base, number, _result);
2470 end;
2471 
2472 function TZOracle9iPlainDriver.NumberRound(err: POCIError; const number: POCINumber;
2473  decplace: sword; _result: POCINumber): sword;
2474 begin
2475  Result := OracleAPI.OCINumberRound(err, number, decplace, _result);
2476 end;
2477 
2478 function TZOracle9iPlainDriver.NumberPrec(err: POCIError; const number: POCINumber;
2479  nDigs: sword; _result: POCINumber): sword;
2480 begin
2481  Result := OracleAPI.OCINumberPrec(err, number, nDigs, _result);
2482 end;
2483 
2484 function TZOracle9iPlainDriver.NumberSin(err: POCIError; const number: POCINumber;
2485  _result: POCINumber): sword;
2486 begin
2487  Result := OracleAPI.OCINumberSin(err, number, _result);
2488 end;
2489 
2490 function TZOracle9iPlainDriver.NumberArcSin(err: POCIError; const number: POCINumber;
2491  _result: POCINumber): sword;
2492 begin
2493  Result := OracleAPI.OCINumberArcSin(err, number, _result);
2494 end;
2495 
2496 function TZOracle9iPlainDriver.NumberHypSin(err: POCIError; const number: POCINumber;
2497  _result: POCINumber): sword;
2498 begin
2499  Result := OracleAPI.OCINumberHypSin(err, number, _result);
2500 end;
2501 
2502 function TZOracle9iPlainDriver.NumberCos(err: POCIError; const number: POCINumber;
2503  _result: POCINumber): sword;
2504 begin
2505  Result := OracleAPI.OCINumberCos(err, number, _result);
2506 end;
2507 
2508 function TZOracle9iPlainDriver.NumberArcCos(err: POCIError; const number: POCINumber;
2509  _result: POCINumber): sword;
2510 begin
2511  Result := OracleAPI.OCINumberArcCos(err, number, _result);
2512 end;
2513 
2514 function TZOracle9iPlainDriver.NumberHypCos(err: POCIError; const number: POCINumber;
2515  _result: POCINumber): sword;
2516 begin
2517  Result := OracleAPI.OCINumberHypCos(err, number, _result);
2518 end;
2519 
2520 function TZOracle9iPlainDriver.NumberTan(err: POCIError; const number: POCINumber;
2521  _result: POCINumber): sword;
2522 begin
2523  Result := OracleAPI.OCINumberTan(err, number, _result);
2524 end;
2525 
2526 function TZOracle9iPlainDriver.NumberArcTan(err: POCIError; const number: POCINumber;
2527  _result: POCINumber): sword;
2528 begin
2529  Result := OracleAPI.OCINumberArcTan(err, number, _result);
2530 end;
2531 
2532 function TZOracle9iPlainDriver.NumberArcTan2(err: POCIError; const number1: POCINumber;
2533  const number2: POCINumber; _result: POCINumber): sword;
2534 begin
2535  Result := OracleAPI.OCINumberArcTan2(err, number1, number2, _result);
2536 end;
2537 
2538 function TZOracle9iPlainDriver.NumberHypTan(err: POCIError; const number: POCINumber;
2539  _result: POCINumber): sword;
2540 begin
2541  Result := OracleAPI.OCINumberHypTan(err, number, _result);
2542 end;
2543 
2544 function TZOracle9iPlainDriver.NumberExp(err: POCIError; const number: POCINumber;
2545  _result: POCINumber): sword;
2546 begin
2547  Result := OracleAPI.OCINumberExp(err, number, _result);
2548 end;
2549 
2550 function TZOracle9iPlainDriver.NumberLn(err: POCIError; const number: POCINumber;
2551  _result: POCINumber): sword;
2552 begin
2553  Result := OracleAPI.OCINumberLn(err, number, _result);
2554 end;
2555 
2556 function TZOracle9iPlainDriver.NumberLog(err: POCIError; const base: POCINumber;
2557  const number: POCINumber; _result: POCINumber): sword;
2558 begin
2559  Result := OracleAPI.OCINumberLog(err, base, number, _result);
2560 end;
2561 
2562 function TZOracle9iPlainDriver.TableSize(hndl: POCIEnv; err: POCIError;
2563  const tbl: POCITable; size: psb4): sword;
2564 begin
2565  Result := OracleAPI.OCITableSize(hndl, err, tbl, size);
2566 end;
2567 
2568 function TZOracle9iPlainDriver.TableExists(hndl: POCIEnv; err: POCIError;
2569  const tbl: POCITable; index: sb4; exists: PBoolean): sword;
2570 begin
2571  Result := OracleAPI.OCITableExists(hndl, err, tbl, index, exists);
2572 end;
2573 
2574 function TZOracle9iPlainDriver.TableDelete(hndl: POCIEnv; err: POCIError;
2575  index: sb4; tbl: POCITable): sword;
2576 begin
2577  Result := OracleAPI.OCITableDelete(hndl, err, index, tbl);
2578 end;
2579 
2580 function TZOracle9iPlainDriver.TableFirst(hndl: POCIEnv; err: POCIError;
2581  const tbl: POCITable; index: sb4): sword;
2582 begin
2583  Result := OracleAPI.OCITableFirst(hndl, err, tbl, index);
2584 end;
2585 
2586 function TZOracle9iPlainDriver.TableLast(hndl: POCIEnv; err: POCIError;
2587  const tbl: POCITable; index: sb4): sword;
2588 begin
2589  Result := OracleAPI.OCITableLast(hndl, err, tbl, index);
2590 end;
2591 
2592 function TZOracle9iPlainDriver.TableNext(hndl: POCIEnv; err: POCIError;
2593  index: sb4; const tbl: POCITable; next_index: psb4; exists: PBoolean): sword;
2594 begin
2595  Result := OracleAPI.OCITableNext(hndl, err, index, tbl, next_index, exists);
2596 end;
2597 
2598 function TZOracle9iPlainDriver.TablePrev(hndl: POCIEnv; err: POCIError;
2599  index: sb4; const tbl: POCITable; prev_index: psb4; exists: PBoolean): sword;
2600 begin
2601  Result := OracleAPI.OCITablePrev(hndl, err, index, tbl, prev_index, exists);
2602 end;
2603 
2604 function TZOracle9iPlainDriver.ObjectSetAttr(env: POCIEnv; err: POCIError;
2605  instance: Pointer; null_struct: pointer; tdo: POCIType;
2606  const names: PPAnsiChar; const lengths: pub4; const name_count: ub4;
2607  const indexes: pub4; const index_count: ub4; const null_status: POCIInd;
2608  const attr_null_struct: Pointer; const attr_value: Pointer): sword;
2609 begin
2610  Result := OracleAPI.OCIObjectSetAttr(env, err, instance, null_struct, tdo,
2611  names, lengths, name_count, indexes, index_count, null_status,
2612  attr_null_struct, attr_value);
2613 end;
2614 
2615 function TZOracle9iPlainDriver.ObjectGetAttr(env: POCIEnv; err: POCIError;
2616  instance: Pointer; null_struct: Pointer; tdo: POCIType;
2617  const names: PPoratext; const lengths: pub4; const name_count: ub4;
2618  const indexes: pub4; const index_count: ub4; attr_null_status: POCIInd;
2619  attr_null_struct, attr_value: PPointer; attr_tdo: PPOCIType): sword;
2620 begin
2621  Result := OracleAPI.OCIObjectGetAttr(env, err, instance, null_struct, tdo,
2622  names, lengths, name_count, indexes, index_count, attr_null_status,
2623  attr_null_struct, attr_value, attr_tdo);
2624 end;
2625 
2626 function TZOracle9iPlainDriver.Ping(svchp: POCISvcCtx; errhp: POCIError;
2627  mode: ub4 = OCI_DEFAULT): sword;
2628 begin
2629  Result := OracleAPI.OCIPing(svchp, errhp, mode);
2630 end;
2631 
2632 function TZOracle9iPlainDriver.ServerAttach(srvhp: POCIServer;
2633  errhp: POCIError; dblink: text; dblink_len: sb4; mode: ub4): sword;
2634 begin
2635  Result := OracleAPI.OCIServerAttach(srvhp, errhp, dblink, dblink_len,
2636  mode);
2637 end;
2638 
2639 function TZOracle9iPlainDriver.ServerDetach(srvhp: POCIServer;
2640  errhp: POCIError; mode: ub4): sword;
2641 begin
2642  Result := OracleAPI.OCIServerDetach(srvhp, errhp, mode);
2643 end;
2644 
2645 function TZOracle9iPlainDriver.ServerVersion(hndlp: POCIHandle;
2646  errhp: POCIError; bufp: text; bufsz: ub4; hndltype: ub1): sword;
2647 begin
2648  Result := OracleAPI.OCIServerVersion(hndlp, errhp, bufp, bufsz,
2649  hndltype);
2650 end;
2651 
2652 function TZOracle9iPlainDriver.ServerRelease(hndlp: POCIHandle;
2653  errhp: POCIError; bufp: text; bufsz: ub4; hndltype: ub1; version:pointer): sword;
2654 begin
2655  Result:=OCI_ERROR;
2656  if assigned(OracleAPI.OCIServerRelease) then
2657  Result := OracleAPI.OCIServerRelease(hndlp, errhp, bufp, bufsz,
2658  hndltype, version);
2659 end;
2660 
2661 function TZOracle9iPlainDriver.SessionBegin(svchp: POCISvcCtx;
2662  errhp: POCIError; usrhp: POCISession; credt, mode: ub4): sword;
2663 begin
2664  Result := OracleAPI.OCISessionBegin(svchp, errhp, usrhp, credt, mode);
2665 end;
2666 
2667 function TZOracle9iPlainDriver.SessionEnd(svchp: POCISvcCtx;
2668  errhp: POCIError; usrhp: POCISession; mode: ub4): sword;
2669 begin
2670  Result := OracleAPI.OCISessionEnd(svchp, errhp, usrhp, mode);
2671 end;
2672 
2673 function TZOracle9iPlainDriver.StmtExecute(svchp: POCISvcCtx;
2674  stmtp: POCIStmt; errhp: POCIError; iters, rowoff: ub4; snap_in,
2675  snap_out: POCISnapshot; mode: ub4): sword;
2676 begin
2677  Result := OracleAPI.OCIStmtExecute(svchp, stmtp, errhp, iters, rowoff,
2678  snap_in, snap_out, mode);
2679 end;
2680 
2681 function TZOracle9iPlainDriver.StmtFetch(stmtp: POCIStmt; errhp: POCIError;
2682  nrows: ub4; orientation: ub2; mode: ub4): sword;
2683 begin
2684  Result := OracleAPI.OCIStmtFetch(stmtp, errhp, nrows, orientation, mode);
2685 end;
2686 
2687 function TZOracle9iPlainDriver.StmtGetPieceInfo(stmtp: POCIStmt;
2688  errhp: POCIError; var hndlpp: Pointer; var typep: ub4; var in_outp: ub1;
2689  var iterp, idxp: ub4; var piecep: ub1): sword;
2690 begin
2691  Result := OracleAPI.OCIStmtGetPieceInfo(stmtp, errhp, hndlpp, typep,
2692  in_outp, iterp, idxp, piecep);
2693 end;
2694 
2695 function TZOracle9iPlainDriver.StmtPrepare(stmtp: POCIStmt;
2696  errhp: POCIError; stmt: text; stmt_len, language, mode: ub4): sword;
2697 begin
2698  Result := OracleAPI.OCIStmtPrepare(stmtp, errhp, stmt, stmt_len,
2699  language, mode);
2700 end;
2701 
2702 function TZOracle9iPlainDriver.StmtSetPieceInfo(handle: Pointer;
2703  typep: ub4; errhp: POCIError; buf: Pointer; var alenp: ub4; piece: ub1;
2704  indp: Pointer; var rcodep: ub2): sword;
2705 begin
2706  Result := OracleAPI.OCIStmtSetPieceInfo(handle, typep,
2707  errhp, buf, alenp, piece, indp, rcodep);
2708 end;
2709 
2710 function TZOracle9iPlainDriver.TransCommit(svchp: POCISvcCtx;
2711  errhp: POCIError; flags: ub4): sword;
2712 begin
2713  Result := OracleAPI.OCITransCommit(svchp, errhp, flags);
2714 end;
2715 
2716 function TZOracle9iPlainDriver.TransDetach(svchp: POCISvcCtx;
2717  errhp: POCIError; flags: ub4): sword;
2718 begin
2719  Result := OracleAPI.OCITransDetach(svchp, errhp, flags);
2720 end;
2721 
2722 function TZOracle9iPlainDriver.TransForget(svchp: POCISvcCtx;
2723  errhp: POCIError; flags: ub4): sword;
2724 begin
2725  Result := OracleAPI.OCITransForget(svchp, errhp, flags);
2726 end;
2727 
2728 function TZOracle9iPlainDriver.TransPrepare(svchp: POCISvcCtx;
2729  errhp: POCIError; flags: ub4): sword;
2730 begin
2731  Result := OracleAPI.OCITransPrepare(svchp, errhp, flags);
2732 end;
2733 
2734 function TZOracle9iPlainDriver.TransRollback(svchp: POCISvcCtx;
2735  errhp: POCIError; flags: ub4): sword;
2736 begin
2737  Result := OracleAPI.OCITransRollback(svchp, errhp, flags);
2738 end;
2739 
2740 function TZOracle9iPlainDriver.TransStart(svchp: POCISvcCtx;
2741  errhp: POCIError; timeout: word; flags: ub4): sword;
2742 begin
2743  Result := OracleAPI.OCITransStart(svchp, errhp, timeout, flags);
2744 end;
2745 
2746 function TZOracle9iPlainDriver.DateTimeAssign(hndl: POCIEnv;
2747  err: POCIError; const from: POCIDateTime; _to: POCIDateTime): sword;
2748 begin
2749  Result := OracleAPI.OCIDateTimeAssign(hndl, err, from, _to);
2750 end;
2751 
2752 function TZOracle9iPlainDriver.DateTimeCheck(hndl: POCIEnv; err: POCIError;
2753  const date: POCIDateTime; var valid: ub4): sword;
2754 begin
2755  Result := OracleAPI.OCIDateTimeCheck(hndl, err, date, valid);
2756 end;
2757 
2758 function TZOracle9iPlainDriver.DateTimeCompare(hndl: POCIEnv;
2759  err: POCIError; const date1, date2: POCIDateTime;
2760  var _result: sword): sword;
2761 begin
2762  Result := OracleAPI.OCIDateTimeCompare(hndl, err, date1, date2, _result);
2763 end;
2764 
2765 function TZOracle9iPlainDriver.DateTimeConstruct(hndl: POCIEnv;
2766  err: POCIError; datetime: POCIDateTime; year: sb2; month, day, hour, min,
2767  sec: ub1; fsec: ub4; timezone: text; timezone_length: size_t): sword;
2768 begin
2769  Result := OracleAPI.OCIDateTimeConstruct(hndl, err, datetime,
2770  year, month, day, hour, min, sec, fsec, timezone, timezone_length);
2771 end;
2772 
2773 function TZOracle9iPlainDriver.DateTimeConvert(hndl: POCIEnv;
2774  err: POCIError; indate, outdate: POCIDateTime): sword;
2775 begin
2776  Result := OracleAPI.OCIDateTimeConvert(hndl, err, indate, outdate);
2777 end;
2778 
2779 function TZOracle9iPlainDriver.DateTimeFromText(hndl: POCIEnv;
2780  err: POCIError; const date_str: text; d_str_length: size_t;
2781  const fmt: text; fmt_length: ub1; const lang_name: text;
2782  lang_length: size_t; date: POCIDateTime): sword;
2783 begin
2784  Result := OracleAPI.OCIDateTimeFromText(hndl, err,
2785  date_str, d_str_length, fmt, fmt_length, lang_name, lang_length, date);
2786 end;
2787 
2788 function TZOracle9iPlainDriver.DateTimeGetDate(hndl: POCIEnv;
2789  err: POCIError; const date: POCIDateTime; var year: sb2; var month,
2790  day: ub1): sword;
2791 begin
2792  Result := OracleAPI.OCIDateTimeGetDate(hndl, err, date, year, month, day);
2793 end;
2794 
2795 function TZOracle9iPlainDriver.DateTimeGetTime(hndl: POCIEnv;
2796  err: POCIError; datetime: POCIDateTime; var hour, minute, sec: ub1;
2797  var fsec: ub4): sword;
2798 begin
2799  Result := OracleAPI.OCIDateTimeGetTime(hndl, err, datetime,
2800  hour, minute, sec, fsec);
2801 end;
2802 
2803 function TZOracle9iPlainDriver.DateTimeGetTimeZoneName(hndl: POCIEnv;
2804  err: POCIError; datetime: POCIDateTime; var buf: ub1;
2805  var buflen: ub4): sword;
2806 begin
2807  Result := OracleAPI.OCIDateTimeGetTimeZoneName(hndl, err, datetime,
2808  buf, buflen);
2809 end;
2810 
2811 function TZOracle9iPlainDriver.DateTimeGetTimeZoneOffset(hndl: POCIEnv;
2812  err: POCIError; const datetime: POCIDateTime; var hour,
2813  minute: sb1): sword;
2814 begin
2815  Result := OracleAPI.OCIDateTimeGetTimeZoneOffset(hndl, err, datetime,
2816  hour, minute);
2817 end;
2818 
2819 function TZOracle9iPlainDriver.DateTimeSysTimeStamp(hndl: POCIEnv;
2820  err: POCIError; sys_date: POCIDateTime): sword;
2821 begin
2822  Result := OracleAPI.OCIDateTimeSysTimeStamp(hndl, err, sys_date);
2823 end;
2824 
2825 function TZOracle9iPlainDriver.DateTimeToText(hndl: POCIEnv;
2826  err: POCIError; const date: POCIDateTime; const fmt: text; fmt_length,
2827  fsprec: ub1; const lang_name: text; lang_length: size_t;
2828  var buf_size: ub4; buf: text): sword;
2829 begin
2830  Result := OracleAPI.OCIDateTimeToText(hndl, err, date, fmt, fmt_length,
2831  fsprec, lang_name, lang_length, buf_size, buf);
2832 end;
2833 
2834 {ort.h}
2835 function TZOracle9iPlainDriver.TypeIterNew(env: POCIEnv; err: POCIError;
2836  const tdo: POCIType; iterator_ort: PPOCITypeIter): sword;
2837 begin
2838  Result := OracleAPI.OCITypeIterNew(env, err, tdo, iterator_ort);
2839 end;
2840 
2841 function TZOracle9iPlainDriver.TypeIterSet(env: POCIEnv; err: POCIError;
2842  const tdo: POCIType; iterator_ort: POCITypeIter): sword;
2843 begin
2844  Result := OracleAPI.OCITypeIterSet(env, err, tdo, iterator_ort);
2845 end;
2846 
2847 function TZOracle9iPlainDriver.TypeIterFree(env: POCIEnv; err: POCIError;
2848  iterator_ort: POCITypeIter): sword;
2849 begin
2850  Result := OracleAPI.OCITypeIterFree(env, err, iterator_ort);
2851 end;
2852 
2853 function TZOracle9iPlainDriver.TypeByName(env: POCIEnv; err: POCIError;
2854  const svc: POCISvcCtx; schema_name: Poratext; const s_length: ub4;
2855  const type_name: Poratext; const t_length: ub4; version_name: Poratext;
2856  const v_length: ub4; const pin_duration: OCIDuration;
2857  const get_option: OCITypeGetOpt; tdo: PPOCIType): sword;
2858 begin
2859  Result := OracleAPI.OCITypeByName(env, err, svc, schema_name, s_length,
2860  type_name, t_length, version_name, v_length, pin_duration, get_option, tdo);
2861 end;
2862 
2863 function TZOracle9iPlainDriver.TypeArrayByName(env: POCIEnv; err: POCIError;
2864  svc: POCISvcCtx; array_len: ub4; schema_name: PPoratext; s_length: Pub4;
2865  type_name: PPoratext; t_length: Pub4; version_name: PPoratext;
2866  v_length: Pub4; pin_duration: OCIDuration; get_option: OCITypeGetOpt;
2867  tdo: PPOCIType): sword;
2868 begin
2869  Result := OracleAPI.OCITypeArrayByName(env, err, svc, array_len, schema_name,
2870  s_length, type_name, t_length, version_name, v_length, pin_duration,
2871  get_option, tdo);
2872 end;
2873 
2874 function TZOracle9iPlainDriver.TypeByRef(env: POCIEnv; err: POCIError;
2875  type_ref: POCIRef; pin_duration: OCIDuration; get_option: OCITypeGetOpt;
2876  tdo: PPOCIType): sword;
2877 begin
2878  Result := OracleAPI.OCITypeByRef(env, err, type_ref, pin_duration, get_option,
2879  tdo);
2880 end;
2881 
2882 function TZOracle9iPlainDriver.TypeArrayByRef(env: POCIEnv; err: POCIError;
2883  array_len: ub4; type_ref: PPOCIRef; pin_duration: OCIDuration;
2884  get_option: OCITypeGetOpt; tdo: PPOCIType): sword;
2885 begin
2886  Result := OracleAPI.OCITypeArrayByRef(env, err, array_len, type_ref,
2887  pin_duration, get_option, tdo);
2888 end;
2889 
2890 function TZOracle9iPlainDriver.TypeName(env: POCIEnv; err: POCIError;
2891  tdo: POCIType; n_length: Pub4): poratext;
2892 begin
2893  Result := OracleAPI.OCITypeName(env, err, tdo, n_length);
2894 end;
2895 
2896 function TZOracle9iPlainDriver.TypeSchema(env: POCIEnv; err: POCIError;
2897  const tdo: POCIType; n_length: Pub4): poratext;
2898 begin
2899  Result := OracleAPI.OCITypeSchema(env, err, tdo, n_length);
2900 end;
2901 
2902 function TZOracle9iPlainDriver.TypeTypeCode(env: POCIEnv; err: POCIError;
2903  const tdo: POCIType): OCITypeCode;
2904 begin
2905  Result := OracleAPI.OCITypeTypeCode(env, err, tdo);
2906 end;
2907 
2908 function TZOracle9iPlainDriver.TypeCollTypeCode(env: POCIEnv; err:POCIError;
2909  const tdo: POCIType): OCITypeCode;
2910 begin
2911  Result := OracleAPI.OCITypeCollTypeCode(env, err, tdo);
2912 end;
2913 
2914 function TZOracle9iPlainDriver.TypeVersion(env: POCIEnv; err: POCIError;
2915  const tdo: POCIType; v_length: Pub4): poratext;
2916 begin
2917  Result := OracleAPI.OCITypeVersion(env, err, tdo, v_length);
2918 end;
2919 
2920 function TZOracle9iPlainDriver.TypeAttrs(env: POCIEnv; err: POCIError;
2921  const tdo:POCIType): ub4;
2922 begin
2923  Result := OracleAPI.OCITypeAttrs(env, err, tdo);
2924 end;
2925 
2926 function TZOracle9iPlainDriver.TypeMethods(env: POCIEnv; err: POCIError;
2927  const tdo: POCIType): ub4;
2928 begin
2929  Result := OracleAPI.OCITypeMethods(env, err, tdo);
2930 end;
2931 
2932 function TZOracle9iPlainDriver.TypeElemName(env: POCIEnv; err: POCIError;
2933  const elem: POCITypeElem; n_length:Pub4): poratext;
2934 begin
2935  Result := OracleAPI.OCITypeElemName(env, err, elem, n_length);
2936 end;
2937 
2938 function TZOracle9iPlainDriver.TypeElemTypeCode(env: POCIEnv; err: POCIError;
2939  const elem: POCITypeElem): OCITypeCode;
2940 begin
2941  Result := OracleAPI.OCITypeElemTypeCode(env, err, elem);
2942 end;
2943 
2944 function TZOracle9iPlainDriver.TypeElemType(env: POCIEnv; err: POCIError;
2945  const elem: POCITypeElem; elem_tdo:PPOCIType): sword;
2946 begin
2947  Result := OracleAPI.OCITypeElemType(env, err, elem, elem_tdo);
2948 end;
2949 
2950 function TZOracle9iPlainDriver.TypeElemFlags(env: POCIEnv; err: POCIError;
2951  const elem: POCITypeElem): ub4;
2952 begin
2953  Result := OracleAPI.OCITypeElemFlags(env, err, elem);
2954 end;
2955 
2956 function TZOracle9iPlainDriver.TypeElemNumPrec(env: POCIEnv; err: POCIError;
2957  const elem: POCITypeElem): ub1;
2958 begin
2959  Result := OracleAPI.OCITypeElemNumPrec(env, err, elem);
2960 end;
2961 
2962 function TZOracle9iPlainDriver.TypeElemNumScale(env: POCIEnv; err: POCIError;
2963  const elem: POCITypeElem): sb1;
2964 begin
2965  Result := OracleAPI.OCITypeElemNumScale(env, err, elem);
2966 end;
2967 
2968 function TZOracle9iPlainDriver.TypeElemLength(env: POCIEnv; err: POCIError;
2969  const elem:POCITypeElem): ub4;
2970 begin
2971  Result := OracleAPI.OCITypeElemLength(env, err, elem);
2972 end;
2973 
2974 function TZOracle9iPlainDriver.TypeElemCharSetID(env: POCIEnv; err: POCIError;
2975  const elem: POCITypeElem): ub2;
2976 begin
2977  Result := OracleAPI.OCITypeElemCharSetID(env, err, elem);
2978 end;
2979 
2980 function TZOracle9iPlainDriver.TypeElemCharSetForm(env: POCIEnv; err: POCIError;
2981  const elem: POCITypeElem): ub2;
2982 begin
2983  Result := OracleAPI.OCITypeElemCharSetForm(env, err, elem);
2984 end;
2985 
2986 function TZOracle9iPlainDriver.TypeElemParameterizedType(env: POCIEnv;
2987  err: POCIError; const elem: POCITypeElem; type_stored: PPOCIType): sword;
2988 begin
2989  Result := OracleAPI.OCITypeElemParameterizedType(env, err, elem, type_stored);
2990 end;
2991 
2992 function TZOracle9iPlainDriver.TypeElemExtTypeCode(env: POCIEnv; err: POCIError;
2993  const elem: POCITypeElem): OCITypeCode;
2994 begin
2995  Result := OracleAPI.OCITypeElemExtTypeCode(env, err, elem);
2996 end;
2997 
2998 function TZOracle9iPlainDriver.TypeAttrByName(env: POCIEnv; err: POCIError;
2999  const tdo: POCIType; const name: Poratext; const n_length: ub4;
3000  elem: PPOCITypeElem): sword;
3001 begin
3002  Result := OracleAPI.OCITypeAttrByName(env, err, tdo, name, n_length, elem);
3003 end;
3004 
3005 function TZOracle9iPlainDriver.TypeAttrNext(env: POCIEnv; err: POCIError;
3006  iterator_ort: POCITypeIter; elem: PPOCITypeElem): sword;
3007 begin
3008  Result := OracleAPI.OCITypeAttrNext(env, err, iterator_ort, elem);
3009 end;
3010 
3011 function TZOracle9iPlainDriver.TypeCollElem(env: POCIEnv; err: POCIError;
3012  const tdo:POCIType; element: PPOCITypeElem): sword;
3013 begin
3014  Result := OracleAPI.OCITypeCollElem(env, err, tdo, element);
3015 end;
3016 
3017 function TZOracle9iPlainDriver.TypeCollSize(env: POCIEnv; err: POCIError;
3018  const tdo: POCIType; num_elems: Pub4): sword;
3019 begin
3020  Result := OracleAPI.OCITypeCollSize(env, err, tdo, num_elems);
3021 end;
3022 
3023 function TZOracle9iPlainDriver.TypeCollExtTypeCode(env: POCIEnv; err: POCIError;
3024  const tdo:POCIType; sqt_code: POCITypeCode): sword;
3025 begin
3026  Result := OracleAPI.OCITypeCollExtTypeCode(env, err, tdo, sqt_code);
3027 end;
3028 
3029 function TZOracle9iPlainDriver.TypeMethodOverload(env: POCIEnv; err: POCIError;
3030  const tdo: POCIType; const method_name: Poratext;
3031  const m_length: ub4): ub4;
3032 begin
3033  Result := OracleAPI.OCITypeMethodOverload(env, err, tdo, method_name,
3034  m_length);
3035 end;
3036 
3037 function TZOracle9iPlainDriver.TypeMethodByName(env: POCIEnv; err: POCIError;
3038  const tdo: POCIType; const method_name: Poratext; const m_length: ub4;
3039  mdos: PPOCITypeMethod): sword;
3040 begin
3041  Result := OracleAPI.OCITypeMethodByName(env, err, tdo, method_name, m_length,
3042  mdos);
3043 end;
3044 
3045 function TZOracle9iPlainDriver.TypeMethodNext(env: POCIEnv; err: POCIError;
3046  iterator_ort: POCITypeIter; mdo: PPOCITypeMethod): sword;
3047 begin
3048  Result := OracleAPI.OCITypeMethodNext(env, err, iterator_ort, mdo);
3049 end;
3050 
3051 function TZOracle9iPlainDriver.TypeMethodName(env:POCIEnv; err: POCIError;
3052  const mdo: POCITypeMethod; n_length: Pub4): poratext;
3053 begin
3054  Result := OracleAPI.OCITypeMethodName(env, err, mdo, n_length);
3055 end;
3056 
3057 function TZOracle9iPlainDriver.TypeMethodEncap(env: POCIEnv; err: POCIError;
3058  const mdo: POCITypeMethod): OCITypeEncap;
3059 begin
3060  Result := OracleAPI.OCITypeMethodEncap(env, err, mdo);
3061 end;
3062 
3063 function TZOracle9iPlainDriver.TypeMethodFlags(env: POCIEnv; err: POCIError;
3064  const mdo:POCITypeMethod): OCITypeMethodFlag;
3065 begin
3066  Result := OracleAPI.OCITypeMethodFlags(env, err, mdo);
3067 end;
3068 
3069 function TZOracle9iPlainDriver.TypeMethodMap(env: POCIEnv; err: POCIError;
3070  const tdo: POCIType; mdo: PPOCITypeMethod): sword;
3071 begin
3072  Result := OracleAPI.OCITypeMethodMap(env, err, tdo, mdo);
3073 end;
3074 
3075 function TZOracle9iPlainDriver.TypeMethodOrder(env: POCIEnv; err: POCIError;
3076  const tdo: POCIType; mdo: PPOCITypeMethod): sword;
3077 begin
3078  Result := OracleAPI.OCITypeMethodOrder(env, err, tdo, mdo);
3079 end;
3080 
3081 function TZOracle9iPlainDriver.TypeMethodParams(env: POCIEnv; err: POCIError;
3082  const mdo: POCITypeMethod): ub4;
3083 begin
3084  Result := OracleAPI.OCITypeMethodParams(env, err, mdo);
3085 end;
3086 
3087 function TZOracle9iPlainDriver.TypeResult(env: POCIEnv; err: POCIError;
3088  const mdo: POCITypeMethod; elem: PPOCITypeElem): sword;
3089 begin
3090  Result := OracleAPI.OCITypeResult(env, err, mdo, elem);
3091 end;
3092 
3093 function TZOracle9iPlainDriver.TypeParamByPos(env: POCIEnv; err: POCIError;
3094  const mdo: POCITypeMethod; const position: ub4;
3095  elem: PPOCITypeElem): sword;
3096 begin
3097  Result := OracleAPI.OCITypeParamByPos(env, err, mdo, position, elem);
3098 end;
3099 
3100 function TZOracle9iPlainDriver.TypeParamByName(env: POCIEnv; err: POCIError;
3101  const mdo: POCITypeMethod; const name: Poratext; const n_length: ub4;
3102  elem:PPOCITypeElem): sword;
3103 begin
3104  Result := OracleAPI.OCITypeParamByName(env, err, mdo, name, n_length, elem);
3105 end;
3106 
3107 function TZOracle9iPlainDriver.TypeParamPos(env: POCIEnv; err: POCIError;
3108  const mdo: POCITypeMethod; const name: Poratext; const n_length: ub4;
3109  position: Pub4; elem: PPOCITypeElem): sword;
3110 begin
3111  Result := OracleAPI.OCITypeParamPos(env, err, mdo, name, n_length, position,
3112  elem);
3113 end;
3114 
3115 function TZOracle9iPlainDriver.TypeElemParamMode(env: POCIEnv; err: POCIError;
3116  const elem: POCITypeElem): OCITypeParamMode;
3117 begin
3118  Result := OracleAPI.OCITypeElemParamMode(env, err, elem);
3119 end;
3120 
3121 function TZOracle9iPlainDriver.TypeElemDefaultValue(env: POCIEnv;
3122  err: POCIError; const elem: POCITypeElem; d_v_length: Pub4): poratext;
3123 begin
3124  Result := OracleAPI.OCITypeElemDefaultValue(env, err, elem, d_v_length);
3125 end;
3126 
3127 function TZOracle9iPlainDriver.TypeVTInit(env: POCIEnv; err: POCIError): sword;
3128 begin
3129  Result := OracleAPI.OCITypeVTInit(env, err);
3130 end;
3131 
3132 function TZOracle9iPlainDriver.TypeVTInsert(env: POCIEnv; err: POCIError;
3133  const schema_name: Poratext; const s_n_length: ub4;
3134  const type_name: Poratext; const t_n_length: ub4;
3135  const user_version:Poratext; const u_v_length:ub4): sword;
3136 begin
3137  Result := OracleAPI.OCITypeVTInsert(env, err, schema_name, s_n_length,
3138  type_name, t_n_length, user_version, u_v_length);
3139 end;
3140 
3141 function TZOracle9iPlainDriver.TypeVTSelect(env: POCIEnv; err: POCIError;
3142  const schema_name: Poratext; const s_n_length: ub4;
3143  const type_name: Poratext; const t_n_length: ub4; user_version: PPoratext;
3144  u_v_length: Pub4; version: Pub2): sword;
3145 begin
3146  Result := OracleAPI.OCITypeVTSelect(env, err, schema_name, s_n_length,
3147  type_name, t_n_length, user_version, u_v_length, version);
3148 end;
3149 
3150 end.
3151