Я немного разочарован своей средой Java, которая не позволяла мне вызывать метод OraclePreparedStatement#setPlsqlIndexTable
... но я думаю, что должен написать код раньше ...
String plSqlBody = "some pl/sql procedure call"
/*
* The PL/SQL procedure parameter is here of type
* TYPE t_date_table IS TABLE OF DATE INDEX BY PLS_INTEGER;
*/
OracleCallableStatement ocs = (OracleCallableStatement)
conn.prepareCall(plSqlBody);
java.util.Date[] date = new java.util.Date[10];
// Initialise the array... and then...
ocs.setPlsqlIndexTable(index, date, 20, 20, OracleTypes.DATE, 20);
И здесь я получаю свое исключение:
java.sql.SQLException: Ungültiger PL/SQL-Indextabellen-Elementtyp
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
Я не нашел решения проблемы. Я изменил тип Java с java.util.Date
на java.sql.Date
/ oracle.sql.DATE
и OracleTypes.DATE
на OracleTypes.TIME
/ OracleTypes.TIMESTAMP
, но проблема не решилась. Я нахожу где-то намек, что эти типы здесь не разрешены, но я не могу в это поверить. Вы знаете правильный путь?