OCI编程高级篇(一) 数组插入

访问www.tomcoding.com网站,学习Oracle内部数据结构,详细文档说明,下载Oracle的exp/imp,DUL,logminer,ASM工具的源代码,学习高技术含量的内容。

在前面我们介绍了向数据库表中插入数据的方法,在例子中一次插入一条数据,对于处理大量数据的场景这种方式显然效率低下。幸运的是OCI提供了让我们批量插入大量数据的方法,这就是数组插入。

数组插入的步骤与单条插入时基本一样,只是在绑定占位符时,输入的是一个数组地址,而不是一个单独的变量地址,indp,alenp,rcodep也都指向一个数组。调用完OCIBindByPos()函数后,还要调用一个OCIBindArrayOfStruct()函数,这个函数定义每个变量跳过的字节个数,以便从开始能找到后续变量的地址。函数原型和参数如下。

sword OCIBindArrayOfStruct ( OCIBind *bindp,
    OCIError *errhp,
    ub4 pvskip,
    ub4 indskip,
    ub4 alskip,
    ub4 rcskip );

bindp是一个输入/输出参数,是一个绑定句柄,由前一个函数OCIBindByPos()隐式分配得来。

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

pvskip是一个输入参数,是绑定的数据数组值要跳过的字节数。

indskip是一个输入参数,是指示变量要跳过的字节数。

alskip是一个输入参数,是实际的数据长度跳过的字节数。

rcskip是一个输入参数,是字段级出错返回码跳过的字节数。

下面来看看这个函数的用法,还是举一个例子来说明,先看一下我们前面创建的test_tab表,表结构如下。CREATE TABLE test_tab (ID NUMBER, NAME CHAR(30), ADD VARCHAR2(200))。假如我们只向表中插入ID字段的数据,插入10条记录,我们先定义一个整数数组int id[10],用于存放插入的数据,然后定义三个数组sb2 ind_id[10],ub2 alen_id[10],ub2 rcode_id[10]分别用于指示变量,实际长度和返回码。我们

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值