Oracle和Jdbc以及OraclePreparedStatement #setPlsqlIndexTable和java.util.Date

时间:2009-11-18 07:59:30

标签: java oracle jdbc

我对我的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.DATEOracleTypes.DATE更改为OracleTypes.TIME / OracleTypes.TIMESTAMP,但没有解决问题。我找到了暗示的地方,这里不允许这些类型,但我不相信。你知道正确的方法吗?

1 个答案:

答案 0 :(得分:1)

来自Oracle文档(JDBC Developer's Guide,JDBC OCI Extensions章节):

  

Oracle JDBC不支持RAWDATEPL/SQL RECORD作为元素类型。

也许您可以将日期作为字符串/数字传递出去?