日期:2014-05-16 浏览次数:20596 次
create table parent(
id number(10),
name varchar2(100),
title varchar2(10)
);
create table child(
id number(10),
parent_id number(10),
child_name varchar2(100),
child_title varchar2(10),
child_content varchar2(200),
child_time timestamp
);
create sequence seq_p_c_id
minvalue 1
maxvalue 9999999999
start with 1
increment by 1
nocache;
drop type t_child_lst_map;
drop type t_child_lst;
drop type t_parent_lst;
--创建表对象类型
create or replace type t_parent as object (
name varchar2(100),
title varchar2(10)
);
/
--创建表对象类型
create or replace type t_child as object (
child_name varchar2(100),
child_title varchar2(10),
child_content varchar2(200)
);
/
--创建自定义类型变量
create or replace type t_parent_lst as table of t_parent;
/
--创建自定义类型变量
create or replace type t_child_lst as table of t_child;
/
--创建自定义类型变量
create or replace type t_child_lst_map as table of t_child_lst;
/
--创建存储过程
create or replace procedure proc_ins_parent_child(
i_parent_lst in t_parent_lst, --parent列表
i_child_map_lst in t_child_lst_map, --child列表集合,一个map元素对应一个child_lst,其下标与 parent列表的下标相同。
o_ret out number
) as
var_parent t_parent;
var_child_lst t_child_lst;
var_child t_child;
var_parent_id number;
var_child_id number;
begin
for i in 1..i_parent_lst.count loop
--取得parent各列的值
var_parent := i_parent_lst(i);
--取得parent_id;
select seq_p_c_id.nextVal into var_parent_id from dual;
--插入parent表
insert into parent(
id,
name,
title
)
values(
var_parent_id,
var_parent.name,
var_parent.title
);
--取得该parent对应的child列表
var_child_lst := i_child_map_lst(i);
for j in 1..var_child_lst.count loop
var_child := var_child_lst(j);
--取得child_id;
select seq_p_c_id.nextVal into var_child_id from dual;
--插入child表
insert into child(
id,
parent_id,
child_name,
child_title,
child_content,
child_time
)
values(
var_child_id,
var_parent_id,
var_child.child_name,
var_child.child_title,
var_child.child_content,
systimestamp
);
end loop;
end loop;
o_ret := 0;
exception when others then
begin
o_ret := -1;
raise;
end;
end proc_ins_parent_child;
/
package test.oracle.conn;
import java.sql.Connection;
import java.sql.DriverManager;
public class OConnection {
public static Connection getConn() {
String URL = "jdbc:oracle:thin:@127.0.0.1:1521:oradb";
String user = "cartoon";// 这里替换成你自已的数据库用户名
String password = "oracle";// 这里替换成你自已的数据库用户密码
Connection connection = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("类实例化成功!");
connection = DriverManager.getConnection(URL, user, password);
System.out.println("创建连接对像成功!");
} catch (Exception err) {
err.printStackTrace();
return null;
}
return connection;
}
}
package test.oracle.array;
public class Parent {
private String id;
private String name;
private String title;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;