2

我在 Oracle 中有一个大型多维对象,在 Java 中有一个相应的类。我想将对象传递给存储过程,我找到了几种方法,但它们都包括将对象扁平化为数组的步骤,这有点像传递一个巨人,参数的有序列表。如果我能以一种不易出错的方式做到这一点,那就太好了。例如使用命名字段的映射。

到目前为止我发现的方法是:

  1. 创建一个 oracle STRUCT,其构造函数采用包含参数的 Object[]。

    STRUCT oracleRecord = new STRUCT(recDescriptor, conn, recordFields);

  2. 使用 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);
4

0 回答 0