📄 statement.c
字号:
/* ------------------------------------------------------------------------ *
* OCI_BindUnsignedBigInt
* ------------------------------------------------------------------------ */
boolean OCI_API OCI_BindUnsignedBigInt(OCI_Statement *stmt, const mtext *name,
big_uint *data)
{
OCI_CHECK_BIND_CALL(stmt, name, data, OCI_IPC_BIGINT);
return OCI_BindData(stmt, data, sizeof(OCINumber), name, OCI_CDT_NUMERIC,
SQLT_VNU, OCI_BIND_INPUT, OCI_NUM_BIGUINT, NULL, 0);
}
/* ------------------------------------------------------------------------ *
* OCI_BindArrayOfUnsignedInts
* ------------------------------------------------------------------------ */
boolean OCI_API OCI_BindArrayOfUnsignedBigInts(OCI_Statement *stmt,
const mtext *name,
big_uint *data,
unsigned int nbelem)
{
OCI_CHECK_BIND_CALL(stmt, name, data, OCI_IPC_BIGINT);
return OCI_BindData(stmt, data, sizeof(OCINumber), name, OCI_CDT_NUMERIC,
SQLT_VNU, OCI_BIND_INPUT, OCI_NUM_BIGUINT, NULL, nbelem);
}
/* ------------------------------------------------------------------------ *
* OCI_BindString
* ------------------------------------------------------------------------ */
boolean OCI_API OCI_BindString(OCI_Statement *stmt, const mtext *name,
dtext *data, unsigned int len)
{
OCI_CHECK_BIND_CALL(stmt, name, data, OCI_IPC_STRING);
if (len == 0 || len == UINT_MAX)
len = (int) dtslen(data);
return OCI_BindData(stmt, data, (len + 1) * sizeof(odtext), name, OCI_CDT_TEXT,
SQLT_STR, OCI_BIND_INPUT, 0, NULL, 0);
}
/* ------------------------------------------------------------------------ *
* OCI_BindArrayOfStrings
* ------------------------------------------------------------------------ */
boolean OCI_API OCI_BindArrayOfStrings(OCI_Statement *stmt, const mtext *name,
dtext *data, unsigned int len,
unsigned int nbelem)
{
OCI_CHECK_BIND_CALL(stmt, name, data, OCI_IPC_STRING);
OCI_CHECK_MIN(stmt->con, stmt, len, 1, FALSE);
return OCI_BindData(stmt, data, (len + 1) * sizeof(odtext), name, OCI_CDT_TEXT,
SQLT_STR, OCI_BIND_INPUT, 0, NULL, nbelem);
}
/* ------------------------------------------------------------------------ *
* OCI_BindRaw
* ------------------------------------------------------------------------ */
boolean OCI_API OCI_BindRaw(OCI_Statement *stmt, const mtext *name, void *data,
unsigned int len)
{
OCI_CHECK_BIND_CALL(stmt, name, data, OCI_IPC_VOID);
OCI_CHECK_MIN(stmt->con, stmt, len, 1, FALSE);
return OCI_BindData(stmt, data, len, name, OCI_CDT_RAW,
SQLT_BIN, OCI_BIND_INPUT, 0, NULL, 0);
}
/* ------------------------------------------------------------------------ *
* OCI_BindArrayOfRaws
* ------------------------------------------------------------------------ */
boolean OCI_API OCI_BindArrayOfRaws(OCI_Statement *stmt, const mtext *name,
void *data, unsigned int len,
unsigned int nbelem)
{
OCI_CHECK_BIND_CALL(stmt, name, data, OCI_IPC_VOID);
OCI_CHECK_MIN(stmt->con, stmt, len, 1, FALSE);
return OCI_BindData(stmt, data, len, name, OCI_CDT_RAW,
SQLT_BIN, OCI_BIND_INPUT, 0, NULL, nbelem);
}
/* ------------------------------------------------------------------------ *
* OCI_BindDouble
* ------------------------------------------------------------------------ */
boolean OCI_API OCI_BindDouble(OCI_Statement *stmt, const mtext *name,
double *data)
{
OCI_CHECK_BIND_CALL(stmt, name, data, OCI_IPC_DOUBLE);
return OCI_BindData(stmt, data, sizeof(double), name, OCI_CDT_NUMERIC,
SQLT_FLT, OCI_BIND_INPUT, 0, NULL, 0);
}
/* ------------------------------------------------------------------------ *
* OCI_BindArrayOfDoubles
* ------------------------------------------------------------------------ */
boolean OCI_API OCI_BindArrayOfDoubles(OCI_Statement *stmt, const mtext *name,
double *data, unsigned int nbelem)
{
OCI_CHECK_BIND_CALL(stmt, name, data, OCI_IPC_DOUBLE);
return OCI_BindData(stmt, data, sizeof(double), name, OCI_CDT_NUMERIC,
SQLT_FLT, OCI_BIND_INPUT, 0, NULL, nbelem);
}
/* ------------------------------------------------------------------------ *
* OCI_BindDate
* ------------------------------------------------------------------------ */
boolean OCI_API OCI_BindDate(OCI_Statement *stmt, const mtext *name,
OCI_Date *data)
{
OCI_CHECK_BIND_CALL(stmt, name, data, OCI_IPC_DATE);
return OCI_BindData(stmt, data, sizeof(OCIDate), name, OCI_CDT_DATETIME,
SQLT_ODT, OCI_BIND_INPUT, 0, NULL, 0);
}
/* ------------------------------------------------------------------------ *
* OCI_BindArrayOfDates
* ------------------------------------------------------------------------ */
boolean OCI_API OCI_BindArrayOfDates(OCI_Statement *stmt, const mtext *name,
OCI_Date **data, unsigned int nbelem)
{
OCI_CHECK_BIND_CALL(stmt, name, data, OCI_IPC_DATE);
return OCI_BindData(stmt, data, sizeof(OCIDate), name, OCI_CDT_DATETIME,
SQLT_ODT, OCI_BIND_INPUT, 0, NULL, nbelem);
}
/* ------------------------------------------------------------------------ *
* OCI_BindTimestamp
* ------------------------------------------------------------------------ */
boolean OCI_API OCI_BindTimestamp(OCI_Statement *stmt, const mtext *name,
OCI_Timestamp *data)
{
int code = 0;
boolean res = FALSE;
OCI_CHECK_BIND_CALL(stmt, name, data, OCI_IPC_TIMESTAMP);
OCI_CHECK_TIMESTAMP_ENABLED(stmt->con, FALSE);
#if OCI_VERSION_COMPILE >= OCI_9
/* map oracle internal type */
if (data->type == OCI_TIMESTAMP_TZ)
code = SQLT_TIMESTAMP_TZ;
else if (data->type == OCI_TIMESTAMP_LTZ)
code = SQLT_TIMESTAMP_LTZ;
else
code = SQLT_TIMESTAMP;
res = OCI_BindData(stmt, data, sizeof(OCIDateTime *), name, OCI_CDT_TIMESTAMP,
code, OCI_BIND_INPUT, data->type, NULL, 0);
#else
OCI_NOT_USED(name);
OCI_NOT_USED(code);
OCI_NOT_USED(code);
#endif
return res;
}
/* ------------------------------------------------------------------------ *
* OCI_BindArrayOfTimestamps
* ------------------------------------------------------------------------ */
boolean OCI_API OCI_BindArrayOfTimestamps(OCI_Statement *stmt, const mtext *name,
OCI_Timestamp **data,
unsigned int type,
unsigned int nbelem)
{
unsigned int code = 0;
boolean res = FALSE;
OCI_CHECK_BIND_CALL(stmt, name, data, OCI_IPC_TIMESTAMP);
OCI_CHECK_TIMESTAMP_ENABLED(stmt->con, FALSE);
#if OCI_VERSION_COMPILE >= OCI_9
/* map oracle internal type */
if (type == OCI_TIMESTAMP_TZ)
code = SQLT_TIMESTAMP_TZ;
else if (type == OCI_TIMESTAMP_LTZ)
code = SQLT_TIMESTAMP_LTZ;
else
code = SQLT_TIMESTAMP;
res = OCI_BindData(stmt, data, sizeof(OCIDateTime *), name, OCI_CDT_TIMESTAMP,
code, OCI_BIND_INPUT, type, NULL, nbelem);
#else
OCI_NOT_USED(name);
OCI_NOT_USED(type);
OCI_NOT_USED(code);
OCI_NOT_USED(nbelem);
#endif
return res;
}
/* ------------------------------------------------------------------------ *
* OCI_BindInterval
* ------------------------------------------------------------------------ */
boolean OCI_API OCI_BindInterval(OCI_Statement *stmt, const mtext *name,
OCI_Interval *data)
{
int code = 0;
boolean res = FALSE;
OCI_CHECK_BIND_CALL(stmt, name, data, OCI_IPC_INTERVAL);
OCI_CHECK_INTERVAL_ENABLED(stmt->con, FALSE);
#if OCI_VERSION_COMPILE >= OCI_9
/* map oracle internal type */
if (data->type == OCI_INTERVAL_YM)
code = SQLT_INTERVAL_YM;
else if (data->type == OCI_INTERVAL_DS)
code = SQLT_INTERVAL_DS;
res = OCI_BindData(stmt, data, sizeof(OCIInterval *), name, OCI_CDT_INTERVAL,
code, OCI_BIND_INPUT, data->type, NULL, 0);
#else
OCI_NOT_USED(name);
OCI_NOT_USED(code);
#endif
return res;
}
/* ------------------------------------------------------------------------ *
* OCI_BindArrayOfIntervals
* ------------------------------------------------------------------------ */
boolean OCI_API OCI_BindArrayOfIntervals(OCI_Statement *stmt, const mtext *name,
OCI_Interval **data,
unsigned int type,
unsigned int nbelem)
{
unsigned int code = 0;
boolean res = FALSE;
OCI_CHECK_BIND_CALL(stmt, name, data, OCI_IPC_INTERVAL);
OCI_CHECK_INTERVAL_ENABLED(stmt->con, FALSE);
#if OCI_VERSION_COMPILE >= OCI_9
/* map oracle internal type */
if (type == OCI_INTERVAL_YM)
code = SQLT_INTERVAL_YM;
else if (type == OCI_INTERVAL_DS)
code = SQLT_INTERVAL_DS;
res = OCI_BindData(stmt, data, sizeof(OCIInterval *), name, OCI_CDT_INTERVAL,
code, OCI_BIND_INPUT, type, NULL, nbelem);
#else
OCI_NOT_USED(name);
OCI_NOT_USED(type);
OCI_NOT_USED(code);
OCI_NOT_USED(nbelem);
#endif
return res;
}
/* ------------------------------------------------------------------------ *
* OCI_BindObject
* ------------------------------------------------------------------------ */
boolean OCI_API OCI_BindObject(OCI_Statement *stmt, const mtext *name,
OCI_Object *data)
{
OCI_CHECK_BIND_CALL(stmt, name, data, OCI_IPC_OBJECT);
return OCI_BindData(stmt, data, sizeof(void*), name, OCI_CDT_OBJECT,
SQLT_NTY, OCI_BIND_INPUT, 0, data->typinf, 0);
}
/* ------------------------------------------------------------------------ *
* OCI_BindArrayOfObjects
* ------------------------------------------------------------------------ */
boolean OCI_API OCI_BindArrayOfObjects(OCI_Statement *stmt, const mtext *name,
OCI_Object **data, OCI_TypeInfo *typinf,
unsigned int nbelem)
{
OCI_CHECK_BIND_CALL(stmt, name, data, OCI_IPC_OBJECT);
OCI_CHECK_PTR(OCI_IPC_TYPE_INFO, typinf, FALSE);
return OCI_BindData(stmt, data, sizeof(void *), name, OCI_CDT_OBJECT,
SQLT_NTY, OCI_BIND_INPUT, 0, typinf, nbelem);
}
/* ------------------------------------------------------------------------ *
* OCI_BindLob
* ------------------------------------------------------------------------ */
boolean OCI_API OCI_BindLob(OCI_Statement *stmt, const mtext *name,
OCI_Lob *data)
{
int code = 0;
OCI_CHECK_BIND_CALL(stmt, name, data, OCI_IPC_LOB);
/* map oracle internal type */
if (data->type == OCI_CLOB || data->type == OCI_NCLOB)
code = SQLT_CLOB;
else
code = SQLT_BLOB;
return OCI_BindData(stmt, data, sizeof(OCILobLocator*), name, OCI_CDT_LOB,
code, OCI_BIND_INPUT, data->type, NULL, 0);
}
/* ------------------------------------------------------------------------ *
* OCI_BindArrayOfLobs
* ------------------------------------------------------------------------ */
boolean OCI_API OCI_BindArrayOfLobs(OCI_Statement *stmt, const mtext *name,
OCI_Lob **data, unsigned int type,
unsigned int nbelem)
{
unsigned int code = 0;
OCI_CHECK_BIND_CALL(stmt, name, data, OCI_IPC_LOB);
/* map oracle internal type */
if (type == OCI_CLOB || type == OCI_NCLOB)
code = SQLT_CLOB;
else
code = SQLT_BLOB;
return OCI_BindData(stmt, data, sizeof(OCILobLocator*), name, OCI_CDT_LOB,
code, OCI_BIND_INPUT, type, NULL, nbelem);
}
/* ------------------------------------------------------------------------ *
* OCI_BindFile
* ------------------------------------------------------------------------ */
boolean OCI_API OCI_BindFile(OCI_Statement *stmt, const mtext *name,
OCI_File *data)
{
int code = 0;
OCI_CHECK_BIND_CALL(stmt, name, data, OCI_IPC_FILE);
/* map oracle internal type */
if (data->type == OCI_CFILE)
code = SQLT_CFILE;
else
code = SQLT_BFILE;
return OCI_BindData(stmt, data, sizeof(OCILobLocator*), name, OCI_CDT_FILE,
code, OCI_BIND_INPUT, data->type, NULL, 0);
}
/* ------------------------------------------------------------------------ *
* OCI_BindArrayOfFiles
* ------------------------------------------------------------------------ */
boolean OCI_API OCI_BindArrayOfFiles(OCI_Statement *stmt, const mtext *name,
OCI_File **data, unsigned int type,
unsigned int nbelem)
{
unsigned int code = 0;
OCI_CHECK_BIND_CALL(stmt, name, data, OCI_IPC_FILE);
/* map oracle internal type */
if (type == OCI_CFILE)
code = SQLT_CFILE;
else
code = SQLT_BFILE;
return OCI_BindData(stmt, data, sizeof(OCILobLocator*), name, OCI_CDT_FILE,
code, OCI_BIND_INPUT, type, NULL, nbelem);
}
/* ------------------------------------------------------------------------ *
* OCI_BindRef
* ------------------------------------------------------------------------ */
boolean OCI_API OCI_BindRef(OCI_Statement *stmt, const mtext *name, OCI_Ref *data)
{
OCI_CHECK_BIND_CALL(stmt, name, data, OCI_IPC_REF);
return OCI_BindData(stmt, data, sizeof(OCIRef *), name, OCI_CDT_REF,
SQLT_REF, OCI_BIND_INPUT, 0, data->typinf, 0);
}
/* ---------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -