新增sql连接,目前支持mysql、sqlite、oracle连接以及相关数据库操作
This commit is contained in:
@@ -0,0 +1,252 @@
|
||||
/* Copyright (c) 2003, 2021, Oracle and/or its affiliates. */
|
||||
/* All rights reserved.*/
|
||||
|
||||
/*
|
||||
NAME
|
||||
ocixmldb.h - XDB public functions
|
||||
|
||||
DESCRIPTION
|
||||
This file contains XDB specific public functions required for DOM C-API.
|
||||
|
||||
RELATED DOCUMENTS
|
||||
|
||||
|
||||
EXPORT FUNCTION(S)
|
||||
struct xmlctx *OCIXmlDbInitXmlCtx(OCIEnv *, OCISvcCtx *, OCIError *,
|
||||
ocixmldbparam *params, int num_params);
|
||||
|
||||
void OCIXmlDbFreeXmlCtx(struct xmlctx *xctx);
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
EXAMPLES
|
||||
|
||||
NOTES
|
||||
|
||||
MODIFIED (MM/DD/YY)
|
||||
yinlu 05/25/21 - bug 32925936: add OCIXmlDbGetJSONDiffAll
|
||||
stirmizi 06/05/14 - OCI properties for client side binary XML processing
|
||||
alejgarc 05/29/14 - 18857660 - added OCIXmlGetDiffBndVersion.
|
||||
tojhuan 07/10/13 - Update OCIXmlDr_DEF revision
|
||||
tojhuan 06/05/13 - 16318092: add csform and csid to OCIXmlDiffBnd
|
||||
tojhuan 12/17/12 - fwd merge 15980280 expose table alias parameters of
|
||||
qmudxRewriteXMLDiffRaw for OCIXmlDbRewriteXMLDiff
|
||||
srirkris 06/15/11 - Add OCIXmlDr_DEF
|
||||
srirkris 03/01/11 - OCIXmlDbRewriteXMLDiff definition change
|
||||
vmedi 01/14/11 - OCIXmlDbGetFullyQualifiedSchemaUrl
|
||||
sipatel 03/08/10 - add lob arg to OCIXmlDbRewriteXMLDiff
|
||||
samane 01/20/10 - Bug 9302227
|
||||
yifeng 11/05/09 - add OCIXmlDbRewriteXMLDiff
|
||||
samane 08/05/09 - Bug 8661204
|
||||
ataracha 12/11/03 - remove redundant definitions
|
||||
ataracha 05/28/03 - change names
|
||||
ataracha 02/18/03 - add oratypes, remove XMLERR_*
|
||||
imacky 02/01/03 - remove xml.h; xdbs fix
|
||||
ataracha 01/24/03 - use "struct xmlctx" instead of xmlctx
|
||||
imacky 01/28/03 - fix XMLERR defs
|
||||
ataracha 01/21/03 - ataracha_uni_capi_cleanup
|
||||
ataracha 01/09/03 - Creation
|
||||
|
||||
*/
|
||||
|
||||
#ifndef ORATYPES
|
||||
#include <oratypes.h>
|
||||
#endif
|
||||
|
||||
#ifndef OCI_ORACLE
|
||||
# include <oci.h>
|
||||
#endif
|
||||
|
||||
#ifndef OCIXMLDB_ORACLE
|
||||
# define OCIXMLDB_ORACLE
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
PUBLIC TYPES AND CONSTANTS
|
||||
---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef XMLCTX_DEFINED
|
||||
# define XMLCTX_DEFINED
|
||||
/* DATATYPE xmlctx - XML top-level context
|
||||
*/
|
||||
struct xmlctx; typedef struct xmlctx xmlctx;
|
||||
#endif
|
||||
|
||||
|
||||
typedef struct OCIXmlDiffBnd {
|
||||
oratext *bndnmp;
|
||||
ub1 bndnml;
|
||||
ub2 bndpos;
|
||||
ub2 bndnum;
|
||||
ub2 bnddty;
|
||||
void *bndvalp;
|
||||
ub4 bndvallen;
|
||||
ub2 bndcsid;
|
||||
ub1 bndcsform;
|
||||
|
||||
} OCIXmlDiffBnd;
|
||||
|
||||
struct xmldrctx; typedef struct xmldrctx xmldrctx;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
XCTXINIT_OCIDUR = 1,
|
||||
XCTXINIT_ERRHDL = 2
|
||||
} ocixmldbpname;
|
||||
|
||||
typedef struct ocixmldbparam
|
||||
{
|
||||
ocixmldbpname name_ocixmldbparam;
|
||||
void *value_ocixmldbparam;
|
||||
} ocixmldbparam;
|
||||
|
||||
#define NUM_OCIXMLDBPARAMS 2
|
||||
|
||||
#define OCIXMLDB_BINDBYNAME 1
|
||||
#define OCIXMLDB_BINDBYNUM 2
|
||||
|
||||
#define OCIMAXXQUBNDLMT 1000
|
||||
|
||||
#define OCIXmlDr_DEF 2
|
||||
|
||||
/* property names for client-side encoding/decoding of binary XML */
|
||||
#define OCIXMLDB_ENCODE "XML_ENCODE_ON"
|
||||
#define OCIXMLDB_DECODEL 13
|
||||
#define OCIXMLDB_DECODE "XML_DECODE_ON"
|
||||
#define OCIXMLDB_DECODEL 13
|
||||
|
||||
/*
|
||||
* At version 2, OCIXmlDiffBnd has attributes bndcsid, bndcsform
|
||||
*/
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
PRIVATE TYPES AND CONSTANTS
|
||||
---------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
EXPORT FUNCTIONS
|
||||
---------------------------------------------------------------------------*/
|
||||
/*****************************************************************************
|
||||
DESCRIPTION
|
||||
|
||||
-----------------------------OCIXmlDbInitXmlCtx---------------------------------
|
||||
Name
|
||||
OCIXmlDbInitXmlCtx
|
||||
Purpose
|
||||
To get a xmlctx structure initialized with error-handler and XDB callbacks.
|
||||
Syntax
|
||||
struct xmlctx *OCIXmlDbInitXmlCtx (OCIEnv *envhp,
|
||||
OCISvcCtx *svchp,
|
||||
OCIError *err,
|
||||
params_ocixmldb *params,
|
||||
int num_params);
|
||||
Parameters
|
||||
envhp (IN) - The OCI environment handle
|
||||
svchp (IN) - The OCI service handle
|
||||
errhp (IN) - The OCI error handle
|
||||
params (IN)- This contains the following optional parameters :
|
||||
(a) OCIDuration dur (IN - The OCI Duration (Default: OCI_DURATION_SESSION)
|
||||
(b) void (*err_handler) (sword, (const oratext *) (IN) -
|
||||
Pointer to the error handling function (Default: null)
|
||||
num_params (IN) - Number of parameters to be read from parameter params.
|
||||
If the value of num_params exceeds the size of array
|
||||
"params", unexpected behavior will result.
|
||||
|
||||
Returns
|
||||
A pointer to xmlctx structure, with xdb context, error handler and callbacks
|
||||
populated with appropriate values. This is later used for all API calls. NULL
|
||||
if no database connection available.
|
||||
|
||||
-----------------------------OCIXmlDbFreeXmlCtx----------------------------
|
||||
Name
|
||||
OCIXmlDbFreeXmlCtx
|
||||
Pupose
|
||||
To free any allocations done during OCIXmlDbInitXmlCtx.
|
||||
Syntax
|
||||
void OCIXmlDbFreeXmlCtx (struct xmlctx *xctx)
|
||||
Parameters
|
||||
xctx (IN) - The xmlctx to terminate
|
||||
Returns
|
||||
-
|
||||
------------------------OCIXmlDbOrastreamFromLob---------------------------
|
||||
Name
|
||||
OCIXmlDbOrastreamFromLob
|
||||
Pupose
|
||||
To create an orastream from a lob. This orastream can be used by functions like XMLLoadDom().
|
||||
Syntax
|
||||
sword OCIXmlDbOrastreamFromLob(OCIError *errhp, xmlctx *xctx,
|
||||
void **stream, OCILobLocator *lobloc)
|
||||
Parameters
|
||||
envhp (IN) - The OCI environment handle
|
||||
xctx (IN) - XML context
|
||||
stream (IN/OUT) - A pointer to orastream
|
||||
lobloc (IN) - The OCI lob locator
|
||||
Returns
|
||||
The orastream created on top of the lob is returned in the parameter 'stream'.
|
||||
******************************************************************************/
|
||||
|
||||
struct xmlctx *OCIXmlDbInitXmlCtx(OCIEnv *, OCISvcCtx *, OCIError *,
|
||||
ocixmldbparam *, int);
|
||||
|
||||
void OCIXmlDbFreeXmlCtx(struct xmlctx *xctx);
|
||||
sword OCIXmlDbStreamFromXMLType(OCIError *errhp, void **stream,
|
||||
OCIXMLType *doc, ub4 mode);
|
||||
sword OCIXmlDbOrastreamFromLob(OCIError *errhp, xmlctx *xctx,
|
||||
void **stream, OCILobLocator *lobloc);
|
||||
sword OCIXmlDbStreamRead(OCIError *errhp, void *stream,
|
||||
void *bufp, sb8 *len, ub4 mode);
|
||||
sword OCIXmlDbStreamClose(OCIError *errhp, void *stream);
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
INTERNAL FUNCTIONS
|
||||
---------------------------------------------------------------------------*/
|
||||
/* This function is for internal usage only */
|
||||
sword OCIXmlDbRewriteXMLDiff(OCIEnv *envhp, OCIError *errhp, OCISvcCtx *svchp,
|
||||
xmldrctx *xctx , oratext* colname, ub4 colnamelen,
|
||||
const void* xmldiff, ub4 xmldifflen,
|
||||
OCILobLocator *xdiff_locator, oratext** updstmt,
|
||||
ub2 binditerator, ub2 *colvalbndcount,
|
||||
OCIXmlDiffBnd **bindlist,
|
||||
oratext *obj_tab_prefix, ub2 obj_tab_prefix_len);
|
||||
|
||||
sword OCIXmlDbGetJSONDiffAll(OCIEnv *envhp, OCIError *errhp, OCISvcCtx *svchp,
|
||||
xmldrctx *xctx, oratext* colnam, ub4 clen,
|
||||
const void* jdiff, ub4 jdifflen,
|
||||
OCILobLocator *jdiff_locator, oratext** updstmt,
|
||||
ub2 binditerator, ub2 *bind_count,
|
||||
OCIXmlDiffBnd **bindlist, ub1 *checksum);
|
||||
|
||||
sword OCIXmlDbGetJSONDiffHash(OCIEnv *envhp, OCIError *errhp, OCISvcCtx *svchp,
|
||||
xmldrctx *xctx, const void* jdiff, ub4 jdifflen,
|
||||
OCILobLocator *jdiff_locator, ub1 *checksum);
|
||||
|
||||
sword OCIXmlDbGetJSONDiffBind(OCIEnv *envhp, OCIError *errhp, OCISvcCtx *svchp,
|
||||
xmldrctx *xctx, const void* jdiff, ub4 jdifflen,
|
||||
OCILobLocator *jdiff_locator, ub2 binditerator,
|
||||
ub2 *bind_count, OCIXmlDiffBnd **bindlist);
|
||||
|
||||
sword OCIXmlDbGetJSONDiffSql(OCIEnv *envhp, OCIError *errhp, OCISvcCtx *svchp,
|
||||
xmldrctx *xctx , oratext* colnam, ub4 clen,
|
||||
const void* jdiff, ub4 jdifflen,
|
||||
OCILobLocator *jdiff_locator, oratext** updstmt,
|
||||
ub2 binditerator, ub2 *bind_count,
|
||||
OCIXmlDiffBnd **bindlist);
|
||||
|
||||
struct xmldrctx *OCIXmlInitDRCtx(OCIEnv *env, OCISvcCtx *svc, OCIError *err,
|
||||
ub1 bindtyp);
|
||||
|
||||
void OCIXmlFreeDRCtx(xmldrctx *xctx);
|
||||
|
||||
ub1 OCIXmlGetDiffBndVersion();
|
||||
|
||||
sword OCIXmlDbGetFullyQualifiedSchemaUrl(OCIError *errhp,
|
||||
oratext *schema_url,
|
||||
ub2 schema_url_len,
|
||||
oratext *schema_owner,
|
||||
ub2 schema_owner_len,
|
||||
oratext **fq_schema_url,
|
||||
ub4 *fs_schema_url_len);
|
||||
|
||||
void *OCIXmlDbMemCallback(void *ctx, size_t size);
|
||||
|
||||
#endif /* OCIXMLDB_ORACLE */
|
||||
Reference in New Issue
Block a user