如何把一个vector的数据传给存储过程 我做了一个数据结构T,在内存区用vector<T*>存储,但是需要定时批量的把vector里的数据写入数据库,本来用可以把vector里的数据一条条写入数据库,但是可能每次都要进行IO操作,影响效率,所以用存储过程,但是不知道怎么把vector的东西转化成一个数据集作为参数传给存储过程,请教了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你数据从哪儿来的呢,从界面输入的?一次输入一批数据吗?(一般界面一条一条提交的)如果那一批数据是从数据库取的,加工之后再存入数据库的话建议直接用存储过程加工并保存。参考:SQL> desc aa Name Null? Type ----------------------------------------- -------- --------------------- NAME VARCHAR2(10)SQL> truncate table aa;Table truncated.SQL> select * from aa;no rows selectedSQL> create or replace type ARR as table of VARCHAR2(200) NOT NULL;/create or replace procedure give_me_an_array(myArray arr)asbegin forall i in myArray.first..myArray.last insert into aa values(myArray(i)); COMMIT;end;/import java.sql.*;import java.util.*;import oracle.jdbc.driver.*;import oracle.sql.*;public class test{ public static void main(String args[]) throws Exception { DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); Connection conn = DriverManager.getConnection( "jdbc.oracle:thin:@192.168.1.1:1521:orcl","username","password"); String a[]={"3","2","abc"}; ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("ARR",conn); ARRAY array_to_pass = new ARRAY(descriptor,conn,a); OraclePreparedStatement ps = (OraclePreparedStatement)conn.prepareStatement ("begin give_me_an_array(:x); end;"); ps.setARRAY( 1, array_to_pass ); ps.execute(); }}e:javac test.javae:java testSQL> select * from aa;NAME----------32abc3 rows selected. 大哥,我现在的问题是怎么把vector里的数据转换成可以被存储过程参数或者游标能够识别的形式,一次性的批量写入数据库数据不是从别的数据表里导出来的数据集 这儿有一个ArrayList的例子,和Vector差不多(JAVA建议用ArrayList,Vector类已废弃,保留Vector只是为了兼容)http://blog.csdn.net/a9529lty/archive/2008/12/11/3500849.aspx http://topic.csdn.net/u/20100310/15/7f83d565-4406-4193-9e09-5738a98745d8.html 求问一个关于exists的问题 oracle存储过程转为MySQL过程 在并行执行的时候报经常性的报ORA-12805错误 如何处理? Oracle11G的电子书或实体书(简体中文) 如何释放表空间 请问怎么把txt文件的数据导入到oracle的某张表中 请教一个关于求平均值得语句 oracle management server 启动问题 再次请教jsp与数据库连接 超难SQL文 oracle建了databaselink,发生could not resolve the connect identifer specfied Clob对象的使用异常,大家指点一下......
一次输入一批数据吗?(一般界面一条一条提交的)
如果那一批数据是从数据库取的,加工之后再存入数据库的话
建议直接用存储过程加工并保存。参考:
SQL> desc aa
Name Null? Type
----------------------------------------- -------- ---------------------
NAME VARCHAR2(10)SQL> truncate table aa;Table truncated.SQL> select * from aa;no rows selectedSQL> create or replace type ARR as table of VARCHAR2(200) NOT NULL;
/create or replace procedure give_me_an_array(myArray arr)
as
begin
forall i in myArray.first..myArray.last
insert into aa values(myArray(i));
COMMIT;
end;
/import java.sql.*;
import java.util.*;
import oracle.jdbc.driver.*;
import oracle.sql.*;public class test
{
public static void main(String args[]) throws Exception
{
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection conn = DriverManager.getConnection(
"jdbc.oracle:thin:@192.168.1.1:1521:orcl","username","password");
String a[]={"3","2","abc"};
ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("ARR",conn);
ARRAY array_to_pass = new ARRAY(descriptor,conn,a);
OraclePreparedStatement ps = (OraclePreparedStatement)conn.prepareStatement
("begin give_me_an_array(:x); end;");
ps.setARRAY( 1, array_to_pass );
ps.execute();
}
}e:javac test.javae:java testSQL> select * from aa;NAME
----------
3
2
abc3 rows selected.
数据不是从别的数据表里导出来的数据集
保留Vector只是为了兼容)
http://blog.csdn.net/a9529lty/archive/2008/12/11/3500849.aspx