OCILIB (C Driver for Oracle) 3.9.2
D:/Perso/dev/ocilib/ocilib/src/oci_api.h
00001 /*
00002     +-----------------------------------------------------------------------------------------+
00003     |                                                                                         |
00004     |                               OCILIB - C Driver for Oracle                              |
00005     |                                                                                         |
00006     |                                (C Wrapper for Oracle OCI)                               |
00007     |                                                                                         |
00008     |                              Website : http://www.ocilib.net                            |
00009     |                                                                                         |
00010     |             Copyright (c) 2007-2011 Vincent ROGIER <vince.rogier@ocilib.net>            |
00011     |                                                                                         |
00012     +-----------------------------------------------------------------------------------------+
00013     |                                                                                         |
00014     |             This library is free software; you can redistribute it and/or               |
00015     |             modify it under the terms of the GNU Lesser General Public                  |
00016     |             License as published by the Free Software Foundation; either                |
00017     |             version 2 of the License, or (at your option) any later version.            |
00018     |                                                                                         |
00019     |             This library is distributed in the hope that it will be useful,             |
00020     |             but WITHOUT ANY WARRANTY; without even the implied warranty of              |
00021     |             MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU           |
00022     |             Lesser General Public License for more details.                             |
00023     |                                                                                         |
00024     |             You should have received a copy of the GNU Lesser General Public            |
00025     |             License along with this library; if not, write to the Free                  |
00026     |             Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.          |
00027     |                                                                                         |
00028     +-----------------------------------------------------------------------------------------+
00029 
00030     +-----------------------------------------------------------------------------------------+
00031     |                                                                                         |
00032     |                                       IMPORTANT NOTICE                                  |
00033     |                                                                                         |
00034     +-----------------------------------------------------------------------------------------+
00035     |                                                                                         |
00036     |             THIS FILE CONTAINS CONSTANTS AND STRUCTURES DECLARATIONS THAT WERE          |
00037     |             PICKED UP FROM ORACLE PUBLIC HEADER FILES.                                  |
00038     |                                                                                         |
00039     |             SO THE CONTENT OF THIS FILE IS UNDER ORACLE COPYRIGHT AND THE               |
00040     |             DECLARATIONS REPRODUCED HERE ARE ORIGINALLY WRITTEN BY ORACLE               |
00041     |             CORPORATION.                                                                |
00042     |                                                                                         |
00043     |             THE AUTHOR OF OCILIB LIBRARY HAS NOT WRITTEN THE CONTENT OF THIS            |
00044     |             FILE AND HAS PARTIALLY INTEGRATED SOME ORACLE OCI DEFINITONS TO             |
00045     |             ALLOW COMPILATION OF THIS OPEN SOURCE LIBRARY WITHOUT HAVING                |
00046     |             ORACLE PRODUCTS INSTALLED ON DEVELOPMENT ENVIRONMENTS                       |
00047     |                                                                                         |
00048     +-----------------------------------------------------------------------------------------+
00049 */
00050 
00051 /* --------------------------------------------------------------------------------------------- *
00052  * $Id: oci_api.h, v 3.9.2 2011-07-13 00:00 Vincent Rogier $
00053  * --------------------------------------------------------------------------------------------- */
00054 
00055 #ifndef OCILIB_OCI_API_H_INCLUDED
00056 #define OCILIB_OCI_API_H_INCLUDED
00057 
00058 #include "oci_defs.h"
00059 
00060 /* ********************************************************************************************* *
00061  *                         PUBLIC OCI API PROTOTYPES
00062  * ********************************************************************************************* */
00063 
00064 /* API introduced in 8.0 */
00065 
00066 typedef sword (*OCIENVCREATE)
00067 (
00068     OCIEnv **envhpp,
00069     ub4 mode,
00070     void *ctxp,
00071     void    *(*malocfp)(void *ctxp, size_t size),
00072     void    *(*ralocfp)(void *ctxp, void *memptr, size_t newsize),
00073     void (*mfreefp)
00074     (
00075         void *ctxp,
00076         void *memptr
00077     ),
00078     size_t xtramem_sz,
00079     void   **usrmempp
00080 );
00081 
00082 typedef sword (*OCIHANDLEALLOC)
00083 (
00084     const void  *parenth,
00085     void       **hndlpp,
00086     const ub4    type,
00087     const size_t xtramem_sz,
00088     void       **usrmempp
00089 );
00090 
00091 typedef sword (*OCIHANDLEFREE)
00092 (
00093     void     *hndlp,
00094     const ub4 type
00095 );
00096 
00097 typedef sword (*OCIDESCRIPTORALLOC)
00098 (
00099     const void  *parenth,
00100     void       **descpp,
00101     const ub4    type,
00102     const size_t xtramem_sz,
00103     void       **usrmempp
00104 );
00105 
00106 typedef sword (*OCIDESCRIPTORFREE)
00107 (
00108     void     *descp,
00109     const ub4 type
00110 );
00111 
00112 typedef sword (*OCIENVINIT)
00113 (
00114     OCIEnv **envp,
00115     ub4      mode,
00116     size_t   xtramem_sz,
00117     void   **usrmempp
00118 );
00119 
00120 typedef sword (*OCISERVERATTACH)
00121 (
00122     OCIServer     *srvhp,
00123     OCIError      *errhp,
00124     const OraText *dblink,
00125     sb4            dblink_len,
00126     ub4            mode
00127 );
00128 
00129 typedef sword (*OCISERVERDETACH)
00130 (
00131     OCIServer *srvhp,
00132     OCIError  *errhp,
00133     ub4        mode
00134 );
00135 
00136 typedef sword (*OCISESSIONBEGIN)
00137 (
00138     OCISvcCtx  *svchp,
00139     OCIError   *errhp,
00140     OCISession *usrhp,
00141     ub4         credt,
00142     ub4         mode
00143 );
00144 
00145 typedef sword (*OCISESSIONEND)
00146 (
00147     OCISvcCtx  *svchp,
00148     OCIError   *errhp,
00149     OCISession *usrhp,
00150     ub4         mode
00151 );
00152 
00153 typedef sword (*OCIPASSWORDCHANGE)
00154 (
00155     OCISvcCtx     *svchp,
00156     OCIError      *errhp,
00157     CONST OraText *user_name,
00158     ub4            usernm_len,
00159     CONST OraText *opasswd,
00160     ub4            opasswd_len,
00161     CONST OraText *npasswd,
00162     ub4            npasswd_len,
00163     ub4            mode
00164 );
00165 
00166 typedef sword (*OCISTMTPREPARE)
00167 (
00168     OCIStmt       *stmtp,
00169     OCIError      *errhp,
00170     const OraText *stmt,
00171     ub4            stmt_len,
00172     ub4            language,
00173     ub4            mode
00174 );
00175 
00176 typedef sword (*OCIBINDBYPOS)
00177 (
00178     OCIStmt  *stmtp,
00179     OCIBind **bindp,
00180     OCIError *errhp,
00181     ub4       position,
00182     void     *valuep,
00183     sb4       value_sz,
00184     ub2       dty,
00185     void     *indp,
00186     ub2      *alenp,
00187     ub2      *rcodep,
00188     ub4       maxarr_len,
00189     ub4      *curelep,
00190     ub4       mode
00191 );
00192 
00193 typedef sword (*OCIBINDBYNAME)
00194 (
00195     OCIStmt       *stmtp,
00196     OCIBind      **bindp,
00197     OCIError      *errhp,
00198     const OraText *placeholder,
00199     sb4            placeh_len,
00200     void          *valuep,
00201     sb4            value_sz,
00202     ub2            dty,
00203     void          *indp,
00204     ub2           *alenp,
00205     ub2           *rcodep,
00206     ub4            maxarr_len,
00207     ub4           *curelep,
00208     ub4            mode
00209 );
00210 
00211 typedef sword (*OCIBINDDYNAMIC)
00212 (
00213     OCIBind     *bindp,
00214     OCIError    *errhp,
00215     dvoid       *ictxp,
00216     sb4          (*icbfp)
00217     (
00218         dvoid   *ictxp,
00219         OCIBind *bindp,
00220         ub4      iter,
00221         ub4      index,
00222         dvoid  **bufpp,
00223         ub4     *alenp,
00224         ub1     *piecep,
00225         dvoid  **indp
00226     ),
00227     dvoid       *octxp,
00228     sb4          (*ocbfp)
00229     (
00230         dvoid   *octxp,
00231         OCIBind *bindp,
00232         ub4      iter,
00233         ub4      index,
00234         dvoid  **bufpp,
00235         ub4    **alenp,
00236         ub1     *piecep,
00237         dvoid  **indp,
00238         ub2    **rcodep
00239     )
00240 );
00241 
00242 typedef sword (*OCIBINDOBJECT)
00243 (
00244     OCIBind       *bindp,
00245     OCIError      *errhp,
00246     CONST OCIType *type,
00247     dvoid        **pgvpp,
00248     ub4           *pvszsp,
00249     dvoid        **indpp,
00250     ub4           *indszp
00251 );
00252 
00253 typedef sword (*OCISTMTGETPIECEINFO)
00254 (
00255     OCIStmt  *stmtp,
00256     OCIError *errhp,
00257     void    **hndlpp,
00258     ub4      *typep,
00259     ub1      *in_outp,
00260     ub4      *iterp,
00261     ub4      *idxp,
00262     ub1      *piecep
00263 );
00264 
00265 typedef sword (*OCISTMTSETPIECEINFO)
00266 (
00267     void       *hndlp,
00268     ub4         type,
00269     OCIError   *errhp,
00270     const void *bufp,
00271     ub4        *alenp,
00272     ub1         piece,
00273     const void *indp,
00274     ub2        *rcodep
00275 );
00276 
00277 typedef sword (*OCISTMTEXECUTE)
00278 (
00279     OCISvcCtx         *svchp,
00280     OCIStmt           *stmtp,
00281     OCIError          *errhp,
00282     ub4                iters,
00283     ub4                rowoff,
00284     const OCISnapshot *snap_in,
00285     OCISnapshot       *snap_out,
00286     ub4                mode
00287 );
00288 
00289 typedef sword (*OCIDEFINEBYPOS)
00290 (
00291     OCIStmt    *stmtp,
00292     OCIDefine **defnp,
00293     OCIError   *errhp,
00294     ub4         position,
00295     void       *valuep,
00296     sb4         value_sz,
00297     ub2         dty,
00298     void       *indp,
00299     ub2        *rlenp,
00300     ub2        *rcodep,
00301     ub4         mode
00302 );
00303 
00304 typedef sword (*OCIDEFINEOBJECT)
00305 (
00306     OCIDefine     *defnp,
00307     OCIError      *errhp,
00308     CONST OCIType *type,
00309     dvoid        **pgvpp,
00310     ub4           *pvszsp,
00311     dvoid        **indpp,
00312     ub4           *indszp
00313 );
00314 
00315 typedef sword (*OCISTMTFETCH )
00316 (
00317     OCIStmt  *stmtp,
00318     OCIError *errhp,
00319     ub4       nrows,
00320     ub2       orientation,
00321     ub4       mode
00322 );
00323 
00324 typedef sword (*OCIPARAMGET)
00325 (
00326     const void *hndlp,
00327     ub4         htype,
00328     OCIError   *errhp,
00329     void      **parmdpp,
00330     ub4         pos
00331 );
00332 
00333 typedef sword (*OCIPARAMSET)
00334 (
00335     void       *hdlp,
00336     ub4         htyp,
00337     OCIError   *errhp,
00338     const void *dscp,
00339     ub4         dtyp,
00340     ub4         pos
00341 );
00342 
00343 typedef sword (*OCITRANSSTART)
00344 (
00345     OCISvcCtx *svchp,
00346     OCIError  *errhp,
00347     uword      timeout,
00348     ub4        flags
00349 );
00350 
00351 typedef sword (*OCITRANSDETACH)
00352 (
00353     OCISvcCtx *svchp,
00354     OCIError  *errhp,
00355     ub4        flags
00356 );
00357 
00358 typedef sword (*OCITRANSPREPARE)
00359 (
00360     OCISvcCtx *svchp,
00361     OCIError  *errhp,
00362     ub4        flags
00363 );
00364 
00365 typedef sword (*OCITRANSFORGET)
00366 (
00367     OCISvcCtx *svchp,
00368     OCIError  *errhp,
00369     ub4        flags
00370 );
00371 
00372 typedef sword (*OCITRANSCOMMIT)
00373 (
00374     OCISvcCtx *svchp,
00375     OCIError  *errhp,
00376     ub4        flags
00377 );
00378 
00379 typedef sword (*OCITRANSROLLBACK)
00380 (
00381     OCISvcCtx *svchp,
00382     OCIError  *errhp,
00383     ub4        flags
00384 );
00385 
00386 typedef sword (*OCIERRORGET)
00387 (
00388     void    *hndlp,
00389     ub4      recordno,
00390     OraText *sqlstate,
00391     sb4     *errcodep,
00392     OraText *bufp,
00393     ub4      bufsiz,
00394     ub4      type
00395 );
00396 
00397 typedef sword (*OCILOBCREATETEMPORARY)
00398 (
00399     OCISvcCtx     *svchp,
00400     OCIError      *errhp,
00401     OCILobLocator *locp,
00402     ub2            csid,
00403     ub1            csfrm,
00404     ub1            lobtype,
00405     boolean        cache,
00406     OCIDuration    duration
00407 );
00408 
00409 typedef sword (*OCILOBFREETEMPORARY)
00410 (
00411     OCISvcCtx     *svchp,
00412     OCIError      *errhp,
00413     OCILobLocator *locp
00414 );
00415 
00416 typedef sword (*OCILOBISTEMPORARY)
00417 (
00418     OCIEnv        *envp,
00419     OCIError      *errhp,
00420     OCILobLocator *locp,
00421     boolean       *is_temporary
00422 );
00423 
00424 typedef sword (*OCILOBAPPEND)
00425 (
00426     OCISvcCtx     *svchp,
00427     OCIError      *errhp,
00428     OCILobLocator *dst_locp,
00429     OCILobLocator *src_locp
00430 );
00431 
00432 typedef sword (*OCILOBCOPY)
00433 (
00434     OCISvcCtx     *svchp,
00435     OCIError      *errhp,
00436     OCILobLocator *dst_locp,
00437     OCILobLocator *src_locp,
00438     ub4            amount,
00439     ub4            dst_offset,
00440     ub4            src_offset
00441 );
00442 
00443 typedef sword (*OCILOBREAD)
00444 (
00445     OCISvcCtx      *svchp,
00446     OCIError       *errhp,
00447     OCILobLocator  *locp,
00448     ub4            *amtp,
00449     ub4             offset,
00450     void           *bufp,
00451     ub4             bufl,
00452     void           *ctxp,
00453     sb4             (*cbfp)
00454     (
00455         void       *ctxp,
00456         const void *bufp,
00457         ub4         len,
00458         ub1         piece
00459     ),
00460     ub2             csid,
00461     ub1             csfrm
00462 );
00463 
00464 typedef sword (*OCILOBTRIM)
00465 (
00466     OCISvcCtx     *svchp,
00467     OCIError      *errhp,
00468     OCILobLocator *locp,
00469     ub4            newlen
00470 );
00471 
00472 typedef sword (*OCILOBERASE)
00473 (
00474     OCISvcCtx     *svchp,
00475     OCIError      *errhp,
00476     OCILobLocator *locp,
00477     ub4           *amount,
00478     ub4            offset
00479 );
00480 
00481 typedef sword (*OCILOBWRITE)
00482 (
00483     OCISvcCtx     *svchp,
00484     OCIError      *errhp,
00485     OCILobLocator *locp,
00486     ub4           *amtp,
00487     ub4            offset,
00488     void          *bufp,
00489     ub4            buflen,
00490     ub1            piece,
00491     void          *ctxp,
00492     sb4            (*cbfp)
00493     (
00494         void      *ctxp,
00495         void      *bufp,
00496         ub4       *len,
00497         ub1       *piece
00498     ),
00499     ub2            csid,
00500     ub1            csfrm
00501 );
00502 
00503 typedef sword (*OCILOBGETLENGTH)
00504 (
00505     OCISvcCtx     *svchp,
00506     OCIError      *errhp,
00507     OCILobLocator *locp,
00508     ub4           *lenp
00509 );
00510 
00511 typedef sword (*OCILOBGETCHUNKSIZE)
00512 (
00513     OCISvcCtx     *svchp,
00514     OCIError      *errhp,
00515     OCILobLocator *locp,
00516     ub4           *chunksizep
00517 );
00518 
00519 typedef sword (*OCILOBOPEN)
00520 (
00521     OCISvcCtx     *svchp,
00522     OCIError      *errhp,
00523     OCILobLocator *locp,
00524     ub1            mode
00525 );
00526 
00527 typedef sword (*OCILOBCLOSE)
00528 (
00529     OCISvcCtx     *svchp,
00530     OCIError      *errhp,
00531     OCILobLocator *locp
00532 );
00533 
00534 typedef sword (*OCILOBLOCATORASSIGN)
00535 (
00536     OCISvcCtx           *svchp,
00537     OCIError            *errhp,
00538     CONST OCILobLocator *src_locp,
00539     OCILobLocator      **dst_locpp
00540 );
00541 
00542 typedef sword (*OCILOBASSIGN)
00543 (
00544     OCIEnv              *envhp,
00545     OCIError            *errhp,
00546     CONST OCILobLocator *src_locp,
00547     OCILobLocator      **dst_locpp
00548 );
00549 
00550 typedef sword (*OCILOBENABLEBUFFERING)
00551 (
00552     OCISvcCtx     *svchp,
00553     OCIError      *errhp,
00554     OCILobLocator *locp
00555 );
00556 
00557 typedef sword (*OCILOBDISABLEBUFFERING)
00558 (
00559     OCISvcCtx     *svchp,
00560     OCIError      *errhp,
00561     OCILobLocator *locp
00562 );
00563 
00564 typedef sword (*OCILOBFILEOPEN)
00565 (
00566     OCISvcCtx     *svchp,
00567     OCIError      *errhp,
00568     OCILobLocator *filep,
00569     ub1            mode
00570 );
00571 
00572 typedef sword (*OCILOBFILECLOSE)
00573 (
00574     OCISvcCtx     *svchp,
00575     OCIError      *errhp,
00576     OCILobLocator *filep
00577 );
00578 
00579 typedef sword (*OCILOBFILECLOSEALL)
00580 (
00581     OCISvcCtx *svchp,
00582     OCIError  *errhp
00583 );
00584 
00585 typedef sword (*OCILOBFILEISOPEN)
00586 (
00587     OCISvcCtx     *svchp,
00588     OCIError      *errhp,
00589     OCILobLocator *filep,
00590     boolean       *flag
00591 );
00592 
00593 typedef sword (*OCILOBFILEEXISTS)
00594 (
00595     OCISvcCtx     *svchp,
00596     OCIError      *errhp,
00597     OCILobLocator *filep,
00598     boolean       *flag
00599 );
00600 
00601 typedef sword (*OCILOBFIELGETNAME)
00602 (
00603     OCIEnv              *envhp,
00604     OCIError            *errhp,
00605     CONST OCILobLocator *filep,
00606     OraText             *dir_alias,
00607     ub2                 *d_length,
00608     OraText             *filename,
00609     ub2                 *f_length
00610 );
00611 
00612 typedef sword (*OCILOBFILESETNAME)
00613 (
00614     OCIEnv         *envhp,
00615     OCIError       *errhp,
00616     OCILobLocator **filepp,
00617     CONST OraText  *dir_alias,
00618     ub2             d_length,
00619     CONST OraText  *filename,
00620     ub2             f_length
00621 );
00622 
00623 typedef sword (*OCILOBLOADFROMFILE)
00624 (
00625     OCISvcCtx     *svchp,
00626     OCIError      *errhp,
00627     OCILobLocator *dst_locp,
00628     OCILobLocator *src_filep,
00629     ub4            amount,
00630     ub4            dst_offset,
00631     ub4            src_offset
00632 );
00633 
00634 typedef sword (*OCILOBWRITEAPPEND)
00635 (
00636     OCISvcCtx     *svchp,
00637     OCIError      *errhp,
00638     OCILobLocator *lobp,
00639     ub4           *amtp,
00640     dvoid         *bufp,
00641     ub4            bufl,
00642     ub1            piece,
00643     dvoid         *ctxp,
00644     sb4            (*cbfp)
00645     (
00646         void      *ctxp,
00647         void      *bufp,
00648         ub4       *len,
00649         ub1       *piece
00650     ),
00651     ub2            csid,
00652     ub1            csfrm
00653 );
00654 
00655 typedef sword (*OCILOBISEQUAL)
00656 (
00657     OCIEnv              *envhp,
00658     CONST OCILobLocator *x,
00659     CONST OCILobLocator *y,
00660     boolean             *is_equal
00661 );
00662 
00663 typedef sword (*OCILOBFLUSHBUFFER)
00664 (
00665     OCISvcCtx     *svchp,
00666     OCIError      *errhp,
00667     OCILobLocator *locp,
00668     ub4            flag
00669 );
00670 
00671 typedef sword (*OCISERVERVERSION)
00672 (
00673     void     *hndlp,
00674     OCIError *errhp,
00675     OraText  *bufp,
00676     ub4       bufsz,
00677     ub1       hndltype
00678 );
00679 
00680 typedef sword (*OCIBREAK)
00681 (
00682     dvoid    *hndlp,
00683     OCIError *errhp
00684 );
00685 
00686 typedef sword (*OCIATTRGET)
00687 (
00688     const void *trgthndlp,
00689     ub4         trghndltyp,
00690     void       *attributep,
00691     ub4        *sizep,
00692     ub4         attrtype,
00693     OCIError   *errhp
00694 );
00695 
00696 typedef sword (*OCIATTRSET)
00697 (
00698     void     *trgthndlp,
00699     ub4       trghndltyp,
00700     void     *attributep,
00701     ub4       size,
00702     ub4       attrtype,
00703     OCIError *errhp
00704 );
00705 
00706 typedef sword (*OCIDATEASSIGN)
00707 (
00708     OCIError      *err,
00709     CONST OCIDate *from,
00710     OCIDate       *to
00711 );
00712 
00713 typedef sword (*OCIDATETOTEXT)
00714 (
00715     OCIError      *err,
00716     CONST OCIDate *date,
00717     CONST text    *fmt,
00718     ub1            fmt_length,
00719     CONST text    *lang_name,
00720     ub4            lang_length,
00721     ub4           *buf_size,
00722     text          *buf
00723 );
00724 
00725 typedef sword (*OCIDATEFROMTEXT)
00726 (
00727     OCIError   *err,
00728     CONST text *date_str,
00729     ub4         d_str_length,
00730     CONST text *fmt,
00731     ub1         fmt_length,
00732     CONST text *lang_name,
00733     ub4         lang_length,
00734     OCIDate    *date
00735 );
00736 
00737 typedef sword (*OCIDATECOMPARE)
00738 (
00739     OCIError      *err,
00740     CONST OCIDate *date1,
00741     CONST OCIDate *date2,
00742     sword         *result
00743 );
00744 
00745 typedef sword (*OCIDATEADDMONTHS)
00746 (
00747     OCIError      *err,
00748     CONST OCIDate *date,
00749     sb4            num_months,
00750     OCIDate       *result
00751 );
00752 
00753 typedef sword (*OCIDATEADDDAYS)
00754 (
00755     OCIError      *err,
00756     CONST OCIDate *date,
00757     sb4            num_days,
00758     OCIDate       *result
00759 );
00760 
00761 typedef sword (*OCIDATELASTDAY)
00762 (
00763     OCIError      *err,
00764     CONST OCIDate *date,
00765     OCIDate       *last_day
00766 );
00767 
00768 typedef sword (*OCIDATEDAYSBETWEEN)
00769 (
00770     OCIError      *err,
00771     CONST OCIDate *date1,
00772     CONST OCIDate *date2,
00773     sb4           *num_days
00774 );
00775 
00776 typedef sword (*OCIDATEZONETOZONE)
00777 (
00778     OCIError      *err,
00779     CONST OCIDate *date1,
00780     CONST text    *zon1,
00781     ub4            zon1_length,
00782     CONST text    *zon2,
00783     ub4            zon2_length,
00784     OCIDate       *date2
00785 );
00786 
00787 typedef sword (*OCIDATENEXTDAY)
00788 (
00789     OCIError      *err,
00790     CONST OCIDate *date,
00791     CONST text    *day_p,
00792     ub4            day_length,
00793     OCIDate       *next_day
00794 );
00795 
00796 typedef sword (*OCIDATECHECK)
00797 (
00798     OCIError      *err,
00799     CONST OCIDate *date,
00800     uword         *valid
00801 );
00802 
00803 typedef sword (*OCIDATESYSDATE)
00804 (
00805     OCIError *err,
00806     OCIDate  *sys_date
00807 );
00808 
00809 typedef sword (*OCIDESCRIBEANY)
00810 (
00811     OCISvcCtx   *svchp,
00812     OCIError    *errhp,
00813     dvoid       *objptr,
00814     ub4          objnm_len,
00815     ub1          objptr_typ,
00816     ub1          info_level,
00817     ub1          objtyp,
00818     OCIDescribe *dschp
00819 );
00820 
00821 typedef sword (*OCIINTERVALASSIGN)
00822 (
00823     dvoid             *hndl,
00824     OCIError          *err,
00825     CONST OCIInterval *inpinter,
00826     OCIInterval       *outinter
00827 );
00828 
00829 typedef sword (*OCIINTERVALCHECK)
00830 (
00831     dvoid             *hndl,
00832     OCIError          *err,
00833     CONST OCIInterval *interval,
00834     ub4               *valid
00835 );
00836 
00837 typedef sword (*OCIINTERVALCOMPARE)
00838 (
00839     dvoid       *hndl,
00840     OCIError    *err,
00841     OCIInterval *inter1,
00842     OCIInterval *inter2,
00843     sword       *result
00844 );
00845 
00846 typedef sword (*OCIINTERVALTOTEXT)
00847 (
00848     dvoid             *hndl,
00849     OCIError          *err,
00850     CONST OCIInterval *interval,
00851     ub1                lfprec,
00852     ub1                fsprec,
00853     OraText           *buffer,
00854     size_t             buflen,
00855     size_t            *resultlen
00856 );
00857 
00858 typedef sword (*OCIINTERVALFROMTEXT)
00859 (
00860     dvoid         *hndl,
00861     OCIError      *err,
00862     CONST OraText *inpstring,
00863     size_t         str_len,
00864     OCIInterval   *result
00865 );
00866 
00867 typedef sword (*OCIINTERVALFROMTZ)
00868 (
00869     dvoid         *hndl,
00870     OCIError      *err,
00871     CONST oratext *inpstring,
00872     size_t         str_len,
00873     OCIInterval   *result
00874 ) ;
00875 
00876 typedef sword (*OCIINTERVALGETDAYSECOND)
00877 (
00878     dvoid             *hndl,
00879     OCIError          *err,
00880     sb4               *dy,
00881     sb4               *hr,
00882     sb4               *mm,
00883     sb4               *ss,
00884     sb4               *fsec,
00885     CONST OCIInterval *interval
00886 );
00887 
00888 typedef sword (*OCIINTERVALGETYEARMONTH)
00889 (
00890     dvoid             *hndl,
00891     OCIError          *err,
00892     sb4               *yr,
00893     sb4               *mnth,
00894     CONST OCIInterval *interval
00895 );
00896 
00897 typedef sword (*OCIINTERVALSETDAYSECOND)
00898 (
00899     dvoid       *hndl,
00900     OCIError    *err,
00901     sb4          dy,
00902     sb4          hr,
00903     sb4          mm,
00904     sb4          ss,
00905     sb4          fsec,
00906     OCIInterval *result
00907 );
00908 
00909 typedef sword (*OCIINTERVALSETYEARMONTH)
00910 (
00911     dvoid       *hndl,
00912     OCIError    *err,
00913     sb4          yr,
00914     sb4          mnth,
00915     OCIInterval *result
00916 );
00917 
00918 typedef sword (*OCIINTERVALADD)
00919 (
00920     dvoid       *hndl,
00921     OCIError    *err,
00922     OCIInterval *addend1,
00923     OCIInterval *addend2,
00924     OCIInterval *result
00925 );
00926 
00927 typedef sword (*OCIINTERVALSUBTRACT)
00928 (
00929     dvoid       *hndl,
00930     OCIError    *err,
00931     OCIInterval *minuend,
00932     OCIInterval *subtrahend,
00933     OCIInterval *result
00934 );
00935 
00936 typedef sword (*OCIDATETIMEASSIGN)
00937 (
00938     dvoid             *hndl,
00939     OCIError          *err,
00940     CONST OCIDateTime *from,
00941     OCIDateTime       *to
00942 );
00943 
00944 typedef sword (*OCIDATETIMECHECK)
00945 (
00946     dvoid             *hndl,
00947     OCIError          *err,
00948     CONST OCIDateTime *date,
00949     ub4               *valid
00950 );
00951 
00952 typedef sword (*OCIDATETIMECOMPARE)
00953 (
00954     dvoid             *hndl,
00955     OCIError          *err,
00956     CONST OCIDateTime *date1,
00957     CONST OCIDateTime *date2,
00958     sword             *result
00959 );
00960 
00961 typedef sword (*OCIDATETIMECONSTRUCT)
00962 (
00963     dvoid       *hndl,
00964     OCIError    *err,
00965     OCIDateTime *datetime,
00966     sb2          year,
00967     ub1          month,
00968     ub1          day,
00969     ub1          hour,
00970     ub1          min,
00971     ub1          sec,
00972     ub4          fsec,
00973     OraText     *timezone,
00974     size_t       timezone_length
00975 );
00976 
00977 typedef sword (*OCIDATETIMECONVERT)
00978 (
00979     dvoid       *hndl,
00980     OCIError    *err,
00981     OCIDateTime *indate,
00982     OCIDateTime *outdate
00983 );
00984 
00985 typedef sword (*OCIDATETIMEFROMARRAY)
00986 (
00987     dvoid             *hndl,
00988     OCIError          *err,
00989     CONST ub1         *inarray,
00990     ub4               *len,
00991     ub1                type,
00992     OCIDateTime       *datetime,
00993     CONST OCIInterval *reftz,
00994     ub1                fsprec
00995 );
00996 
00997 typedef sword (*OCIDATETIMETOARRAY)
00998 (
00999     dvoid             *hndl,
01000     OCIError          *err,
01001     CONST OCIDateTime *datetime,
01002     CONST OCIInterval *reftz,
01003     ub1               *outarray,
01004     ub4               *len,
01005     ub1                fsprec
01006 );
01007 
01008 typedef sword (*OCIDATETIMEFROMTEXT)
01009 (
01010     dvoid         *hndl,
01011     OCIError      *err,
01012     CONST OraText *date_str,
01013     size_t         dstr_length,
01014     CONST OraText *fmt,
01015     ub1            fmt_length,
01016     CONST OraText *lang_name,
01017     size_t         lang_length,
01018     OCIDateTime   *datetime
01019 );
01020 
01021 typedef sword (*OCIDATETIMETOTEXT)
01022 (
01023     dvoid             *hndl,
01024     OCIError          *err,
01025     CONST OCIDateTime *date,
01026     CONST OraText     *fmt,
01027     ub1                fmt_length,
01028     ub1                fsprec,
01029     CONST OraText     *lang_name,
01030     size_t             lang_length,
01031     ub4               *buf_size,
01032     OraText           *buf
01033 );
01034 
01035 typedef sword (*OCIDATETIMEGETDATE)
01036 (
01037     dvoid             *hndl,
01038     OCIError          *err,
01039     CONST OCIDateTime *datetime,
01040     sb2               *year,
01041     ub1               *month,
01042     ub1               *day
01043 );
01044 
01045 typedef sword (*OCIDATETIMEGETTIME)
01046 (
01047     dvoid       *hndl,
01048     OCIError    *err,
01049     OCIDateTime *datetime,
01050     ub1         *hour,
01051     ub1         *min,
01052     ub1         *sec,
01053     ub4         *fsec
01054 );
01055 
01056 typedef sword (*OCIDATETIMEGETTIMEZONENAME)
01057 (
01058     dvoid             *hndl,
01059     OCIError          *err,
01060     CONST OCIDateTime *datetime,
01061     ub1               *buf,
01062     ub4               *buflen
01063 );
01064 
01065 typedef sword (*OCIDATETIMEGETTIMEZONEOFFSET)
01066 (
01067     dvoid             *hndl,
01068     OCIError          *err,
01069     CONST OCIDateTime *datetime,
01070     sb1               *hour,
01071     sb1               *min
01072 );
01073 
01074 typedef sword (*OCIDATETIMEINTERVALADD)
01075 (
01076     dvoid       *hndl,
01077     OCIError    *err,
01078     OCIDateTime *datetime,
01079     OCIInterval *inter,
01080     OCIDateTime *outdatetime
01081 );
01082 
01083 typedef sword (*OCIDATETIMEINTERVALSUB)
01084 (
01085     dvoid       *hndl,
01086     OCIError    *err,
01087     OCIDateTime *datetime,
01088     OCIInterval *inter,
01089     OCIDateTime *outdatetime
01090 );
01091 
01092 typedef sword (*OCIDATETIMESUBTRACT)
01093 (
01094     dvoid       *hndl,
01095     OCIError    *err,
01096     OCIDateTime *indate1,
01097     OCIDateTime *indate2,
01098     OCIInterval *inter
01099 );
01100 
01101 typedef sword (*OCIDATETIMESYSTIMESTAMP)
01102 (
01103     dvoid       *hndl,
01104     OCIError    *err,
01105     OCIDateTime *sys_date
01106 );
01107 
01108 typedef sword (*OCITYPEBYNAME)
01109 (
01110     OCIEnv          *env,
01111     OCIError        *err,
01112     CONST OCISvcCtx *svc,
01113     CONST text      *schema_name,
01114     ub4              s_length,
01115     CONST text      *type_name,
01116     ub4              t_length,
01117     CONST text      *version_name,
01118     ub4              v_length,
01119     OCIDuration      pin_duration,
01120     OCITypeGetOpt    get_option,
01121     OCIType        **tdo
01122 );
01123 
01124 typedef sword (*OCIOBJECTNEW)
01125 (
01126     OCIEnv          *env,
01127     OCIError        *err,
01128     CONST OCISvcCtx *svc,
01129     OCITypeCode      typecode,
01130     OCIType         *tdo,
01131     dvoid           *table,
01132     OCIDuration      duration,
01133     boolean          value,
01134     dvoid          **instance
01135 );
01136 
01137 typedef sword (*OCIOBJECTFREE)
01138 (
01139     OCIEnv   *env,
01140     OCIError *err,
01141     dvoid    *instance,
01142     ub2       flags
01143 );
01144 
01145 typedef sword (*OCIOBJECTGETATTR)
01146 (
01147     OCIEnv          *env,
01148     OCIError        *err,
01149     dvoid           *instance,
01150     dvoid           *null_struct,
01151     struct OCIType  *tdo,
01152     CONST text     **names,
01153     CONST ub4       *lengths,
01154     CONST ub4        name_count,
01155     CONST ub4       *indexes,
01156     CONST ub4        index_count,
01157     OCIInd          *attr_null_status,
01158     dvoid          **attr_null_struct,
01159     dvoid          **attr_value,
01160     struct OCIType **attr_tdo
01161 );
01162 
01163 typedef sword (*OCIOBJECTSETATTR)
01164 (
01165     OCIEnv         *env,
01166     OCIError       *err,
01167     dvoid          *instance,
01168     dvoid          *null_struct,
01169     struct OCIType *tdo,
01170     CONST text    **names,
01171     CONST ub4      *lengths,
01172     CONST ub4       name_count,
01173     CONST ub4      *indexes,
01174     CONST ub4       index_count,
01175     CONST OCIInd    null_status,
01176     CONST dvoid    *attr_null_struct,
01177     CONST dvoid    *attr_value
01178 );
01179 
01180 typedef sword (*OCIOBJECTPIN)
01181 (
01182     OCIEnv           *env,
01183     OCIError         *err,
01184     OCIRef           *object_ref,
01185     OCIComplexObject *corhdl,
01186     OCIPinOpt         pin_option,
01187     OCIDuration       pin_duration,
01188     OCILockOpt        lock_option,
01189     dvoid           **object
01190 );
01191 
01192 typedef sword (*OCIOBJECTUNPIN)
01193 (
01194     OCIEnv   *env,
01195     OCIError *err,
01196     dvoid    *object
01197 );
01198 
01199 typedef sword (*OCIOBJECTCOPY)
01200 (
01201     OCIEnv          *env,
01202     OCIError        *err,
01203     CONST OCISvcCtx *svc,
01204     dvoid           *source,
01205     dvoid           *null_source,
01206     dvoid           *target,
01207     dvoid           *null_target,
01208     OCIType         *tdo,
01209     OCIDuration      duration,
01210     ub1              option
01211 );
01212 
01213 typedef sword (*OCIOBJECTGETOBJECTREF)
01214 (
01215     OCIEnv   *env,
01216     OCIError *err,
01217     dvoid    *object,
01218     OCIRef   *object_ref
01219 );
01220 
01221 typedef sword (*OCIOBJECTGETPROPERTY)
01222 (
01223     OCIEnv         *envh,
01224     OCIError       *errh,
01225     const void     *obj,
01226     OCIObjectPropId propertyId,
01227     void           *property,
01228     ub4            *size
01229 );
01230 
01231 typedef sword (*OCIOBJECTGETIND)
01232 (
01233     OCIEnv   *env,
01234     OCIError *err,
01235     dvoid    *instance,
01236     dvoid   **null_struct
01237 );
01238 
01239 typedef sword (*OCIREFASSIGN)
01240 (
01241     OCIEnv       *env,
01242     OCIError     *err,
01243     CONST OCIRef *source,
01244     OCIRef      **target
01245 );
01246 
01247 typedef boolean (*OCIREFISNULL)
01248 (
01249     OCIEnv       *env,
01250     CONST OCIRef *ref
01251 );
01252 
01253 typedef void (*OCIREFCLEAR)
01254 (
01255     OCIEnv *env,
01256     OCIRef *ref
01257 );
01258 
01259 typedef sword (*OCIREFTOHEX)
01260 (
01261     OCIEnv       *env,
01262     OCIError     *err,
01263     CONST OCIRef *ref,
01264     oratext      *hex,
01265     ub4          *hex_length
01266 );
01267 
01268 typedef ub4 (*OCIREFHEXSIZE)
01269 (
01270     OCIEnv       *env,
01271     const OCIRef *ref
01272 );
01273 
01274 typedef sword (*OCINUMBERTOINT)
01275 (
01276     OCIError        *err,
01277     CONST OCINumber *number,
01278     uword            rsl_length,
01279     uword            rsl_flag,
01280     dvoid           *rsl
01281 );
01282 
01283 typedef sword (*OCINUMBERFROMINT)
01284 (
01285     OCIError    *err,
01286     CONST dvoid *inum,
01287     uword        inum_length,
01288     uword        inum_s_flag,
01289     OCINumber   *number
01290 );
01291 
01292 typedef sword (*OCINUMBERFROMREAL)
01293 (
01294     OCIError    *err,
01295     CONST dvoid *rnum,
01296     uword        rnum_length,
01297     OCINumber   *number
01298 );
01299 
01300 typedef sword (*OCINUMBERTOREAL)
01301 (
01302     OCIError        *err,
01303     CONST OCINumber *number,
01304     uword            rsl_length,
01305     dvoid           *rsl
01306 );
01307 
01308 typedef sword (*OCINUMBERTOTEXT)
01309 (
01310     OCIError        *err,
01311     CONST OCINumber *number,
01312     CONST text      *fmt,
01313     ub4              fmt_length,
01314     CONST text      *nls_params,
01315     ub4              nls_p_length,
01316     ub4             *buf_size,
01317     text            *buf
01318 );
01319 
01320 typedef sword (*OCINUMBERFROMTEXT)
01321 (
01322     OCIError      *err,
01323     CONST oratext *str,
01324     ub4            str_length,
01325     CONST oratext *fmt,
01326     ub4            fmt_length,
01327     CONST oratext *nls_params,
01328     ub4            nls_p_length,
01329     OCINumber     *number
01330 );
01331 
01332 typedef oratext * (*OCISTRINGPTR)
01333 (
01334     OCIEnv          *env,
01335     CONST OCIString *vs
01336 );
01337 
01338 typedef sword (*OCISTRINGASSIGNTEXT)
01339 (
01340     OCIEnv        *env,
01341     OCIError      *err,
01342     CONST oratext *rhs,
01343     ub4            rhs_len,
01344     OCIString    **lhs
01345 );
01346 
01347 typedef ub1 * (*OCIRAWPTR)
01348 (
01349     OCIEnv      * env,
01350     CONST OCIRaw *raw
01351 );
01352 
01353 typedef sword (*OCIRAWASSIGNBYTES)
01354 (
01355     OCIEnv    *env,
01356     OCIError  *err,
01357     CONST ub1 *rhs,
01358     ub4        rhs_len,
01359     OCIRaw   **lhs
01360 );
01361 
01362 typedef sword (*OCIRAWRESIZE)
01363 (
01364     OCIEnv    *env, 
01365     OCIError  *err, 
01366     ub4        new_size, 
01367     OCIRaw   **raw    
01368 );
01369 
01370 typedef sword (*OCIRAWALLOCSIZE)
01371 (
01372     OCIEnv       *env,
01373     OCIError     *err,
01374     CONST OCIRaw *raw,
01375     ub4          *allocsize
01376 );
01377 
01378 typedef ub4 (*OCIRAWSIZE)
01379 (
01380     OCIEnv       *env,
01381     const OCIRaw *raw
01382 );
01383 
01384 typedef sword (*OCICONNECTIONPOOLCREATE)
01385 (
01386     OCIEnv        *envhp,
01387     OCIError      *errhp,
01388     OCICPool      *poolhp,
01389     OraText      **poolName,
01390     sb4           *poolNameLen,
01391     CONST OraText *dblink,
01392     sb4            dblinkLen,
01393     ub4            connMin,
01394     ub4            connMax,
01395     ub4            connIncr,
01396     CONST OraText *poolUserName,
01397     sb4            poolUserLen,
01398     CONST OraText *poolPassword,
01399     sb4            poolPassLen,
01400     ub4            mode
01401 );
01402 
01403 typedef sword (*OCICONNECTIONPOOLDESTROY)
01404 (
01405     OCICPool *poolhp,
01406     OCIError *errhp,
01407     ub4       mode
01408 );
01409 
01410 typedef sword (*OCISESSIONPOOLCREATE)
01411 (
01412     OCIEnv        *envhp,
01413     OCIError      *errhp,
01414     OCISPool      *spoolhp,
01415     OraText      **poolName,
01416     ub4           *poolNameLen,
01417     CONST OraText *connStr,
01418     ub4            connStrLen,
01419     ub4            sessMin,
01420     ub4            sessMax,
01421     ub4            sessIncr,
01422     OraText       *userid,
01423     ub4            useridLen,
01424     OraText       *password,
01425     ub4            passwordLen,
01426     ub4            mode
01427 );
01428 
01429 typedef sword (*OCISESSIONPOOLDESTROY)
01430 (
01431     OCISPool *spoolhp,
01432     OCIError *errhp,
01433     ub4       mode
01434 );
01435 
01436 typedef sword (*OCISESSIONGET)
01437 (
01438     OCIEnv        *envhp,
01439     OCIError      *errhp,
01440     OCISvcCtx    **svchp,
01441     OCIAuthInfo   *authhp,
01442     OraText       *poolName,
01443     ub4            poolName_len,
01444     CONST OraText *tagInfo,
01445     ub4            tagInfo_len,
01446     OraText      **retTagInfo,
01447     ub4           *retTagInfo_len,
01448     boolean       *found,
01449     ub4            mode
01450 );
01451 
01452 typedef sword (*OCISESSIONRELEASE)
01453 (
01454     OCISvcCtx *svchp,
01455     OCIError  *errhp,
01456     OraText   *tag,
01457     ub4        tag_len,
01458     ub4        mode
01459 );
01460 
01461 typedef sword (*OCICOLLSIZE)
01462 (
01463     OCIEnv        *env,
01464     OCIError      *err,
01465     CONST OCIColl *coll,
01466     sb4           *size
01467 );
01468 
01469 typedef sb4 (*OCICOLLMAX)
01470 (
01471     OCIEnv        *env,
01472     CONST OCIColl *coll
01473 );
01474 
01475 typedef sword (*OCICOLLGETITEM)
01476 (
01477     OCIEnv        *env,
01478     OCIError      *err,
01479     CONST OCIColl *coll,
01480     sb4            index,
01481     boolean       *exists,
01482     dvoid        **elem,
01483     dvoid        **elemind
01484 );
01485 
01486 typedef sword (*OCICOLLASSIGNELEM)
01487 (
01488     OCIEnv      *env,
01489     OCIError    *err,
01490     sb4          index,
01491     CONST dvoid *elem,
01492     CONST dvoid *elemind,
01493     OCIColl     *coll
01494 );
01495 
01496 typedef sword (*OCICOLLASSIGN)
01497 (
01498     OCIEnv        *env,
01499     OCIError      *err,
01500     CONST OCIColl *rhs,
01501     OCIColl       *lhs
01502 );
01503 
01504 typedef sword (*OCICOLLAPPEND)
01505 (
01506     OCIEnv      *env,
01507     OCIError    *err,
01508     CONST dvoid *elem,
01509     CONST dvoid *elemind,
01510     OCIColl     *coll
01511 );
01512 
01513 typedef sword (*OCICOLLTRIM)
01514 (
01515     OCIEnv   *env,
01516     OCIError *err,
01517     sb4       trim_num,
01518     OCIColl  *coll
01519 );
01520 
01521 typedef sword (*OCIITERCREATE)
01522 (
01523     OCIEnv        *env,
01524     OCIError      *err,
01525     CONST OCIColl *coll,
01526     OCIIter      **itr
01527 );
01528 
01529 typedef sword (*OCIITERDELETE)
01530 (
01531     OCIEnv   *env,
01532     OCIError *err,
01533     OCIIter **itr
01534 );
01535 
01536 typedef sword (*OCIITERINIT)
01537 (
01538     OCIEnv        *env,
01539     OCIError      *err,
01540     CONST OCIColl *coll,
01541     OCIIter       *itr
01542 );
01543 
01544 typedef sword (*OCIITERNEXT)
01545 (
01546     OCIEnv   *env,
01547     OCIError *err,
01548     OCIIter  *itr,
01549     void    **elem,
01550     dvoid   **elemind,
01551     boolean  *eoc
01552 );
01553 
01554 typedef sword (*OCIITERPREV)
01555 (
01556     OCIEnv   *env,
01557     OCIError *err,
01558     OCIIter  *itr,
01559     dvoid   **elem,
01560     dvoid   **elemind,
01561     boolean  *boc
01562 );
01563 
01564 typedef sword (*OCIAQENQ)
01565 (
01566     OCISvcCtx          *svchp,
01567     OCIError           *errhp,
01568     OraText            *queue_name,
01569     OCIAQEnqOptions    *enqopt,
01570     OCIAQMsgProperties *msgprop,
01571     OCIType            *payload_tdo,
01572     dvoid             **payload,
01573     dvoid             **payload_ind,
01574     OCIRaw            **msgid,
01575     ub4                 flags
01576 );
01577 
01578 typedef sword (*OCIAQDEQ)
01579 (
01580     OCISvcCtx          *svchp,
01581     OCIError           *errhp,
01582     OraText            *queue_name,
01583     OCIAQDeqOptions    *deqopt,
01584     OCIAQMsgProperties *msgprop,
01585     OCIType            *payload_tdo,
01586     dvoid             **payload,
01587     dvoid             **payload_ind,
01588     OCIRaw            **msgid,
01589     ub4                 flags
01590 );
01591 
01592 typedef sword (*OCIAQLISTEN)
01593 (
01594     OCISvcCtx   *svchp,
01595     OCIError    *errhp,
01596     OCIAQAgent **agent_list,
01597     ub4          num_agents,
01598     sb4          wait,
01599     OCIAQAgent **agent,
01600     ub4          flags
01601 );
01602 
01603 typedef OCISvcCtx * (*XAOSVCCTX)
01604 (
01605     OraText *dbname
01606 );
01607 
01608 typedef OCIEnv * (*XAOENV)
01609 (
01610     OraText *dbname
01611 );
01612 
01613 /* API introduced in 8.1 */
01614 
01615 typedef void (*OCITHREADPROCESSINIT)
01616 (
01617     void
01618 );
01619 
01620 typedef sword (*OCITHREADINIT)
01621 (
01622     dvoid    *hndl,
01623     OCIError *err
01624 );
01625 
01626 typedef sword (*OCITHREADTERM)
01627 (
01628     dvoid    *hndl,
01629     OCIError *err
01630 );
01631 
01632 typedef sword (*OCITHREADIDINIT)
01633 (
01634     dvoid        *hndl,
01635     OCIError     *err,
01636     OCIThreadId **tid
01637 );
01638 
01639 typedef sword (*OCITHREADIDDESTROY)
01640 (
01641     dvoid        *hndl,
01642     OCIError     *err,
01643     OCIThreadId **tid
01644 );
01645 
01646 typedef sword (*OCITHREADHNDINIT)
01647 (
01648     dvoid            *hndl,
01649     OCIError         *err,
01650     OCIThreadHandle **thnd
01651 );
01652 
01653 typedef sword (*OCITHREADHNDDESTROY)
01654 (
01655     dvoid            *hndl,
01656     OCIError         *err,
01657     OCIThreadHandle **thnd
01658 );
01659 
01660 typedef sword (*OCITHREADCREATE)
01661 (
01662     dvoid           *hndl,
01663     OCIError        *err,
01664     void             (*start)
01665     (
01666         dvoid *
01667     ),
01668     dvoid           *arg,
01669     OCIThreadId     *tid,
01670     OCIThreadHandle *tHnd
01671 );
01672 
01673 typedef sword (*OCITHREADJOIN)
01674 (
01675     dvoid           *hndl,
01676     OCIError        *err,
01677     OCIThreadHandle *tHnd
01678 );
01679 
01680 typedef sword (*OCITHREADCLOSE)
01681 (
01682     dvoid           *hndl,
01683     OCIError        *err,
01684     OCIThreadHandle *tHnd
01685 );
01686 
01687 typedef sword (*OCITHREADMUTEXINIT)
01688 (
01689     dvoid           *hndl,
01690     OCIError        *err,
01691     OCIThreadMutex **mutex
01692 );
01693 
01694 typedef sword (*OCITHREADMUTEXDESTROY)
01695 (
01696     dvoid           *hndl,
01697     OCIError        *err,
01698     OCIThreadMutex **mutex
01699 );
01700 
01701 typedef sword (*OCITHREADMUTEXACQUIRE)
01702 (
01703     dvoid          *hndl,
01704     OCIError       *err,
01705     OCIThreadMutex *mutex
01706 );
01707 
01708 typedef sword (*OCITHREADMUTEXRELEASE)
01709 (
01710     dvoid          *hndl,
01711     OCIError       *err,
01712     OCIThreadMutex *mutex
01713 );
01714 
01715 typedef sword (*OCITHREADKEYINIT)
01716 (
01717     dvoid         *hndl,
01718     OCIError      *err,
01719     OCIThreadKey **key,
01720     void           (*destFn)
01721     (
01722         void *
01723     )
01724 );
01725 
01726 typedef sword (*OCITHREADKEYDESTROY)
01727 (
01728     dvoid         *hndl,
01729     OCIError      *err,
01730     OCIThreadKey **key
01731 );
01732 
01733 typedef sword (*OCITHREADKEYSET)
01734 (
01735     dvoid        *hndl,
01736     OCIError     *err,
01737     OCIThreadKey *key,
01738     dvoid       **pValue
01739 );
01740 
01741 typedef sword (*OCITHREADKEYGET)
01742 (
01743     dvoid        *hndl,
01744     OCIError     *err,
01745     OCIThreadKey *key,
01746     dvoid        *value
01747 );
01748 
01749 typedef sword (*OCIDIRPATHABORT)
01750 (
01751     OCIDirPathCtx *dpctx,
01752     OCIError      *errhp
01753 );
01754 
01755 typedef sword (*OCIDIRPATHDATASAVE)
01756 (
01757     OCIDirPathCtx *dpctx,
01758     OCIError      *errhp,
01759     ub4            action
01760 );
01761 
01762 typedef sword (*OCIDIRPATHFINISH)
01763 (
01764     OCIDirPathCtx *dpctx,
01765     OCIError      *errhp
01766 );
01767 
01768 typedef sword (*OCIDIRPATHPREPARE)
01769 (
01770     OCIDirPathCtx *dpctx,
01771     OCISvcCtx     *svchp,
01772     OCIError      *errhp
01773 );
01774 
01775 typedef sword (*OCIDIRPATHLOADSTREAM)
01776 (
01777     OCIDirPathCtx    *dpctx,
01778     OCIDirPathStream *dpstr,
01779     OCIError         *errhp
01780 );
01781 
01782 typedef sword (*OCIDIRPATHCOLARRAYENTRYSET)
01783 (
01784     OCIDirPathColArray *dpca,
01785     OCIError           *errhp,
01786     ub4                 rownum,
01787     ub2                 colIdx,
01788     ub1                *cvalp,
01789     ub4                 clen,
01790     ub1                 cflg
01791 );
01792 
01793 typedef sword (*OCIDIRPATHCOLARRAYRESET)
01794 (
01795     OCIDirPathColArray *dpca,
01796     OCIError           *errhp
01797 );
01798 
01799 typedef sword (*OCIDIRPATHCOLARRAYTOSTREAM)
01800 (
01801     OCIDirPathColArray *dpca,
01802     OCIDirPathCtx      *dpctx,
01803     OCIDirPathStream   *dpstr,
01804     OCIError           *errhp,
01805     ub4                 rowcnt,
01806     ub4                 rowoff
01807 );
01808 
01809 typedef sword (*OCIDIRPATHSTREAMRESET)
01810 (
01811     OCIDirPathStream *dpstr,
01812     OCIError         *errhp
01813 );
01814 
01815 typedef sword (*OCIDIRPATHFLUSHROW)
01816 (
01817     OCIDirPathCtx *dpctx,
01818     OCIError      *errhp
01819 );
01820 
01821 typedef sword (*OCICACHEFREE)
01822 (
01823     OCIEnv          *env,
01824     OCIError        *err,
01825     CONST OCISvcCtx *svc
01826 );
01827 
01828 typedef sword (*OCISUBSCRIPTIONREGISTER)
01829 (
01830     OCISvcCtx        *svchp,
01831     OCISubscription **subscrhpp,
01832     ub2               count,
01833     OCIError         *errhp,
01834     ub4               mode
01835 );
01836 
01837 typedef sword (*OCISUBSCRIPTIONUNREGISTER)
01838 (
01839     OCISvcCtx       *svchp,
01840     OCISubscription *subscrhp,
01841     OCIError        *errhp,
01842     ub4              mode
01843 );
01844 
01845 /* API introduced in 9.1 */
01846 
01847 typedef sword (*OCISTMTFETCH2 )
01848 (
01849     OCIStmt  *stmtp,
01850     OCIError *errhp,
01851     ub4       nrows,
01852     ub2       orientation,
01853     sb4       fetchOffset,
01854     ub4       mode
01855 );
01856 
01857 /* API introduced in 9.2 */
01858 
01859 typedef sword (*OCISTMTPREPARE2)
01860 (
01861     OCISvcCtx     *svchp,
01862     OCIStmt      **stmtp,
01863     OCIError      *errhp,
01864     CONST OraText *stmt,
01865     ub4            stmt_len,
01866     CONST OraText *key,
01867     ub4            key_len,
01868     ub4            language,
01869     ub4            mode
01870 );
01871 
01872 typedef sword (*OCISTMTRELEASE)
01873 (
01874     OCIStmt       *stmtp,
01875     OCIError      *errhp,
01876     CONST OraText *key,
01877     ub4            key_len,
01878     ub4            mode
01879 );
01880 
01881 /* API introduced in 10.1 */
01882 
01883 #ifdef ORAXB8_DEFINED
01884 
01885 typedef sword (*OCILOBGETSTORAGELIMIT)
01886 (
01887     OCISvcCtx     *svchp,
01888     OCIError      *errhp,
01889     OCILobLocator *lobp,
01890     oraub8        *limitp
01891 );
01892 
01893 typedef sword (*OCILOBCOPY2)
01894 (
01895     OCISvcCtx     *svchp,
01896     OCIError      *errhp,
01897     OCILobLocator *dst_locp,
01898     OCILobLocator *src_locp,
01899     oraub8         amount,
01900     oraub8         dst_offset,
01901     oraub8         src_offset
01902 );
01903 
01904 typedef sword (*OCILOBERASE2)
01905 (
01906     OCISvcCtx     *svchp,
01907     OCIError      *errhp,
01908     OCILobLocator *locp,
01909     oraub8        *amount,
01910     oraub8         offset
01911 );
01912 
01913 typedef sword (*OCILOBGETLENGTH2)
01914 (
01915     OCISvcCtx     *svchp,
01916     OCIError      *errhp,
01917     OCILobLocator *locp,
01918     oraub8        *lenp
01919 );
01920 
01921 typedef sword (*OCILOBLOADFROMFILE2)
01922 (
01923     OCISvcCtx     *svchp,
01924     OCIError      *errhp,
01925     OCILobLocator *dst_locp,
01926     OCILobLocator *src_filep,
01927     oraub8         amount,
01928     oraub8         dst_offset,
01929     oraub8         src_offset
01930 );
01931 
01932 typedef sword (*OCILOBREAD2)
01933 (
01934     OCISvcCtx       *svchp,
01935     OCIError        *errhp,
01936     OCILobLocator   *locp,
01937     oraub8          *byte_amtp,
01938     oraub8          *char_amtp,
01939     oraub8           offset,
01940     dvoid           *bufp,
01941     oraub8           bufl,
01942     ub1              piece,
01943     dvoid           *ctxp,
01944     sb4              (*cbfp)
01945     (
01946         dvoid       *ctxp,
01947         CONST dvoid *bufp,
01948         oraub8       len,
01949         ub1          piece,
01950         dvoid      **changed_bufpp,
01951         oraub8      *changed_lenp
01952     ),
01953     ub2              csid,
01954     ub1              csfrm
01955 );
01956 
01957 typedef sword (*OCILOBTRIM2)
01958 (
01959     OCISvcCtx     *svchp,
01960     OCIError      *errhp,
01961     OCILobLocator *locp,
01962     oraub8         newlen
01963 );
01964 
01965 typedef sword (*OCILOBWRITE2)
01966 (
01967     OCISvcCtx       *svchp,
01968     OCIError        *errhp,
01969     OCILobLocator   *locp,
01970     oraub8          *byte_amtp,
01971     oraub8          *char_amtp,
01972     oraub8           offset,
01973     dvoid           *bufp,
01974     oraub8           buflen,
01975     ub1              piece,
01976     dvoid           *ctxp,
01977     sb4              (*cbfp)
01978     (
01979         dvoid       *ctxp,
01980         CONST dvoid *bufp,
01981         oraub8       len,
01982         ub1          piece,
01983         dvoid      **changed_bufpp,
01984         oraub8      *changed_lenp
01985     ),
01986     ub2              csid,
01987     ub1              csfrm
01988 );
01989 
01990 typedef sword (*OCILOBWRITEAPPEND2)
01991 (
01992     OCISvcCtx     *svchp,
01993     OCIError      *errhp,
01994     OCILobLocator *lobp,
01995     oraub8        *byte_amtp,
01996     oraub8        *char_amtp,
01997     dvoid         *bufp,
01998     oraub8         bufl,
01999     ub1            piece,
02000     dvoid         *ctxp,
02001     sb4            (*cbfp)
02002     (
02003         dvoid     *ctxp,
02004         dvoid     *bufp,
02005         oraub8    *lenp,
02006         ub1       *piece,
02007         dvoid    **changed_bufpp,
02008         oraub8    *changed_lenp
02009     ),
02010     ub2            csid,
02011     ub1            csfrm
02012 );
02013 
02014 #endif /* ORAXB8_DEFINED */
02015 
02016 /* API introduced in 10.2 */
02017 
02018 /* Oracle 10g test */
02019 
02020 typedef void (*OCICLIENTVERSION)
02021 (
02022     sword *major_version,
02023     sword *minor_version,
02024     sword *update_num,
02025     sword *patch_num,
02026     sword *port_update_num
02027 );
02028 
02029 typedef sword (*OCIDBSTARTUP)
02030 (
02031     OCISvcCtx *svchp,
02032     OCIError  *errhp,
02033     OCIAdmin  *admhp,
02034     ub4        mode,
02035     ub4        flags
02036 );
02037 
02038 typedef sword (*OCIDBSHUTDOWN)
02039 (
02040     OCISvcCtx *svchp,
02041     OCIError  *errhp,
02042     OCIAdmin  *admhp,
02043     ub4        mode
02044 );
02045 
02046 typedef sword (*OCIPING)
02047 (
02048     OCISvcCtx *svchp,
02049     OCIError  *errhp,
02050     ub4        mode
02051 );
02052 
02053 /* API introduced in 11.1 */
02054 
02055 typedef sword (*OCIARRAYDESCRIPTORALLOC)
02056 (
02057     const void  *parenth,
02058     void       **descpp,
02059     const ub4    type,
02060     ub4          array_size,
02061     const size_t xtramem_sz,
02062     void       **usrmempp
02063 );
02064 
02065 typedef sword (*OCIARRAYDESCRIPTORFREE)
02066 (
02067     void    **descp,
02068     const ub4 type
02069 );
02070 
02071 /* API introduced in 11.2 */
02072 
02073 #endif /* OCILIB_OCI_API_H_INCLUDED */
02074