使用数组方式访问Oracle,提高性能
来源:互联网 发布:淘宝靠谱护肤品店 编辑:程序博客网 时间:2024/06/06 21:53
Oracle的存储过程支持数组, 这样对于批量数据的操作,可以大大提高性能. 如需要插入1000条记录, 表test_info结构为:
--------------------------------------------------------------------
id_seq number, login_id varchar(64), info varchar(100)
--------------------------------------------------------------------
三个字段, id_seq是个sequence;
由于使用数组,因此需要在Oracle中创建一个全局的数组type,如下:
CREATE OR REPLACE TYPE t_StringArray AS TABLE OF VARCHAR2(128)
然后定义一个存储过程,如下:
function test_AddMultipleIdInfos(v_ids t_StringArray,v_infos t_StringArray)return number
is
i number :=0;
begin
while i < v_ids.count loop
i :=i+1;
insert into test_info(id_seq,login_id,info) values(TEST_INFO_ID_SEQ.Nextval,v_ids(i),v_infos(i));
end loop;
commit;
return 0;
EXCEPTION
when others then
rollback;
return -1;
end;
然后开发程序,Java 和 C 都支持,分别就Java和C的写法举例
Java 写法如下:
PreparedStatement pstmt = null;
pstmt = con.prepareCall(strsql);
String[] ids=new String[2];
String[] infos=new String[2];
ids[0]="test1";
ids[1]="test2";
infos[0]="info1";
infos[1]="info2"
oracle.sql.ArrayDescriptor desc = oracle.sql.ArrayDescriptor.createDescriptor("t_StringArray",con);
oracle.sql.ARRAY idarray = new oracle.sql.ARRAY(desc,con,ids);
pstmt.setArray(1, idarray);
oracle.sql.ARRAY infoarray = new oracle.sql.ARRAY(desc,con,infos);
pstmt.setArray(2, infoarray);
ResultSet rset=pstmt.executeQuery();
int ret=rset.getInt(1);
C++ OCI 写法如下:
vector<string> ids,infos;
ids.push_back("test1");
ids.push_back("test2");
infos.push_back("info1");
infos.push_back("info2");
m_stmt = m_con->createStatement("BEGIN :v_err := test.test_AddMultipleIdInfos(:v_ids, :v_infos); END;");
m_stmt->registerOutParam (1, OCCINUMBER);
setVector(m_stmt, 2,ids, "T_STRINGARRAY");
setVector(m_stmt, 3, infos, "T_STRINGARRAY");
m_stmt->executeUpdate();
ret = m_stmt->getNumber (1);
m_con->terminateStatement (m_stmt);
- 使用数组方式访问Oracle,提高性能
- Oracle数据库如何提高访问性能
- 使用智能优化器提高Oracle性能
- apply提高数组找出最大最小值的方式(性能)
- 提高搜索性能方式
- cpu数组不同的访问方式的性能测试
- 提高Oracle性能2
- 提高Oracle性能3
- Oracle性能分析6:数据访问方式之索引扫描
- 如何提高数据库访问性能
- 教你使用智能优化器提高Oracle性能极限
- 使用智能优化器提高Oracle的性能极限
- 使用智能优化器提高Oracle的性能极限
- 【转】 使用智能优化器提高Oracle的性能极限
- Oracle使用物化视图提高group by性能
- c#通过Oracle.DataAccess访问Oracle数据库的性能及访问方式小结
- 数组访问方式
- oracle 函数索引 提高性能
- 工具
- “软件开发‘Patterns & Practices模式与实践’论坛——2008·中国”活动首次登陆中国
- script刷新页面,刷新代码,页面自动刷新代码
- 关于spinlock
- 基于Ubuntu的十大版本--好的,不好的,还有丑的!
- 使用数组方式访问Oracle,提高性能
- 如何迅速成为Java高手
- ubuntu下c/c++基本编译环境的搭建
- Axure RP Pro - 相关问题 - 变量值与部件内容并不都能相互传递
- c&c++内存调试技巧
- 马化腾解读十岁腾讯未来战略
- turncate table(删除表中所有数据)
- DLL文件的生成和调用
- 法国Cartier卡地亚手表