OCI编程高级篇(十六) 直接路径数据转换和装载

在上一节中我们设置了字段的数据入口,那么接下来顺理成章的就是把字段数组转换成流数据,然后装载流数据,直接路径装载就算完成了。这个顺序没错,但是在这之前还有事情要做。首先要复位字段数组句柄的状态,然后还要复位直接路径流句柄的状态,每次转换装载前都要复位这两个状态。这两个函数分别为OCIDirPathColArrayReset()和OCIDirPathStreamReset(),下面看看他们的原型和参数。

sword OCIDirPathColArrayReset ( OCIDirPathColArray *dpca, OCIError *errhp );

dpca是一个输入参数,直接路径装载字段数组句柄。

errhp是一个输入参数,错误句柄,用于返回错误码和错误信息文本。

sword OCIDirPathStreamReset ( OCIDirPathStream *dpstr, OCIError *errhp );

dpstr是一个输入参数,直接路径装载流句柄。

errhp是一个输入参数,错误句柄,用于返回错误码和错误信息文本。

现在可以进行字段数组向直接路径流的转换了,函数为OCIDirPathColArrayToStream(),原型和参数如下。

sword OCIDirPathColArrayToStream ( OCIDirPathColArray *dpca,
    OCIDirPathCtx const  *dpctx,
    OCIDirPathStream      *dpstr,
    OCIError                      *errhp,
    ub4                               rowcnt,
    ub4                               rowoff );

dpca是一个输入参数,是直接路径字段数组句柄。

dpctx是一个输入参数,直接路径上下文句柄,代表要装载的对象。

dpstr是一个输入/输出参数,直接路径流句柄。

errhp是一个输入参数,错误句柄,用于返回错误码和错误信息文本。

rowcnt是一个输入参数,字段数组中要转换的数据行数。

rowoff是一个输入参数,从字段数组中第几行开始转换,一般情况下为0,如果一次转换不能把字段数组中的全部行都转换完,那么下次转换就要从上次转换的最后一行的下一行开始,这时rowoff就不是0了。

函数的返回值是OCI_SUCCESS说明字段数组中的数据全部转换成了流数据。如果返回值是OCI_CONTINUE说明流数据的缓冲区太小,字段数组中的部分数据转换成了流数据,这时属性OCI_ATTR_ROW_COUNT返回本次成功转换的数据行数。

转换成流数据后,下一步就是装载数据了,用到函数OCIDirPathLoadStream(),原型和参数如下。

sword OCIDirPathLoadStream ( OCIDirPathCtx *dpctx,
    OCIDirPathStream  *dpstr,
    OCIError                 *errhp );

dpctx是一个输入参数,直接路径上下文句柄。

dpstr是一个输入参数,直接路径流句柄。

errhp是一个输入参数,错误句柄,用于返回错误码和错误信息文本。

装载完数据流,下一步就是提交装载的数据流,这时用到函数OCIDirPathFinish(),原型和参数如下。

sword OCIDirPathFinish ( OCIDirPathCtx *dpctx, OCIError *errhp );

dpctx是一个输入参数,直接路径上下文句柄。

errhp是一个输入/输出参数,错误句柄,用于返回错误码和错误信息文本。

到这里,直接路径装载过程就算结束了,如果有更多的数据要装载,那么可以循环设置数据入口,重置状态,字段数组转换成流数据,装载流数据这几个步骤,最后再提交装载数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值