当前位置: 代码迷 >> Oracle开发 >> 怎么把一个vector的数据传给存储过程
  详细解决方案

怎么把一个vector的数据传给存储过程

热度:94   发布时间:2016-04-24 08:01:15.0
如何把一个vector的数据传给存储过程
我做了一个数据结构T,在内存区用vector<T*>存储,但是需要定时批量的把vector里的数据写入数据库,本来用可以把vector里的数据一条条写入数据库,但是可能每次都要进行IO操作,影响效率,所以用存储过程,但是不知道怎么把vector的东西转化成一个数据集作为参数传给存储过程,请教了

------解决方案--------------------
你数据从哪儿来的呢,从界面输入的?
一次输入一批数据吗?(一般界面一条一条提交的)
如果那一批数据是从数据库取的,加工之后再存入数据库的话
建议直接用存储过程加工并保存。

参考:
SQL code
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.
------解决方案--------------------
http://topic.csdn.net/u/20100310/15/7f83d565-4406-4193-9e09-5738a98745d8.html