Oracle и Jdbc и OraclePreparedStatement # setPlsqlIndexTable и java.util.Date - PullRequest
0 голосов
/ 18 ноября 2009

Я немного разочарован своей средой 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, но проблема не решилась. Я нахожу где-то намек, что эти типы здесь не разрешены, но я не могу в это поверить. Вы знаете правильный путь?

1 Ответ

1 голос
/ 18 ноября 2009

Из документации Oracle (Руководство разработчика JDBC, глава JDBC OCI Extensions):

Oracle JDBC не поддерживает RAW, DATE и PL/SQL RECORD в качестве типов элементов.

Может быть, вы могли бы вместо этого передать даты в виде строк / чисел?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...