我在 Oracle 中有一个大型多维对象,在 Java 中有一个相应的类。我想将对象传递给存储过程,我找到了几种方法,但它们都包括将对象扁平化为数组的步骤,这有点像传递一个巨人,参数的有序列表。如果我能以一种不易出错的方式做到这一点,那就太好了。例如使用命名字段的映射。
到目前为止我发现的方法是:
创建一个 oracle STRUCT,其构造函数采用包含参数的 Object[]。
STRUCT oracleRecord = new STRUCT(recDescriptor, conn, recordFields);
使用 ORAData 或 SQLData 接口,并在回调方法中展平数据。
还有第二个 STRUCT 构造函数接受一个 Map,但我还没有找到它的任何文档,也没有让它工作。
提前致谢,即使答案是“无法完成”。:-)
Java 对象(及其对应的 Oracle 对象)看起来像这样,但要大得多:
User user = new User();
user.setActive(true);
user.setStatus(5);
ContactInfo contact = new ContactInfo();
contact.setFirstName("Bigs");
contact.setLastName("Guys");
contact.setEmailAddress(new EmailAddress("big.guy@gmail.com"));
user.setContactInfo(contact);
编辑以回答评论,这是存储过程签名的示例
procedure test_proc (obj_in IN user);