我对我的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
,但没有解决问题。我找到了暗示的地方,这里不允许这些类型,但我不相信。你知道正确的方法吗?
答案 0 :(得分:1)
来自Oracle文档(JDBC Developer's Guide,JDBC OCI Extensions章节):
Oracle JDBC不支持
RAW
,DATE
和PL/SQL RECORD
作为元素类型。
也许您可以将日期作为字符串/数字传递出去?