#绑定、定义和描述函数
# OCIBindArrayOfStruct()
该函数用于设置静态数组绑定的跳过参数。
# OCI函数原型
sword OCIBindArrayOfStruct ( OCIBind *bindp,
OCIError *errhp,
ub4 pvskip,
ub4 indskip,
ub4 alskip,
ub4 rcskip );
# 参数说明
| 参数名 | 含义 |
|---|---|
| bindp (IN/OUT) | 绑定结构的句柄 |
| errhp (IN/OUT) | 一个错误句柄,当出现错误时可以获取诊断信息 |
| pvskip (IN) | 用于下一个数据值的跳过参数 |
| indskip (IN) | 用于下一个指示符值或结构的跳过参数 |
| alskip (IN) | 用于下一个实际长度值的跳过参数 |
| rcskip (IN) | 用于下一列级别返回代码值的跳过参数 |
# 规格
该函数支持如下的调用方式:
| 参数 | 有效值 |
|---|---|
| pvskip | 除0以外的数值 |
| indskip | 0或其他合理数值 |
| alskip | 0或其他合理数值 |
| rcskip | 0或其他合理数值 |
# 其他说明
此api在绑定时为可选项,可以设置批量绑定参数的步长。
# OCIBindByPos()
该函数用于在程序变量和 SQL 语句或 PL/SQL 块中的占位符之间创建关联。
# OCI函数原型
sword OCIBindByPos ( OCIStmt *stmtp,
OCIBind **bindpp,
OCIError *errhp,
ub4 position,
void *valuep,
sb4 value_sz,
ub2 dty,
void *indp,
ub2 *alenp,
ub2 *rcodep,
ub4 maxarr_len,
ub4 *curelep,
ub4 mode );
# 参数说明
| 参数名 | 含义 |
|---|---|
| stmtp (IN/OUT) | 正在处理的SQL或PL/SQL语句的语句句柄 |
| bindpp (IN/OUT) | 此调用隐式分配的绑定句柄的地址。绑定句柄维护该特定输入值的所有绑定信息。当语句句柄被释放时,该句柄被隐式释放 |
| errhp (IN/OUT) | 一个错误句柄,当出现错误时可以获取诊断信息 |
| position (IN) | 由位置指定的占位符属性 |
| valuep (IN/OUT) | 数据值的地址或dty参数中指定类型的数据值数组。可以指定一个数据值数组,用于映射到PL/SQL表或为SQL多行操作提供数据。当提供绑定值的数组时,这在OCI术语中被称为数组绑定。对于LOB,缓冲区指针必须是指向 OCILobLocator类型的LOB定位器的指针。 |
| value_sz (IN) | 此绑定变量的任何数据值(使用valuep传递)的最大可能大小(以字节为单位)。此大小应始终是以字节为单位的大小。在数组绑定的情况下,这是任何元素的最大大小,实际大小在 alenp参数中指定 |
| dty (IN) | 要绑定的值的数据类型 |
| indp (IN/OUT) | 指向指示器变量或数组的指针 |
| alenp (IN/OUT) | 指向数组元素实际长度的数组的指针 |
| rcodep (OUT) | 指向列级返回代码数组的指针 对于动态绑定,将忽略此参数 |
| maxarr_len (IN) | 最大数组长度参数(用户数组可以容纳的元素的最大可能数量) 仅用于PL/SQL索引表绑定 |
| curelep (IN/OUT) | 当前数组长度参数(指向执行操作之前或之后数组中实际元素数的指针) 仅用于PL/SQL索引表绑定 |
| mode (IN) | 支持的有效模式 |
# 规格
该函数支持如下的调用方式:
| 参数 | 有效值 |
|---|---|
| dty (IN) | SQLT_INT SQLT_STR SQLT_AFC SQLT_LNG SQLT_FLT SQLT_TIMESTAMP SQLT_INTERVAL_DS SQLT_VNU SQLT_BDOUBLE SQLT_BLOB SQLT_CLOB |
| rcodep | NULL |
| mode | OCI_DEFAULT |
| *bindpp | NULL |
| maxarr_len | 0 |
| curelep | NULL |
| position | >= 1 |
| mode | OCI_DEFAULT OCI_DATA_AT_EXEC |
# 其他说明
无特殊说明。
# OCIDefineByPos()
该函数用于将选择列表中的项目与类型和输出数据缓冲区相关联。
# OCI函数原型
sword OCIDefineByPos ( OCIStmt *stmtp,
OCIDefine **defnpp,
OCIError *errhp,
ub4 position,
void *valuep,
sb4 value_sz,
ub2 dty,
void *indp,
ub2 *rlenp,
ub2 *rcodep,
ub4 mode );
# 参数说明
| 参数名 | 含义 |
|---|---|
| stmtp (IN/OUT) | 请求的SQL查询操作的句柄 |
| defnpp (IN/OUT) | 指向定义句柄的指针的指针 |
| errhp (IN/OUT) | 一个错误句柄,当出现错误时可以获取诊断信息 |
| position (IN) | 此值在选择列表中的位置 |
| valuep (IN/OUT) | 指向dty参数中指定类型的缓冲区或缓冲区数组的指针 |
| value_sz (IN) | 每个valuep缓冲区的大小(以字节为单位) |
| dty (IN) | 数据类型 |
| indp (IN) | 指向指示器变量或数组的指针 |
| rlenp (IN/OUT) | 指向获取的数据长度数组的指针 |
| rcodep (OUT) | 指向列级返回代码数组的指针 |
| mode (IN) | 支持的有效模式 |
# 规格
该函数支持如下的调用方式:
| 参数 | 有效值 |
|---|---|
| dty (IN) | SQLT_INT SQLT_STR SQLT_AFC SQLT_CHR SQLT_FLT SQLT_TIMESTAMP SQLT_INTERVAL_DS SQLT_BLOB SQLT_CLOB |
| mode | OCI_DEFAULT |
| defnpp | NULL |
| position | >= 1 |
# 其他说明
目前输出数据缓冲区取数据不支持变长类型截断,取结果集数据时,所有变长类型遇到大小不足的输出数据缓冲区会报错。
# OCIDescribeAny()
该函数用于描述现有模式和子模式对象。
# OCI函数原型
sword OCIDescribeAny ( OCISvcCtx *svchp,
OCIError *errhp,
void *objptr,
ub4 objptr_len,
ub1 objptr_typ,
ub1 info_level,
ub1 objtyp,
OCIDescribe *dschp );
# 参数说明
| 参数名 | 含义 |
|---|---|
| svchp (IN) | 服务上下文句柄 |
| errhp (IN/OUT) | 一个错误句柄,当出现错误时可以获取诊断信息 |
| objptr (IN) | 此参数可以是: 1.包含要描述的对象的名称的字符串。必须是由上一次调用 OCIEnvNlsCreate()的charset参数指定的编码。2.指向TDO的 REF的指针(对于类型)。3.指向TDO的指针(用于类型)。 通过传递 objprt_typ的适当值来区分这些情况。此参数必须为非NULL |
| objnm_len (IN) | objptr指向的名称字符串的长度如果传递名称,则必须为非零 如果 objptr是指向TDO或其“REF”的指针,则可以为零 |
| objptr_typ (IN) | objptr中传递的对象的类型 |
| info_level (IN) | 保留以备将来扩展 传递 OCI_DEFAULT。 |
| objtyp (IN) | 正在描述的架构对象的类型 |
| dschp (IN/OUT) | 一个描述句柄,该句柄在调用后填充了有关对象的描述信息 必须为非NULL。 |
# 规格
该函数支持如下的调用方式:
| 参数 | 有效值 |
|---|---|
| objptr_typ | OCI_OTYPE_NAME |
| objtyp | OCI_PTYPE_VIEW、OCI_PTYPE_TABLE |
| objptr | 非NULL |
| objptr_len | 非0 |
| info_level | 0 |
# 其他说明
无特殊说明。
# OCIBindDynamic
注册动态数据分配的用户回调。
# OCI函数原型
sword OCIBindDynamic ( OCIBind *bindp,
OCIError *errhp,
void *ictxp,
OCICallbackInBind (icbfp)(
void *ictxp,
OCIBind *bindp,
ub4 iter,
ub4 index,
void **bufpp,
ub4 *alenp,
ub1 *piecep,
void **indpp ),
void *octxp,
OCICallbackOutBind (ocbfp)(
void *octxp,
OCIBind *bindp,
ub4 iter,
ub4 index,
void **bufpp,
ub4 **alenpp,
ub1 *piecep,
void **indpp,
ub2 **rcodepp ) );
# 参数说明
| 参数名 | 含义 |
|---|---|
| bindp (IN/OUT) | 绑定句柄。 |
| errhp (IN/OUT) | 一个错误句柄,当出现错误时可以获取诊断信息。 |
| ictxp (IN) | 回调函数icbfp所需的上下文指针。 |
| icbfp (IN) | 在运行时返回指向 IN 绑定值或片段的指针的回调函数。 |
| octxp (IN) | 回调函数ocbfp所需的上下文指针。 |
| ocbfp (IN) | 在运行时返回指向 OUT 绑定值或片段的指针的回调函数。 |
# 规格
该函数支持如下的调用方式:
| 参数 | 有效值 |
|---|---|
| icbfp | 非NULL |
| octxp | 保留参数,不使用 |
| ocbfp | 保留参数,不使用 |
# 其他说明
目前仅支持回调函数返回OCI_CONTINUE,仅支持*piecep赋值为OCI_ONE_PIECE。
# OCIDefineDynamic
如果在OCIDefineByPos()或OCIDefineByPos2()中选择了OCI_DYNAMIC_FETCH模式,则设置所需的附加属性。
# OCI函数原型
sword OCIDefineDynamic ( OCIDefine *defnp,
OCIError *errhp,
void *octxp,
OCICallbackDefine (ocbfp)(
void *octxp,
OCIDefine *defnp,
ub4 iter,
void **bufpp,
ub4 **alenpp,
ub1 *piecep,
void **indpp,
ub2 **rcodep );
# 参数说明
| 参数名 | 含义 |
|---|---|
| defnp (IN/OUT) | 定义结构句柄。 |
| errhp (IN/OUT) | 一个错误句柄,当出现错误时可以获取诊断信息。 |
| octxp (IN) | 指向回调函数的上下文。 |
| (IN) | 指向回调函数。这是在运行时调用的,以获取指向缓冲区的指针,在该缓冲区中将检索所获取的数据或其一部分。回调还指定指标、返回码以及数据片和指标的长度。 |
# 规格
该函数支持如下的调用方式:
| 参数 | 有效值 |
|---|---|
| ocbfp | 非NULL |
# 其他说明
目前仅支持回调函数返回OCI_CONTINUE,仅支持*piecep赋值为OCI_ONE_PIECE。
目前输出数据缓冲区取数据不支持变长类型截断,取结果集数据时,所有变长类型遇到大小不足的输出数据缓冲区会报错。