我在Oracle中有一个大型多维对象,在Java中有一个对应的类。我想将对象传递给存储过程,我已经找到了几种方法,但它们都包括将对象展平为数组的步骤,这有点像传递巨型,有序的参数列表。如果我能以一种不那么容易出错的方式做到这一点会很好。比如使用命名字段的地图。
到目前为止我找到的方法是:
创建一个oracle STRUCT,其构造函数包含一个包含params的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);