Как передать несколько значений в параметре objType - PullRequest
0 голосов
/ 16 января 2019

Как передать несколько значений в поле objType параметру метода

В настоящее время я храню одну строку в поле objType и передаю ее в качестве входных данных для оракула 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", структуры);

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

Мне нужно хранить n строк с фиксированными 3 столбцами. [П] [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 голосов
/ 16 января 2019

Ваш пример кода 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];.

...