如何将对象传递给存储过程而不将其展平为数组?

时间:2013-08-02 13:02:41

标签: java oracle jdbc

我在Oracle中有一个大型多维对象,在Java中有一个对应的类。我想将对象传递给存储过程,我已经找到了几种方法,但它们都包括将对象展平为数组的步骤,这有点像传递巨型,有序的参数列表。如果我能以一种不那么容易出错的方式做到这一点会很好。比如使用命名字段的地图。

到目前为止我找到的方法是:

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

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

  2. 使用ORAData或SQLData接口,并在回调方法中展平数据。

  3. 有第二个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);
    

0 个答案:

没有答案