Я пытаюсь сделать вставки с использованием jdbc в таблицу с двумя столбцами VARRAY;один - VARRAY из int, другой - VARRAY из varchar2. Первый столбец вставляется отлично. Тем не менее, второй вставляет все значения как ноль.
Это таблица:
CREATE OR REPLACE TYPE ARRAY_DTBN_STRING AS VARRAY(10) OF VARCHAR2(100);
CREATE OR REPLACE TYPE ARRAY_DTBN_INTEGER AS VARRAY(10) OF int;
CREATE TABLE DTBN_DETAILS(
ID VARCHAR2(100) PRIMARY KEY ,
VALS ARRAY_DTBN_STRING,
SIZES ARRAY_DTBN_INTEGER
);
Это код Java для вставки с использованием JDBC:
DtbnDetails det = new DtbnDetails();
det.setId("ABC");
det.setValues(new String[] {"room","house"});
det.setSizes(new int[] {3,5});
String query = "INSERT INTO DTBN_DETAILS "+
"(ID, VALS, SIZES) VALUES (?, ?, ?)";
Connection conAux = Conexion.getConnection("main");
OracleConnection con = conAux.unwrap(OracleConnection.class);
PreparedStatement statement = con.prepareStatement(query);
int i=1;
String id = details.getId();
sentencia.setString(i++,id);
String[] values = details.getValues()==null ? new String[0] : details.getValues();
Array valuesArray = con.createOracleArray("ARRAY_DTBN_STRING", values);
statement.setArray(i++, valuesArray);
int[] sizes = details.getSizes()==null ? new int[0] : details.getSizes();
Array sizesArray = con.createOracleArray("ARRAY_DTBN_INTEGER", sizes);
statement.setArray(i++, sizesArray);
statement.execute();
con.commit();
После выполнения этого кода столбец «VALS» имеет два значения, но оба имеют нулевое значение:
SELECT * FROM DTBN_DETAILS;
ABC
ARRAY_DTBN_STRING(NULL, NULL)
ARRAY_DTBN_INTEGER(3, 5)