========== Java ===================
class Parent {
private int objId,
private String name;
private List chidren;
}
class Child {
private int objId;
private String name;
private Parent parent;
}============== oracle ==============
oracle的object,child被嵌套到parent里面,java 代码中,有一个 Parent object, parent 中有Child 的 list。存储过程是insert parent以及相应的一系列child。应该如何传parent 跟 child到oracle存储过程呢?create type t_child as object (
child_name varchar2(100),
);
create type t_child_lst as table of t_child;create type t_parent as object (
name varchar2(100),
title varchar2(10),
children t_child_lst
);
class Parent {
private int objId,
private String name;
private List chidren;
}
class Child {
private int objId;
private String name;
private Parent parent;
}============== oracle ==============
oracle的object,child被嵌套到parent里面,java 代码中,有一个 Parent object, parent 中有Child 的 list。存储过程是insert parent以及相应的一系列child。应该如何传parent 跟 child到oracle存储过程呢?create type t_child as object (
child_name varchar2(100),
);
create type t_child_lst as table of t_child;create type t_parent as object (
name varchar2(100),
title varchar2(10),
children t_child_lst
);
如果这样建议楼主建立临时表吧如果一次就一个parent,建议存储过程参数为parentid,chidrenidscreate or replace type chidrenids is table of number;另外,个人觉得调用存储过程不适合大批量传递参数,这就失去了用他的意义
class Parent {
private int objId,
private String name;
private List chidren;
private User creator;
}
class Child {
private int objId;
private String name;
private Parent parent;
private User creator;
} create table parent (obj_id Number, name varachar2,creator Number);
create table child(obj_id Number, name varachar2, parent_obj_id number, creator Number);
在前台直接insert就OK
如果用hibernate,那代码就很更少了
insert的性能是比较好的
这样大数量的把数据给存储过程不是好的方式如果在存储过程中真有复杂的业务逻辑
你还是先往临时表插入数据,
然后在用存储过程走流程要好点
你把整个数据给存储过程,其实相比下来也相当于插入一张表的消耗了
把parent ,child的属性转换为一个字符串,在存储过程里面分割字符串,用游标读取,循环保存