如何在objType参数中传递多个值

时间:2019-01-16 13:23:47

标签: java oracle stored-procedures object-type recordtype

如何将objType字段中的多个值传递给方法参数

当前,我将单个行存储在objType字段中,并将其作为输入传递给oracle sp,现在我需要在objType中存储并传递多行。如何实现呢? 我试图创建像多维之一的objType:     Object [] objType = new Object [3] [3], 它没有帮助。 请在下面查看我的示例代码并获得帮助。

Object[] objType = new Object[3];
objType[0] = new Integer(lineNo);
objType[1] = new String(itemCode);
objType[2] = new Integer(ORDER_QTY));


structs[index]=conn.createStruct("XXHDB_REC", objType);
        Array reportsArray = ((OracleConnection)     

conn).createOracleArray(“ XXHDB_TBL_TYPE”,structs);

//Input to oracle package
oracleCallableStmt.setArray(4, reportsArray);

我需要存储固定3列的'n'行。 [n] [3]。

Stored Proc Definition:
create_booking(p_reservation_id  => p_reservation_id, 
p_Hybris_Cust_nbr => p_Hybris_Cust_nbr,
p_cust_nbr        => p_cust_order_no,
p_group           => j.GROUP_ID,
p_order_lines     => v_rec) --> this is the input field

1 个答案:

答案 0 :(得分:0)

您的示例代码Object[] objType = new Object[3][3]无效,因为objType的类型错误,应为Object[][] objType = new Object[n][3]。但是,如果您知道要存储的值,我强烈建议不要使用Object作为类型,而可以对它们使用某种容器,例如:

class Container {
    private Integer lineNo;
    private String itemCode;
    private Integer ORDER_QTY;

    // rest omitted
}

然后将其用作您的数组或任何您要使用的类型。 Container[] objType = new Container[n];